如何評(píng)價(jià)OpenAI最新的工作CLIP:連接文本和圖像,zero shot效果堪比ResNet50?
CLIP (Contrastive Language-Image Pre-Training) is a neural network trained on a variety of (image, text) pairs. It can be instructed in natural language to predict the most relevant text snippet, given an image, without directly optimizing for the task, similarly to the zero-shot capabilities of GPT-2 and 3. We found CLIP matches the performance of the original ResNet50 on ImageNet “zero-shot” without using any of the original 1.28M labeled examples, overcoming several major challenges in computer vision.

謝凌曦(清華大學(xué) 工學(xué)博士)回答:
先說看法:多模態(tài)是趨勢(shì)沒錯(cuò),可CLIP只是邁出了非常簡(jiǎn)單的第一步。
只要簡(jiǎn)單地掃過文章,就會(huì)發(fā)現(xiàn)方法簡(jiǎn)單地令人發(fā)指——熟悉深度學(xué)習(xí)編程的人,一個(gè)上午大概就能復(fù)現(xiàn)出所有代碼。而整篇文章最大的復(fù)現(xiàn)難點(diǎn),顯然是OpenAI自行收集的400M文本圖像配對(duì)的數(shù)據(jù)集。
如果要對(duì)比這個(gè)方法和傳統(tǒng)圖像分類方法,那么優(yōu)缺點(diǎn)都是比較明顯的:
相比于傳統(tǒng)圖像分類方法的優(yōu)勢(shì)。這是顯而易見的:每張圖像的標(biāo)簽不再是一個(gè)名詞,而是一個(gè)句子,因此以往被強(qiáng)行分成同類的圖像,就有了“無(wú)限細(xì)粒度”的標(biāo)簽。例如ImageNet給圖片打的標(biāo)簽是“金毛尋回犬”,而這種配對(duì)的例子,就可以學(xué)習(xí)“金毛尋回犬”身處不同環(huán)境、在做不同事情的細(xì)微差別。
相比于傳統(tǒng)圖像分類方法的劣勢(shì)。主要還是文本和圖像的配對(duì)關(guān)聯(lián)性不夠強(qiáng)。這是為什么作者反復(fù)強(qiáng)調(diào)要收集巨大的數(shù)據(jù)集,因?yàn)樗麄儽仨毻ㄟ^大數(shù)據(jù)的方式來壓制噪聲。從這個(gè)觀點(diǎn)出發(fā),我們可以看出些許未來的趨勢(shì)(見下面第2和第3點(diǎn))。
最后再說一些擴(kuò)展的觀點(diǎn):
千萬(wàn)不要被它zero-shot的能力嚇到,這不是真正的zero-shot!在400M個(gè)文本圖像配對(duì)的訓(xùn)練中,模型肯定看到了大量打著相關(guān)文本標(biāo)簽的圖像,而且圖像的domain比ImageNet要廣得多——這也是為什么方法能夠在一些高級(jí)場(chǎng)景(如clipart)輕松超越ImageNet預(yù)訓(xùn)練模型。但是要說這種方法碾壓了有監(jiān)督方法,就有點(diǎn)震驚體嘩眾取寵的意味了。
另一個(gè)耐人尋味的地方,是方法同時(shí)訓(xùn)練了圖像和文本特征(感謝評(píng)論區(qū)@llll的提醒,一開始我看成只訓(xùn)練圖像了)。我直覺地認(rèn)為文本預(yù)訓(xùn)練特征比視覺預(yù)訓(xùn)練特征更可靠,但是作者卻放棄了OpenAI祖?zhèn)鞯某蟮奈谋绢A(yù)訓(xùn)練模型,令人略感意外。尤其是,NLP的預(yù)訓(xùn)練模型體量遠(yuǎn)超視覺預(yù)訓(xùn)練模型,所以固定文本模型,也許是更實(shí)用的方法?
最讓我感興趣的問題,是圖像和文本之間的交互方式。直接用文本的encoding結(jié)果做為圖像的監(jiān)督信號(hào),顯然噪聲太大了;能否借鑒captioning等方向的做法,允許圖像和文本在encoding過程中多次交互,從而提升效果?當(dāng)然,這里還是涉及到語(yǔ)言模型太大,無(wú)法高效訓(xùn)練。不過,OpenAI也可以選擇暴力出奇跡,直接從頭訓(xùn)練大規(guī)模的跨模態(tài)預(yù)訓(xùn)練模型。只是這樣做的話,400M的數(shù)據(jù)集可能就太小了。
再往深了說,NLP的預(yù)訓(xùn)練之所以能做得好,關(guān)鍵是pretext任務(wù)比較好。相比起來,CV還在苦苦尋找合適的pretext任務(wù)。當(dāng)前我對(duì)跨模態(tài)的最大預(yù)期,就是能夠在NLP的輔助下,定義CV的pretext任務(wù)。CLIP邁出了第一步,前面的路還長(zhǎng)得很。
總之,CLIP這個(gè)工作,技術(shù)突破不大,效果還算驚艷。作為占坑之作,將來應(yīng)該會(huì)成為跨模態(tài)的一個(gè)重要baseline。

