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。