浅谈LSTM循环神经网络
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈LSTM循环神经网络相关的知识,希望对你有一定的参考价值。
参考技术A 姓名:程祖晗学号:19021210938
【嵌牛导读】人工神经网络(ANN)由大量相互连接的神经元或称节点组成,这些节点经过网络中的大量加权连接,将数据进行相互通信,实现了神经网络的记忆特性。在常规的神经网络中,各个层之间的所有神经元彼此连接,但层间神经元不连接,即不能对前后位置具有一定关系的系列化数据进行更有效的分析,无法学习序列数据中前后样本的内在关联。为了优化此问题,多方研究提出了循环神经网络,且为了解决长距离依赖的问题,出现了长短期记忆网络(LSTM)。本篇就LSTM循环神经网络进行简单的讲解。
【嵌牛鼻子】LSTM循环神经网络
【嵌牛正文】LSTM循环神经网络应用了门控算法,即增加了一个状态 来保存长期的状态,此算法在学习时既能掌握长距离依赖又能选择性地遗忘信息防止过载。因此在当前时刻下,LSTM 的单个神经元中共有三个输入,分别是当前时刻网络的输入值 、LSTM 隐含层上一时刻的输出值 以及上一时刻的单元状态 。现研究其模型的建立过程。
LSTM是改进的循环神经网络,如图1所示, 为输入样本, 为输出样本, 为LSTM单元输出。 分别为样本个数,输出样本个数及神经元个数。即:
模型中需要初始化的参数有 、 、 、 、 。
遗忘门限 决定了当前时刻的神经元状态 中保存了多少上一时刻的神经元状态 :
输入门限 决定了当前时刻网络的输入 有多少保留到当前时刻的神经元状态 ,同时计算当前输出的神经元状态 。
输出门限 限制了神经元状态 对 的作用:
最后输出的预测结果为: ,其中 为偏移量。
与 WNN 不同,RNN 的反向误差值包括两个方面:一个是沿时间的反向传播,即当前时刻开始后的每个时刻的误差;一个是将层间的误差值传递。设 LSTM 单元的输出值为 ,定义 时刻的误差项为:
(1)误差项沿时间的反向传递
根据上式得到 时刻的 ,即
因此 。且由前向计算可知:
(2)层间传递
假设当前为第 层,定义 层的误差项为:
因此
由前可计算出各权值对应的梯度值,如下所示:
设置学习率 ,则示例如下所示:
模型建立完成,可利用此模型完成对数据的预测,其结果比常规的神经网络更精确。
参考: http://colah.github.io/posts/2015-08-Understanding-LSTMs/
https://zybuluo.com/hanbingtao/note/541458
深度学习:浅谈RNNLSTM+Kreas实现与应用
主要针对RNN与LSTM的结构及其原理进行详细的介绍,了解什么是RNN,RNN的1对N、N对1的结构,什么是LSTM,以及LSTM中的三门(input、ouput、forget),后续将利用深度学习框架Kreas,结合案例对LSTM进行进一步的介绍。
一、RNN的原理
RNN(Recurrent Neural Networks),即全称循环神经网络,它是一种对序列型的数据进行建模的深度模型。如图1.1所示。
图1.1
1、其中
为序列数据。即神经网络的输入,例如nlp中,X1可以看作第一个单词、X2可以看作是第二个单词,依次类推。语音处理中,可以将
是每帧的声音信号。时间序列中,例如,某生活用品的销量数据。
2、U、W、V是参数矩阵,b、c是偏置项,f是激活函数,通常采用”热撸”、tanh函数作为激活函数,用softmax将输出转换成各个类别的概率。
3、上图为经典的RNN结构,其运算过程可以表示为:
式中:
表示神经网络的输出;
表示前一个时间点的状态;
4、考虑到输入与输出的关系,序列问题具有以下分类:
一对多的RNN结构:序列输出,用于图像字幕,如图1.2所示。
图1.2
多对一的RNN结构:序列输入,用于情感分类,如图1.3所示。
图1.3
多对多:序列输入和输出,用于机器翻译
同步多对多:同步序列输入和输出,用于视频分类
二、LSTM的原理
上面第一部分简单介绍了RNN的几种结构,接下来,介绍一下RNN的改进版:LSTM。LSTM(long short-term memory,长短时记忆网络),它的出现解决了很难处理的“长程依赖”问题,即无法学到序列中蕴含的间隔时间较长的规律。RNN每一层的隐状态都由前一层的隐状态经过变换和激活函数得到,反向传播求导时最终得到的导数会包含每一步梯度的连乘,将会引起梯度的消失或者梯度的爆炸。LSTM在隐状态使用了加法替代了每一步的迭代变换,这样便可以避免梯度消失的问题,从而使得网络学到长程的规律。
RNN可用图1.4表示
图1.4
同理,LSTM的结构图1.5所示
图1.5
其中图1.5中的符号,长方形表示对输入的数据做变换或激活函数;圆形表示逐点,逐点运算是指两个形状完全相同的矩形的对应位置进行相加、相乘或者其他的一些运算;箭头则表示向量会在那里进行运算。注意:
通过concat操作,才进入Sigmoid或tanh函数。
RNN与LSTM有所不同,LSTM的隐状态有两部分,一部分是ht ,另一部分则是
,
在各个步骤之间传递的主要信息,绿色的水平线可看作“主干道”,如图1.6所示。通过加法,
可以无障碍的在这条主干道上传递,因此较远的梯度也可以在长程上传播,这便是LSTM的核心思想。
图1.6
但是,不是每一步的信息
都是完全使用前一步的
,而是在
的基础之上“遗忘”掉一些内容,或“记住”一些内容。
1、 遗忘门,我们首先谈一谈遗忘门,每个单元都有一个“遗忘门”,用来控制遗忘掉
的那些部分,其结构如图1.7所示。其中σ是sigmoid激活函数,它的输出在0~1之间,遗忘门输出的
相同形状的矩阵,该矩阵将会和
逐点相乘,决定遗忘掉那部分内容。经过激活函数的输出,f取值接近0的维度上的信息就会被“忘记”,而f取值接近1的维度上的信息就会被保留。
图1.7
2、 输入层,如图1.8,在循环神经网络“忘记”了部分之前的状态后,它还需要从当前的输入补充最新的记忆,这个过程就是“输入门”完成的。输入门的输入同样是两项,分别是:
。它的输出项,一项是
,
同样经过Sigmoid函数运算得到,其值都是在0~1之间,还有一项
。最终要“记住”的内容是
与
点相乘,如图1.9。
图1.8
图1.9
3、 输出门,输出门用于计算另一个隐状态的值,真正的输出(如类别)需要通过做进一步运算得到。输出门的结构如图1.20所示,同样根据
计算,
中每一个数值在0~1之间,
通过
得到。
图1.20
最终总结:LSTM中每一步的输入是
,隐状态是
,最终的输出必须要经过
进一步变换得到。
为了帮助大家让学习变得轻松、高效,给大家免费分享一大批资料,让AI越来越普及。在这里给大家推荐一个人工智能Python学习交流群:519970686欢迎大家进群交流讨论,学习交流,共同进步。
当真正开始学习的时候难免不知道从哪入手,导致效率低下影响继续学习的信心。
但最重要的是不知道哪些技术需要重点掌握,学习时频繁踩坑,最终浪费大量时间,所以拥有有效资源还是很有必要的。
以上是关于浅谈LSTM循环神经网络的主要内容,如果未能解决你的问题,请参考以下文章