1、RNN with gated machanism
(1)RNN
(2)deep RNN
(3)Bidirectional RNN
(4)Naive RNN
(5)LSTM
因爲LSTM中的input c變化是很慢的,所以它能夠記得很久之前的內容,不會有太大的變化。
h(t-1)和c(t-1)是上一個LSTM的output。
可以把c(t-1)也放進去。
z(i)決定z這個information能不能夠被拿進來使用。z(f)就是決定c(t-1)的information要不要在接下來的output中使用(c(t-1)其實是memory,代表過去的information)。z(o)決定最終的output能不能夠出來。
(6)GRU
GRU相比於LSTM,好處是參數比較少。一個是reset gate(r),一個是update gate(z),z有點像forget gate和input gate的角色。GRU中的h類似於LSTM中的c,h的變化是比較小的。GRU裏的input gate和forget gate是聯動的,一定要有新的東西進來,纔會忘掉東西,當你忘掉東西的時候,就會有新的東西進來。
2、sequence generation
(1)generation
(2)condition generation
(1)seq-to-seq
(2)dynamic conditional generation(等價於Attention-based model)
α是一個score,表示h和z(key 關鍵字)有多match,match這個function是由你自己設計。
經softmax後,前兩個字的attention weight是0.5,說明此時machine比較關注前兩個字。
直到出現<EOS>就結束。
(3)tips for generation
用α代表attention的weight,上標代表attend在哪一個component(組件)上,下標表示是在產生第幾個word的時候的weight。但是有時候這樣的attention並不好,你需要加給weight加一個regularization。