RNN初探——LSTM

wiki百科:递归神经网络(RNN)是两种人工神经网络的总称。一种是时间递归神经网络(recurrent neural network),另一种是结构递归神经网络(recursive neural network)。


我们一般所说的RNN就是第一种,时间递归神经网络,又名循环神经网络。它与传统的神经网络最大的差别之处就在于,它隐藏层之间的节点不再是无连接的,而是有连接的。每次的输入不再只有输入层还包括了上个时间节点隐藏层本身的输入。


下图是一个RNN展开的图片(本篇博客的图片部分借用网上已给出的结构图):


       

为了便于理解,将一个RNN按时间节点展开为一个链式结构,每个x都是不同时间节点的输入,而h都是不同时间节点的输出,可以很明显的看出每个时间节点的RNN都是接受了当前时间节点的输入在加上了上个时间节点的输出。这种结构可以很好的解决许多传统神经网络无法解决的问题,例如:时间序列的关联问题等。


但是不可否认,RNN依然还有着缺点,例如:无法解决长时依赖问题,还有梯度消失或爆炸的问题。RNN的关键点之一就是它可以用来连接先前的信息到当前的任务上,例如使用过去的视频段来推测对当前段的理解,这使得RNN变得非常有用。但当我们试着去预测一段非常长的文字时,需要先前提到的离当前位置很远上下文。这说明相关信息和当前预测位置之间的间隔就肯定变得相当的大。在这种情况下就出现了长时依赖问题,如果无法解决,则预测模型会因为上下文时间过长而忘记,从而无法达到预测的目的。而梯度消失和梯度爆炸的产生是因为RNN本身tanh函数造成的,由于求导的链式法则,不断的削弱数值或者不断增大使得梯度消失或者爆炸。梯度消失是RNN中一个非常严重的问题,梯度消失会使得整个模型无法正常使用,达不到预测效果。


为了解决以上两个问题,一个基于RNN的模型被提出——LSTM(长短记忆模型)


上图所示的是普通RNN结构,而下图是LSTM模型的结构图:

       

可以看出,LSTM模型在每个细胞(即A)中相较于原来增加了许多的结构,而这些结构的基础就是“门”。

如下图:


所谓“门”:去除或者增加信息到细胞状态的能力

在LSTM中包含了两种门层结构:输入门层和忘记门层,其中忘记门层决定我们会从细胞状态中丢弃什么,而输入门层确定什么样的新信息将被存放在细胞状态中。



上图中所示就是LSTM的第一门层:忘记门层。该门会读取h(t-1)和xt的值,h(t-1)就是上一个时间状态的输出,而xt就是这个时间状态的输入。之后通过Sigmoid输出一个在0-1之间的数值给C(t-1)。


接下来就是LSTM的第二步,确定什么样的信息被存放在细胞状态中。也就是在原来RNN基础模型中加入了输入门层,输入门层将决定什么值将被更新,同样会读取h(t-1)和xt的值。输出一个0-1的值再和本身tanh函数所计算出来的细胞状态候选值相乘,等待下一步的更新。

待上述的两个步骤执行完后,就可以将t-1时的细胞状态更新为t时刻的细胞状态,公式如下图右边所示。也就是将忘记门层的输出和上一个细胞状态相乘之后再加上新的细胞状态候选值与输入门层的输出值的乘积,就可以得到新的细胞状态


最后就是确定输出值了,最后这里还是用了一个基础门结构读取h(t-1)和xt的值,通过Sigmoid层确定输出,再将新的细胞状态通过tanh处理与刚刚得到的值相乘最终输出。这样就完成了一个时间周期内的细胞状态更新和输出,接下来就是不断重复此过程实现LSTM模型。

最后附上一个在tensorflow框架下,字符级的LSTM的预测模型的结果。

预测模型以斯坦福给出的影评为训练集,最终以第27轮训练后的模型为预测模型,分别预测了不同字母开头的,由500字母组成的影评

以“I”字母开头的预测模型:


“C”开头的预测模型:



编者:kjc

        PPT下载链接


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值