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