天天看點

預訓練模型時代:告别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 層(圖一中的綠色部分)。

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

圖1:elf-training的資料選擇方法

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

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

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

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

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

(1)領域自适應: 利用領域外的資料訓練模型,進而提升在領域内資料的翻譯表現。

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

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

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

針對不同的語言對或者領域資料,配置對應的adapter 子產品分别訓練,由于每個子產品的參數量較小,是以總體訓練的代價也較小。

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

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

圖2 多語言問題中的transformer子產品和adapter 子產品

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

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

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

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

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

是以對于一些語料資料充足的語言對來說,其對應adapter的訓練需要做進一步的調整優化。

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

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

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

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

預訓練模型時代:告别finetune, 擁抱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

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

圖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.