多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter
?作者 |?吉雅太
單位?|?清華大學
研究方向?|?多模態研究
CLIP
最近 NLP 中第四范式 prompt 比較火,就是不再是生硬地從預訓練直接過渡到微調任務,而是用 prompt(提示)的方式,把微調任務做一個轉換,接近預訓練任務。比如用 MLM 預訓練一個語言模型,后續要做一個文本情感分類,不再是提取出全句的表征后做分類,而是在這段文本后面加一個 prompt(提示),比如說 it is __,然后要補全空缺,相當于還是 MLM。看著很麻煩,但在預訓練數據充足、微調數據不足情況下,是比較有效的。
多模態作為一個大雜燴的領域,NLP、CV 中的創新都可以用進來,所以多模態的 prompt 文章就也出現了。本文先介紹 clip: Learning Transferable Visual Models From Natural Language Supervision。
論文標題:
Learning Transferable Visual Models From Natural Language Supervision
論文鏈接:
https://arxiv.org/pdf/2103.00020.pdf
代碼鏈接:
https://github.com/OpenAI/CLIP
作者先指明 motivation,現在的視覺模型只能在預定義好的物體類別范圍內進行預測,而在推理時遇到未標注過的數據,泛化性能較弱。而從帶有描述的圖片進行訓練可以讓模型有更廣泛的監督,從而在下游的小樣本學習、零樣本學習中獲得好的表現。作者提出 CLIP:Contrastive Language-Image Pre-training。通過對比學習用文本監督圖片表征,在零樣本學習上的表現可以與有監督的模型相媲美。
1.1 具體方法
將語言作為監督信息訓練圖片的表征,與用于圖像分類的眾包生成標簽相比,擴展自然語言監督要容易得多,可以方便從互聯網上的大量文本中學習。從自然語言中學習還有一個重要的優勢,因為它不僅學習表征,而且還將表征與語言連接起來,從而實現靈活的零樣本遷移。
創建一個有效的大數據集,結合 MSCOCO、VG、YFCC100M,清理,生成大量圖片-文本對,并從網上也抓取了大量數據,生成一個數據集 webimagetext。
預訓練方法的選擇:先使用一種類似 image caption 的預訓練任務,如藍線,學習效率很低,達到同樣精度要使用很多圖片數據。黃線是基本的訓練方法,即預測圖片的描述文本的單詞。這兩種方法試圖預測每幅圖片所附文字的準確單詞,但由于種類繁多,這么做是很困難的。而對比學習能較好地學習表征,以文本整體和圖片的配對作為一個目標,進一步提高了效率。
對比學習:一個 batch 有 N 個圖片文本對,計算相似度矩陣,對角線上的 N 對為正樣本,另外 對為負樣本。最大化正樣本相似度,最小化負樣本相似度,使用一個對稱交叉熵損失優化。
▲ 偽代碼,值得注意的是在計算交叉熵時傳入的是 label 數值,在函數里變成 one-hot 向量
模型選擇和訓練:圖像編碼器使用了兩種:resnet(用帶有注意力的池化得到整張圖的全局表征),ViT。文本編碼器使用 transformer,在文本編碼器中使用了掩蔽自我注意,以保留使用預訓練的語言模型進行初始化的能力。
在零樣本學習中,以分類任務為例,使用 prompt 的方法,將分類任務轉換為圖片、文本的匹配問題。即將標簽單詞和提示語構成候選句子,再把圖片編碼成特征向量,分別計算相似度,找到可能性最高的類別。
1.2 實驗
實驗先和其他的零樣本學習模型對比,在 Visual N-Grams 相比,CLIP 在三個圖片分類數據集上的準確率都有很大提升。
作者用實驗證明 prompt 的必要性,一個詞經常會具有多義性,而將詞帶入到特定的上下文提示語中,就可以有更清晰的意義,有助于分類。另一方面可以減小和預訓練任務之間的 gap。實驗證明使用 prompt 要更有效。
▲ 藍線是在(微調和)測試時只使用 label 的文本,綠線是使用了 prompt 和 ensemble,prompt 即給 label 加一段提示語,ensemble 指同時用多個不同的上下文 prompt 語句,對于一個 label 生成多個句子 embedding 再集成
▲ 在 27 個分類數據集上零樣本學習 clip 與全監督訓練的 resnet50 效果對比
實驗部分這些是比較好懂的,arxiv上原文光實驗部分就有大概二十頁,不過 dblp 上有簡約版的。
CoOp
模型 CoOp,主要的思想是自動設計提示文本,先保持預訓練參數不變,然后利用少量數據去學習合適的 prompt,這樣的 prompt 比人工設計的提示文本在測試時更有效。值得注意的是,學習合適的 prompt,只是學到適合這個任務的一組詞向量,并不一定是找到了一組真實的詞(意思是說學到的詞向量可能映射到亂七八糟的詞上去,但就是這些詞最適合做這個任務的提示語,這和語義空間的連續性有關)。
論文標題:
Learning to Prompt for Vision-Language Models
論文鏈接:
https://arxiv.org/pdf/2109.01134.pdf
代碼鏈接:
https://github.com/KaiyangZhou/CoOp
作者的 motivation 在于觀察到 prompt 的選擇對測試結果影響很大。
2.1 主要方法
預訓練過程和 CLIP 相同,也是使用對比學習。CLIP 在預訓練之后,會直接進行 zero-shot inference(零樣本推理),使用 prompt 的方法,把 K 個 label 分別結合到提示語句,然后得到對應的 K 個表征,分別和圖像計算相似度。
本文的方法 CoOp(context optimization),可以避免人為地設計提示語,把輸入 prompt 設計成如下格式:
其中 是隨機初始化的詞向量,也是 512 維。注意這里上下文詞向量對于不同類別是共享的。在訓練階段,把 t 前向傳播,和圖像特征計算相似度,計算出對應每一類的概率 ,再用交叉熵優化,學到合適的 (這個上下文提示是 task-relevant)。
prompt 有一些其他的變種,一種是改變 CLASS 的位置,把 [CLASS] 放在句子中間,這樣可以學習到更靈活的上下文;另一種是每種 CLASS 學習一組上下文提示語句,即不同類別對應的語句不同,作者發現這樣的方法對一些細粒度的分類很有效。
2.2 實驗
使用 11 個分類數據集做小樣本學習,涉及到的分類有物體、動作、場景等。
▲ 圖中的星點是 zero-shot clip,即 clip 直接推理的結果,對于實線,M 是? prompt 長度,end、mid 表示 CLASS 位置,CSC 表示 class-specific 的提示,虛線是 clip 也做了微調,用一個隨機初始化的線性層計算相似度(?不知道這里 linear probe 啥意思),橫坐標是訓練的每類小樣本數目
從平均結果看,coop 在小樣本學習中效果更好,并且當增加用 16 個樣本訓練時,準確率可以提高 17 個點。
對于數據分布變化的魯棒性,如表 1,target 數據集是一些 imagenet 數據集變體,在 source 上做小樣本訓練,在 target 測試,發現 M 越小魯棒性、泛化性能越好。表 2 表示 coop 比 clip 里 prompt ensemble 效果還要好。表 3 對比了隨機初始化和人為設定 prompt 兩種情況直接測試的準確率,表明即便隨機初始化一個 prompt,測試效果與人為設定也差不多,當然,如果再使用小樣本微調一下隨機的 prompt,效果就更好了。
上圖,左邊是 prompt 長度 M 和 class 位置的消融實驗;右邊是不同視覺 backbone 的影響。
下表就是把學到的詞向量通過歐氏距離找到的詞表中最近的詞,可以看到可解釋性很差,但對于模型來說就是有效。這就是“隱式學習”吧,不知道模型學了個啥。
2.3?總結
雖然效果上看 coop 使用自動生成 prompt 要好過 clip,但一個主要的區別在于 coop 也需要少量的數據學習 prompt,即少樣本學習,而 clip 由于直接使用人為設計的提示語句,可以進行零樣本學習(不過實驗部分也看到 coop 直接用隨機的 prompt 也能做零樣本學習,就是差點)。
CLIP-adapter
CLIP 和 COOP 分別在今年 3 月份、9 月份掛載 arxiv 上,十月份又掛了一篇:CLIP-adapter。coop 和?CLIP-adapter?都是在 clip 基礎上增量式的工作,clip 使用一個人為設定好的 prompt 直接進行零樣本推理,而?coop 和?CLIP-adapter 都是使用小樣本學習,coop 是初始化一個隨機的 prompt,在小樣本中學習合適的 prompt,從而更適應這個任務;adapter 是在模型中間插入一個隨機的可學習的模塊,通過更新這個模塊來更適應下游任務。
論文標題:
CLIP-Adapter: Better Vision-Language Models with Feature Adapters
論文鏈接:
https://arxiv.org/abs/2110.04544
代碼鏈接:
https://github.com/gaopengcuhk/clip-adapter
3.1 模型
最下面就是 adapter 的結構,在小樣本學習時,在兩個分支上各加入一個可學習的層。小樣本訓練時,其他部分凍結參數(如果更新整個大模型,由于數據太少很容易過擬合)。并且為了更好地結合微調的知識和原始的知識,又加入一個殘差連接結構,見圖。
3.2 實驗
在?11 個數據集上進行小樣本學習,可以看到 clip?零樣本推理的結果,clip?小樣本微調的結果,coop?小樣本學習的結果,adapter?小樣本學習的結果。
從左上角平均結果的圖可以看出,adpater 小樣本學習的效果最好。對于 clip,小樣本學習的初始階段甚至弱于零樣本學習,所以人為設定的 prompt 只是我們看上去合理的提示語句,對于模型來說可能并不是一個好的初始化。
特別鳴謝
感謝 TCCI 天橋腦科學研究院對于 PaperWeekly 的支持。TCCI 關注大腦探知、大腦功能和大腦健康。
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
📝?稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
📬?投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本怎么调刷新频率 笔记本电脑如何修改
- 下一篇: 联想超级本yoga211怎么U盘启动 联