Encoder-Decoder 預訓練

Encoder-Decoder模型預訓練

通過對Encoder-Decoder模型進行預訓練能夠有效的提高模型的訓練效果。
seq2seq模型在數據集比較小的情況下,容易過擬合,在《Unsupervised Pretraining for Sequence to Sequence Learning》一文中提出了使用非監督的預訓練來提升seq2seq模型的訓練效果。該方法主要是通過兩個語言模型對encoder和decoder進行預訓練。並在微調階段,共同訓練seq2seq模型以及語言模型,以防止過擬合。

簡介

這裏寫圖片描述

假設給定輸入句子x1,x2,...,xm 以及輸出句子yn,yn1,..,y1 ,seq2seq模型的訓練目標是最大化概率:P(yn,yn1,...,y1|x1,x2,...,xm) ,一般的seq2seq模型可以將上式表示爲
P(yn,yn1,...,y1|x1,x2,...,xm)=t=1np(yt|yt1,...,y1,x1,x2,...,xm) .

在seq2seq模型的訓練中,一般使用RNN模型作爲Encoder,Encoder加上一個output layer可以看做是一個語言模型,單獨看decoder模型,也可以將Decoder作爲語言模型,所以可以使用訓練好的語言模型對Encoder和decoder進行預訓練。

因此,在文中,主要是通過非標註的文本對語言模型進行訓練,並作爲seq2seq模型的預訓練模型。如圖1所示,陰影部分的參數表示被預訓練。具體步驟如下:
1)首先,收集兩個語料,一個爲源側的模型,一個爲目標側的模型。並分別訓練語言模型。
2)訓練好語言模型後,構建一個多層的seq2seq模型,Encoder中的LSTM的第一層以及詞向量和decoder被預訓練的權值初始化,另外,爲了加強效率,decoder的softmax需要用目標側的語言模型的softmax進行初始化。

改進

在使用語言模型對seq2seq模型進行預訓練後,需要使用標籤數據對seq2seq模型進行微調,有時候會降低模型的表現,尤其是在小數據集上。
爲確保seq2seq模型訓練不過擬合,文中主要採用將語言模型與seq2seq共同訓練的方式來限制參數,防止過擬合,二者損失函數權重一樣。

除了以上的改進之外,文中還提出了另外兩個改進residual connection 以及multi-layer attention:
1)residual connection:使用residual connection 從LSTM的第一層輸出直接到softmax的輸入。見圖2-a。
2)multi-layer attention:在模型中使用attention機制。如下圖所示:
這裏寫圖片描述

這裏寫圖片描述

實驗

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

實驗結果表明:
1)僅僅預訓練decoder比僅僅訓練Encoder要好。
2)預訓練儘可能作爲一個訓練過程。
3)預訓練softmax是很重要的。
4)語言模型的目標函數是一個很強的正則化項。
5)這裏寫圖片描述

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