如何看待NLP領(lǐng)域最近比較火的prompt,能否借鑒到CV領(lǐng)域?

極市導(dǎo)讀
?最近NLP領(lǐng)域提出了Prompt新范式,企圖革新原先的Fine-tuning方法,本文首先介紹一下prompt和fine-tuning范式本質(zhì)上的區(qū)別,然后介紹NLP中基于prompt的PET和AutoPrompt方法以及VLM任務(wù)中應(yīng)用prompt范式的CLIP和CoOp方法。?>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿
最近NLP領(lǐng)域提出了Prompt新范式,企圖革新原先的Fine-tuning方法,而在CV領(lǐng)域中,Prompt其實(shí)可以理解為圖像label的設(shè)計(jì),從這個(gè)角度看,Prompt(預(yù)測(cè)文本中mask的字符,類似完形填空)其實(shí)是介于Image caption(迭代預(yù)測(cè)出每一個(gè)字符)和one-hot label(one-hot可以認(rèn)為是prompt的特例,單字符通過text encoder成one-hot)之間的任務(wù)。 最近在Visual-Language Model(縮寫VLM)任務(wù)中,prompt開始展現(xiàn)出強(qiáng)大的能力。
本文首先介紹一下prompt和fine-tuning范式本質(zhì)上有什么區(qū)別,然后介紹一下NLP中基于prompt的PET和AutoPrompt方法,最后介紹一下VLM任務(wù)中應(yīng)用prompt范式的CLIP和CoOp方法。
另外,CLIP和CoOp都是基于prompt的判別式VLM方法,最近還有幾篇基于prompt生成式VLM方法,基于prompt的生成式VLM和基于prompt的NLP方法非常類似,本文就不展開細(xì)講了,放一下文章鏈接
Unifying Vision-and-Language Tasks via TextGeneration:
https://arxiv.org/abs/2102.02779v1
Multimodal Few-Shot Learning with Frozen Language Models:
https://arxiv.org/abs/2106.13884
01 Prompt vs Fine-tuning

圖中,圓形表示預(yù)訓(xùn)練語(yǔ)言模型,矩形框表示的是各種下游NLP任務(wù)。那么,我們就有這樣一句話:大家都是希望讓 預(yù)訓(xùn)練語(yǔ)言模型和下游任務(wù)靠的更近,只是實(shí)現(xiàn)的方式不一樣。
Fine-tuning中:是預(yù)訓(xùn)練語(yǔ)言模型“遷就“各種下游任務(wù)。 具體體現(xiàn)就是上面提到的通過引入各種輔助任務(wù)loss,將其添加到預(yù)訓(xùn)練模型中,然后繼續(xù)pre-training,以便讓其更加適配下游任務(wù)??傊?,這個(gè)過程中,預(yù)訓(xùn)練語(yǔ)言模型做出了更多的犧牲。
Prompting中,是各種下游任務(wù)“遷就“預(yù)訓(xùn)練語(yǔ)言模型。 具體體現(xiàn)也是上面介紹的,我們需要對(duì)不同任務(wù)進(jìn)行重構(gòu),使得它達(dá)到適配預(yù)訓(xùn)練語(yǔ)言模型的效果??傊?,這個(gè)過程中,是下游任務(wù)做出了更多的犧牲。
下面講一下NLP中的兩個(gè)前置工作PET和AutoPrompt,這兩個(gè)工作對(duì)于Visual-Language Model任務(wù)的啟發(fā)是非常大的。
02 PET
PET是第一個(gè)將prompt訓(xùn)練的語(yǔ)言模型應(yīng)用到下游任務(wù)的方法,并且把prompt范式規(guī)范化,給后續(xù)prompt范式的研究提供了示范。

PET的設(shè)計(jì)流程如下:
1.預(yù)先設(shè)置多種prompt,其中包含需要預(yù)測(cè)的文字(比如上圖中的Best pizza ever! It was ___.其中It was就是預(yù)先設(shè)置的prompt,可以替換成其他的prompt),然后將多種prompt送入不同的PLM模型中進(jìn)行訓(xùn)練,最終得到多個(gè)PET模型。
2.將需要預(yù)測(cè)的文本送入多個(gè)PET模型中進(jìn)行推理,綜合多個(gè)PET模型結(jié)果得到soft label。
3.把需要預(yù)測(cè)的文本和soft label放到分類器中進(jìn)行訓(xùn)練,得到最終的文本分類模型。
03 AutoPrompt

