长短时记忆网络(LSTM)

LSTM的引入

*虽然RNN的训练过程和多层神经网络差异不大,写程序较简单,但是Rnn的训练是十分困难的,而且很难学到长期依赖,因为当对参数进行求导更新时,式子中会使用链式法则不断乘积和求导,如在对参数w更新的式子中,会需要使用链式法则,这样当对一个变量针对变量函数求导时,会得到一个雅可比矩阵,这样就会出现两个问题。

      [1].如果雅可比阵中有较小数时,经过多次矩阵相乘,梯度值会快速收缩,从而导致较远时刻贡献的梯度接近0,使得更新时无法学习到长期依赖而结束,这也就是梯度消散问题。(主要问题)

      [2].如果雅可比阵中有较大数时,经过多次矩阵相乘,梯度值会快速增长,这也就是梯度爆炸问题。

*RNN结构也会遇到长期依赖问题,在一些简单场景,相关的信息和预测的词位置之间的间隔是非常小的,RNN 可以学会使用先前的信息。

*但是在一些复杂的环境中,假设我们试着去预测“I grew up in France... I speak fluent French”最后的词French 时。当前的信息建议下一个词可能是一种语言的名字,但是如果我们需要弄清楚是什么语言,我们是需要先前提到的离当前位置很远的 France 的上下文的。这说明相关信息和当前预测位置之间的间隔就肯定变得相当的大。

*不幸的是,在这个间隔不断增大时,RNN 会丧失学习到连接如此远的信息的能力。在理论上,RNN 绝对可以处理这样的长期依赖 问题。人们可以仔细挑选参数来解决这类问题中的最初级形式,但在实践中,RNN没能成功学习到这些知识,有专门的证明。

*梯度消失的问题使得隐层的输入对于网络输出的影响随着网络环路的不断递归而衰减(有点绕口),为了解决这一问题,我们引入了长短时记忆模块lstm,它会将一个加强版的组件组装到循环神经网络中,通过改造记忆细胞s来解决长期梯度问题。

*Lstm核心组件起到对信息的限制作用,里面会有一些门结构进行信息筛选和限制,使得该记的信息传递下去,不该记的信息被门卡住,通过这种结构来解决长期长期依赖问题,使得网络能记住长期的信息,这样后期的早期的信息也能对后面的网络输出起作用。

LSTM模型

Lstm是一个比较复杂的模型结构,其核心结构如下图所示。

*lstm模块中一个重要结构是有三个门,每个门都是下图的形式,我们会使用门结构来控制信息的流动,里面是一个Sigmoid神经网络层和pointwise乘法结构的组合,使用Sigmoid来控制输出0到1的概率值,用于描述有多少信息比例通过,1表示完全通过,0表示完全舍弃。pointwise是后跟的乘法运算,用于将概率结合到计算中去,从而起到信息控制效果。

lstm模块的另一个重要结构是细胞状态线,如下图中所示,这里类似于RNN中的S生成,细胞也是起到储存记忆的作用,进行记忆的传播和生成。

在lstm模块中输入到模块的信息有三部分:

         【1】上一模块传来的细胞状态

         【2】上一模块的输出      

         【3】这一时刻读入的新词 ,用于生成新记忆。

输出的信息包括:往后传递的细胞状态 、新的输出

LSTM计算过程

现在开始介绍下lstm模块中由前往后的流动过程,主要分为四大部分:

      [1]第一步会决定从原细胞记忆中保留多少比例的信息(遗忘门),这个比例的计算式子为: ,通过这个网络的输出f是一个(0,1)范围内的数,用于之后的 计算来决定对旧记忆的保留程度。

        [2]第二步会确定哪些新信息会存到新的细胞状态中去(输入门),这部分是两个计算的结合,即生成新信息和新信息使用比例的结合。sigmoid层计算:  、完整新细胞信息:、组合的新学信息为:

     

        [3]第三步会融合一、二步信息得到新的细胞状态是将旧信息的保留部分和新学到的信息组合生成的,对应于下面的图,生成本时刻下新记忆细胞,计算公式为:

         [4]第四步会基于新得到的细胞状态 ,结合最后一个门计算出的softmax输出比例值(输出门),从而得到最终的输出 ,计算公式为:门输出计算:、最后输出:

 

至此已经完成了所有的正向计算过程,得到一个lstm模块下的输出,可以看出在一个模块中有很多参数要考虑,比如     、    、    、   、   、   、    、  ,这些共享参数向量会在反向传播时进行梯度改变。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值