淺談seq2seq

1.Seq2seq背景:

經典的RNN模型的輸入序列以及輸出序列要求是等長的,然而在機器翻譯中,如輸入序列:“機器學習”,輸出序列:“Machine Learning”,輸入輸出序列不等長,RNN就不能滿足這樣的情況。

Seq2seq可以用來處理輸入輸出序列不等長的問題,是一種特殊的RNN模型。

2.Seq2seq概述:

Seq2seq是一種編碼(Encoder)-解碼(Decoder)的結構,輸入和輸出可以是不等長的序列。

Seq2seq包括三個部分:編碼器,解碼器,以及連接兩者的固定大小的狀態向量。Encoder通過學習輸入,將其編碼成一個固定大小的狀態向量,然後將狀態向量傳給Decoder,Decoder再通過對狀態向量的學習來進行輸出。

 

 

3.Seq2seq 編碼器(Encoder):

Encoder是一個RNN,也可以是LSTM、GRU等,接收的是每一個單詞的詞向量,和上一個時間點的隱藏狀態。輸出的是這個時間點的隱藏狀態。其中激活函數可以是sigmoid、tanh、Relu、softmax等。

讀完序列中每個單詞後,會得到一個固定長度的語義向量。

4.Seq2seq解碼器(Decoder):

Decoder是個RNN,也可以是LSTM、GRU等,將encoder得到的語義向量作爲初始狀態輸入到Decoder的RNN中,得到輸出序列。可以看到上一時刻的輸出會作爲當前時刻的輸入,而且其中語義向量只作爲初始狀態參與運算,後面的運算都與語義向量無關。

decoder處理方式還有另外一種,就是語義向量參與了序列所有時刻的運算,上一時刻的輸出仍然作爲當前時刻的輸入,但語義向量會參與所有時刻的運算。

解碼器的輸出通常有如下幾種方法:

(1)貪婪:輸出對應最大概率值的單詞,計算代價低。

(2)採樣:通過對衆多概率值採樣輸出單詞。

(3)集束搜索:是一種啓發式的算法,提高多個預測創建一個可能結果的擴展樹。

5.seq2seq的相關論文:

(1)原始的模型:https://arxiv.org/pdf/1406.1078.pdf,題目爲:Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation,由cho在2014年提出。

(2)改進的模型:https://arxiv.org/pdf/1409.3215.pdf,題目爲:Sequence to Sequence Learning with Neural Networks。

(3)融入Attention機制的模型:https://arxiv.org/pdf/1409.0473.pdf,題目爲:NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE。

6.seq2seq的應用場景:

(1)機器翻譯

(2)情感對話生成

(3)文本自動摘要

(4)圖片自動描述

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