[監督式]seq2seq

預備知識RNN、LSTM
之前花了一些時間讀了seq2seq+attention,發現沒做筆記過一陣子真的很容易忘,特地重新再讀過一遍做了下筆記。

seq2seq

seq2seq架構

seq2seq一些變形

seq2seq有個明顯的缺點,不容易並行化,所以難以運用GPU的運算能力,因為我們使用非定長的sequence。
decoder的訊息只有經過sequence後的hidden state容易遺忘前面sequence的訊息的問題,且在decoder sequence傳遞中也會遺忘訊息,所以我們將經過sequence後的hidden state作為每個sequence的input,重複複習。

teacher forcing

teacher forcing就是將原先decoder的當前sequence的input為上一個sequence的output,改為上一個sequence的正解而不是預測的word。

attention
  1. attention架構可以自行調整,主要精隨就是改進原先seq2seq的encoder輸入給decoder的訊息只有經過sequence後的hidden state容易遺忘前面sequence的訊息的問題,且在decoder sequence傳遞中也會遺忘訊息,而如果直接以所有的encoder sequence的hidden state作為輸入包含太多不重要的訊息,造成模型不好訓練。
  2. 所以我們就有一個想法,如果能有一組能夠對應每個encoder word(ex.[I,am,a,student]這組input)的hidden state對當前decoder word(ex.Je這個input)的重要程度的vector我們稱。
    然後我們將它與每個對應的encoder word的hidden state相乘後做疊加後我們稱為,c相當於從前面的記憶個各取一點出來做融合(重要的部分取多,不重要的部分取少)。
    我們以這個c作為當前decoder word的輸入或以c在與decoder word(ex.Je這個input)一起作為輸入,這邊c如何做輸入可以自行調整架構。
    數學表達式為:

參數說明:

每個encoder word的hidden state我們標記為,當前時刻的hidden state為
每個decoder word的hidden state我們標記為,當前時刻的hidden state為
encoder word為,當前時刻為
decoder word為,當前時刻為

  1. 而這組是由model學出來的,怎麼學架構也是可以自行調整的,例如我們將[]與[的flatten]串接在一起得經過1層affine(linear layer)+softmax得到一組長度為的vector作為,也可以用[]與[的flatten]。

參考:
詳細圖解RNN及其他變形
attention可以參考李宏毅老師的課程
Attention机制详解(一)
Attention机制详解(二)

你可能感兴趣的:([監督式]seq2seq)