預訓練模型時代:告別finetune, 擁抱adapter


©NLP論文解讀 原創•作者 |FLIPPED

 

研究背景

 

隨着計算算力的不斷增加,以transformer為主要架構的預訓練模型進入了百花齊放的時代。BERT、RoBERTa等模型的提出為NLP相關問題的解決提供了極大的便利,但也引發了一些新的問題。

 

首先這些經過海量數據訓練的模型相比於一般的深度模型而言,包含更多的參數,動輒數十億。在針對不同下游任務做微調時,存儲和訓練這種大模型是十分昂貴且耗時的。

 

尤其對於機器翻譯任務而言,如果針對一對語言對就需要存儲和微調這樣一個”龐然大物“,顯然在時間和空間上都是不可接受的。

 

為了解決這個問題,以輕量和擴展性強聞名的Adapter方法被提出,相比於“勞民傷財”的全參數微調,它只需要以一個較小的訓練和存儲代價就可以取得和全模型微調相當的結果。

 

 

1、Adapter方法介紹

 

首先adapter方法的原理並不復雜,它是通過在原始的預訓練模型中的每個transformer block中加入一些參數可訓練的模塊實現的。

 

假設原始的預訓練模型的參數為ω,加入的adapter 參數為υ,在針對不同下游任務進行調整時,只需要將預訓練參數固定住,只針對adapter參數υ進行訓練。

 

通常情況下,參數量υ<<ω, 因此在對多個下游任務調整時,只需要調整極小數量的參數,大大的提高了預訓練模型的擴展性和實用性。

 

對於adapter模塊的網絡組成,不同文章中針對不同任務略有不同。但是比較一致的結論是,bottleneck形式的兩層全連接神經網絡就已經可以滿足要求。

 

在Houlsby[1]的文章中,每個transformer 層中有兩個adapter模塊,在每個adapter模塊中,先將經過多頭注意力和前饋層輸出的output做一個降維的映射。

 

經過一個非線性激活層后,再將特征矢量映射回原始的維度。在下游訓練任務中,只更新adapter模塊和layer Norm 層(圖一中的綠色部分)。

 

 

 

圖1:elf-training的數據選擇方法

 

相比於預訓練模型的全參數微調,Adapter 方法的優勢十分明顯:

 

(1)針對不同下游任務可保持預訓練模型不變,僅需訓練adapter模塊的少量參數,訓練代價小,可移植性強。

 

(2)對於不同任務的連續學習(continual learning)而言,由於在訓練不同任務時只需要訓練不同的adapter,其他模型參數保持不變,避免了在學習新任務時對過往任務的遺忘。

  

2、Adapter 在神經機器翻譯(NMT)中的應用

 

機器翻譯是adapter大展拳腳的一個重要舞台,尤其是在處理領域自適應和多語言翻譯問題上:

 

(1)領域自適應: 利用領域外的數據訓練模型,進而提升在領域內數據的翻譯表現。

(2)多語言翻譯問題:對於新給的一個低資源的語言對數據,如何利用已有的翻譯模型來提高在新語言對上的翻譯表現。

 

在這兩個比較典型的任務上,常用的方法仍然是基於整個模型的微調,然而對於持續不斷地新任務(新的領域數據或者新語言對數據),顯然adapter 嵌入調整的方法更具有優勢。

 

Ankur Bapna [2]在論文中針對這兩個問題給出了通用的解決方法,如下圖所示。

 

針對不同的語言對或者領域數據,配置對應的adapter 模塊分別訓練,由於每個模塊的參數量較小,所以總體訓練的代價也較小。

 

同時因為原始模型的參數是固定不動的,所以原始任務的推理並不會受到新任務的干擾。

 

 

 

圖2 多語言問題中的transformer模塊和adapter 模塊

 

實驗結果方面,在領域自適應任務中,對比了微調方法、LHUC(在預訓練模型中加入一些門控參數)、和adapter 微調的方法。

 

如表一所示,base模型是將WMT中的英法語言對作為領域外的數據進行預訓練的結果,需要在IWSLT和JRC兩個領域內數據的數據集上做微調對比。可以看出,Adapter方法取得了與全模型finetune方法相當甚至更好地結果。

 

 

 

表一 :在領域適配問題上不同調整策略的表現

 

在多語言任務中,adapter調整策略略有不同。因為不同語言對的輸入輸出分布各不相同,進而造成了encoder端的embedding層和輸出端的softmax層的差異較大。

 

因此對於一些語料數據充足的語言對來說,其對應adapter的訓練需要做進一步的調整優化。

 

為此文章提出了兩階段訓練的方法:

 

(1)全局訓練階段:利用所有語言對訓練一個完全共享的預訓練模型。

(2)局部精煉階段:對於一些訓練語料充足的語言對,對其adapter在本領域內數據做進一步局部調整。

 

這一步主要是為了彌補在全局訓練階段在全數據集上訓練造成的性能損失。

 

 

 

圖3 包含103種語言的多語言模型采用不同調整方式的推理效果

x軸從左到右按照語言對數據量大小由多到少排列;

y軸,相對於雙語模型BLEU分表現

 

由上圖可以看出,兩階段訓練的方法極大的彌補了常規多語言模型在富語料問題上的損失,並且對於低資源的語言對,利用adapter調整過的多語言模型的翻譯效果要明顯優於雙語模型。

 

此外,adapter訓練的靈活性和輕量化也極大的方便了該方法在不同語言對上的應用。

 

3、adapter開源庫

 

既然adapter有這么多好處,那有沒有比較好的開源庫可以直接用呢?答案當時是有的。我們都知道huggingface 開源的transformer 庫十分的方便易用,各種SOTA的BERT、RoBERTa預訓練模型應有盡有。

 

但是更貼心的是,他們在原來框架的基礎上增添了adapter 模塊的訓練和擴展——AdapterHub[3],用戶只需要在原來的訓練腳本中更改不超過兩行的代碼,就可以針對不同的下游任務無縫訓練新的adapter模塊,並且整個adapter模塊的參數和原始的預訓練模型參數是完全獨立存儲的。

 

此外,該庫的另一大特點就是完全開源與共享,如下圖所示,每個用戶都可以基於huggingface提供的預訓練模型訓練並上傳自己的adapter模塊,而其他用戶也可以根據個人的任務選擇對應的預訓練adapter模塊直接使用。

 

具體細節感興趣的同學可以參考他們的github倉庫:

https://github.com/Adapter-Hub/adapter-transformers

 

 

 

圖4 AdapterHub 應用流程圖

 

隨着深度學習逐漸進入預訓練模型時代,如何針對不同下游任務微調出一個更好地目標模型受到了越來越多學者的關注。

 

相比於全模型上的finetune, 輕量化和擴展性更強的adapter 方法顯然更具優勢,而如何將不同任務的adapter進行融合進而提升預訓練模型在多任務學習上的表現,也將會是未來該領域一個重要的發展方向。

參考文獻:

[1] Houlsby N, Giurgiu A, Jastrzebski S, et al.

Parameter-efficient transfer learning for NLP[C]//International Conference on Machine Learning. PMLR, 2019: 2790-2799.

[2] Bapna A, Firat O. Simple, Scalable Adaptation for Neural Machine Translation[C]//Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP). 2019: 1538-1548.

[3] Pfeiffer J, Rücklé A, Poth C, et al. AdapterHub: A Framework for Adapting Transformers[C]//Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations. 2020: 46-54.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM