突破預訓練與存儲瓶頸:利用視覺語言模型提升無監(jiān)督領域自適應 !
共 18703字,需瀏覽 38分鐘
·
2024-07-19 09:00
點擊下方卡片,關注「集智書童」公眾號
前沿AI視覺感知全棧知識??「分類、檢測、分割、關鍵點、車道線檢測、3D視覺(分割、檢測)、多模態(tài)、目標跟蹤、NerF」
歡迎掃描上方二維碼,加入「集智書童-知識星球」,日常分享論文、學習筆記、問題解決方案、部署方案以及全棧式答疑,期待交流!
本文的重點是利用視覺語言預訓練(VLP)模型對無監(jiān)督領域適應(UDA)中的兩個重要挑戰(zhàn)進行思考。
首先,UDA的性能很大程度依賴于預訓練模型,例如,一些文章顯示只使用ViT模型即可取得與CNN相關的UDA先進方法近似的性能,目前常用的預訓練模型一般基于ImageNet預訓練。然而,隨著近年來VLP技術的興起,VLP 模型在 UDA 中的潛力在很大程度上仍未得到開發(fā),VLP 模型的豐富表征對于增強 UDA 任務具有重大前景。為了解決這個問題,我們提出了一種稱為跨模態(tài)知識蒸餾(CMKD)的新方法,利用 VLP 模型作為教師模型來指導目標領域的學習過程,從而產(chǎn)生先進的性能。
其次,當前的 UDA 范式涉及為每個任務訓練單獨的模型,隨著任務數(shù)量的增長,會導致巨大的存儲開銷。為了克服這一挑戰(zhàn),我們引入了殘差稀疏訓練(RST),利用了 VLP 廣泛的預訓練所帶來的好處,該技術只需要對 VLP 模型參數(shù)進行極少量參數(shù)調(diào)整(大約 0.1%~0.5%)即可實現(xiàn)與全參數(shù)微調(diào)相當?shù)男阅堋?/p>
論文被 TCSVT 2024接收,代碼已開源。
-
論文鏈接:https://ieeexplore.ieee.org/abstract/document/10505301 -
代碼鏈接:https://github.com/Wenlve-Zhou/VLP-UDA
1. 研究動機
圖1 VLP模型微調(diào)和UDA部署的概述
1.1 關于預訓練模型的思考
無監(jiān)督領域自適應可以有效緩解domain shift帶來的模型性能下降問題,因此,該領域一直是機器學習的研究熱點。在計算機視覺領域中,研究者們做出了重要的貢獻,通常做法是基于ImageNet預訓練模型進行UDA方法設計,例如,基于對抗訓練的特征對齊方法【1】,或Cross-attention機制等【2】。在大規(guī)模視覺語言預訓練時代,VLP 模型獲得了巨大的關注。大規(guī)模的預訓練賦予了模型豐富的表征能力,為推動 UDA 任務提供了巨大的潛力。然而,與基于視覺預訓練模型的UDA研究相比,基于VLP模型的UDA研究仍較少研究者關注。因此,我們主要關注基于VLP模型的UDA技術,本文使用CLIP【3】模型進行研究。
從參數(shù)訓練角度來看,以往的大部分UDA技術也可視為對神經(jīng)網(wǎng)絡的Fine-Tuning。在計算機視覺的其他領域中,為了利用CLIP模型的預訓練特征并在相關任務上使用,研究者們會保留CLIP模型的視覺編碼器而將文本編碼器丟棄,僅對visual encoder進行微調(diào)(如圖1(a)(i)所示)。然而,在UDA領域中,僅對視覺編碼器微調(diào)或許不是最好的選擇。Text Encoder可視為包含大量的通用知識,若將域適應過程與人類學習過程類比,在新的任務場景或需掌握一項新的技能時,人類的基礎技能(如語言、常識等)起非常重要的作用?;A知識可以幫助我們自身快速實現(xiàn)場景適應或任務學習。
而另一種做法則是保留文本編碼器,但同時凍結視覺和文本編碼器,利用Prompt Tuning方法對模型進行訓練(如圖1(a)(ii)所示),這種類型的做法也是目前基于VLP模型研究UDA的研究者們常用的思路。例如DAPL【4】采用“An image of [Domain] [Class]”的形式進行Prompt Tuning;PDA【5】引入基于提示的分布對齊技術,采用雙分支提示微調(diào)范式。但凍結視覺編碼器,Prompt Tuning本質上只是在Linear Probe范式下學習一個決策平面,視覺編碼器的表征決定了UDA任務的上限,因此,盡管Prompt Tuning范式很好地保留了Text Encoder蘊含的通用知識,但恐怕未能完全釋放VLP的潛力。
1.2 權重存儲瓶頸
一直以來,UDA領域主要關注的還是如何更好提升模型在目標域上的性能,但似乎很少有研究者對權重存儲問題進行思考。舉個例子,目前流行的Benchmark——DomainNet,共有6個子領域,通過兩兩構建域適應任務可以構建30個遷移任務,即要存儲30個模型權重。以近年來常用VIT-Base為例,單個模型參數(shù)量約為86M參數(shù),30個遷移子任務共需存儲2.58B參數(shù)量,像最近比較出圈的MiniCPM小鋼(由面壁智能推出的一款相對輕量化的大模型)也僅2.8B參數(shù)量。而在真實場景中,隨著場景的變化和任務的需求,模型權重的存儲開銷可能會更大。
一種可行的思路是探索大型語言模型(LLM)中的參數(shù)高效微調(diào)(PEFT)技術中的結構化重參數(shù)體系,通過在訓練階段訓練一些額外的參數(shù),利用結構化參數(shù)化技術可在不增加額外推理開銷情況下實現(xiàn)模型微調(diào),在對下游任務進行權重存儲時,僅需保存額外的訓練參數(shù)即可,LoRA【6】是該技術的代表。LoRA設計所依賴的假設是LLM在適應新任務時具有低秩特性,然而,UDA通常使用ResNet-50和ViT-Base作為基線模型,LoRA等技術在UDA領域中是否適用仍未可知。
2. 研究亮點
針對上述挑戰(zhàn),我們分別提出了跨模態(tài)知識蒸餾(Cross-Modal Knowledge Distillation, CMKD) 和 殘差稀疏訓練(Residual Sparse Training, RST)。
-
跨模態(tài)知識蒸餾(CMKD):利用VLP模型作為教師模型,利用文本編碼器的通用知識引導目標域的學習過程,從而實現(xiàn)領先的性能,如圖1(a)(iii)。CMKD具有簡潔的特性,可作為Baseline與不同的技術進行結合,進一步提升任務性能。
-
殘差稀疏訓練(RST):只需對VLP模型參數(shù)進行微調(diào)(約0.1%~0.5%),即可實現(xiàn)與完全微調(diào)相當?shù)男阅?,大大減少了模型存儲開銷。當進行模型部署時,選擇由RST訓練所獲得超稀疏權重與預訓練模型權重簡單相加,即可獲得下游任務模型權重,如圖1(b)(ii)所示。
除此之外,由于CMKD需要微調(diào)視覺編碼器,盡管可以取得更優(yōu)的性能,但無疑會破壞了CLIP的零樣本推理能力。而RST與CMKD的結合,可以很好地解決該問題,當需要轉注于下游任務時,可以將RST的權重與預訓練的權重相加獲得下游任務模型權重,而需要專注于通用任務時,則用原始預訓練權重即可。
3. 論文方法
3.1 預備知識: CLIP的基本原理
圖2 CLIP模型的概述
CLIP模型是經(jīng)典的視覺文本預訓練雙塔模型,包含一個圖像編碼器 和文本編碼器 ,圖2為訓練和推理過程。CLIP通過圖像——文本對的方式進行推理,其中文本編碼器的輸入形式為“a photo of a [CLASS]”,[CLASS]代表類別的名稱,如“bus”,“train”等。正樣本對由圖像 和對應的文本 組成,而負樣本對則由圖像 和不相關的文本 構成,其中 。
由于模型在訓練階段已利用大量圖像文本對以對比學習方式進行訓練,因此,當給定K個類別([CLASS])時,對于圖像 ,模型預測屬于類別 的概率為:
在我們提出的方法CMKD中,我們將同時使用文本編碼器和視覺編碼器來進行無監(jiān)督領域適應訓練。在訓練過程中,我們引入了一個下游任務頭 ,與視覺編碼器結合以構建下游模型,同時保持文本編碼器處于凍結狀態(tài)。由于CLIP在包含4億圖像-文本對的數(shù)據(jù)集上進行了廣泛的預訓練,我們認為 可視為源自預訓練模型的常識推理。這種通用知識增強了下游模型的適應能力,使其能夠執(zhí)行無監(jiān)督領域適應。此外,在推理階段,我們省略了文本編碼器,以減輕推理過程的負擔,具體過程如圖3所示。
圖3 CMKD方法示意圖
3.2 跨模態(tài)知識蒸餾
基于此前的分析,我們希望能在領域自適應過程中,知識蒸餾技術能夠將CLIP模型在預訓練階段的通用知識輔助模型在目標域的訓練。經(jīng)典的知識蒸餾架構【7】利用KL散度來最小化學生模型和教師模型分布之間的差異,促進有效的知識遷移,可以表示為:
其中 表示真實標簽, 表示學生模型的輸出, 表示教師模型的輸出, 是stop-gradient的操作。為了方便表述,第一項為學生模型的預測與真實情況之間的差異,在論文中我們稱為稱為任務項 。第二項評估學生模型和教師模型的預測之間的差異,我們稱為蒸餾項 。參數(shù) 表示trade-off。
然而,由于目標域中缺乏相應的標簽,執(zhí)行任務項 變得具有挑戰(zhàn)性。為了采用類比任務項方式訓練,我們采用自訓練方式(Self-Training)進行學習。常見的做法是利用吉布斯熵最小化對無標記數(shù)據(jù)進行訓練。然而,相關論文表明將吉布斯熵作為優(yōu)化目標會使得模型的預測過度自信,不利于無標注數(shù)據(jù)學習。因此,我們使用較弱的懲罰項,基尼不純度進行(Gini-Impurity,GI)進行自訓練,其中目標和梯度函數(shù)可以表示為:
其中, 表示任務頭的輸出, 指可訓練的參數(shù),即任務頭和視覺編碼器參數(shù)集合。
對于蒸餾項 ,一種直觀的方法是直接利用vanilla KD中的 ,寫為:在傳統(tǒng)的知識蒸餾任務中,教師模型在標注的數(shù)據(jù)上進行訓練,提供的軟分布的準確性能得到保證,然而,CLIP模型提供的軟分布來自零樣本推理的概率分布,在目標域中的準確性無法得到保證。因此,我們認為在CMKD架構中,教師模型的輸出不應該作為明確的訓練目標指導模型訓練,其作用應該是作為一種約束,防止模型在無標簽的目標域中“誤入歧途”,首先給出我們設計的蒸餾項:可以簡單地對公式(6)的梯度進行計算,可得:在CMKD中,蒸餾項同樣是基于基尼不純度設計的自訓練形式,但將公式(8)與公式(4)進行比較,可以發(fā)現(xiàn),教師分布 作為一種約束參與自訓練,當教師分布與學生分布不一致時,當前樣本的自訓練強度則會下降。因此,CMKD的形式可以寫為:
在原始的知識蒸餾任務中,超參數(shù) 是通過認為經(jīng)驗確定,用來在任務項和蒸餾項之間取得平衡。然而,在UDA過程中,由于缺乏正確的標簽,多數(shù)情況下可能都不能朝著正確的方向進行訓練,因此我們設計了一種動態(tài)機制,為每個樣本都分配一個不同的 。動機也十分簡單,當學生分布與教師分布一致性較低時,任務項的權重應該要變低防止模型可能在不正確的方向上進行過多的訓練,動態(tài)機制可寫為:
最后,基于CMKD的UDA的優(yōu)化目標為:
為源域上的監(jiān)督損失。
3.3 殘差稀疏訓練
在1.2小節(jié)中,我們討論了在領域自適應中的存儲挑戰(zhàn),基于結構化重參數(shù)的參數(shù)高效微調(diào)給出了可行的解決思路,以LoRA為例,僅需微調(diào)及存儲極少量的參數(shù)即可使模型適應至于下游任務,LoRA的形式也十分簡單:
其中 為預訓練權重矩陣,更新的部分 由低秩矩陣來降低訓練時的參數(shù)量,其中 , , 。
LoRA的重要假設是,是LLM在任務適配過程中權重的改變量是低秩的。然而,UDA領域常見的基線模型是ResNet50和VIT-B,LoRA的假設可能無法適用于我們的任務,因此,我們將目標轉向另一個重要的特性——稀疏性,并提出殘差稀疏訓練(RST):
其中 是UDA訓練期間的任務權重。訓練過程完成后,可以使用殘差范式獲得稀疏權重 ,如下式所示:
因此,通過這種轉變,方法的核心從學習稀疏權重 轉移到學習與 非常相似的權重。我們采用一種簡單的方法,通過將權重變化的幅度與預定義的閾值 進行比較來確定是否保留預訓練的權重,寫為:
殘差稀疏訓練十分簡單,無需修改網(wǎng)絡結構,也不會改變原來模型的推理方式,在pytorch的實現(xiàn)中也僅有兩行核心代碼,下面給出RST訓練和推理過程的偽代碼:
圖4 RST算法表
4. 實驗
-
在實驗中,我們與主流的SoTA方法進行比較,包含基于不同模型架構實現(xiàn)的方法,包含ResNet50,ResNet101和VIT-B三種不同的模型架構。
-
我們涉及到的Benchmark共有六個常用的基準,分別為Office-Home,Office-31,Visda-2017,ImageCLEF-DA,DomainNet以及Digits: MNIST-USPS-SVHN。
-
由于基于CLIP的Fine-Tuning是一項具有挑戰(zhàn)性任務,不能用UDA常用超參數(shù)組合,我們探索出在UDA任務中,適用于CLIP的Fine-Tuning超參數(shù)組合,為后面的研究者研究UDA下CLIP Fine-Tuning提供了思路。
-
在PEFT相關的實驗中,我們將RST與LoRA等流行的PEFT進行了比較,并提出下游任務參數(shù)量(Downstream Parameters,DSP)來衡量需要存儲的權重大小。
4.1 實驗結果
4.1.1 UDA相關實驗
圖5 Office-Home 實驗結果
圖6 Office-31 / Digits / ImageCLEF 實驗結果
圖7 Visda-2017 實驗結果
圖8 DomainNet 實驗結果
4.1.2 PEFT相關實驗
圖9 RST與流行的PEFT比較的實驗結果
在該部分中,我們主要考慮與不會改變推理過程的PEFT方法進行比較,像LoRA等方法在輕量模型中表現(xiàn)欠佳,而RST在性能與存儲開銷(DSP)中,都展現(xiàn)出優(yōu)良的性能。
4.1.3 超參數(shù)選擇
圖10 關于CLIP微調(diào)的超參數(shù)選擇
CLIP-1 和 CLIP-2代表不同的超參數(shù)配置,其中CLIP-1與常見UDA方法使用ImageNet預訓練模型的超參數(shù)配置基本保持一致,而CLIP-2則是我們最后篩選出的超參數(shù)組合。
具體而言,CLIP-1和CLIP-2最大的不同是學習率配比。UDA常見的學習率配比是Task head和Backbone的比例為10:1,而在CLIP-2中,對于VIT模型而言,比例為1,000:1,而對于ResNet模型而言,比例為10,000:1,換言之,CLIP模型的Fine-tuning過程中,Backbone要用更小的學習率。另外,在整個訓練過程中,ResNet的BN層需要凍結,這點對實驗結果影響很大。
圖11 關于不同的 對性能和參數(shù)量的分析
更多的消融實驗和對比實驗請詳見原文和附錄。
5. 結論和不足
本文針對UDA領域中預訓練模型和存儲問題,分別提出了CMKD和RST進行求解,實驗結果表明,我們的方法取得了一定的效果。然而,CMKD目前只考慮了CLIP范式的文本-視覺預訓練模型,其他的VLP范式是否可行?更廣泛的任務,如檢測、分割呢?
另外,RST雖然取得了一定的效果,但目前的RST無法像LoRA等方法精確控制下游任務需要保存的參數(shù)量,這對于實際使用而言,或許存在一定的障礙,這些問題希望在后面的工作中都可以得到回答。
6. 論文以外的討論
-
在這篇工作投稿收錄后,讀到一些論文和RST的思想是類似的,也想和大家分享下。首先是diff-purning【8】,這篇論文是做NLP領域的PEFT,思想和RST幾乎是一致的,而且這個工作比我們的工作要早。兩個工作最大的不同就是關于稀疏權重的學習,diff-purning主要還是通過稀疏訓練的方法,通過BP算法學習稀疏權重;而我們的方法則暴力得多,直接通過閾值進行學習。后來,我們也在小容量模型上實現(xiàn)了diff-purning但是發(fā)現(xiàn)效果還是不如rst這種閾值選擇的機制。無獨有偶,類似的結論也在ICLR 2024【9】的一篇擴散模型工作得到了類似的結論,作者分別實現(xiàn)了訓練和卡閾值的兩種參數(shù)選擇性機制,但也是發(fā)現(xiàn)卡閾值的方式會有更好的效果?;蛟S這種硬機制在小容量模型中會更有效,但是具體原因還需要以后進行深入分析。
-
最近也有一些同學在基于rst實現(xiàn)一些別的任務,例如類增量學習,發(fā)現(xiàn)rst可以幫助模型更好地收斂;我們在附錄里面的跨域分割、光流估計任務也表明了rst同樣有意想不到的效果,更多細節(jié)大家可以查閱附錄。
參考文獻
【1】 Unsupervised domain adaptation by backpropagation.
【2】 Cdtrans: Cross-domain transformer for unsupervised domain adaptation.
【3】 Learning transferable visual models from natural language supervision.
【4】 Domain adaptation via prompt learning.
【5】 Prompt-Based Distribution Alignment for Unsupervised Domain Adaptation.
【6】 Lora: Low-rank adaptation of large language models.
【7】 Distilling the knowledge in a neural network.
【8】 Parameter-efficient transfer learning with diff pruning.
【9】 Salun: Empowering machine unlearning via gradient-based weight saliency in both image classification and generation.
掃碼加入??「集智書童」交流群
(備注:方向+學校/公司+昵稱)
