1
前言
大家現(xiàn)在打比賽對(duì)預(yù)訓(xùn)練模型非常喜愛(ài),基本上作為NLP比賽基線首選(圖像分類也有預(yù)訓(xùn)練模型)。預(yù)訓(xùn)練模型雖然很強(qiáng),可能通過(guò)簡(jiǎn)單的微調(diào)就能給我們帶來(lái)很大提升,但是大家會(huì)發(fā)現(xiàn)比賽做到后期,bert等預(yù)訓(xùn)練模型煉丹一定程度的時(shí)候很難有所提升,分?jǐn)?shù)達(dá)到了瓶頸,這個(gè)時(shí)候需要針對(duì)具體的任務(wù)如何進(jìn)行微調(diào)使用,就涉及到了考經(jīng)驗(yàn)積累的tricks。
這篇論文做了非常大的充足實(shí)驗(yàn),為我們提供了寶貴的BERT微調(diào)經(jīng)驗(yàn)及方法論,當(dāng)需要應(yīng)用BERT到具體的現(xiàn)實(shí)任務(wù)上時(shí),可以參照這篇論文提供的調(diào)參路線進(jìn)行優(yōu)化,我在NLP比賽中也屢試不爽,總有一個(gè)trick是你的菜,推薦大家讀一讀這篇論文!
2
論文摘要
這篇論文的主要目的在于在文本分類任務(wù)上探索不同的BERT微調(diào)方法并提供一種通用的BERT微調(diào)解決方法。這篇論文從三種路線進(jìn)行了探索:(1) BERT自身的微調(diào)策略,包括長(zhǎng)文本處理、學(xué)習(xí)率、不同層的選擇等方法;(2) 目標(biāo)任務(wù)內(nèi)、領(lǐng)域內(nèi)及跨領(lǐng)域的進(jìn)一步預(yù)訓(xùn)練BERT;(3) 多任務(wù)學(xué)習(xí)。微調(diào)后的BERT在七個(gè)英文數(shù)據(jù)集及搜狗中文數(shù)據(jù)集上取得了當(dāng)前最優(yōu)的結(jié)果。有興趣的朋友可以點(diǎn)擊上面的實(shí)驗(yàn)代碼,跑一跑玩一玩~
3
論文背景與研究動(dòng)機(jī)
文本分了是NLP中非常經(jīng)典的任務(wù),就是判斷給定的一個(gè)文本所屬的具體類別,比如判斷文本情感是正向還是負(fù)向。盡管已經(jīng)有相關(guān)的系研究工作表明基于大語(yǔ)料預(yù)訓(xùn)練模型可以對(duì)文本分類以及其他NLP任務(wù)有非常不錯(cuò)的效果收益和提升,這樣做的一個(gè)非常大的好處我們不需要從頭開始訓(xùn)練一個(gè)新的模型,節(jié)省了很大資源和時(shí)間。
一種常見(jiàn)的預(yù)訓(xùn)練模型就是我們常見(jiàn)的詞嵌入,比如Word2Vec,Glove向量,或者一詞多義詞向量模型Cove和ELMo,這些詞向量經(jīng)常用來(lái)當(dāng)做NLP任務(wù)的附加特征。另一種預(yù)訓(xùn)練模型是句子級(jí)別上的向量化表示,如ULMFiT。其他的還有OpenAI GPT及BERT。
雖然BERT在許多自然語(yǔ)言理解任務(wù)上取得了驚人的成績(jī),但是它的潛力還尚未被完全探索出來(lái)。很少有研究來(lái)進(jìn)一步改進(jìn)BERT在目標(biāo)任務(wù)上的性能。這篇論文的主要目的就是通過(guò)探索多種方式最大化地利用BERT來(lái)增強(qiáng)其在文本分類任務(wù)上的性能。本篇論文的主要貢獻(xiàn)如下:
(1)提出了一個(gè)通用的解決方案來(lái)微調(diào)預(yù)訓(xùn)練的 BERT 模型,它包括三個(gè)步驟:(1)進(jìn)一步預(yù)訓(xùn)練 BERT任務(wù)內(nèi)訓(xùn)練數(shù)據(jù)或領(lǐng)域內(nèi)數(shù)據(jù);(2) 如果有多個(gè)相關(guān)任務(wù)可用,可選用多任務(wù)學(xué)習(xí)微調(diào) BERT;(3) 為目標(biāo)任務(wù)微調(diào)BERT。
(2)本文研究了 BERT 在目標(biāo)任務(wù)上的微調(diào)方法,包括長(zhǎng)文本預(yù)處理、逐層選擇、逐層學(xué)習(xí)率、災(zāi)難性遺忘
(3)我們?cè)谄邆€(gè)廣泛研究的英文文本分類數(shù)據(jù)集和一個(gè)中文新聞分類數(shù)據(jù)集上取得了SOTA成果
4
論文核心
Fine-Tuning Strategies:當(dāng)我們?yōu)槟繕?biāo)任務(wù)微調(diào) BERT 時(shí),有很多方法可以使用 BERT。例如,BERT 的不同層捕獲不同級(jí)別的語(yǔ)義和句法信息,哪一層更適合目標(biāo)任務(wù)?我們?nèi)绾芜x擇更好的優(yōu)化算法和學(xué)習(xí)率?
Further Pre-training:BERT 在通用域中訓(xùn)練,其數(shù)據(jù)分布與目標(biāo)域不同。一個(gè)自然的想法是使用目標(biāo)域數(shù)據(jù)進(jìn)一步預(yù)訓(xùn)練 BERT。這個(gè)真的非常有效,在微調(diào)達(dá)到一定瓶頸之后,可以嘗試下在比賽語(yǔ)料上ITPT,也就是繼續(xù)預(yù)訓(xùn)練。在海華閱讀理解比賽以及基于文本挖掘的企業(yè)隱患排查質(zhì)量分析模型都得到了成功驗(yàn)證~
Multi-Task Fine-Tuning:在沒(méi)有預(yù)先訓(xùn)練的 LM 模型的情況下,多任務(wù)學(xué)習(xí)已顯示出其利用多個(gè)任務(wù)之間共享知識(shí)優(yōu)勢(shì)的有效性。當(dāng)目標(biāo)域中有多個(gè)可用任務(wù)時(shí),一個(gè)有趣的問(wèn)題是,在所有任務(wù)上同時(shí)微調(diào) BERT 是否仍然帶來(lái)好處。
5
微調(diào)策略
1. 處理長(zhǎng)文本我們知道BERT 的最大序列長(zhǎng)度為 512,BERT 應(yīng)用于文本分類的第一個(gè)問(wèn)題是如何處理長(zhǎng)度大于 512 的文本。本文嘗試了以下方式處理長(zhǎng)文章。
Truncation methods 截?cái)喾ㄎ恼碌年P(guān)鍵信息位于開頭和結(jié)尾。我們可以使用三種不同的截?cái)辔谋痉椒▉?lái)執(zhí)行 BERT 微調(diào)。
head-only: keep the first 510 tokens 頭部510個(gè)字符,加上兩個(gè)特殊字符剛好是512 ;
tail-only: keep the last 510 tokens;尾部510個(gè)字符,同理加上兩個(gè)特殊字符剛好是512 ;
head+tail: empirically select the first 128and the last 382 tokens.:尾部結(jié)合
Hierarchical methods 層級(jí)法輸入的文本首先被分成k = L/510個(gè)片段,喂入 BERT 以獲得 k 個(gè)文本片段的表示向量。每個(gè)分?jǐn)?shù)的表示是最后一層的 [CLS] 標(biāo)記的隱藏狀態(tài),然后我們使用均值池化、最大池化和自注意力來(lái)組合所有分?jǐn)?shù)的表示。
上表的結(jié)果顯示,head+tail的截?cái)喾ㄔ贗MDb和Sogou數(shù)據(jù)集上表現(xiàn)最好。后續(xù)的實(shí)驗(yàn)也是采用這種方式進(jìn)行處理。
2. 不同層的特征BERT 的每一層都捕獲輸入文本的不同特征。文本研究了來(lái)自不同層的特征的有效性, 然后我們微調(diào)模型并記錄測(cè)試錯(cuò)誤率的性能。
我們可以看到:最后一層表征效果最好;最后4層進(jìn)行max-pooling效果最好3. 災(zāi)難性遺忘Catastrophic forgetting (災(zāi)難性遺忘)通常是遷移學(xué)習(xí)中的常見(jiàn)詬病,這意味著在學(xué)習(xí)新知識(shí)的過(guò)程中預(yù)先訓(xùn)練的知識(shí)會(huì)被遺忘。因此,本文還研究了 BERT 是否存在災(zāi)難性遺忘問(wèn)題。我們用不同的學(xué)習(xí)率對(duì) BERT 進(jìn)行了微調(diào),發(fā)現(xiàn)需要較低的學(xué)習(xí)率,例如 2e-5,才能使 BERT 克服災(zāi)難性遺忘問(wèn)題。在 4e-4 的較大學(xué)習(xí)率下,訓(xùn)練集無(wú)法收斂。
這個(gè)也深有體會(huì),當(dāng)預(yù)訓(xùn)練模型失效不能夠收斂的時(shí)候多檢查下超參數(shù)是否設(shè)置有問(wèn)題。4. Layer-wise Decreasing Layer Rate 逐層降低學(xué)習(xí)率下表 顯示了不同基礎(chǔ)學(xué)習(xí)率和衰減因子在 IMDb 數(shù)據(jù)集上的性能。我們發(fā)現(xiàn)為下層分配較低的學(xué)習(xí)率對(duì)微調(diào) BERT 是有效的,比較合適的設(shè)置是 ξ=0.95 和 lr=2.0e-5
為不同的BERT設(shè)置不同的學(xué)習(xí)率及衰減因子,BERT的表現(xiàn)如何?把參數(shù)θ hetaθ劃分成{ θ 1 , … , θ L } { heta^1,dots, heta^L}{θ1,…,θL},其中θ l heta^lθl
6
ITPT:繼續(xù)預(yù)訓(xùn)練
Bert是在通用的語(yǔ)料上進(jìn)行預(yù)訓(xùn)練的,如果要在特定領(lǐng)域應(yīng)用文本分類,數(shù)據(jù)分布一定是有一些差距的。這時(shí)候可以考慮進(jìn)行深度預(yù)訓(xùn)練。
Within-task pre-training:Bert在訓(xùn)練語(yǔ)料上進(jìn)行預(yù)訓(xùn)練In-domain pre-training:在同一領(lǐng)域上的語(yǔ)料進(jìn)行預(yù)訓(xùn)練Cross-domain pre-training:在不同領(lǐng)域上的語(yǔ)料進(jìn)行預(yù)訓(xùn)練
Within-task pretraining
BERT-ITPT-FiT 的意思是“BERT + with In-Task Pre-Training + Fine-Tuning”,上圖表示IMDb 數(shù)據(jù)集上進(jìn)行不同步數(shù)的繼續(xù)預(yù)訓(xùn)練是有收益的。2 In-Domain 和 Cross-Domain Further Pre-Training
我們發(fā)現(xiàn)幾乎所有進(jìn)一步的預(yù)訓(xùn)練模型在所有七個(gè)數(shù)據(jù)集上的表現(xiàn)都比原始 BERT 基礎(chǔ)模型。一般來(lái)說(shuō),域內(nèi)預(yù)訓(xùn)練可以帶來(lái)比任務(wù)內(nèi)預(yù)訓(xùn)練更好的性能。在小句子級(jí) TREC 數(shù)據(jù)集上,任務(wù)內(nèi)預(yù)訓(xùn)練會(huì)損害性能,而在使用 Yah 的領(lǐng)域預(yù)訓(xùn)練中。Yah. A.語(yǔ)料庫(kù)可以在TREC上取得更好的結(jié)果。
這篇論文與其他模型進(jìn)行了比較,結(jié)果如下表所示:
我們可以看到ITPT和IDPT以及CDPT的錯(cuò)誤率相比其他模型在不同數(shù)據(jù)集有不同程度下降。
7
多任務(wù)微調(diào)
所有任務(wù)都會(huì)共享BERT層及Embedding層,唯一不共享的層就是最終的分類層,每個(gè)任務(wù)都有各自的分類層。
上表表明對(duì)于基于BERT多任務(wù)微調(diào),效果有所提升,但是對(duì)于CDPT的多任務(wù)微調(diào)是有所下降的,所以說(shuō)多任務(wù)學(xué)習(xí)對(duì)于改進(jìn)對(duì)相關(guān)文本分類子任務(wù)的泛化可能不是必要的。
8
小樣本學(xué)習(xí) Few-Shot Learning
實(shí)驗(yàn)表明:BERT能夠?yàn)樾∫?guī)模數(shù)據(jù)帶來(lái)顯著的性能提升。
9
BERT Large模型上進(jìn)一步預(yù)訓(xùn)練
實(shí)驗(yàn)結(jié)果表明:在特定任務(wù)上微調(diào)BERT Large模型能夠獲得當(dāng)前最優(yōu)的結(jié)果。
接下來(lái)給大家?guī)?lái)干貨部分:不同學(xué)習(xí)率策略的使用
不同學(xué)習(xí)率策略
Constant Schedule
Constant Schedule with Warmup
Cosine with Warmup
Cosine With Hard Restarts
Linear Schedule with Warmup
Polynomial Decay with Warmup
一起讀論文 | 文本分類任務(wù)的BERT微調(diào)方法論
NLP重鑄篇之BERT如何微調(diào)文本分類
【論文解析】如何將Bert更好地用于文本分類(How to Fine-Tune BERT for Text Classification?)
How to Fine-Tune BERT for Text Classification 論文筆記
Bert微調(diào)技巧實(shí)驗(yàn)大全
論文閱讀筆記:這篇文章教你在文本分類任務(wù)上微調(diào)BERT
How to Fine-Tune BERT for Text Classification?讀論文-如何讓Bert在finetune小數(shù)據(jù)集時(shí)更“穩(wěn)”一點(diǎn)
論文標(biāo)題:How to Fine-Tune BERT for Text Classification?中文
中文標(biāo)題:如何微調(diào) BERT 進(jìn)行文本分類?
論文作者:復(fù)旦大學(xué)邱錫鵬老師課題組
實(shí)驗(yàn)代碼:https://github.com/xuyige/BERT4doc-Classification
編輯:jq
-
文本分類
+關(guān)注
關(guān)注
0文章
18瀏覽量
7336
原文標(biāo)題:文本分類上分利器: Bert微調(diào)trick大全
文章出處:【微信號(hào):NLP_lover,微信公眾號(hào):自然語(yǔ)言處理愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論