ocr小白理解Aster算法---------什麼是sequence2sequence

目錄

 

什麼是seq2seq

第一種seq2seq

第二種seq2seq

beam-search算法

參考文獻


什麼是seq2seq

seq2seq 模型就像一個翻譯模型,輸入是一個序列(比如一個英文句子),輸出也是一個序列(比如該英文句子所對應的法文翻譯)。這種結構最重要的地方在於輸入序列和輸出序列的長度是可變的。

第一種seq2seq

第一次提出seq2seq應該是在論文[1](在本文中他還提出了rnn的變體,GRU結構單元代替原始的RNN單元)中,他採取了以下結構:

其中 Encoder 部分應該是非常容易理解的,就是一個RNNCell(RNN ,GRU,LSTM 等) 結構。每個 timestep, 我們向 Encoder 中輸入一個字/詞(一般是表示這個字/詞的一個實數向量),直到我們輸入這個句子的最後一個字/詞 XT ,然後輸出整個句子的語義向量 c(一般情況下, c=hXT , XT 是最後一個輸入)因爲 RNN 的特點就是把前面每一步的輸入信息都考慮進來了,所以理論上這個 c 就能夠把整個句子的信息都包含了,我們可以把 c 當成這個句子的一個語義表示,也就是一個句向量。在 Decoder 中,我們根據 Encoder 得到的句向量 c, 一步一步地把蘊含在其中的信息分析出來;

在decoder中,每個時刻的ht在論文中由以下公式得到:

需要注意的是在訓練階段yt-1是真實label,而不是上一時刻的預測值。測試階段是上一時刻的預測值,可以通過beam search(見附錄)來優化解碼。

但是在實際訓練過程中,label是否使用真實數據2種方式,可以交替進行,即一種是把標準答案作爲decoder的輸入,還有一種是吧decoder上一次的輸出的結果作爲輸入,因爲如果完全使用標準答案,會導致收斂的過快,導致測試的時候產生不穩定性。

好了既然我們得到了h<t>,那我們就可以根據ht,yt-1以及encoder的輸入c得到這一時刻的輸出yt的條件概率,定義爲:

這裏有兩個函數 f 和 g , 一般來說, f 函數結構應該是一個 RNNCell 結構或者類似的結構(論文[1]原文中用的是 GRU);g 函數一般是 softmax (或者是論文 [4] 中提出的 sampled_softmax 函數)。具體實現的時候是,decoder先輸入一個開始符號y0,例如start一般寫成SOS(start of seq),然後Decoder 根據 h<0>,y0,c ,就能夠計算出 y1 的概率分佈了,同理,根據 h<1>,y1,c 可以計算y2 的概率分佈…以此類推直到預測到結束的特殊標誌 <EOS>,才結束預測。

第二種seq2seq

在論文[2] 中,google機器翻譯團隊使用了encoder-decoder模型的變體,其模型結構如下:

我們可以看到,相比於上一個網絡,該結構encoder的輸出只作用了一次,也就是作爲decoder的初始狀態h,同時我們不使用SOS,只使用EOS,實際上沒有什麼本質區別,只是一詞兩用而已。這個結構簡化了原始的模型。原文中使用的是lstm單元,其具體的結構圖大概如下圖所示,這是一個郵件回覆系統:

在原文中,作者除了使用的是4層lstm之外還使用了一些小trick,就是把輸入的語句倒過來,但是作者沒有明確給出解釋,只是大致猜測了一下,可能是由於這種結構會使翻譯pair開頭的單詞距離接近,使語義能夠更好地傳遞。

但是有一點應該是可以改進的,既然反向的效果好,可以在encoder的時候使用bilstm,然後把2個隱層的state輸入到decoder。

beam-search算法

首先beam-search只在test的時候有用。假設詞表是a,b,c,beam_size=2

1.生成第一個詞的時候,選擇概率最大的兩個詞,設爲a和c

2.生成第二個詞的時候,把前一時刻的輸入進去,得到第二時刻的a,b,c的概率,也就是當輸入是a的時候我們得到的abc相當於aa,ab,ac的概率,輸入是c的時候得到的是ca,cb,cc的概率,在這6個序列中,選擇2個得分最高的,然後作爲保留序列,例如選擇了aa和cb

3.生成第三個詞的時候,由前2個保留的序列,可見輸入是a和b,也就是6個序列爲,aaa,aab,aac和cba,cbb,cbc,再選2個最大的。

4.之後的重複這個過程,獲得2個最佳序列

參考文獻

文獻[1]:Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation

文獻[2]: Sequence to Sequence Learning with Neural Networks

文獻[3]: Neural Machine Translation by Jointly Learning to Align and Translate

文獻[4]:On Using Very Large Target Vocabulary for Neural Machine Translation

文獻[5]: A Neural Conversational Model

文獻[6]:Beam Search Algorithm

文章轉載自:https://zhuanlan.zhihu.com/p/27766645

 

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