5.1循环序列模型
觉得有用的话,欢迎一起讨论相互学习~
1.10长短期记忆网络(Long short term memory)LSTM
Hochreiter S, Schmidhuber J. Long Short-Term Memory[J]. Neural Computation, 1997, 9(8):1735-1780.
门控循环神经网络单元GRU
长短期记忆网络LSTM
- 记忆细胞更新:
[reve{C}^{<t>}=tanh(W_c[a^{<t-1>},x^{<t>}]+b_c)
]
- 更新门:
[gamma_u=sigma(W_u[a^{<t-1>},x^{<t>}]+b_{u})
]
- 遗忘门--遗忘门在GRU中相当于((1-gamma_u)),在LSTM中使用专用的(gamma_f)代替:
[gamma_f=sigma(W_f[a^{<t-1>},x^{<t>}]+b_{f})
]
- 输出门:
[gamma_o=sigma(W_o[a^{<t-1>},x^{<t>}]+b_{o})
]
- 记忆细胞:
[c^{<t>}=gamma_u * reve{c}^{<t>} + gamma_f * c^{<t-1>}
]
-
[a^{<t>}=gamma_o * tanh(c^{<t>}) ]
1.11双向神经网络Bidirectional RNN
- 这个模型可以让你在序列的某处不仅可以获取之前的信息,还可以获取未来的信息
- 在这个句子中,根据原始的模型,并不能区别泰迪熊和美国前总统泰迪的区别。必须要使用到Teddy词后的信息才能识别出Teddy的意义。无论这些单元是标准的RNN块还是GRU单元或者是LSTM单元,前向的结构都不能够识别出Teddy的意义。
- 双向神经网络结构如下图所示:
这样的网络构成了一个无环图,其中信息的流向,如下动图中显示:
1.12深层循环神经网络Deepl RNNs
- 通过计算(a^{[2]<3>})的值来了解RNN的计算过程,(a^{[2]<3>})有两个输入,一个是从下面传上来的(a^{[1]<3>}),一个是从左边传进来的输入(a^{[2]<2>})
[a^{[2]<3>}=g(W_a^{[2]}[a^{[2]<2>},a^{[1]<3>}]+b_a^{[2]})
]
- 对于普通的神经网络,也许可以经常看见100层神经网络,但是对于RNN来说,有三层就已经有很多参数了,因为有时间的维度,RNN会变得相当大,一般很少会看见RNN堆叠到很深的层次。
- 但是深层次的预测却经常见到,即第三层的输出会连接上更深的层,但是水平方向上却不相连