PET構(gòu)建的prompt是人為設(shè)計(jì)的,這可能會(huì)導(dǎo)致設(shè)計(jì)的prompt不夠合理。AutoPrompt提出在構(gòu)建prompt時(shí)通過網(wǎng)絡(luò)自動(dòng)化學(xué)習(xí)出Trigger Tokens [T] [T] [T] [T] [T],優(yōu)化目標(biāo)是加入合適的token之后,預(yù)測(cè)結(jié)果越來(lái)越傾向于正確結(jié)果(比如上圖中,token為atmosphere alot dialogue clone totally時(shí),positive的概率越高)。
04 CLIP

OpenAI從網(wǎng)絡(luò)收集了4億數(shù)據(jù)量的圖片文本對(duì)用于CLIP訓(xùn)練,最后進(jìn)行zero-shot transfer到下游任務(wù)達(dá)到了非常好的效果(關(guān)于zero-shot learning
簡(jiǎn)單回顧一下CLIP的使用流程:
1.如圖(1)所示,CLIP將一批文本通過Text Encoder編碼成一批word embedding,將一批圖片(與文本一一對(duì)應(yīng))通過Image Encoder編碼成一批feature embedding,然后將對(duì)應(yīng)的word embedding和feature embedding先歸一化然后進(jìn)行點(diǎn)積得到相似度矩陣,點(diǎn)積數(shù)值越大,代表word embedding和feature embedding的向量越相似,這里的監(jiān)督信號(hào)就是矩陣對(duì)角線為1,其余位置為0。其中Text Encoder使用的是Transformer,而Image Encoder使用ResNet50和ViT兩種架構(gòu)其中一個(gè),Image Encoder和Text Encoder都是從頭訓(xùn)練。
2.然后將預(yù)訓(xùn)練好的CLIP遷移到下游任務(wù),如圖(2)所示,先將下游任務(wù)的標(biāo)簽構(gòu)建為一批帶標(biāo)簽的文本(例如 A photo of a {plane}),然后經(jīng)過Text Encoder編碼成一批相應(yīng)的word embedding。
3.最后將沒有見過的圖片進(jìn)行zero-shot預(yù)測(cè),如圖(3)所示,通過Image Encoder將一張小狗的圖片編碼成一個(gè)feature embedding,然后跟(2)編碼的一批word embedding先歸一化然后進(jìn)行點(diǎn)積,最后得到的logits中數(shù)值最大的位置對(duì)應(yīng)的標(biāo)簽即為最終預(yù)測(cè)結(jié)果。
從CLIP的流程中可以看出,CLIP和PET的prompt使用方式非常相似,A photo of a就是一個(gè)人為設(shè)計(jì)的prompt。
05 CoOp
CoOp明顯是受到了AutoPrompt的啟發(fā),并且CoOp發(fā)現(xiàn)CLIP實(shí)際上就是prompt在visual-language model中的一個(gè)應(yīng)用,于是CoOp在CLIP的基礎(chǔ)上進(jìn)一步進(jìn)行改進(jìn)。

CoOp先在四個(gè)數(shù)據(jù)集上做實(shí)驗(yàn),發(fā)現(xiàn)更合理的prompt能夠大幅度的提升分類精度尤其是使用了本文提出的CoOp之后,最終的分類精度遠(yuǎn)超CLIP人為設(shè)計(jì)的prompt。

和CLIP的主要不同之處在于,CoOp在CLIP的第二個(gè)階段中引入了context optimization。具體的,CoOp將prompt設(shè)計(jì)為:
其中每個(gè)向量跟word embedding的維度相同, 可以理解為可學(xué)習(xí)的context, 并且所有類別對(duì)應(yīng)的context共享參數(shù)。
將learnable context和不同類別的word embedding拼接起來(lái)送入text encoder中進(jìn)行訓(xùn)練,優(yōu)化目標(biāo)是使得和圖片對(duì)應(yīng)的prompt預(yù)測(cè)分?jǐn)?shù)最大。訓(xùn)練完成后,learnable context的參數(shù)就固定下來(lái)了。
Other Variants
作者還嘗試了兩種變體:
一種是prompt可以在需要預(yù)測(cè)的class前后都插入learnable context,這可以增加prompt的靈活性。
另一種是設(shè)計(jì)class-specific context(CSC),也就是所有類別的prompt參數(shù)獨(dú)立,在一些細(xì)粒度分類任務(wù)中效果更好。
CoOp vs CLIP

