ULMFiT-用于文本分類的通用語言模型微調(diào)
翻譯自《Universal Language Model Fine-tuning for Text Classification》
摘要
歸納遷移學(xué)習(xí)對于計算機視覺有很大的影響忽洛,但現(xiàn)有的NLP中的方法仍然需要特定任務(wù)的修改和從頭開始的訓(xùn)練末贾。我們提出通用語言模型微調(diào)(ULMFiT)易迹,一種可以應(yīng)用NLP中任何任務(wù)的遷移學(xué)習(xí)方法袍嬉。同時丈钙,我們將介紹微調(diào)語言模型的關(guān)鍵技術(shù)陈惰。 我們的方法在6個文本分類的任務(wù)上顯著優(yōu)于當(dāng)前最好模型疏咐,并再大多數(shù)數(shù)據(jù)集上減少18-24%的錯誤率扬舒。而且阐肤,即使只有100個標(biāo)簽示例,它的表現(xiàn)可以和100倍數(shù)據(jù)從頭開始訓(xùn)練的效果相比擬讲坎。 我們開放了我們的預(yù)訓(xùn)練模型和代碼 孕惜。
1 簡介
歸納遷移學(xué)習(xí)對計算機視覺(CV)產(chǎn)生了很大的影響關(guān)于。 應(yīng)用CV模型(包括對象檢測衣赶,分類和語義分割)很少從頭開始訓(xùn)練诊赊,而是用已有的模型進行微調(diào),如在ImageNet府瞄,MS-COCO等數(shù)據(jù)集上預(yù)訓(xùn)練的模型碧磅。
文本分類是具有現(xiàn)實應(yīng)用的一個自然語言處理任務(wù)類別,如:垃圾郵件遵馆,欺詐和機器人檢測等應(yīng)用程序鲸郊,應(yīng)急響應(yīng)和商業(yè)文件分類,如用于法律發(fā)現(xiàn)货邓。
雖然深度學(xué)習(xí)模型許多NLP任務(wù)上達到了最好的效果秆撮,但這些模型無一不是從頭開始訓(xùn)練的,需要大型數(shù)據(jù)集和漫長的數(shù)據(jù)收集時間换况。目前自然語言處理中用到遷移學(xué)習(xí)的职辨,主要是微調(diào)預(yù)訓(xùn)練的詞嵌入,這是一種簡單的遷移技術(shù)戈二,它只針對模型的第一層舒裤,但在對實際效應(yīng)有著巨大的影響,并運用于各種最好的模型中觉吭。最新的方法將來自其他任務(wù)的嵌入與不同層次的輸入相結(jié)合腾供,但仍然從頭開始訓(xùn)練主要任務(wù)模型,并將預(yù)訓(xùn)練嵌入視為固定參數(shù)鲜滩,限制了其有用性伴鳖。
鑒于預(yù)訓(xùn)練的好處,我們應(yīng)該能比隨機初始化其余模型參數(shù)做得更好徙硅。但是榜聂,使用微調(diào)的遷移學(xué)習(xí)在NLP領(lǐng)域卻暫時還未獲得成功。 戴和樂 ( 2015年 )首先提出嗓蘑,我們可以微調(diào)語言模型(LM)峻汉,但需要數(shù)百萬同領(lǐng)域文本以實現(xiàn)良好的效果贴汪,這嚴(yán)重限制了它的適用性。
我們表明休吠,有問題的不是LM微調(diào)的想法, 而是我們?nèi)狈τ行У厝绾斡?xùn)練他們的知識业簿,這阻礙了其更廣泛的使用瘤礁。 LM會過擬合于小型數(shù)據(jù)集并在微調(diào)一個分類器的時候遭受災(zāi)難性的遺忘。相對于CV而言梅尤,NLP模型通常更加淺柜思,因此需要不同的微調(diào)方法。
我們提出了一種新方法--通用語言模型微調(diào)(ULMFiT)巷燥,以解決這些問題赡盘,并各種NLP任務(wù)上實現(xiàn)魯棒的歸納遷移學(xué)習(xí),類似于微調(diào)ImageNet那樣:相同的3層具有相同的超參數(shù)LSTM架構(gòu) 缰揪,沒有添加除了微調(diào)dropout超參數(shù)之外的其他東西陨享,并在6個文本分類任務(wù)中優(yōu)于其他工業(yè)化的遷移學(xué)習(xí)方法。在IMDb上钝腺,使用100個標(biāo)注的樣板抛姑,ULMFiT可以達到用10倍數(shù)據(jù)從頭開始訓(xùn)練的性能,再加上50k未標(biāo)記的樣例 - 則可以達到100倍以上數(shù)據(jù)的效果艳狐。
貢獻
我們的貢獻如下:1)我們提出通用語言模型微調(diào)(ULMFiT)定硝,一種可以在任何自然語言處理任務(wù)上實現(xiàn)類似CV的轉(zhuǎn)移學(xué)習(xí)的方法。 2)我們提出動態(tài)微調(diào)毫目,傾斜三角學(xué)習(xí)率蔬啡,漸進式解凍,等新的技術(shù)來保持過往知識和避免微調(diào)中的災(zāi)難性遺忘镀虐。 3)我們六個代表性文本分類的達到了最好的效果箱蟆,并在大多數(shù)數(shù)據(jù)集上減少了18-24%的誤差。 4)我們的方法能夠?qū)崿F(xiàn)極其樣本有效的遷移學(xué)習(xí)并進行廣泛的消融分析粉私。 5)我們制作了預(yù)訓(xùn)練模型顽腾,我們的代碼將可以被更廣泛的采用。
2 相關(guān)工作
CV中的遷移學(xué)習(xí)
CV中深度神經(jīng)網(wǎng)絡(luò)從第一層到最后一層的特征被從一般性任務(wù)遷移到特殊的任務(wù)诺核。 出于這個原因抄肖,CV中的大多數(shù)工作都集中在轉(zhuǎn)移模型的第一層.Sharif Razavian et al(2014)使用ImageNet模型的特征作為簡單分類器的輸入來實現(xiàn)最終結(jié)果。 近年來窖杀,通過微調(diào)預(yù)訓(xùn)練模型的最后一層或幾層漓摩,并使剩余的層凍結(jié)的新方法,已經(jīng)取代了這種方法入客。
Hypercolumns
在NLP中管毙,最近才有非詞嵌入的遷移學(xué)習(xí)方法被提出腿椎。 流行的做法是預(yù)訓(xùn)練嵌入,通過其他任務(wù)獲取額外的上下文信息夭咬。 然后將不同級別的嵌入用作特征啃炸,與單詞嵌入或中間層的輸入連接。 這種方法就是是CV中已知的hypercolumns卓舵,并最近在NLP被彼得斯等人分別使用語言建模南用,釋義,蘊涵和機器翻譯(MT)進行預(yù)訓(xùn)練掏湾。但是裹虫,彼得斯等人的方法需要設(shè)計定制的架構(gòu),而我們在一系列任務(wù)中使用相同的基本架構(gòu)展示出了最先進的性能融击。 同時筑公,在CV中,hypercolumns也幾乎已經(jīng)完全被端到端的微調(diào)所取代尊浪。
CV中像素的超列(hypercolumns)是該像素上方所有CNN單元的激活矢量匣屡。 類似地,NLP中的單詞或句子的超列是在預(yù)訓(xùn)練模型中的不同層處的嵌入的串聯(lián)际长。
多任務(wù)學(xué)習(xí)
還有一個相關(guān)的方向是多任務(wù)學(xué)習(xí)(MTL)耸采。 這是Rei(2017)和Liu(2018)等人采用的方法。 他們將語言建模目標(biāo)添加到與主任務(wù)模型聯(lián)合訓(xùn)練的模型中工育。 MTL要求每次都從頭開始訓(xùn)練任務(wù)虾宇,這使得效率低下并且通常需要仔細權(quán)衡任務(wù)特定的目標(biāo)函數(shù)。
微調(diào)
微調(diào)已經(jīng)被成功的用于相似任務(wù)的遷移如绸,例如物延, 在QA中皮假,對于遠程監(jiān)督的情緒分析凯傲,或在MT領(lǐng)域凹耙,但已被證明在不相關(guān)的情緒之間效果不好。 Dai和Le(2015)也對語言模型進行了微調(diào)扼脐,但過度使用了10k標(biāo)記的示例岸军,需要數(shù)百萬個域內(nèi)文檔才能獲得良好的性能。 相比之下瓦侮,ULMFiT利用通用域預(yù)訓(xùn)練和新穎的微調(diào)技術(shù)來防止過度擬合艰赞,即使只有100個標(biāo)記示例,也可以在小數(shù)據(jù)集上實現(xiàn)最先進的結(jié)果肚吏。
3 通用語言模型微調(diào)
我們對NLP最普遍的歸納遷移學(xué)習(xí)設(shè)置感興趣:給定靜態(tài)源任務(wù)TS和TS ! = TT的任何目標(biāo)任務(wù)TT方妖,我們希望提高TT的性能。語言建姆E剩可以被視為理想的源任務(wù)和ImageNet for NLP的對應(yīng)物:它捕獲了與下游任務(wù)相關(guān)的語言的許多方面党觅,例如長期依賴雌澄,層次關(guān)系和情緒。與MT和蘊涵等任務(wù)相比杯瞻,它為大多數(shù)域和語言提供接近無限數(shù)量的數(shù)據(jù)镐牺。此外,預(yù)訓(xùn)練的LM可以很容易地適應(yīng)目標(biāo)任務(wù)的特性魁莉,我們可以顯著提高性能任柜。此外,語言建模已經(jīng)是MT和對話建模等現(xiàn)有任務(wù)的關(guān)鍵組成部分沛厨。形式上,語言建模引發(fā)了一個假設(shè)空間H摔认,它應(yīng)該對許多其他NLP任務(wù)有用逆皮。
我們提出通用語言模型微調(diào)(ULMFiT),它在大型通用域語料庫中預(yù)先訓(xùn)練語言模型(LM)参袱,并使用新技術(shù)在目標(biāo)任務(wù)上對其進行微調(diào)电谣。 該方法在滿足以下實際標(biāo)準(zhǔn)的意義上是通用的:1)它適用于不同文檔大小,數(shù)量和標(biāo)簽類型的任務(wù); 2)它使用單一的架構(gòu)和訓(xùn)練過程; 3)它不需要自定義特征工程或預(yù)處理; 4)它不需要額外的域內(nèi)文件或標(biāo)簽抹蚀。
在我們的實驗中剿牺,我們使用最先進的語言模型AWD-LSTM(Merity等,2017a)环壤,一個常規(guī)LSTM(沒有注意晒来,快捷連接或其他復(fù)雜的添加),具有各種調(diào)諧dropout超參數(shù)郑现。 與CV類似湃崩,我們預(yù)計未來可以通過使用更高性能的語言模型來提高下游性能。
ULMFiT包括以下步驟接箫,我們在圖1中顯示:a)通用域LM預(yù)訓(xùn)練(x3.1); b)目標(biāo)任務(wù)LM微調(diào)(x3.2); c)目標(biāo)任務(wù)分類器微調(diào) (X3.3)攒读。 我們將在以下部分討論這些內(nèi)容。
圖1:ULMFiT由三個階段組成:a)LM在一般領(lǐng)域語料庫上進行訓(xùn)練辛友,以捕獲不同層次語言的一般特征薄扁。 b)使用判別性微調(diào)('Discr')和傾斜三角學(xué)習(xí)率(STLR)對目標(biāo)任務(wù)數(shù)據(jù)進行微調(diào),以學(xué)習(xí)任務(wù)特定的功能废累。 c)使用逐漸解凍邓梅,'Discr'和STLR對目標(biāo)任務(wù)進行微調(diào),以保留低級表示并適應(yīng)高級表示(陰影:解凍階段;黑色:凍結(jié))九默。
3.1通用域LM預(yù)訓(xùn)練
類似ImageNet的語言語料庫應(yīng)該很大并且可以捕獲語言的一般屬性震放。 我們預(yù)測了Wikitext-103上的語言模型,該模型包含28,595個預(yù)處理的維基百科文章和1.03億個單詞驼修。 預(yù)訓(xùn)練對于具有小數(shù)據(jù)集的任務(wù)最有利殿遂,并且即使使用100個標(biāo)記示例也能夠進行泛化诈铛。 我們將更多樣化的預(yù)訓(xùn)練語料庫的探索留給未來的工作,但期望它們會提升性能墨礁。 雖然這個階段是最昂貴的幢竹,但它只需要執(zhí)行一次并改善下游模型的性能和收斂性。
3.2目標(biāo)任務(wù)LM微調(diào)
無論用于預(yù)訓(xùn)練的通用域數(shù)據(jù)多么多樣恩静,目標(biāo)任務(wù)的數(shù)據(jù)可能來自不同的分布焕毫。 因此,我們微調(diào)LM目標(biāo)任務(wù)的數(shù)據(jù)驶乾。 給定一個預(yù)訓(xùn)練的通用域LM邑飒,這個階段收斂得更快,因為它只需要適應(yīng)目標(biāo)數(shù)據(jù)的特性级乐,它允許我們訓(xùn)練一個強大的LM疙咸,即使對于小數(shù)據(jù)集。 我們提出了用于微調(diào)LM的判別微調(diào)和傾斜三角學(xué)習(xí)速率风科,我們在下面介紹撒轮。
判別微調(diào)
由于不同的層捕獲不同類型的信息,它們應(yīng)該在不同程度上進行微調(diào)贼穆。 為此题山,我們提出了一種新穎的微調(diào)方法,即辨別性的微調(diào)故痊。
不是對模型的所有層使用相同的學(xué)習(xí)速率顶瞳,而是區(qū)分性微調(diào)允許我們以不同的學(xué)習(xí)速率調(diào)整每個層。 對于上下文崖蜜,時間步長t處模型參數(shù)θ的常規(guī)隨機梯度下降(SGD)更新如下所示:
其中η是學(xué)習(xí)率浊仆,是關(guān)于模型目標(biāo)函數(shù)的梯度。 對于判別性微調(diào)豫领,我們將參數(shù)θ分成{
}其中
包含第l層模型的參數(shù)抡柿,L是模型的層數(shù)。 同樣等恐,我們得到{
}其中
是第l層的學(xué)習(xí)速率洲劣。
具有判別性微調(diào)的SGD更新如下:
我們憑經(jīng)驗發(fā)現(xiàn),首先選擇最后一層的學(xué)習(xí)率课蔬,僅微調(diào)最后一層, 然后通過使用
作為較低層的學(xué)習(xí)率囱稽,是最有效的。
傾斜的三角學(xué)習(xí)率
為了使其參數(shù)適應(yīng)任務(wù)特定的特征二跋,我們希望模型在訓(xùn)練開始時快速收斂到參數(shù)空間的合適區(qū)域战惊,然后細化其參數(shù)。 在整個訓(xùn)練過程中使用相同的學(xué)習(xí)率(LR)或退火學(xué)習(xí)率并不是實現(xiàn)此行為的最佳方法扎即。 相反吞获,我們提出傾斜的三角學(xué)習(xí)率(STLR)况凉,它首先線性地增加學(xué)習(xí)率,然后根據(jù)以下更新時間表線性衰減它各拷,如圖2所示:
其中T是訓(xùn)練迭代的次數(shù)刁绒,cut_frac是我們增加LR的迭代的分?jǐn)?shù),cut是當(dāng)我們從增加切換到減少LR時的迭代烤黍,p是我們增加或?qū)p少的迭代次數(shù)的分?jǐn)?shù), ration指定最小LR與最大LR ηmax相比小多少知市,ηt是迭代t時的學(xué)習(xí)速率。 我們通常使用cut_frac = 0.1速蕊,ratio = 32和ηmax= 0:01嫂丙。
STLR修改了三角學(xué)習(xí)率(Smith,2017)规哲,具有短期增長和長衰減期奢入,這是我們發(fā)現(xiàn)良好性能的關(guān)鍵。在第5節(jié)中媳叨,我們將比較積極的余弦退火,一種最近用于在CV中實現(xiàn)最先進性能的類似計劃
3.3 目標(biāo)任務(wù)分類器微調(diào)
最后关顷,為了微調(diào)分類器糊秆,我們使用兩個額外的線性塊來增強預(yù)訓(xùn)練語言模型。 遵循CV分類器的標(biāo)準(zhǔn)實踐议双,每個塊使用批量標(biāo)準(zhǔn)化和dropout痘番,中間層的ReLU激活和softmax激活,在最后一層輸出目標(biāo)類的概率分布平痰。 請注意汞舱,這些特定于任務(wù)的分類器層中的參數(shù)是從頭開始學(xué)習(xí)的唯一參數(shù)。 第一個線性層將合并的最后隱藏層狀態(tài)作為輸入宗雇。
pooling拼接
文本分類任務(wù)中的信號通常包含在幾個單詞中昂芜,這些單詞可能出現(xiàn)在文檔中的任何位置。 由于輸入文檔可能包含數(shù)百個單詞赔蒲,如果我們只考慮模型的最后隱藏狀態(tài)泌神,信息可能會丟失。 出于這個原因舞虱,我們將文檔的最后一個步驟hT的隱藏狀態(tài)與各時間步長的隱藏狀態(tài)的max-pooled和mean-pooled表示拼接欢际,獲得一個gpu顯存相對合適的文本表示:H ={}:
微調(diào)目標(biāo)分類器是轉(zhuǎn)移學(xué)習(xí)方法中最關(guān)鍵的部分。 過于激進的微調(diào)將導(dǎo)致災(zāi)難性的遺忘矾兜,消除通過語言建模捕獲的信息的好處; 過于謹(jǐn)慎的微調(diào)會導(dǎo)致收斂緩慢(以及由此導(dǎo)致的過度擬合)损趋。 除了差別性微調(diào)和三角學(xué)習(xí)率之外,我們還建議逐步解凍以微調(diào)分類器.
逐漸解凍
我們建議從最后一層開始逐漸解凍模型椅寺,而不是一次微調(diào)所有層浑槽,這會導(dǎo)致災(zāi)難性的遺忘蒋失,因為這包含最少的一般知識:我們首先解凍最后一層, 在一個時期內(nèi)微調(diào)所有未凍結(jié)的層括荡。 然后我們解凍下一個較低的凍結(jié)層并重復(fù)高镐,直到我們微調(diào)所有層,直到最后一次迭代收斂畸冲。 這類似于'鏈解凍'嫉髓,不過我們一次向一組'解凍'層添加一層,而不是一次只訓(xùn)練一層邑闲。
區(qū)別性微調(diào)算行,傾斜三角學(xué)習(xí)率和逐漸解凍都是有益的,我們在第5節(jié)中表明它們相互補充并使我們的方法能夠在不同的數(shù)據(jù)集中表現(xiàn)良好苫耸。
用于文本分類的BPTT(BPT3C)
通過時間反向傳播(BPTT)訓(xùn)練語言模型州邢,以實現(xiàn)大輸入序列的梯度傳播。 為了使大型文檔的分類器微調(diào)可行褪子,我們提出了BPTT for Text Classification(BPT3C):我們將文檔劃分為大小為b的固定長度批次量淌。 在每個批次的開頭,模型初始化為前一批次的最終狀態(tài); 我們跟蹤平均值和最大池的隱藏狀態(tài); 梯度反向傳播到批次嫌褪,其隱藏狀態(tài)有助于最終預(yù)測呀枢。 在實踐中,我們使用可變長度反向傳播序列笼痛。
雙向語言模型
與現(xiàn)有工作類似(Peters等裙秋,2017,2018),我們不僅限于微調(diào)單向語言模型缨伊。 對于我們所有的實驗摘刑,我們預(yù)先訓(xùn)練前向和后向LM。 我們使用BPT3C獨立微調(diào)每個LM的分類器并平均分類器預(yù)測刻坊。
4 實驗
雖然我們的方法同樣適用于序列標(biāo)記任務(wù)枷恕,但由于其重要的真實世界應(yīng)用,我們專注于此工作中的文本分類任務(wù)谭胚。
4.1 實驗設(shè)置
數(shù)據(jù)集和任務(wù)
我們在六個廣泛研究的數(shù)據(jù)集上評估我們的方法活尊,這些數(shù)據(jù)集具有不同數(shù)量的文檔和不同的文檔長度,由最先進的文本分類和轉(zhuǎn)移學(xué)習(xí)方法使用(Johnson和Zhang漏益,2017; McCann等蛹锰,2017) 作為三個常見文本分類任務(wù)的實例:情感分析,問題分類和主題分類绰疤。 我們顯示表1中每個數(shù)據(jù)集和任務(wù)的統(tǒng)計數(shù)據(jù)铜犬。
Dataset | Type | #classes | #examples |
---|---|---|---|
TREC-6 | Question | 6 | 5.5k |
IMDb | Sentiment | 2 | 25k |
Yelp-bi | Sentiment | 2 | 560k |
Yelp-full | Sentiment | 5 | 650k |
AG | Topic | 4 | 120k |
DBpedia | Topic | 14 | 560k |
文本分類數(shù)據(jù)集和任務(wù)類別數(shù)量和數(shù)據(jù)量
情感分析
對于情緒分析,我們評估我們對二元電影評論IMDb數(shù)據(jù)集(Maas等,2011)以及Zhang等人(2015)編制的Yelp評論數(shù)據(jù)集的二元和五類版本的方法癣猾。
問題分類
我們使用小型TREC數(shù)據(jù)集的6類別版本敛劝,該數(shù)據(jù)由開放域的、基于事實的問題按廣泛語言分類標(biāo)準(zhǔn)制作而成纷宇。
主題分類
對于主題分類夸盟,我們評估了Zhang等人創(chuàng)建的大型AG新聞和DBpedia本體數(shù)據(jù)集。
預(yù)處理
我們使用與早期工作相同的預(yù)處理像捶。 此外上陕,為了使語言模型能夠捕獲可能與分類相關(guān)的方面,我們?yōu)榇髮憜卧~拓春,伸長和重復(fù)添加了特殊標(biāo)記释簿。
超參數(shù)
我們感興趣的是一個能夠在各種任務(wù)中執(zhí)行的模型。 為此硼莽,如果沒有另外提及庶溶,我們在任務(wù)中使用相同的一組超參數(shù),我們在IMDb驗證集上進行調(diào)整懂鸵。 我們使用AWD-LSTM語言模型(Merity等偏螺,2017a),嵌入大小為400,3層匆光,每層隱藏激活1150次砖茸,BPTT批量大小為70.我們將0.4的dropout應(yīng)用于最后一層, 0.3應(yīng)用于RNN層殴穴,0.4應(yīng)用于輸入嵌入層,0.05應(yīng)用于嵌入層货葬,0.5的權(quán)重dropout到RNN的hidden-to-hidden矩陣采幌。 分類器有一個大小為50的隱藏層。我們使用Adam的β1= 0.7而不是默認的β1= 0.9和β2= 0.99震桶。 我們使用批量大小為64休傍,基本學(xué)習(xí)率為0.004和0.01分別對LM和分類器進行微調(diào),并調(diào)整每個任務(wù)的驗證集上的epoch數(shù)量蹲姐。 我們使用和(Merity et al., 2017a)相同的做法磨取。
baselines和比較模型
對于每項任務(wù),我們都會與當(dāng)前的狀態(tài)進行比較柴墩。 對于IMDb和TREC-6數(shù)據(jù)集忙厌,我們與CoVe(McCann等,2017)進行比較江咳,這是一種先進的NLP轉(zhuǎn)移學(xué)習(xí)方法逢净。 對于AG,Yelp和DBpedia數(shù)據(jù)集,我們與Johnson和Zhang(2017)的最新文本分類方法進行了比較爹土。