文獻閱讀筆記—Improving Language Understanding by Generative Pre-Training

遷移學習在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

一、 問題描述

爲了方便nlp的遷移學習,人們提出採用無標註數據訓練語言模型(language model),並在其後加上一層全連接和softmax組成分類器,用有標註數據fine-tuning分類器。本文不使用rnn而使用transformer decoder做語言模型,並且將模型的input根據task做一定的轉變,以期待分類器基本不變。本文在自然語言推斷,問答系統,語義相似度,文本分類這四個問題上做了實驗,並且做了預訓練模型的zero-shot實驗。

二、模型

如上圖所示,看綠色部門,該模型在pretrain語言模型(第一階段)使用transfomer+左邊的綠色部分,該模型在fine-tuning分類器(第二階段)使用transfomer+右邊的綠色部分。

1. 第一階段:

語言模型採用transformer decoder,內有12個相同的transformer block,具體block細節請參考attention is all you need

在最後一個transformer block後跟一層全連接和softmax構成text prediction,預測下一個token的概率。

我們希望根據之前的tokens預測下一個token的概率最大,目標函數爲:

 

2. 第二階段: 

在最後一個transformer block後跟一層全連接和softmax構成task classifier,預測每個類別的概率。

我們希望在輸入所有的token後,預測true類別的概率最大,目標函數爲:

 爲了更好的fine-tuning分類器,更快的收斂,修改目標函數爲task classifier和text prediction相結合:

3. 根據task轉變模型的輸入:

 所有的任務的input都由開始token(start)開始,由結束token(extract)結束。

entailment:因輸入有前提和假說兩個句子,那就在兩個句子中加入分隔符(delim)連接兩條句子,作爲輸入,經過語言模型送入分類器。

similarity:因兩條句子的順序不影響結果,就按兩種順序分別放入語言模型得到各自的hidden state,將兩種hidden state相加,送入分類器。

multiple choice:對於每個答案,都將context、問題、該答案以分隔符隔開連接起來,作爲輸入,經過語言模型送入分類器得到一個向量,將所有答案的向量送入softmax。

三、實驗

在四個任務上效果都比相應任務的state of art好。

transformer block的個數越多,也就是語言模型越深,效果越好,說明語言模型的各個layer確實學到了不一樣的東西。

 

 不對語言模型進行fine-tuning時,pretrain語言模型的迭代次數越多,最後的效果越好,說明語言模型的pretrain確實學到了general的東西。

fine-tuning分類器的時候,當task數據較多時,使用加了text prediction的目標函數效果更好一點(下圖圈出來了),並且用transformer比lstm好 (第一行比最後一行效果好)。

 

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