從11個(gè)數(shù)據(jù)集的實(shí)驗(yàn)中可以看出,CoOp均超過了CLIP,并且在一些數(shù)據(jù)集上,大幅度超過CLIP。證明了可學(xué)習(xí)的prompt優(yōu)于人為設(shè)計(jì)的prompt。CoOp提出的兩種變體,在一些數(shù)據(jù)集中效果更好。
CoOp vs Prompt Ensembling

將CoOp和PET中提出的Prompt ensembling進(jìn)行比較,CoOp也展現(xiàn)出了優(yōu)越性。
CoOp的影響因素

從上面的實(shí)驗(yàn)中可以看出,CoOp對(duì)于噪聲的魯棒性優(yōu)于CLIP。

從上面的實(shí)驗(yàn)中可以看出,context length長(zhǎng)度越長(zhǎng),CoOp效果越好;backbone模型越大,CoOp效果越好。
Random vs. manual initialization

這個(gè)對(duì)比實(shí)驗(yàn)相當(dāng)?shù)木瑁簿褪钦flearnable context的初始化prompt是什么沒那么重要,隨機(jī)初始化就能達(dá)到精調(diào)初始化相當(dāng)?shù)木取?/p>
06 總結(jié)
因?yàn)镃oOp是class-level的自適應(yīng),不能根據(jù)輸入圖片的不同動(dòng)態(tài)變化prompt,如果能夠根據(jù)輸入圖片動(dòng)態(tài)調(diào)整prompt的話,也就是instance-level的自適應(yīng),可能會(huì)有奇效。learnable context的作用類似于去噪,讓網(wǎng)絡(luò)擬合噪聲,使得預(yù)測(cè)部分的關(guān)注區(qū)域更為干凈。感覺learnable context和ViT中的object query的功能非常相似,都是任意學(xué)習(xí)出信息,只根據(jù)最后的監(jiān)督信號(hào)更新參數(shù)。后續(xù)可以挖掘一下如何控制learnable context的學(xué)習(xí),來(lái)提升基于prompt的VLM性能。生成式的VLM也可以探索一下如何設(shè)計(jì)prompt更合理。
另外就是純CV方向的prompt,也就是類似于ViT將圖片拆分patch,每個(gè)patch實(shí)際上可以看成一個(gè)字符,那么也可以設(shè)計(jì)patch的prompt對(duì)模型進(jìn)行訓(xùn)練,這其中也可以分成生成式(類似ViT)和判別式(類似self-supervised)兩種方法。
Reference
[1] https://zhuanlan.zhihu.com/p/395115779
[2] https://zhuanlan.zhihu.com/p/391606045
[3] Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference
[4] AUTOPROMPT: Eliciting Knowledge from Language Models with Automatically Generated Prompts
[5] Learning Transferable Visual Models From Natural Language Supervision
[6] LEARNING TO PROMPT FOR VISION-LANGUAGE MODELS
如果覺得有用,就請(qǐng)分享到朋友圈吧!
公眾號(hào)后臺(tái)回復(fù)“CVPR21檢測(cè)”獲取CVPR2021目標(biāo)檢測(cè)論文下載~

#?CV技術(shù)社群邀請(qǐng)函?#

備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測(cè)-深圳)
即可申請(qǐng)加入極市目標(biāo)檢測(cè)/圖像分割/工業(yè)檢測(cè)/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群
每月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競(jìng)賽、干貨資訊匯總、與?10000+來(lái)自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動(dòng)交流~

