seq2seq and attention 入門並在tensorflow中使用
阿新 • • 發佈:2019-01-19
Seq2Seq and Attention
彙總理解
參考文獻
1. seq2seq
seq2seq的名字全稱是序列到序列(sequence to sequence), 從一個序列到另一個序列,可以是從中文的序列到英文的序
列,也可以是從中文語音序列到中文文字序列,總之,實現的是從一個不定長輸入序列到一個不定長輸出序列的過程。
Encoder-Decoder
要實現從一個序列到另外一個序列的轉換,正常思維邏輯是找到一箇中間編碼,可以實現在兩種序列之間實現自由轉換。於是乎,Encoder-Decoder結構在2014年被Cho提了出來, 先通過編碼器對原序列進行編碼,再通過解碼器對中間編碼進行解碼得到輸出序列。
Figure 1 為encoder_decoder結構示意圖,encoder框中是一個正常的rnn結構,輸入序列 ,輸出 。 是上文中說到的中間序列。decoder框中同樣為rnn結構, 其輸入是中間編碼, 輸出為輸出序列。
這裡decoder部分的rnn和encoder部分的rnn稍有不同。
encoder的rnn為正常使用,由上一時刻隱狀態和該時刻輸入進行隱狀態更新,公式為:
decoder的rnn隱藏狀態更新,因沒有輸入序列,只有輸入隱藏狀態,所以由上一時刻隱狀態、上一時刻輸出和encoder的輸出來更新隱藏狀態, 公式為:
decoder的rnn在t時刻的輸出由 時刻的隱藏狀態、時刻的輸出和 計算得出,公式為:
encoder和decoder的訓練目標是最大化條件概率分佈: