[NLP --- 21] 自然語言生成中的Encoder-Decoder模型

一. 背景

      在機器翻譯任務中,常常需要利用編碼器將源句子編碼爲固定長短的向量,並利用解碼器逐個時間步生成另一種語言的句子對應的向量。這種模型即可定義爲一個Encoder-Decoder模型。

二. Seq2seq模型

        Seq2Seq模型是最早提出的Encoder-Decoder模型,本質上是利用RNN作爲編碼器整合整個源句子的信息,同時利用RNN作爲解碼器逐步生成出翻譯出的目標句子。

        Encoder部分利用RNN模型將輸入序列轉換成一個Context向量(取RNN最後一個位置的輸出向量),Decoder在Context向量初始化後利用RNN模型生成整個目標序列。

        Seq2Seq最早由谷歌提出,並用在機器翻譯任務中。模型結構很簡單,可用下圖表示

        對於序列輸入 (x_{1}, ..., x_{T}),可通過RNN得到輸出 (y_{1}, ..., y_{T})

        h_{t} = sigmoid ( W^{hx} x_{t} + W^{hh} h_{t - 1} )

        y_{t} = W^{yh} h_{t}

        RNN訓練時需要目標序列的每一個輸出 y_{i} 與每一個輸入 x_{i} 都需要對齊(alignment),即對於序列輸入通過RNN模型後,會得到相同長度的輸出,一個輸入詞對應一個輸出詞。但如何處理機器翻譯中源序列和目標序列之間的長度不相同的問題呢?

三. Transformer

        Transformer模型本質上也是一種Encoder-Decoder模型,只是Transformer對序列處理時,不是按照每個時間步Time Step處理,而 是並行地對整個句子進行處理,極大地提高了模型訓練的速度。模型的細節在博客[]詳細描述。

參考資料

[1] Sequence to Sequence Learning with Neural Networks

[2] Attention is All You Need

[3] Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation

[4] 

 

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