循环神经网络
基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量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
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:循环神经网络知识要点笔记 - Python技术站