循环神经网络
基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量
H,用
Ht表示
H在时间步
t的值。
Ht的计算基于
Xt和
Ht−1,可以认为
Ht记录了到当前字符为止的序列信息,利用
Ht对序列的下一个字符进行预测。
假设
Xt∈Rn×d是时间步长
t的小批量输入,
Ht∈Rn×h是该时间步的隐藏变量,则:
Ht=ϕ(XtWxh+Ht−1Whh+bh)
其中
Wxh∈Rd×h,
Whh∈Rh×h,
bh∈R1×h,
ϕ函数是非线性激活函数。由于引入了
Ht−1Whh,
Ht能够捕捉截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。由于
Ht的计算基于
Ht−1,上式的计算是循环的,使用循环计算的网络即循环神经网络(recurrent neural network)。
在时间步
t,输出层的输出为:
Ot=HtWhq+bq
其中
Whq∈Rh×q,
bq∈R1×q。
GRU
RNN存在的问题:梯度较容易出现衰减或爆炸(BPTT)
⻔控循环神经⽹络:捕捉时间序列中时间步距离较⼤的依赖关系
RNN:
Ht=ϕ(XtWxh+Ht−1Whh+bh)
GRU:
Rt=ϕ(XtWxr+Ht−1Whr+br)
Zt=ϕ(XtWxz+Ht−1Whz+bz)
Ht~=tanh(XtWxh+(Rh⊙Ht−1)Whh+bh)
Ht=Zt⊙Ht−1+(1−Zt)Ht−1⊙Ht~
• 重置⻔有助于捕捉时间序列⾥短期的依赖关系;
• 更新⻔有助于捕捉时间序列⾥⻓期的依赖关系。
LSTM
长短期记忆long short-term memory :
遗忘门:控制上一时间步的记忆细胞 输入门:控制当前时间步的输入
输出门:控制从记忆细胞到隐藏状态
记忆细胞:⼀种特殊的隐藏状态的信息的流动
It=ϕ(XtWxi+Ht−1Whi+bi)
Ft=ϕ(XtWxf+Ht−1Whf+bf)
Ot=ϕ(XtWxo+Ht−1Who+bo)
Ct~=tanh(XtWxc+Ht−1Whc+bc)
Ct=Ft⊙Ct−1+It⊙Ct~
Ht=Ot⊙tanh(Ct)
参考资料:
https://www.kesci.com/org/boyuai/project/5e4291f05f2816002ce8f9a0