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

NLP論文解讀發表於2021-12-29

©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 庫十分的方便易用,各種SO他的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.

 

相關文章