文章匯總
想解決的問題
對CoOp的改進CoCoOp盡管提升了性能,但卻增加了方差(模型的準確率波動性較大)。
模型的框架
一眼看去,跟maple很像(maple跟這篇文章都是2023年發表的),但maple的視覺提示是由文本提示經過全連接轉換而來的,而這里是文本提示和視覺提示是獨立的。另外maple中的前J層的視覺/文本提示都是學習完之后就丟掉了。
文章的創新點
提示的初始化
其中表示只讀視覺提示和文本提示的集合,為初始化方差。本文將設為0.1。這對提示的初始化略有不同,以便可學習提示避免常量初始化。
這里的亮點在于視覺提示的均值使用了[CLS],文本提示的均值使用了[EOS]$ y^{(0)} $。
帶掩碼的注意力
Transformer編碼器中的屏蔽注意操作可表述如下。
亮點在于:
1.屏蔽了文本/視覺特征參考提示做的注意力,即此時文本/視覺特征為,prompt作。
2.文本特征的注意力跟transformer那樣,一個單詞的注意力只和其前面的單詞計算。
摘要
近年來,提示調優已被證明在使預訓練的視覺語言模型適應下游任務方面是有效的。這些方法旨在通過引入可學習的提示來適應預訓練的模型,同時保持預訓練的權重不變。然而,可學習提示會影響自注意模塊的內部表示,這可能會對性能差異和泛化產生負面影響,特別是在數據不足的設置中。為了解決這些問題,我們提出了一種新的方法,只讀提示優化(RPO)。RPO利用隱藏注意力來防止預訓練模型中的內部表示轉移。此外,為了便于優化RPO,根據預訓練模型的特殊令牌初始化只讀提示。我們的大量實驗表明,RPO在基到新泛化和域泛化方面優于CLIP和CoCoOp,同時表現出更好的魯棒性。此外,該方法在數據極度缺乏的情況下也能實現更好的泛化,同時提高了參數效率和計算開銷。代碼可從https://github.com/mlvlab/RPO獲得。
1. 介紹
CLIP[6]、ALIGN[24]、FILIP[50]等視覺語言模型在各種視覺語言任務中都取得了優異的表現。由于視覺語言模型是由基于對比學習目標的自然語言監督的,通過將類名放在文本模板中(例如,“A photo of a [CLASS]”),視覺語言模型可以在開放詞匯設置中有效地對圖像進行分類[6]。
最近的研究探索了這些視覺語言模型在下游任務中的適應性[19]。然而,與小型預訓練模型不同,大規模架構(例如CLIP)很難微調,因為它效率低下,資源密集,并且可能會破壞預訓練期間學習到的良好表示。在CLIP中,進行提示工程以向下游任務提供特定領域的上下文(例如,“A photo of a [CLASS], a type of car”)[6]。但是,這意味著必須根據試驗和錯誤手動選擇提示符。
為了緩解這個問題,上下文優化(CoOp)[33]建議在CLIP上自動化提示工程,用可學習的向量替換基于自然語言的提示中的上下文詞。條件上下文優化(Conditional Context Optimization, CoCoOp)[31]用一個額外的神經網絡生成的圖像條件提示擴展了CoOp,以提高泛化。
圖2:模型適應和RPO方法的說明。(a)如?所表示的,令牌特征和提示特征在傳統的提示調整方法中可以相互看到。雖然模型的權重已經被凍結,但通過自注意機制引入的可學習提示,預訓練CLIP的內部表征越來越多地發生變化。(b)在線性探測中,內部表示和預訓練參數被凍結。模型頂部的線性層被訓練用于模型自適應。?如?所示,在我們的方法RPO中,只有提示符可以讀取令牌特征,而不是其他方式。這使令牌特性保持凍結狀態,不受引入的提示的影響,而我們的只讀提示只從令牌特性讀取有用的信息。
雖然現有的這些方法是為了避免在提示學習過程中對預訓練模型的學習參數產生不利影響而提出的,但它們仍然通過注意機制影響模型的隱藏表征,我們稱之為內部表征轉移。我們在圖2a中可視化了這一表示轉換過程。令牌通過transformer[55]層進行處理,預訓練模型的內部表示在很大程度上被可學習提示改變。這可能是有益的,因為它允許模型更好地適應下游任務。
圖1:CoOp、CoOp和線性探測的方差。與CoOp和CoCoOp等提示學習方法相比,線性探測不會改變預訓練的表征,在性能上的差異更小。
然而,如圖1所示,在數據不足的情況下,這種轉變可能會對模型的魯棒性和泛化產生負面影響。另一方面,線性探測沒有內部表示移位,如圖2b所示,但線性層引入了參數低效率。
為了檢驗在數據不足的情況下,表示移位如何影響模型方差,我們對線性探測CLIP進行了初步實驗,該實驗不會改變預訓練CLIP的內部表示。我們在FGVCAircraft數據集上分割了10個隨機的少彈訓練數據,并使用16彈學習設置對模型進行訓練,并將性能方差可視化。有趣的是,如圖1所示,我們觀察到與CoOp和CoCoOp相比,線性探測顯著降低了方差,盡管與CoOp (2K)和CoCoOp (35K)相比,它需要更多的訓練參數(262K)。這一結果表明,由缺乏數據訓練引起的內部表征移位可能導致高方差。同時,正如CoOp經驗表明的那樣,線性探測有時在領域轉移任務中缺乏泛化性,并且其附加參數的數量是不可取的。
基于這一觀察,我們提出了只讀提示優化(Read-only Prompt Optimization, RPO),它學習只讀提示,如圖2c所示。RPO在參數有效的同時防止了自適應過程中的表示移位,從而使自適應更加健壯和可推廣。
我們的貢獻可以總結如下:
?我們提出了只讀提示優化(RPO),它允許提示僅從預訓練的視覺語言模型的基于注意的交互中讀取信息,從而防止內部表征轉移。
?我們為只讀提示開發了一種簡單而有效的初始化方法,利用預訓練的CLIP視覺語言模型的特殊標記嵌入。
?我們廣泛的實驗和分析證明了RPO在少量樣本自適應設置下對域和標簽移位的泛化,在9個基準到新泛化的基準和4個領域泛化的基準中取得了最佳性能,同時減少了依賴于少量樣本的方差。
2. 相關的工作
視覺語言模型
大量的網絡抓取圖像-文本對[6,24,15,5,45,44]便于視覺語言模型進行對比預訓練,從而能夠獲得強大且可泛化的圖像表示。例如,CLIP[6]和ALIGN[24]依靠基于轉換器的編碼器[55]來映射圖像和文本之間的復雜關系。這些視覺語言模型在各種下游任務中取得了優異的表現,特別是在零采樣圖像分類中。在這些工作之后,許多其他工作[12,18,48,47]已經出現,以利用視覺語言模型的力量進行圖像相關任務,如圖像識別[33,31,29,38,9]。
然而,盡管這些模型具有很強的泛化性能,但使其適應特定任務可能具有挑戰性,因為為不同的下游任務組裝大型數據集是一項艱巨的挑戰[39]。為了緩解這一問題,最近的研究重點是基于CLIP的可轉移性,使預訓練的視覺語言模型能夠快速適應特定的任務。
提示學習
提示學習[27,22,32,13]最初是在GPT[7,10]和BERT[21]等自然語言處理模型中提出的。該技術涉及合并其他標記,例如手工制作的指令或可學習的提示,以促進對下游任務的預訓練語言模型進行微調。額外的標記為模型提供下游任務的上下文信息,同時保持原始語言模型不變,從而避免災難性遺忘[40]。基于這種方法的有效性,最近的研究試圖在視覺語言模型中利用提示學習的概念。
最近對視覺語言模型的研究使用提示學習,使用連續的矢量提示,并使用文本標記進行連接和處理[33,49]。另一行作品介紹了依賴于視覺特征的提示[29,31,38,26,52]。連續提示學習方法[23,53,28]減少了訓練參數的數量,并自動識別功能良好的提示。視覺提示調優(Visual Prompt Tuning, VPT)[29]將提示插入到視覺編碼器而不是文本編碼器中。同樣,提示有效地包含并傳達了關于手頭任務的知識。
零樣本學習和領域泛化
零樣本學習涉及從訓練過程中可用的“基本”對象類中學習一般知識,并使用這些知識來識別新的類。為了實現這一點,一些方法包括使用顏色或形狀等視覺屬性來跨類進行泛化[17],或者使用視覺語言模型來映射視覺樣本和相應的文本[33,31,34]。
域泛化要求視覺編碼器生成域不變表示,這意味著它們不受拍攝圖像的特定域或設置的影響。例如,蘋果的照片和蘋果的素描[30]應該產生相似的表示。已經提出了各種方法來實現領域泛化,例如使用預訓練模型進行廣義表示[2,41]和跨模態監督[20]。
雖然視覺語言模型中的提示學習已經顯示出更好的性能,但可學習的提示很有可能通過注意機制改變原始模型中功能良好的部分[55]。注意機制使所有輸入嵌入相互作用,從而影響預訓練模型的隱藏表示。如果訓練數據不足,這可能會導致凍結模型中的意外行為。
3. 方法
在本節中,我們提出了只讀提示優化(Read-only Prompt Optimization, RPO),用于在少量數據缺乏的情況下,對視覺語言模型進行魯棒性和可泛化的自適應。我們引入了一組只讀提示,連接到視覺和文本編碼器的輸入,然后用屏蔽注意進行處理,以避免對CLIP的內部表示產生影響。在提示優化期間凍結所有預訓練的參數,并且僅更新連接的只讀提示。
圖3:RPO的整體架構。我們對所有數據集使用默認提示“A photo of A [CLASS]”。然后,在兩個編碼器中,我們的只讀提示被連接到原始功能并饋送到一個凍結的編碼器中。這些編碼器中的注意力是被屏蔽的,這樣我們的提示可以被學習,但不會改變原始的特征交互。我們計算對應于個提示的每個編碼器的輸出之間的相似性分數,并對它們進行平均,以產生最終分類分數到,其中表示類的數量。
3.1. 只讀的提示
對于文本編碼器和可視編碼器,RPO都使用相同的機制。我們首先連接一組連續的可學習提示,這需要最小的額外參數來訓練,圖像補丁嵌入或詞嵌入。公式如下:
其中表示特殊的令牌嵌入,[CLS]用于視覺編碼器,[EOS]用于文本編碼器,它們在每個編碼器中充當特征聚合器。表示視覺嵌入和文本嵌入,表示圖像patch和單詞嵌入的尺寸,表示特征標記的長度,不包括特殊標記。表示可視和文本編碼器的第個可學習提示符,為提示符的個數。兩個編碼器的提示數是相等的。注意,不像在以前的文本提示學習方法中,可學習提示替換對應于’ A photo of A ‘的標記嵌入,我們對’ A photo of A [CLASS] '提示進行編碼,生成,然后串聯只讀的可學習提示。
3.2. 基于特殊令牌的初始化
在RPO中,每個可學習的提示都是通過稍微擾動的特殊標記進行初始化的,即預訓練CLIP的視覺編碼器上的[CLS]和文本編碼器上的[EOS],命名為ST-initialization。在CLIP中,特殊的令牌扮演特征聚合器的角色,它在transformer 編碼器的最后一層充當輸入的代表。由于只讀提示也執行特征聚合,我們發現基于特殊標記初始化提示是有益的,這是一個很好的起點。ST初始化的消融研究見表3。我們初始化提示如下:
其中表示只讀視覺提示和文本提示的集合,為初始化方差。本文將設為0.1。這對K提示的初始化略有不同,以便可學習提示避免常量初始化。
3.3. 帶掩碼的注意力
圖4:每個編碼器的注意掩碼的可視化。
在我們的RPO框架中,隱藏注意力對于在預訓練的CLIP中保留內部交互非常重要。如圖4a和圖4b所示,我們提出了一個注意掩碼,以防止原始特征被可學習的提示嵌入所破壞。視覺注意掩碼和文本注意掩碼將注意力從可學習的提示流限制到已有的特征,其中,。
掩碼可以定義如下,其中表示第行,第列的掩碼元素:
Transformer編碼器中的屏蔽注意操作可表述如下。
式中,和分別為視覺編碼器和文本編碼器的第掩碼多頭自注意層。表示第視覺編碼器層的輸入張量,表示第文本編碼器層的輸入張量。視覺和文本編碼器的最終輸出和表示如下:
其中為層數,為第個視覺和文本提示特征,由各自的編碼器產生。是預訓練的投影矩陣,將投影到。
3.4. 對比評分函數
如圖3所示,對于對提示,我們基于給定單個圖像和類標簽的余弦相似性計算個logits。給定和,我們將它們之間的相似性定義為公式(9)。通過平均logits,我們產生與個獨立模型的集合相同的效果,這些模型具有關于圖像和文本的單獨視角。
使用集成邏輯,我們定義如下式(10)的概率分布,其中表示預訓練CLIP的溫度超參數。
4. 實驗
w.o代表without
圖5:RPO與cooop的方差與概化。從新的泛化基礎和更小的性能差異來看,RPO比coop更具泛化性和魯棒性。
5. 結論
大規模預訓練模型的出現,如CLIP[6]、ALIGN[24]和FILIP[50],使得以參數高效的方式有效地使它們適應下游任務變得越來越重要。對整個模型進行微調可能是資源密集型的,并且可能會破壞在預訓練期間學習到的定義良好的模型表示。從參數效率的角度來看,提示學習是一種很有希望避免這些問題的方法,但現有的方法最終仍然是通過注意機制來改變數據令牌的表示[33,31,16],這是一種不穩定的適應策略,特別是在數據不足的情況下,如少鏡頭學習。
為了解決這些挑戰,我們提出了一種新的方法,利用只讀提示來防止骨干模型中的內部表示轉移,從而獲得更好的泛化和魯棒性。我們的方法還在視覺和文本編碼器上使用了可學習的提示,并將它們初始化為特殊的令牌,如[CLS]和[EOS],以便更好地收斂。我們的大量實驗表明,我們的方法在基到新泛化和域泛化方面優于其他方法,并且方差顯著降低。
然而,盡管這種方法具有巨大的潛力,但它仍然是一個未開發的領域。與其他適應策略相比,該方法的效率和有效性有待進一步研究。盡管如此,我們的方法為在資源有限的情況下對預訓練模型進行可推廣和健壯的適應提供了一個有希望的方向。
參考資料
論文下載(ICCV 2023)
https://arxiv.org/abs/2308.14960
代碼地址
https://github.com/mlvlab/RPO