循环神经网络
基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量HH,用HtH_{t}表示HH在时间步tt的值。HtH_{t}的计算基于XtX_{t}Ht1H_{t-1},可以认为HtH_{t}记录了到当前字符为止的序列信息,利用HtH_{t}对序列的下一个字符进行预测。
假设XtRn×dX_{t}\in \mathbb{R}^{n\times d }是时间步长tt的小批量输入,HtRn×hH_{t}\in \mathbb{R}^{n\times h }是该时间步的隐藏变量,则:
Ht=ϕ(XtWxh+Ht1Whh+bh)H_{t}=\phi(X_{t}W_{xh} +H_{t-1}W_{hh}+b_{h})
其中WxhRd×hW_{xh}\in \mathbb{R}^{d\times h}WhhRh×hW_{hh}\in \mathbb{R}^{h\times h}bhR1×hb_{h} \in \mathbb{R}^{1\times h}ϕ\phi函数是非线性**函数。由于引入了Ht1WhhH_{t-1}W_{hh}HtH_{t}能够捕捉截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。由于HtH_{t}的计算基于Ht1H_{t-1},上式的计算是循环的,使用循环计算的网络即循环神经网络(recurrent neural network)。
在时间步tt,输出层的输出为:
Ot=HtWhq+bqO_{t}=H_{t}W_{hq} +b_{q}
其中WhqRh×qW_{hq}\in \mathbb{R}^{h\times q},bqR1×qb_{q}\in \mathbb{R}^{1\times q}
循环神经网络知识要点笔记

GRU
RNN存在的问题:梯度较容易出现衰减或爆炸(BPTT)
⻔控循环神经⽹络:捕捉时间序列中时间步距离较⼤的依赖关系
RNN:
循环神经网络知识要点笔记
Ht=ϕ(XtWxh+Ht1Whh+bh)H_{t}=\phi(X_{t}W_{xh} +H_{t-1}W_{hh}+b_{h})
GRU:
循环神经网络知识要点笔记
Rt=ϕ(XtWxr+Ht1Whr+br)R_{t}=\phi(X_{t}W_{xr} +H_{t-1}W_{hr}+b_{r})
Zt=ϕ(XtWxz+Ht1Whz+bz)Z_{t}=\phi(X_{t}W_{xz} +H_{t-1}W_{hz}+b_{z})
Ht~=tanh(XtWxh+(RhHt1)Whh+bh)\tilde{H_{t}}=tanh(X_{t}W_{xh} +(R_{h}\odot H_{t-1})W_{hh}+b_{h})
Ht=ZtHt1+(1Zt)Ht1Ht~H_{t}=Z_{t}\odot H_{t-1} +(1-Z_{t})H_{t-1}\odot \tilde{H_{t}}
• 重置⻔有助于捕捉时间序列⾥短期的依赖关系;
• 更新⻔有助于捕捉时间序列⾥⻓期的依赖关系。

LSTM
长短期记忆long short-term memory :
遗忘门:控制上一时间步的记忆细胞 输入门:控制当前时间步的输入
输出门:控制从记忆细胞到隐藏状态
记忆细胞:⼀种特殊的隐藏状态的信息的流动
循环神经网络知识要点笔记
It=ϕ(XtWxi+Ht1Whi+bi)I_{t}=\phi(X_{t}W_{xi} +H_{t-1}W_{hi}+b_{i})
Ft=ϕ(XtWxf+Ht1Whf+bf)F_{t}=\phi(X_{t}W_{xf} +H_{t-1}W_{hf}+b_{f})
Ot=ϕ(XtWxo+Ht1Who+bo)O_{t}=\phi(X_{t}W_{xo} +H_{t-1}W_{ho}+b_{o})
Ct~=tanh(XtWxc+Ht1Whc+bc)\tilde{C_{t}}=tanh(X_{t}W_{xc} +H_{t-1}W_{hc}+b_{c})
Ct=FtCt1+ItCt~C_{t}=F_{t}\odot C_{t-1} +I_{t}\odot \tilde{C_{t}}
Ht=Ottanh(Ct)H_{t}=O_{t}\odot tanh(C_{t})

参考资料:
https://www.kesci.com/org/boyuai/project/5e4291f05f2816002ce8f9a0