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