循环神经网络 基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量H H H ,用H t H_{t} H t 表示H H H 在时间步t t t 的值。H t H_{t} H t 的计算基于X t X_{t} X t 和H t − 1 H_{t-1} H t − 1 ,可以认为H t H_{t} H t 记录了到当前字符为止的序列信息,利用H t H_{t} H t 对序列的下一个字符进行预测。 假设X t ∈ R n × d X_{t}\in \mathbb{R}^{n\times d } X t ∈ R n × d 是时间步长t t t 的小批量输入,H t ∈ R n × h H_{t}\in \mathbb{R}^{n\times h } H t ∈ R n × h 是该时间步的隐藏变量,则:H t = ϕ ( X t W x h + H t − 1 W h h + b h ) H_{t}=\phi(X_{t}W_{xh} +H_{t-1}W_{hh}+b_{h}) H t = ϕ ( X t W x h + H t − 1 W h h + b h ) 其中W x h ∈ R d × h W_{xh}\in \mathbb{R}^{d\times h} W x h ∈ R d × h ,W h h ∈ R h × h W_{hh}\in \mathbb{R}^{h\times h} W h h ∈ R h × h ,b h ∈ R 1 × h b_{h} \in \mathbb{R}^{1\times h} b h ∈ R 1 × h ,ϕ \phi ϕ 函数是非线性**函数。由于引入了H t − 1 W h h H_{t-1}W_{hh} H t − 1 W h h ,H t H_{t} H t 能够捕捉截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。由于H t H_{t} H t 的计算基于H t − 1 H_{t-1} H t − 1 ,上式的计算是循环的,使用循环计算的网络即循环神经网络(recurrent neural network)。 在时间步t t t ,输出层的输出为:O t = H t W h q + b q O_{t}=H_{t}W_{hq} +b_{q} O t = H t W h q + b q 其中W h q ∈ R h × q W_{hq}\in \mathbb{R}^{h\times q} W h q ∈ R h × q ,b q ∈ R 1 × q b_{q}\in \mathbb{R}^{1\times q} b q ∈ R 1 × q 。
GRU RNN存在的问题:梯度较容易出现衰减或爆炸(BPTT) ⻔控循环神经⽹络:捕捉时间序列中时间步距离较⼤的依赖关系 RNN:H t = ϕ ( X t W x h + H t − 1 W h h + b h ) H_{t}=\phi(X_{t}W_{xh} +H_{t-1}W_{hh}+b_{h}) H t = ϕ ( X t W x h + H t − 1 W h h + b h ) GRU:R t = ϕ ( X t W x r + H t − 1 W h r + b r ) R_{t}=\phi(X_{t}W_{xr} +H_{t-1}W_{hr}+b_{r}) R t = ϕ ( X t W x r + H t − 1 W h r + b r ) Z t = ϕ ( X t W x z + H t − 1 W h z + b z ) Z_{t}=\phi(X_{t}W_{xz} +H_{t-1}W_{hz}+b_{z}) Z t = ϕ ( X t W x z + H t − 1 W h z + b z ) H t ~ = t a n h ( X t W x h + ( R h ⊙ H t − 1 ) W h h + b h ) \tilde{H_{t}}=tanh(X_{t}W_{xh} +(R_{h}\odot H_{t-1})W_{hh}+b_{h}) H t ~ = t a n h ( X t W x h + ( R h ⊙ H t − 1 ) W h h + b h ) H t = Z t ⊙ H t − 1 + ( 1 − Z t ) H t − 1 ⊙ H t ~ H_{t}=Z_{t}\odot H_{t-1} +(1-Z_{t})H_{t-1}\odot \tilde{H_{t}} H t = Z t ⊙ H t − 1 + ( 1 − Z t ) H t − 1 ⊙ H t ~ • 重置⻔有助于捕捉时间序列⾥短期的依赖关系; • 更新⻔有助于捕捉时间序列⾥⻓期的依赖关系。
LSTM 长短期记忆long short-term memory : 遗忘门:控制上一时间步的记忆细胞 输入门:控制当前时间步的输入 输出门:控制从记忆细胞到隐藏状态 记忆细胞:⼀种特殊的隐藏状态的信息的流动I t = ϕ ( X t W x i + H t − 1 W h i + b i ) I_{t}=\phi(X_{t}W_{xi} +H_{t-1}W_{hi}+b_{i}) I t = ϕ ( X t W x i + H t − 1 W h i + b i ) F t = ϕ ( X t W x f + H t − 1 W h f + b f ) F_{t}=\phi(X_{t}W_{xf} +H_{t-1}W_{hf}+b_{f}) F t = ϕ ( X t W x f + H t − 1 W h f + b f ) O t = ϕ ( X t W x o + H t − 1 W h o + b o ) O_{t}=\phi(X_{t}W_{xo} +H_{t-1}W_{ho}+b_{o}) O t = ϕ ( X t W x o + H t − 1 W h o + b o ) C t ~ = t a n h ( X t W x c + H t − 1 W h c + b c ) \tilde{C_{t}}=tanh(X_{t}W_{xc} +H_{t-1}W_{hc}+b_{c}) C t ~ = t a n h ( X t W x c + H t − 1 W h c + b c ) C t = F t ⊙ C t − 1 + I t ⊙ C t ~ C_{t}=F_{t}\odot C_{t-1} +I_{t}\odot \tilde{C_{t}} C t = F t ⊙ C t − 1 + I t ⊙ C t ~ H t = O t ⊙ t a n h ( C t ) H_{t}=O_{t}\odot tanh(C_{t}) H t = O t ⊙ t a n h ( C t )
参考资料: https://www.kesci.com/org/boyuai/project/5e4291f05f2816002ce8f9a0
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:循环神经网络知识要点笔记 - Python技术站