mileistone(上海交大 計(jì)算機(jī)視覺)回答:
1、動(dòng)機(jī)
a、當(dāng)前的CV數(shù)據(jù)集標(biāo)注勞動(dòng)密集,成本高昂;
b、當(dāng)前的模型只能勝任一個(gè)任務(wù),遷移到新任務(wù)上非常困難;
c、當(dāng)前模型泛化能力較差。
2、CLIP解決方案概述
a、互聯(lián)網(wǎng)上較容易搜集到大量成對(duì)的文本和圖像,對(duì)于任何一個(gè)圖像文本對(duì)而言,文本其實(shí)可以認(rèn)為是圖像的標(biāo)簽。也就是說,互聯(lián)網(wǎng)上天然就存在已經(jīng)標(biāo)注好的CV數(shù)據(jù)集,這解決了“動(dòng)機(jī)”中的問題a。
b、而互聯(lián)網(wǎng)上存在的這些已經(jīng)標(biāo)注好的CV數(shù)據(jù)集數(shù)量不僅大而且差異也大,當(dāng)我們?cè)谶@樣的數(shù)據(jù)集上訓(xùn)練一個(gè)表達(dá)能力足夠強(qiáng)的模型時(shí),這個(gè)模型就能具備較強(qiáng)的泛化能力,較容易遷移到其他新任務(wù)上,這緩解了“動(dòng)機(jī)”中的問題b和問題c。
上述兩段話是CLIP解決方案的粗線條概括。
3、CLIP細(xì)節(jié)
“CLIP的解決方案概述”中的a比較容易解決:確定一系列query,然后通過搜索引擎(通用搜索引擎如Google等,或者垂直領(lǐng)域搜索引擎Twitter等)搜索圖片。
最后通過50萬(wàn)條query,搜索得到4億個(gè)圖像文本對(duì),這樣一個(gè)大規(guī)模的數(shù)據(jù)量,對(duì)應(yīng)了“CLIP的解決方案概述”中的b。
既然我們有了圖像文本對(duì),那么最直接訓(xùn)練方法就是metric learning,CLIP的確也是這么干的。
4、一些思考
NLP supervision如何理解。
NLP supervision其實(shí)可以理解為多維度的標(biāo)簽,常見的分類任務(wù)只有一維,比如ImageNet-1K是一維,這一維的shape為1000,而NLP supervision可以認(rèn)為是多維,比如三維,shape為(A, B, C),每一維描述一個(gè)concept。
經(jīng)典圖像分類的一維標(biāo)簽只包含一種數(shù)據(jù)集創(chuàng)建者自己設(shè)定的較粗的單種concept,比如ImageNet-1K里的“圖像包含egyptian cat、Persian cat、tiger cat、alley cat等1000種類別中的哪一種”。
而這個(gè)單種concept可以由多種concept組合而來,一方面可以減小歧義,一方面方便遷移,比如顏色、大小等等,NLP supervision就可以達(dá)到類似的一種效果,比如“a photo of guacamole, a type of food”這一句話告訴我們這是一張圖片,圖片里包含的是食物,這個(gè)食物是酸橘汁腌魚。
zero shot如何理解
我們通過CLIP訓(xùn)練出來一個(gè)模型之后,滿足以下條件的新任務(wù)都可以直接zero shot進(jìn)行識(shí)別:
1、我們能夠用文字描述清楚這個(gè)新分類任務(wù)中每個(gè)類別;
2、這個(gè)描述對(duì)應(yīng)的概念在CLIP的訓(xùn)練集中出現(xiàn)過。這在經(jīng)典一維標(biāo)簽的圖像分類中是不可實(shí)現(xiàn)的。
CLIP這種方法把分類轉(zhuǎn)換為了跨模態(tài)檢索,模型足夠強(qiáng)的情況下,檢索會(huì)比分類擴(kuò)展性強(qiáng)。比如人臉識(shí)別,如果我們把人臉識(shí)別建模為分類任務(wù),當(dāng)gallery里新增加人臉后,類別數(shù)就變大了,我們就需要重新訓(xùn)練模型、更新類別數(shù);如果我們將人臉識(shí)別建模為檢索,當(dāng)gallery里新增加人臉后,我們用已有的模型提取這個(gè)人臉的特征,后續(xù)流程不用變,也不用重新訓(xùn)練模型。
從檢索這個(gè)角度來看,CLIP的zero shot其實(shí)就是把分類問題轉(zhuǎn)化為了檢索問題。
總結(jié)來看,CLIP能夠zero shot識(shí)別,而且效果不錯(cuò)的原因在于:
1、訓(xùn)練集夠大,zero shot任務(wù)的圖像分布在訓(xùn)練集中有類似的,zero shot任務(wù)的concept在訓(xùn)練集中有相近的;
2、將分類問題轉(zhuǎn)換為檢索問題。
concept的唬人之處
CLIP這篇文章里提到通過NLP supervision能夠讓模型學(xué)到concept的概念,concept這個(gè)比較唬人,實(shí)際情況可能比我們想象的要差一些。
OpenAI沒放數(shù)據(jù)集,我們只知道有50萬(wàn)query,但是這些query是怎么樣的我們不得而知,比如是很簡(jiǎn)單的描述還是較復(fù)雜的描述。如果只是簡(jiǎn)單的描述,比如“black cat”、“l(fā)ecture room”之類,那NLP encoder學(xué)到的所謂concept可能比較低級(jí),稍微比bag of words好一點(diǎn),畢竟50萬(wàn)的量不是很大,query又簡(jiǎn)單。
我猜想情況可能近乎于如此,論據(jù)如下:
1、原文里作者說到“we found CLIP's performance to be less sensitive to the capacity of the text encoder”;
2、zero shot時(shí),prompt engineering和prompt ensemble影響較大,原文里說到“When considered together, prompt engineering and ensembling improve ImageNet accuracy by almost 5%”。
數(shù)據(jù)問題
一個(gè)強(qiáng)大的方法不僅需要依賴強(qiáng)大的模型結(jié)構(gòu),還仰仗大規(guī)模的訓(xùn)練集。模型結(jié)構(gòu)決定下限,數(shù)據(jù)集決定上限。CLIP這種方法的上限如何,query的數(shù)量和質(zhì)量至關(guān)重要。
如果圖像文本對(duì)僅僅通過搜索的方式在互聯(lián)網(wǎng)上獲取,感覺文本不太可能復(fù)雜,這個(gè)會(huì)限制CLIP的上限。如果能找到一種獲取大量圖像文本對(duì),而且文本還比較復(fù)雜,那么CLIP這種方法前景會(huì)非常不錯(cuò)。
算法科學(xué)家/工程師的階層固化
越來越多的前沿方向,要么需要大規(guī)模數(shù)據(jù),要么需要大規(guī)模的GPU集群,無(wú)論哪一種,都是普通公司或者實(shí)驗(yàn)室承受不了的。
我想如果后續(xù)一直這么發(fā)展下去,算法科學(xué)家/工程師是不是就會(huì)形成階層固化,資本充沛公司/實(shí)驗(yàn)室的科學(xué)家/工程師的經(jīng)驗(yàn)、成果、知識(shí)、技能會(huì)越來越強(qiáng),反之,越來越弱。就像現(xiàn)在中國(guó)和美國(guó)一樣,貧富差距越來越大,單單靠天賦、努力想跨越階層越來越難。
原文見《對(duì)Connecting Text and Images的理解》。

