文獻閱讀筆記—Universal Language Model Fine-tuning for Text Classification

遷移學習在nlp領域的應用之pretrain language representation,四連載,建議按順序看,看完對該方向一定會非常清楚的!

(一)ELMO:Deep contextualized word representations

(二)Universal Language Model Fine-tuning for Text Classification

(三)openAI GPT:Improving Language Understanding by Generative Pre-Training

(四)BERT: Pretraining of Deep Bidirectional Transformers for Language Understanding

一、問題描述

這是一篇18年的ACL文章。以前的nlp遷移學習,要麼是使用task數據fine-tuning詞向量(如glove這種),相當於更改模型的第一層,要麼是將其他任務得到的詞向量和本任務的輸入concat起來,但其實這些pretrain的詞向量都是被當做固定參數用的,且該任務的模型是從頭訓練的。因此出現了pretrain語言模型(language model),但是語言模型容易在小型數據上過擬合,且當訓練分類器時容易忘記pretrain語言模型學到的知識,本文提出一種語言模型的精調(fine-tuning)技巧,用於nlp領域的遷移學習(transfer learning),並在6個文本分類任務上做驗證。

二、語言模型及trick

整個模型框架分爲三個階段: 


a) LM pre-training。在該階段就是包含大量各種domain中的數據(如wikitext)進行預訓練語言模型; 語言模型是指3層的單向LSTM(雙向後面會講),這裏LSTM的小細節(無attention、有一些dropout超參數)來源於AWD-LSTM(有興趣可百度)
b) LM fine-tuning。在該階段就是是使用目標domain中的數據進行語言模型的fine-tuning操作,但是作者在該階段fine-tuning的時候採用了2種策略: 
        Discriminative fine-tuning,即對layer1,layer2和layer3採用不同的學習速率,layer3是最後一層學習速率爲θ\theta,那麼layer2 的學習速率就是\frac{\eta }{2.6},layer3的學習速率就是\frac{\eta}{2.6\ast 2.6}
        Slanted triangular learning rates,學習率不斷下降未必是好事,需要先增後降。即每一個iteration都會對學習速率有一個修正(iteration和epoch不一樣,一個iteration是一次參數的更新,相當於一個batch),具體的修正公式如下: 

其中,T是總的迭代次數,t是當前的迭代次數,cut\_frac是轉折比例,\eta _{max}是最大的學習速率, ratio是最大和最小學習率的差值。整個學習速率的圖像如下所示: 
 


c) Classifier fine-tuning。在該階段就是使用domain中的有標註數據進行分類器的訓練,就是把layer3的LSTM的輸出變量進行一系列的變換操作,最後輸入分類器的形式就是 [h_T;maxpooling(H);meanpooling(H)]h_T就是最後一時刻的輸出向量,分類器爲兩個線性block,每個線性block包含(batch normalization,dropout,ReLU),最後跟一個softmax輸出屬於某一類的概率。對於每個任務來說,這兩個線性block和softmax都是從頭訓練的。那麼在對分類器進行訓練的時候,除了Discriminative fine-tuning和Slanted triangular learning rates技術。爲了避免全部fine-tuning導致語言模型對之前學到的general知識的遺忘,引入

        Gradual unfreezing,從後往前(從layer3到layer1方向)逐步的添加。先只把最後一層解凍,接下來就把一個多餘的網絡層加入到解凍集合中去。由於後面的網絡更多的是specific信息,前面的網絡包含的更多general信息,這樣的方式可以最大的幅度保存(a)、(b)階段學習到的信息。

        BPTT for Text Classification,爲了當輸入文本很長時,可以較好的fine-tuning分類器,將文檔拆成幾個batch,每個batch的長度是一致的,哪一個batch促成了最後的preciction,就反向傳播給哪個batch(具體操作還需看一下代碼)。

        雙向語言模型,使用兩個單向語言模型(一個forward,一個backward),進行分類,最後取平均結果

三、存在疑問

1. inductive transfer learning和transductive transfer learning的區別?

 

參考網址:https://blog.csdn.net/guoyuhaoaaa/article/details/80805223

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章