ULMFiT-用于文本分類的通用語言模型微調(diào)
翻譯自《Universal Language Model Fine-tuning for Text Classification》
摘要
歸納遷移學(xué)習(xí)對(duì)于計(jì)算機(jī)視覺有很大的影響,但現(xiàn)有的NLP中的方法仍然需要特定任務(wù)的修改和從頭開始的訓(xùn)練。我們提出通用語言模型微調(diào)(ULMFiT),一種可以應(yīng)用NLP中任何任務(wù)的遷移學(xué)習(xí)方法。同時(shí),我們將介紹微調(diào)語言模型的關(guān)鍵技術(shù)。 我們的方法在6個(gè)文本分類的任務(wù)上顯著優(yōu)于當(dāng)前最好模型,并再大多數(shù)數(shù)據(jù)集上減少18-24%的錯(cuò)誤率。而且,即使只有100個(gè)標(biāo)簽示例,它的表現(xiàn)可以和100倍數(shù)據(jù)從頭開始訓(xùn)練的效果相比擬。 我們開放了我們的預(yù)訓(xùn)練模型和代碼 。
1 簡介
歸納遷移學(xué)習(xí)對(duì)計(jì)算機(jī)視覺(CV)產(chǎn)生了很大的影響關(guān)于。 應(yīng)用CV模型(包括對(duì)象檢測,分類和語義分割)很少從頭開始訓(xùn)練,而是用已有的模型進(jìn)行微調(diào),如在ImageNet,MS-COCO等數(shù)據(jù)集上預(yù)訓(xùn)練的模型。
文本分類是具有現(xiàn)實(shí)應(yīng)用的一個(gè)自然語言處理任務(wù)類別,如:垃圾郵件,欺詐和機(jī)器人檢測等應(yīng)用程序,應(yīng)急響應(yīng)和商業(yè)文件分類,如用于法律發(fā)現(xiàn)。
雖然深度學(xué)習(xí)模型許多NLP任務(wù)上達(dá)到了最好的效果,但這些模型無一不是從頭開始訓(xùn)練的,需要大型數(shù)據(jù)集和漫長的數(shù)據(jù)收集時(shí)間。目前自然語言處理中用到遷移學(xué)習(xí)的,主要是微調(diào)預(yù)訓(xùn)練的詞嵌入,這是一種簡單的遷移技術(shù),它只針對(duì)模型的第一層,但在對(duì)實(shí)際效應(yīng)有著巨大的影響,并運(yùn)用于各種最好的模型中。最新的方法將來自其他任務(wù)的嵌入與不同層次的輸入相結(jié)合,但仍然從頭開始訓(xùn)練主要任務(wù)模型,并將預(yù)訓(xùn)練嵌入視為固定參數(shù),限制了其有用性。
鑒于預(yù)訓(xùn)練的好處,我們應(yīng)該能比隨機(jī)初始化其余模型參數(shù)做得更好。但是,使用微調(diào)的遷移學(xué)習(xí)在NLP領(lǐng)域卻暫時(shí)還未獲得成功。 戴和樂 ( 2015年 )首先提出,我們可以微調(diào)語言模型(LM),但需要數(shù)百萬同領(lǐng)域文本以實(shí)現(xiàn)良好的效果,這嚴(yán)重限制了它的適用性。
我們表明,有問題的不是LM微調(diào)的想法, 而是我們?nèi)狈τ行У厝绾斡?xùn)練他們的知識(shí),這阻礙了其更廣泛的使用。 LM會(huì)過擬合于小型數(shù)據(jù)集并在微調(diào)一個(gè)分類器的時(shí)候遭受災(zāi)難性的遺忘。相對(duì)于CV而言,NLP模型通常更加淺,因此需要不同的微調(diào)方法。
我們提出了一種新方法--通用語言模型微調(diào)(ULMFiT),以解決這些問題,并各種NLP任務(wù)上實(shí)現(xiàn)魯棒的歸納遷移學(xué)習(xí),類似于微調(diào)ImageNet那樣:相同的3層具有相同的超參數(shù)LSTM架構(gòu) ,沒有添加除了微調(diào)dropout超參數(shù)之外的其他東西,并在6個(gè)文本分類任務(wù)中優(yōu)于其他工業(yè)化的遷移學(xué)習(xí)方法。在IMDb上,使用100個(gè)標(biāo)注的樣板,ULMFiT可以達(dá)到用10倍數(shù)據(jù)從頭開始訓(xùn)練的性能,再加上50k未標(biāo)記的樣例 - 則可以達(dá)到100倍以上數(shù)據(jù)的效果。
貢獻(xiàn)
我們的貢獻(xiàn)如下:1)我們提出通用語言模型微調(diào)(ULMFiT),一種可以在任何自然語言處理任務(wù)上實(shí)現(xiàn)類似CV的轉(zhuǎn)移學(xué)習(xí)的方法。 2)我們提出動(dòng)態(tài)微調(diào),傾斜三角學(xué)習(xí)率,漸進(jìn)式解凍,等新的技術(shù)來保持過往知識(shí)和避免微調(diào)中的災(zāi)難性遺忘。 3)我們六個(gè)代表性文本分類的達(dá)到了最好的效果,并在大多數(shù)數(shù)據(jù)集上減少了18-24%的誤差。 4)我們的方法能夠?qū)崿F(xiàn)極其樣本有效的遷移學(xué)習(xí)并進(jìn)行廣泛的消融分析。 5)我們制作了預(yù)訓(xùn)練模型,我們的代碼將可以被更廣泛的采用。
2 相關(guān)工作
CV中的遷移學(xué)習(xí)
CV中深度神經(jīng)網(wǎng)絡(luò)從第一層到最后一層的特征被從一般性任務(wù)遷移到特殊的任務(wù)。 出于這個(gè)原因,CV中的大多數(shù)工作都集中在轉(zhuǎn)移模型的第一層.Sharif Razavian et al(2014)使用ImageNet模型的特征作為簡單分類器的輸入來實(shí)現(xiàn)最終結(jié)果。 近年來,通過微調(diào)預(yù)訓(xùn)練模型的最后一層或幾層,并使剩余的層凍結(jié)的新方法,已經(jīng)取代了這種方法。
Hypercolumns
在NLP中,最近才有非詞嵌入的遷移學(xué)習(xí)方法被提出。 流行的做法是預(yù)訓(xùn)練嵌入,通過其他任務(wù)獲取額外的上下文信息。 然后將不同級(jí)別的嵌入用作特征,與單詞嵌入或中間層的輸入連接。 這種方法就是是CV中已知的hypercolumns,并最近在NLP被彼得斯等人分別使用語言建模,釋義,蘊(yùn)涵和機(jī)器翻譯(MT)進(jìn)行預(yù)訓(xùn)練。但是,彼得斯等人的方法需要設(shè)計(jì)定制的架構(gòu),而我們?cè)谝幌盗腥蝿?wù)中使用相同的基本架構(gòu)展示出了最先進(jìn)的性能。 同時(shí),在CV中,hypercolumns也幾乎已經(jīng)完全被端到端的微調(diào)所取代。
CV中像素的超列(hypercolumns)是該像素上方所有CNN單元的激活矢量。 類似地,NLP中的單詞或句子的超列是在預(yù)訓(xùn)練模型中的不同層處的嵌入的串聯(lián)。
多任務(wù)學(xué)習(xí)
還有一個(gè)相關(guān)的方向是多任務(wù)學(xué)習(xí)(MTL)。 這是Rei(2017)和Liu(2018)等人采用的方法。 他們將語言建模目標(biāo)添加到與主任務(wù)模型聯(lián)合訓(xùn)練的模型中。 MTL要求每次都從頭開始訓(xùn)練任務(wù),這使得效率低下并且通常需要仔細(xì)權(quán)衡任務(wù)特定的目標(biāo)函數(shù)。
微調(diào)
微調(diào)已經(jīng)被成功的用于相似任務(wù)的遷移,例如, 在QA中,對(duì)于遠(yuǎn)程監(jiān)督的情緒分析,或在MT領(lǐng)域,但已被證明在不相關(guān)的情緒之間效果不好。 Dai和Le(2015)也對(duì)語言模型進(jìn)行了微調(diào),但過度使用了10k標(biāo)記的示例,需要數(shù)百萬個(gè)域內(nèi)文檔才能獲得良好的性能。 相比之下,ULMFiT利用通用域預(yù)訓(xùn)練和新穎的微調(diào)技術(shù)來防止過度擬合,即使只有100個(gè)標(biāo)記示例,也可以在小數(shù)據(jù)集上實(shí)現(xiàn)最先進(jìn)的結(jié)果。
3 通用語言模型微調(diào)
我們對(duì)NLP最普遍的歸納遷移學(xué)習(xí)設(shè)置感興趣:給定靜態(tài)源任務(wù)TS和TS ! = TT的任何目標(biāo)任務(wù)TT,我們希望提高TT的性能。語言建模可以被視為理想的源任務(wù)和ImageNet for NLP的對(duì)應(yīng)物:它捕獲了與下游任務(wù)相關(guān)的語言的許多方面,例如長期依賴,層次關(guān)系和情緒。與MT和蘊(yùn)涵等任務(wù)相比,它為大多數(shù)域和語言提供接近無限數(shù)量的數(shù)據(jù)。此外,預(yù)訓(xùn)練的LM可以很容易地適應(yīng)目標(biāo)任務(wù)的特性,我們可以顯著提高性能。此外,語言建模已經(jīng)是MT和對(duì)話建模等現(xiàn)有任務(wù)的關(guān)鍵組成部分。形式上,語言建模引發(fā)了一個(gè)假設(shè)空間H,它應(yīng)該對(duì)許多其他NLP任務(wù)有用。
我們提出通用語言模型微調(diào)(ULMFiT),它在大型通用域語料庫中預(yù)先訓(xùn)練語言模型(LM),并使用新技術(shù)在目標(biāo)任務(wù)上對(duì)其進(jìn)行微調(diào)。 該方法在滿足以下實(shí)際標(biāo)準(zhǔn)的意義上是通用的:1)它適用于不同文檔大小,數(shù)量和標(biāo)簽類型的任務(wù); 2)它使用單一的架構(gòu)和訓(xùn)練過程; 3)它不需要自定義特征工程或預(yù)處理; 4)它不需要額外的域內(nèi)文件或標(biāo)簽。
在我們的實(shí)驗(yàn)中,我們使用最先進(jìn)的語言模型AWD-LSTM(Merity等,2017a),一個(gè)常規(guī)LSTM(沒有注意,快捷連接或其他復(fù)雜的添加),具有各種調(diào)諧dropout超參數(shù)。 與CV類似,我們預(yù)計(jì)未來可以通過使用更高性能的語言模型來提高下游性能。
ULMFiT包括以下步驟,我們?cè)趫D1中顯示: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由三個(gè)階段組成:a)LM在一般領(lǐng)域語料庫上進(jìn)行訓(xùn)練,以捕獲不同層次語言的一般特征。 b)使用判別性微調(diào)('Discr')和傾斜三角學(xué)習(xí)率(STLR)對(duì)目標(biāo)任務(wù)數(shù)據(jù)進(jìn)行微調(diào),以學(xué)習(xí)任務(wù)特定的功能。 c)使用逐漸解凍,'Discr'和STLR對(duì)目標(biāo)任務(wù)進(jìn)行微調(diào),以保留低級(jí)表示并適應(yīng)高級(jí)表示(陰影:解凍階段;黑色:凍結(jié))。
3.1通用域LM預(yù)訓(xùn)練
類似ImageNet的語言語料庫應(yīng)該很大并且可以捕獲語言的一般屬性。 我們預(yù)測了Wikitext-103上的語言模型,該模型包含28,595個(gè)預(yù)處理的維基百科文章和1.03億個(gè)單詞。 預(yù)訓(xùn)練對(duì)于具有小數(shù)據(jù)集的任務(wù)最有利,并且即使使用100個(gè)標(biāo)記示例也能夠進(jìn)行泛化。 我們將更多樣化的預(yù)訓(xùn)練語料庫的探索留給未來的工作,但期望它們會(huì)提升性能。 雖然這個(gè)階段是最昂貴的,但它只需要執(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ù)。 給定一個(gè)預(yù)訓(xùn)練的通用域LM,這個(gè)階段收斂得更快,因?yàn)樗恍枰m應(yīng)目標(biāo)數(shù)據(jù)的特性,它允許我們訓(xùn)練一個(gè)強(qiáng)大的LM,即使對(duì)于小數(shù)據(jù)集。 我們提出了用于微調(diào)LM的判別微調(diào)和傾斜三角學(xué)習(xí)速率,我們?cè)谙旅娼榻B。
判別微調(diào)
由于不同的層捕獲不同類型的信息,它們應(yīng)該在不同程度上進(jìn)行微調(diào)。 為此,我們提出了一種新穎的微調(diào)方法,即辨別性的微調(diào)。
不是對(duì)模型的所有層使用相同的學(xué)習(xí)速率,而是區(qū)分性微調(diào)允許我們以不同的學(xué)習(xí)速率調(diào)整每個(gè)層。 對(duì)于上下文,時(shí)間步長t處模型參數(shù)θ的常規(guī)隨機(jī)梯度下降(SGD)更新如下所示:
其中η是學(xué)習(xí)率,是關(guān)于模型目標(biāo)函數(shù)的梯度。 對(duì)于判別性微調(diào),我們將參數(shù)θ分成{
}其中
包含第l層模型的參數(shù),L是模型的層數(shù)。 同樣,我們得到{
}其中
是第l層的學(xué)習(xí)速率。
具有判別性微調(diào)的SGD更新如下:
我們憑經(jīng)驗(yàn)發(fā)現(xiàn),首先選擇最后一層的學(xué)習(xí)率,僅微調(diào)最后一層, 然后通過使用
作為較低層的學(xué)習(xí)率,是最有效的。
傾斜的三角學(xué)習(xí)率
為了使其參數(shù)適應(yīng)任務(wù)特定的特征,我們希望模型在訓(xùn)練開始時(shí)快速收斂到參數(shù)空間的合適區(qū)域,然后細(xì)化其參數(shù)。 在整個(gè)訓(xùn)練過程中使用相同的學(xué)習(xí)率(LR)或退火學(xué)習(xí)率并不是實(shí)現(xiàn)此行為的最佳方法。 相反,我們提出傾斜的三角學(xué)習(xí)率(STLR),它首先線性地增加學(xué)習(xí)率,然后根據(jù)以下更新時(shí)間表線性衰減它,如圖2所示:
其中T是訓(xùn)練迭代的次數(shù),cut_frac是我們?cè)黾覮R的迭代的分?jǐn)?shù),cut是當(dāng)我們從增加切換到減少LR時(shí)的迭代,p是我們?cè)黾踊驅(qū)p少的迭代次數(shù)的分?jǐn)?shù), ration指定最小LR與最大LR ηmax相比小多少,ηt是迭代t時(shí)的學(xué)習(xí)速率。 我們通常使用cut_frac = 0.1,ratio = 32和ηmax= 0:01。
STLR修改了三角學(xué)習(xí)率(Smith,2017),具有短期增長和長衰減期,這是我們發(fā)現(xiàn)良好性能的關(guān)鍵。在第5節(jié)中,我們將比較積極的余弦退火,一種最近用于在CV中實(shí)現(xiàn)最先進(jìn)性能的類似計(jì)劃
3.3 目標(biāo)任務(wù)分類器微調(diào)
最后,為了微調(diào)分類器,我們使用兩個(gè)額外的線性塊來增強(qiáng)預(yù)訓(xùn)練語言模型。 遵循CV分類器的標(biāo)準(zhǔn)實(shí)踐,每個(gè)塊使用批量標(biāo)準(zhǔn)化和dropout,中間層的ReLU激活和softmax激活,在最后一層輸出目標(biāo)類的概率分布。 請(qǐng)注意,這些特定于任務(wù)的分類器層中的參數(shù)是從頭開始學(xué)習(xí)的唯一參數(shù)。 第一個(gè)線性層將合并的最后隱藏層狀態(tài)作為輸入。
pooling拼接
文本分類任務(wù)中的信號(hào)通常包含在幾個(gè)單詞中,這些單詞可能出現(xiàn)在文檔中的任何位置。 由于輸入文檔可能包含數(shù)百個(gè)單詞,如果我們只考慮模型的最后隱藏狀態(tài),信息可能會(huì)丟失。 出于這個(gè)原因,我們將文檔的最后一個(gè)步驟hT的隱藏狀態(tài)與各時(shí)間步長的隱藏狀態(tài)的max-pooled和mean-pooled表示拼接,獲得一個(gè)gpu顯存相對(duì)合適的文本表示:H ={}:
微調(diào)目標(biāo)分類器是轉(zhuǎn)移學(xué)習(xí)方法中最關(guān)鍵的部分。 過于激進(jìn)的微調(diào)將導(dǎo)致災(zāi)難性的遺忘,消除通過語言建模捕獲的信息的好處; 過于謹(jǐn)慎的微調(diào)會(huì)導(dǎo)致收斂緩慢(以及由此導(dǎo)致的過度擬合)。 除了差別性微調(diào)和三角學(xué)習(xí)率之外,我們還建議逐步解凍以微調(diào)分類器.
逐漸解凍
我們建議從最后一層開始逐漸解凍模型,而不是一次微調(diào)所有層,這會(huì)導(dǎo)致災(zāi)難性的遺忘,因?yàn)檫@包含最少的一般知識(shí):我們首先解凍最后一層, 在一個(gè)時(shí)期內(nèi)微調(diào)所有未凍結(jié)的層。 然后我們解凍下一個(gè)較低的凍結(jié)層并重復(fù),直到我們微調(diào)所有層,直到最后一次迭代收斂。 這類似于'鏈解凍',不過我們一次向一組'解凍'層添加一層,而不是一次只訓(xùn)練一層。
區(qū)別性微調(diào),傾斜三角學(xué)習(xí)率和逐漸解凍都是有益的,我們?cè)诘?節(jié)中表明它們相互補(bǔ)充并使我們的方法能夠在不同的數(shù)據(jù)集中表現(xiàn)良好。
用于文本分類的BPTT(BPT3C)
通過時(shí)間反向傳播(BPTT)訓(xùn)練語言模型,以實(shí)現(xiàn)大輸入序列的梯度傳播。 為了使大型文檔的分類器微調(diào)可行,我們提出了BPTT for Text Classification(BPT3C):我們將文檔劃分為大小為b的固定長度批次。 在每個(gè)批次的開頭,模型初始化為前一批次的最終狀態(tài); 我們跟蹤平均值和最大池的隱藏狀態(tài); 梯度反向傳播到批次,其隱藏狀態(tài)有助于最終預(yù)測。 在實(shí)踐中,我們使用可變長度反向傳播序列。
雙向語言模型
與現(xiàn)有工作類似(Peters等,2017,2018),我們不僅限于微調(diào)單向語言模型。 對(duì)于我們所有的實(shí)驗(yàn),我們預(yù)先訓(xùn)練前向和后向LM。 我們使用BPT3C獨(dú)立微調(diào)每個(gè)LM的分類器并平均分類器預(yù)測。
4 實(shí)驗(yàn)
雖然我們的方法同樣適用于序列標(biāo)記任務(wù),但由于其重要的真實(shí)世界應(yīng)用,我們專注于此工作中的文本分類任務(wù)。
4.1 實(shí)驗(yàn)設(shè)置
數(shù)據(jù)集和任務(wù)
我們?cè)诹鶄€(gè)廣泛研究的數(shù)據(jù)集上評(píng)估我們的方法,這些數(shù)據(jù)集具有不同數(shù)量的文檔和不同的文檔長度,由最先進(jìn)的文本分類和轉(zhuǎn)移學(xué)習(xí)方法使用(Johnson和Zhang,2017; McCann等,2017) 作為三個(gè)常見文本分類任務(wù)的實(shí)例:情感分析,問題分類和主題分類。 我們顯示表1中每個(gè)數(shù)據(jù)集和任務(wù)的統(tǒng)計(jì)數(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ù)量
情感分析
對(duì)于情緒分析,我們?cè)u(píng)估我們對(duì)二元電影評(píng)論IMDb數(shù)據(jù)集(Maas等,2011)以及Zhang等人(2015)編制的Yelp評(píng)論數(shù)據(jù)集的二元和五類版本的方法。
問題分類
我們使用小型TREC數(shù)據(jù)集的6類別版本,該數(shù)據(jù)由開放域的、基于事實(shí)的問題按廣泛語言分類標(biāo)準(zhǔn)制作而成。
主題分類
對(duì)于主題分類,我們?cè)u(píng)估了Zhang等人創(chuàng)建的大型AG新聞和DBpedia本體數(shù)據(jù)集。
預(yù)處理
我們使用與早期工作相同的預(yù)處理。 此外,為了使語言模型能夠捕獲可能與分類相關(guān)的方面,我們?yōu)榇髮憜卧~,伸長和重復(fù)添加了特殊標(biāo)記。
超參數(shù)
我們感興趣的是一個(gè)能夠在各種任務(wù)中執(zhí)行的模型。 為此,如果沒有另外提及,我們?cè)谌蝿?wù)中使用相同的一組超參數(shù),我們?cè)贗MDb驗(yàn)證集上進(jìn)行調(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矩陣。 分類器有一個(gè)大小為50的隱藏層。我們使用Adam的β1= 0.7而不是默認(rèn)的β1= 0.9和β2= 0.99。 我們使用批量大小為64,基本學(xué)習(xí)率為0.004和0.01分別對(duì)LM和分類器進(jìn)行微調(diào),并調(diào)整每個(gè)任務(wù)的驗(yàn)證集上的epoch數(shù)量。 我們使用和(Merity et al., 2017a)相同的做法。
baselines和比較模型
對(duì)于每項(xiàng)任務(wù),我們都會(huì)與當(dāng)前的狀態(tài)進(jìn)行比較。 對(duì)于IMDb和TREC-6數(shù)據(jù)集,我們與CoVe(McCann等,2017)進(jìn)行比較,這是一種先進(jìn)的NLP轉(zhuǎn)移學(xué)習(xí)方法。 對(duì)于AG,Yelp和DBpedia數(shù)據(jù)集,我們與Johnson和Zhang(2017)的最新文本分類方法進(jìn)行了比較。