1. 程式人生 > >seq2seq attention

seq2seq attention

sea voc 求一個 seq size 都對 batch nbsp output

1.seq2seq:分為encoder和decoder

  a.在decoder中,第一時刻輸入的是上encoder最後一時刻的狀態,如果用了雙向的rnn,那麽一般使用逆序的最後一個時刻的輸出(網上說實驗結果比較好) 

  b.每一時刻都有一個輸出,即:[batch_size, decoder_output_size],經過一個MLP後,都跟詞匯表中的每一個詞都對應了一個概率,即: [batch_size, vocab_size]。

  c.將每一個時刻的輸出拼接起來,那麽就是[batch_size, decoder_timestep, vocab_size],然後用beam search去尋找最優的解。

2.seq2seq attention: 在decoder的時候加入了attention機制

  a.在decoder中,第一時刻輸入的是上encoder最後一時刻的狀態,如果用了雙向的rnn,那麽一般使用逆序的最後一個時刻的輸出c0(網上說實驗結果比較好)

  b.attention:

    1).用c0去跟encoder的所有時間步驟中的輸入,進行match,即:用c0去和所有的輸入求一個相似度,那麽這個就是一個權值(attention的權值),含義就是當前時刻的輸入是有encoder中的哪幾個時刻來決定的,就是神經網絡翻譯中的那張經典的圖。

    2).decoder第一個時間步驟c1

,會輸出一個向量,那麽再重復1)中的步驟用c1替換c0

  c.將每一個時刻的輸出拼接起來,那麽就是[batch_size, decoder_timestep, vocab_size],然後用beam search去尋找最優的解。

seq2seq attention