seq2seq(1)- EncoderDecoder架構

seq2seq(1)- EncoderDecoder架構

來自專欄 機器學習筆記

seq2seq是從序列到序列的學習過程,最重要的是輸入序列和輸出序列是可變長的,這種方式就非常靈活了,典型的機器翻譯就是這樣一個過程。


最基本的seq2seq網路架構如下所示:

可以看到,encoder構成一個RNN的網路,decoder也是一個RNN的網路。訓練過程和推斷過程有一些不太一樣的地方,介紹如下。

訓練過程:

  1. encoder構成一個RNN網路,輸入為源語言的文本,輸出最後一個timestep的hidden state,同時不需要output,將最後一個hidden state作為decoder的初始化state;
  2. decoder也構成一個RNN網路,輸入為目標語言的文本,這個地方要注意的是輸入需要往後lag一個位置,輸出就是正常的目標語言文本即可,選用categorical cross entropy進行多分類訓練。

# input sentenceHow are you# output sentenceI am fine# encoder input["How", "are", "you"]# decoder input["<start tag>", "I", "am", "fine"]# decoder target["I", "am", "fine", "<end tag>"]

推斷過程:

推斷過程只有encoder input了,所以有個greedy/sampling/beam-search等decoding的方法,下面討論最簡單的greedy方法。

  1. 將源語言的輸入經過encoder編碼成最後timestep的hidden state;
  2. 目標語言的輸入設定成一個單詞<start tag>,餵給decoder,產出一個目標單詞;
  3. 將上一步的目標的單詞作為目標語言新的輸入,繼續2的步驟,直到遇到<end tag>,或者產生的預測sequence長度超過閾值。

以上就是最基本的seq2seq架構,優點就是簡單,缺點也很明顯,我們人類一般翻譯文本的時候,目標語言單詞往往只和源語言文本其中有限一兩個單詞有關,而上面的做法,將源語言文本編碼成一個固定長度的hidden state,導致decoder過程中每個單詞都是受固定state的影響,而沒有差異化和重點,由此下一篇會介紹seq2seq優化的比較重要的一個機制 - Attention Mechanism。


推薦閱讀:

TAG:深度學習DeepLearning | seq2seq | 機器翻譯 |