【NLP】如何在文本分类任务中Fine-Tune BERT
問 題
BERT在許多自然語言理解(NLU)任務中取得了驚人的成果,但它的潛力還有待充分挖掘。目前很少有如何能進一步提高BERT性能的研究,因此,如何通過一些技巧和方法最大限度的提升BERT在文本分類任務中的性能是此次研究的重點。
?目?標
在使用BERT做 text classification的時候,我們利用[CLS]的hidden state輸出做為整個輸入文本的representation,通過一層task specific層(通常是Linear Layer),再經過Softmax層得到概率,輸出概率如下所示,其中的是task specific層的參數,最后通過最大化log-probability of correct label優化模型參數。
方?法
How to Fine-Tune BERT for Text Classification?[1]這篇論文從四個方面對BERT(BERT base)進行不同形式的pretrain和fine-tune,并通過實驗展示不同形式的pretrain和fine-tune之間的效果對比。
一、Fine-Tune策略
當我們在特定任務上fine-tune BERT的時候,往往會有多種方法利用Bert,舉個例子:BERT的不同層往往代表著對不同語義或者語法特征的提取,并且對于不同的任務,不同層表現出來的重要性和效果往往不太一樣。因此如何利用類似于這些信息,以及如何選擇一個最優的優化策略和學習率將會影響最終fine-tune 的效果。
對于長文本的處理
① 截斷方法(不考慮[CLS]、[SEP]):
1.保留頭部(head-only):保留頭部最開始的510個tokens
2.保留尾部(tail-only):保留尾部最后的510個tokens
3.頭部加尾部(head+tail):頭部128+尾部382
② 分段的方法:
首先將輸入文本(長度為L)分成k = L/510個小段落,將它們依次輸入BERT得到k個文本段落的表示。每個段落的representation是最后一層[CLS]的hidden state,并分別使用mean pooling, max pooling and self-attention來合并所有段落的representation。上述兩種處理方法在IMDb和Chinese Sougou News datasets上的實驗效果如下所示,實驗結果表明,采取head+tail的方式處理長文本更具優勢。
Fine-tune層的選擇
BERT的每一層捕獲輸入文本的不同特性,Table 3顯示了在不同層Fine-tune BERT時performance的對比。實驗結果表明,BERT的最后一層更能表征下游任務(Layer-11表示fit前12層),在對其進行Fine-tune時效果也是最好的。
學習率優化策略
通常BERT模型的低層包含更general的信息,而靠近頂部的層偏向于學習下游任務的相關知識,因此可以在頂層賦予較大的學習率,越往低層學習率越小。因此,我們的策略如公式(1)所示,其中代表第l層的學習率,我們設定base learning rate為,代表頂層的學習率,其他層的策略如公式(2)所示,其中是衰減系數,如果,那么每層的學習率是一樣的,如果,那么越往下的層學習率就越低。
??? ??????(1)
? ???(2)
災難性遺忘問題
災難性遺忘(Catastrophic forgetting)是transfer learning中常見的問題,即在學習新知識的過程中,預訓練的知識有可能被遺忘或者抹去。因此,本文探討了BERT是否也存在這種災難性遺忘問題。如下圖所示,當采用較低的學習率時(文中采用2e-5),BERT在訓練的過程中能夠克服災難性遺忘問題,而當學習率較大時(文中采用4e-4),就會失去這種能力。
二、進一步預訓練
BERT預訓練模型是在通用領域(General Domain)上做的Training,很自然的一個想法就是在目標域(Target Domain)進一步pretrain。
任務內進一步預訓練:
任務內(within-task)pretrain是指在任務域(通常指具體的任務,比如某一金融細分領域的文本分類任務)上對模型進行預訓練,預訓練的方式仍然是unsupervised masked language model and next sentence prediction tasks,實驗結果表明,任務內領域的預訓練可以提升模型的效果,但在進一步預訓練時需要注意training step,否則效果會變差。
領域內和交叉域內的進一步預訓練:
In-Domain指的是某一領域內數據,比如金融領域、計算機領域等等,該領域的數據分布往往和任務內數據分布相似,這里的Cross-Domain在內容上可以理解為通用領域,作者通過實驗證明領域內(In-Domain)和任務內(Within-Task)的pretrain效果都會有提升,且通常情況下領域內的pretrain效果要好于任務內的pretrain效果,但在交叉域(或者說通用領域)上沒什么提升,理由是BERT預訓練本身就是在通用領域上訓練的。實驗結果對比如下圖所示,all sentiment/question/topic代表In-Domain pretrain,all代表 Cross-Domain,w/o pretrain代表原始的BERT base 模型。
三、多任務上的Fine-tune
在多任務數據域(比如多個文本分類的數據集,這樣做的目的是為了充分利用已有的分類任務數據)上做pretrain,然后在target-domain上進行fine-tune,也會提升模型的效果。其中,
BERT-FiT? =? “BERT + Fine-Tuning”.
BERT-CDPT-MFiT-FiT = “BERT + Cross-Domain Pre-Training+Multi-Task Pre-Training+ Fine-Tuning”.(先在交叉域上做pretrain,然后在多任務域上做pretrain,最后在target-domian上做fine-tune)
四、?少樣本學習
BERT pretrain model的一個優勢在于,在下游任務中,只需要少量的樣本就能fine-tune一個較好的模型,但是隨著數據的增大,在任務內數據的pretrain model和通用領域的pretrain model最后fine-tune的效果差不多,其中紅線代表BERT+Fine-tune,即直接利用BERT在target -domain上fine-tune,藍線代表BERT+ withIn-Task Pre-Training + Fine-Tuning,即先用BERT在within-task域上pretrain,然后在target-domain上fine-tune,這說明了BERT可以利用小數據改進下游任務,且小樣本數據上fine-tune效果較明顯,當然如果能事先在within-task域上做進一步的pretrain,再做fine-tune,效果會更好。
參考文獻
[1] Sun C , Qiu X , Xu Y , et al. How to Fine-Tune BERT for Text Classification?[C]// China National Conference on Chinese Computational Linguistics. Springer, Cham, 2019.
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯 獲取本站知識星球優惠券,復制鏈接直接打開: https://t.zsxq.com/qFiUFMV 本站qq群704220115。加入微信群請掃碼: 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【NLP】如何在文本分类任务中Fine-Tune BERT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 傲游浏览器记事本怎么打开
- 下一篇: win7系统如何取消自动开机