RNN教程

@(深度学习)[神经网络, RNN]

RNN教程


Introduction to RNN

在传统的前馈神经网络中,我们假定所有的输入(和输出)相互之间都是独立的。因此,前馈神经网络不能记住最近的历史训练信息,于是在处理序列模型时效果不佳。循环神经网络的提出就是为了解决这个问题的(Jordan et al. 1986, Elman et al. 1990)。RNN可以通过在隐藏层维护一个“状态向量”来充分利用序列的信息,状态向量可以隐式地包含序列中的所有元素。
RNN模型的输入是一个序列,这个模型一步处理序列中的一个元素。在计算完每一步后,更新的状态向量会传递给下一步的计算过程。下图是一个典型的RNN模型:
这里写图片描述

一个隐藏层单元数为1的RNN模型(左)以及它的在时间上的展开形式(右)
t t 时刻隐藏层的状态st 的输入来自 t t 时刻的输入值xt t1 t − 1 时刻的状态 st1 s t − 1 。 通过这种方式,RNN模型可将输入序列 {xt} { x t } 映射到输出序列 {ot} { o t } , 其中每个输出 ot o t 取决于所有的输入 xt x t ′ ( tt t ′ ≤ t )

然而,理论和实践都表明RNN很难学习到长期的依赖关系(Bengio et al, 1994),因为当你利用基于梯度的方法来训练时,梯度会消失或爆炸。为了解决这个问题,一种更复杂的RNN模型——LSTM网络被提出来了.

Introduction to LSTM

所有的RNN都具有包含重复模块的链式结构网络。在RNN中,这种重复模块比较简单,例如通常为一个tanh函数。
这里写图片描述
LSTM也有这种链式结构, 但是它的重复模块的结构比标准的RNN要复杂许多,有4个小的结构。
这里写图片描述
通过合理地组织和开启一种称为“门”的结构,LSTM可以学习到它应该学习多久的信息, 什么时候开始遗忘, 什么时候学习新的信息, 以及如何将旧的信息和新的输入合理地结合起来。

forget gate:ftinput gate:itcandidate cell state:C~tnew cell state:Ctoutput gate:otnew hiddenvalue:ht=σ(Wf[ht1,xt]+bf)=σ(Wi[ht1,xt]+bi)=tanh(WC[ht1,xt]+bC)=ftCt1+itC~t=σ(Wo[ht1,xt]+b0)=ottanh(Ct) f o r g e t   g a t e : f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) i n p u t   g a t e : i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) c a n d i d a t e   c e l l   s t a t e : C ~ t = tanh ⁡ ( W C ⋅ [ h t − 1 , x t ] + b C ) n e w   c e l l   s t a t e : C t = f t ∗ C t − 1 + i t ∗ C ~ t o u t p u t   g a t e : o t = σ ( W o ⋅ [ h t − 1 , x t ] + b 0 ) n e w   h i d d e n v a l u e : h t = o t ∗ tanh ⁡ ( C t )

关于上图中LSTM结构的详细介绍见 Understanding LSTM Networks.

LSTM Variants

LSTM有许多变种,其中一种就是将输入门和遗忘门结合起来。 Gated Recurrent Unit(GRU) 就是这样的一个例子。它将输入门和遗忘门合并成一个更新门,并且它把隐藏层状态和细胞状态合并起来。
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值