小小將(華中科大 工學(xué)碩士)回答:
先占個(gè)坑,我覺得這個(gè)工作非常nice,就像OpenAI所說雖然深度學(xué)習(xí)在CV領(lǐng)域很成功,但是:
typical vision datasets are labor intensive and costly to create while teaching only a narrow set of visual concepts(標(biāo)注數(shù)據(jù)我太難了)
standard vision models are good at one task and one task only, and require significant effort to adapt to a new task; (模型在單一任務(wù)上優(yōu)秀,但難遷移到新任務(wù))
and models that perform well on benchmarks have disappointingly poor performance on stress tests, casting doubt on the entire deep learning approach to computer vision.(真o(╥﹏╥)o了,泛化性和魯棒性堪憂)
OpenAI的這項(xiàng)新工作CLIP可以解決上述問題,思路看起來很簡(jiǎn)單,看下圖就知道了,簡(jiǎn)單來說CLIP是將Text Decoder從文本中提取的語(yǔ)義特征和Image Decoder從圖像中提取的語(yǔ)義特征進(jìn)行匹配訓(xùn)練:

CLIP pre-trainsan image encoder and a text encoder to predict which images were paired with which texts in our dataset. We then use this behavior to turn CLIP into a zero-shot classifier. We convert all of a dataset’s classes into captions such as “a photo of adog” and predict the class of the caption CLIP estimates best pairs with a given image.(這個(gè)zero-shot真是鬼才)
訓(xùn)練的偽代碼也很simple(https://github.com/openai/CLIP):
# image_encoder - ResNet or Vision Transformer# text_encoder - CBOW or Text Transformer# I[n, h, w, c] - minibatch of aligned images# T[n, l] - minibatch of aligned texts# W_i[d_i, d_e] - learned proj of image to embed# W_t[d_t, d_e] - learned proj of text to embed# t - learned temperature parameter# extract feature representations of each modalityI_f = image_encoder(I) #[n, d_i]T_f = text_encoder(T) #[n, d_t]# joint multimodal embedding [n, d_e]I_e = l2_normalize(np.dot(I_f, W_i), axis=1)T_e = l2_normalize(np.dot(T_f, W_t), axis=1)# scaled pairwise cosine similarities [n, n]logits = np.dot(I_e, T_e.T) * np.exp(t)# symmetric loss functionlabels = np.arange(n)loss_i = cross_entropy_loss(logits, labels, axis=0)loss_t = cross_entropy_loss(logits, labels, axis=1)loss = (loss_i + loss_t)/2
效果也是杠杠的,首先CLIP的zero-shot遷移能力非常強(qiáng)。如在ImageNet問題上,CLIP無(wú)需ImageNet標(biāo)注數(shù)據(jù)訓(xùn)練,通過zero-shot分類效果就可以達(dá)到ResNet監(jiān)督訓(xùn)練結(jié)果,并且泛化性和魯棒性更好:

如果采用standard representation learning evaluation(后面加一個(gè)linear classifier,而不是finetuning,前者更能看出提取特征的質(zhì)量),CLIP在27個(gè)數(shù)據(jù)集上的效果也要超過谷歌的Noisy Student EfficientNet-L2:

本文轉(zhuǎn)載自知乎,著作權(quán)歸屬原作者,侵刪
——The ?End——
推薦閱讀
【科研學(xué)習(xí)機(jī)會(huì)】人工智能:從機(jī)器學(xué)習(xí)理論基礎(chǔ)到現(xiàn)代算法


