論文:Sequence to Sequence Learning with Neural Networks
作者:Ilya Sutskever,Oriol Vinyals,Quoc V. Le
需補習知識:RNN,LSTM,SGD,PCA,beam search
what:
提出一個端到端的序列學習的編解碼模式
應用於英文->法語的翻譯任務
why:
DNN雖然靈活,但侷限性在於輸入和輸出只允許固定維度向量,且維度是已知的
how:
seq2seq模型由兩部分組成:
encoder:
- 一個 deep LSTM
- 將長度可變的input sequence映射爲定長vector
deoder:
- 另一個 deep LSTM
- 將上一步的定長vector解碼到target sequence
該論文在原始LSTM模型上的創新點:
1.two different LSTM
2.deep LSTMs(four layers) 比淺層LSTM好
3.reverse the order of the words of input sentence:
減少了困惑度,增大了BLUE分數,猜想翻轉詞彙有效的原因是引入了許多短期依賴
4.預測時候使用beam search:(貪心搜索的一種)
只在預測的時候需要,因爲訓練的時候知道正確答案,不需要搜索。預測的時候,假設詞表是3:{a,b,c},beam size是2,decoder解碼的時候:
4.1 生成第一個詞的時候,選擇概率最大的兩個詞,假設a,c,那麼現在的兩個序列就是a和c;
4.2 生成第二個詞的時候,將當前序列與詞表中的詞彙組合,得到新的6個序列:aa,ab,ac,ca,cb,cc,計算每個序列的得分,並選擇得分最高的兩個序列,作爲新的序列,假設aa,cb;
4.3 後面不斷重複這個過程,知道遇到結束符或者達到最大長度爲止。
notes:
1.提出seq2seq模型的編解碼模式,並且適用於long sentence。在長句上的表現也很好,因爲翻轉了源句子(而非目標句子)的單詞的順序,引入了許多短期依賴,使得優化問題更加簡單。實用標準的SGD優化器來訓練模型。
2.不會引起梯度消失,但是會引起梯度爆炸(採取梯度的範數超過某個閾值的時候縮放它)。
3.針對句子長短不一帶來的小批量處理浪費計算的問題,確保每次批量處理中的句子長度差不多長,提升了2x的速度。
4.對詞表外的詞沒法翻譯。
問題:
1.RNN的輸入時定長的,LSTM呢?輸入輸出不需要定長嗎?
2.源句(翻轉)和目標句的平均距離沒變,前幾個詞彙的距離短了,後幾個詞彙的距離不會變長嗎?