Seq2Seq
視頻:https://www.youtube.com/watch?v=ZjfjPzXw6og
回顧RNN
下面的, , 等input vector都是一組向量,RNN模塊是同一個網絡,只是在不同時間的使用。
在Naive RNN中,計算h和y的通用方法。
對比Naive RNN,LSTM可以視爲將原先的h拆分爲兩個輸入:c和h,其中,c的變化比較小,h的變化比較大
在LSTM中,使用h和x合併作爲輸入,計算出,作爲不同的gate。下面的粗箭頭,都是一種transform。
也可以將c與h,x一起作爲input,那麼,在設計Weights的時候,最後的部分,用diagonal來計算,便於減少參數。
LSTM block內部的實現方式,就是像下面的描述。
兩個LSTM block串聯在一起的樣子,如下所示。
除了LSTM,另一種常用的是GRU。
GRU只有三個transform,相較於LSTM而言,少了一個。
Sequence Generation
seq2seq model的使用過程
BOS(begin of sentence),EOS(end of sentence)
seq2seq model的訓練過程
和一般的RNN training過程差不多
應用
產生文章,產生圖像,都可以。。。
Conditional Generation
應用1 - Image Caption Generation
使用CNN對圖像抽取vector,然後,將vector作爲每一次input的一部分,餵給RNN。
應用2 - chat bot
在encoder的RNN中,memory中的vector就是一種representation。
應用3 - 語音合成
Dynamic Conditional Generation
對於最後的representation無法表示所有encoder input的情況,Dynamic Conditional Generation是希望在decoder的輸入,每一次都喂入不同的vector,具體喂入什麼,由模型自己決定。
應用1-機器翻譯
下面以機器翻譯爲例,介紹attention-based model的方法。下面省去RNN模型的部分,所有的輸入都是經過RNN。
match的過程就是attention,match的分數也稱爲attention score。
對每一個都做attention,輸出,然後,再做softmax,變成,然後,再去加權求和,得到。
和一起作爲decoder的input,產生。
注意:也是被訓練出來的。
後續的操作與前面的一樣,重複直至結束。
應用2-語音識別
應用3-Image Caption Generation
論文的效果,正確的答案
不正確,但是合理的答案
下面是對video caption generation的效果。
Tips
Bad Attention
attention的分佈可能不平均,比較集中在某一個地方。可以對attention做reguization。
訓練和預測不一致
訓練階段使用的是正確答案,而預測時,使用的是模型預測的答案。
這個問題叫做“Exposure Bias”
那麼,怎麼解決呢?
在訓練過程中,使用預測結果,很難訓練出來。
可以將預測結果和真實結果,通過擲色子的方式,選取出來。當然,前期從真實結果中選取的機率要大一些,後面隨着模型越來越穩定,就可以增加從預測結果中選取的機率。
另一種方式是使用beam search
原始的方式其實是一種greed search,使用beam search以後,就可以保留前N個較大的結果。
那麼,能不能使用平均值呢?
可能會有問題,下面是一個例子。
評估標準的選擇
對於生成句子的情況,如果使用單個字或詞來判斷,效果可能還不如對完整句子的判斷。