递归神经网络:
前馈神经网络和递归神经网络的最大区别是,神经元的连接是否形成了闭环。前馈神经网络的信息流向只有从输入层到输出层一个方向。相反,递归神经网络依靠神经元之间的有向环实现记忆功能。
优化问题和时间序列问题一般来说采用递归神经网络解决。
最常用的递归神经网络结构是1997年由德国人Hochreiter和Schmidhuber提出的Long-Short-Term-Memory (LSTM)。这种结构在每次递归中直接应用记忆数据,使得记忆数据在多重神经元层的反向传播中不至于失真(参考多伦多大学讲义)。在LSTM的内部结构中通过input gate/output gate/forget gate, etc. 实现输入数据和记忆数据的相加而非相乘。
抽象为数学建模:
在 t 时间的输入: x t x^t xt
N: LSTM神经元个数
M: 输入维度
脚注i, o, f, z:input gate, output gate, forget gate, block
需要训练的参数为:
输入weight: W z , W i , W f , W o ∈ R N × M W_z, W_i, W_f, W_o \in \mathcal{R}^{N \times M} Wz,Wi,Wf,Wo∈RN×M
递归weight: R z , R i , R f , R o ∈ R N × N R_z, R_i, R_f, R_o \in \mathcal{R}^{N \times N} Rz,Ri,Rf,Ro∈RN×N
bias: b z , b i , b f , b o ∈ R N b_z, b_i, b_f, b_o \in \mathcal{R}^N bz,bi,bf,bo∈RN
公式为:
输入 z t = σ ( W z x t + R z y t − 1 + b z ) z^t = \sigma \big( W_z x^t + R_z y^{t-1} + b_z \big) zt=σ(Wzxt+Rzyt−1+bz)
input gate i t = σ ( W i x t + R i y t − 1 + b i ) i^t = \sigma \big( W_i x^t + R_i y^{t-1} + b_i \big) it=σ(Wixt+Riyt−1+bi)
forget gate f t = σ ( W f x t + R f y t − 1 + b f ) f^t = \sigma \big( W_f x^t + R_f y^{t-1} + b_f \big) ft=σ(Wfxt+Rfyt−1+