導讀:今天爲大家解讀一篇復旦大學邱錫鵬老師課題組的研究論文《How to Fine-Tune BERT for Text Classification?》。這篇論文的主要目的在於在文本分類任務上探索不同的BERT微調方法並提供一種通用的BERT微調解決方法。這篇論文從三種路線進行了探索:(1) BERT自身的微調策略,包括長文本處理、學習率、不同層的選擇等方法;(2) 目標任務內、領域內及跨領域的進一步預訓練BERT;(3) 多任務學習。微調後的BERT在七個英文數據集及搜狗中文數據集上取得了當前最優的結果。作者們發佈了實現代碼,有興趣的朋友也可以跑一跑實驗。
點評:這篇論文從實戰上爲大家提供了寶貴的BERT微調經驗及方法論,當需要應用BERT到具體的現實任務上時,可以參照這篇論文提供的調參路線進行優化。推薦大家讀一讀這篇論文。
大量任務表明在大規模語料庫上預訓練的模型對於文本分類及其他NLP任務的性能提升非常有幫助。其中一種預訓練模型是詞向量,如word2vec、GloVe等靜態詞向量以及CoVe、ELMo等語境化詞向量。另一種預訓練模型是句子級別上的向量化表示,如ULMFiT。其他的還有OpenAI GPT及BERT。
雖然BERT在許多自然語言理解任務上取得了驚人的成績,但是它的潛力還尚未被完全探索出來。很少有研究來進一步改進BERT在目標任務上的性能。這篇論文的主要目的就是通過探索多種方式最大化地利用BERT來增強其在文本分類任務上的性能。
這篇論文的主要貢獻在於:
這篇論文主要按照以下三種方式對BERT進行了微調,路線如下圖所示:
採用多種方式在目標任務上微調BERT顯然是非常有必要的。BERT不同的層可以捕獲到不同級別的語法及語義信息,哪些信息是目標任務所需要的呢?如何選擇優化算法以及學習率呢?當把BERT適應到某個目標任務時,需要考慮到因素有:(1)長文本序列的預處理(BERT最大序列長度爲512);(2)選擇哪些BERT層;(3)過擬合問題。
這篇論文分別對這三個因素進行了實驗分析:
1. 處理長文本
BERT能夠處理的最大序列長度是512,把BERT應用到文本分類任務上面臨的第一個問題就是如何處理長度大於512的文本。這篇論文嘗試的方法有:
上表的結果顯示,head+tail的截斷法在IMDb和Sogou數據集上表現最好。後續的實驗也是採用這種方式進行處理。
2. BERT不同層的特徵
BERT的每一層能夠捕獲到輸入文本的不同特徵。這篇論文探索了不同層的特徵的有效性,實驗結果如下表所示:
3. 災難性遺忘
Catastrophic forgetting的意思是在學習新知識的過程中,已習得的知識會丟失。這個問題在遷移學習中非常普遍。這篇論文探索了BERT是否也會遭遇這個問題。驗證方法是用不同的學習率微調BERT。結果如下圖所示:
實驗結果表明:更低的學習率,如 2e-5,能夠使得BERT克服這個問題。學習率越大,如 4e-4,導致無法收斂。
4. 逐層降低學習率
爲不同的BERT設置不同的學習率及衰減因子,BERT的表現如何?把參數
劃分成
,其中
包括了BERT第
層的參數。按照如下規則進行更新:
其中,
代表第
層的學習率。設置基礎學習率爲
,使用
,衰減因子
。當
是,靠下的層比靠上面的層的學習率要低;當
時,所有層的學習率一樣,此時等價於正常的SGD算法。實驗結果如下:
實驗結果表明:較低的BERT層賦予較低的學習率能夠有效地微調BERT,推薦的恰當的設置是:
與 lr
。
對於特定領域的文本分類任務,其數據分佈會不同於在通用領域的語料庫中進行預訓練的BERT模型的數據分佈,需要針對此特定領域的數據用Masked Language Model及Next Sentence Prediction進一步預訓練BERT。此時,會有三種可行的預訓練的方法:
1. Within-task pretraining
實驗結果表明:進一步預訓練對於提升BERT在目標任務上的表現非常有用,在100K訓練步後能夠取得最優性能。
2. In-domain 與 cross-domain pretraining
這篇論文與其他模型進行了比較,結果如下表所示:
所有任務都會共享BERT層及Embedding層,唯一不共享的層就是最終的分類層,每個任務都有各自的分類層。
這篇論文還額外進行了兩個實驗:少樣本學習及在BERT Large模型是哪個進行進一步預訓練。
這篇論文評估了BERT-FiT與BERT-ITPT-FiT兩種模型在不同數量的訓練集上的表現。結果如下:
實驗表明:BERT能夠爲小規模數據打來顯著的性能提升。
這篇論文進一步探索了BERT Large模型是否也會有跟BERT Base模型一樣的結果。實驗結果如下:
實驗結果表明:在特定任務上微調BERT Large模型能夠獲得當前最優的結果。
想要了解更多的自然語言處理最新進展、技術乾貨及學習教程,歡迎關注微信公衆號「語言智能技術筆記簿」或掃描二維碼添加關注。