1. 程式人生 > >seq2seq and attention 入門並在tensorflow中使用

seq2seq and attention 入門並在tensorflow中使用

Seq2Seq and Attention

彙總理解

參考文獻

1. seq2seq

seq2seq的名字全稱是序列到序列(sequence to sequence), 從一個序列到另一個序列,可以是從中文的序列到英文的序
列,也可以是從中文語音序列到中文文字序列,總之,實現的是從一個不定長輸入序列到一個不定長輸出序列的過程。

Encoder-Decoder

要實現從一個序列到另外一個序列的轉換,正常思維邏輯是找到一箇中間編碼,可以實現在兩種序列之間實現自由轉換。於是乎,Encoder-Decoder結構在2014年被Cho提了出來, 先通過編碼器對原序列進行編碼,再通過解碼器對中間編碼進行解碼得到輸出序列。

Figure 1 為encoder_decoder結構示意圖,encoder框中是一個正常的rnn結構,輸入序列 (x1,x2,...,xT),輸出 CC 是上文中說到的中間序列。decoder框中同樣為rnn結構, 其輸入是中間編碼C, 輸出為輸出序列(y1,y2,...,yT)

這裡寫圖片描述
這裡decoder部分的rnn和encoder部分的rnn稍有不同。

encoder的rnn為正常使用,由上一時刻隱狀態和該時刻輸入進行隱狀態更新,公式為:

h(
t)=f(h<t1>,xt)

decoder的rnn隱藏狀態更新,因沒有輸入序列,只有輸入隱藏狀態,所以由上一時刻隱狀態、上一時刻輸出和encoder的輸出來更新隱藏狀態, 公式為:

h(t)=f(h<t1>,yt1,c)

decoder的rnn在t時刻的輸出由 t 時刻的隱藏狀態、t1時刻的輸出和 C 計算得出,公式為:

P(yt|yt1,yt2,...,y1,c)=g(
h<t>,yt1,c)

encoder和decoder的訓練目標是最大化條件概率分佈:

maxθ1Nn=1NlogPθ(yn|xn)