人工智能算法与实践-第16章 LSTM神经网络_第1页
人工智能算法与实践-第16章 LSTM神经网络_第2页
人工智能算法与实践-第16章 LSTM神经网络_第3页
人工智能算法与实践-第16章 LSTM神经网络_第4页
人工智能算法与实践-第16章 LSTM神经网络_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

16.4算法总结16.1算法概述16.2算法原理16.3算法案例目录第十六章LSTM神经网络人工智能算法与实践—1

01算法概述PartONE—2

16.1

算法概述算法概述—3

股票预测中,如果知道一年中前半年的股票上涨或下跌的走向趋势,便可根据这些数据预测出后半年的股票走向趋势。传统的RNN算法只能实现根据当前时间步的数据预测下一个时间步的数据,当时间步很长时,最后一个时间步通常获取不到第一个时间步的信息,这就是所谓的梯度消失问题,因此便有人提出了长短时记忆网络(LongShortTermMemory,LSTM)算法。LSTM算法是一种循环神经网络,由JürgenSchmidhuber提出。这一算法通过随时间反向传播(BackpropagationThroughTime,BPTT)进行训练,解决了梯度消失问题,通过引入遗忘门、输入门、更新门,对前一时间步和当前时间步的数据信息进行有选择性的保存,便于产生符合要求的预测结果。该算法以RNN为基础,主要用于处理和预测时间序列中间隔和延迟相对较长的重要事件,目前的应用领域主要包括自然语言处理、股票预测、天气预报、内容推荐、自动驾驶、翻译语言、控制机器人、图像分析、文档摘要、手写识别、预测疾病等。如果已知某城市过去10年间每个月份某一日期的天气情况,包括温度值、潮湿度、风力、风向、降水量等,那么利用LSTM神经网络就可以根据这10年的天气数据对今后1年或3年的天气情况进行预测。假定已知国际航空公司1949年1月至1960年12月所有月份的乘客人数,见下表,要求预测未来几年该航空公司的乘客人数。16.1

算法概述算法概述—4

利用LSTM算法思想,可能此过程描述为,已知某城市12年内的数据集,其中包含年份和月份,以及当月的乘客人数,要求估测明年的乘客人数。根据上述过程,要做这个预测,首先要获取12年的乘客数据集,然后根据该数据波动情况建模,数据走势情况如下图1所示,构建出一个较为理想的模型,然后对未来一年的乘客人数进行预测,预测结果如下图2所示,蓝色曲线为样本的真实值,橙色线为训练集,绿色线条为测试集,可以看到测试集与样本的真实值拟合得比较好。16.1算法概述算法概述—5

国际航班乘客人数走势图LSTM预测结果图16.1算法概述算法概述—6

LSTM算法引入3个门控结构,分别是遗忘门、输入门和输出门。其中遗忘门决定对于上一时间步的数据是否进行遗忘,输入门决定对于当前时间步的输入的接受程度,输出门是对当前细胞状态的输出。算法的整个过程包含四个步骤。(1)初始化模型参数;(2)定义模型;(3)训练模型;(4)使用训练好的模型进行预测。LSTM算法的步骤如下图所示。02算法原理PartTWO—7

16.2LSTM

结构图LSTM结构图—8

16.2.1细胞状态细胞状态—9

除了细胞状态,LSTM中还有很多其他的结构,这些结构一般称为门控结构。门是一个全连接层,该层的输入是一个向量,输出是一个0到1之间的实数向量。假设W是门的权重向量,b是偏置项,则门可表示为g(x)=s(Wx+b)。LSTM在每个序列时刻t一般包含3个门:遗忘门、输入门、输出门。16.2.2遗忘门遗忘门—10

16.2.3输入门输入门—11

16.2.4更新门更新门—12

16.2.5输出门输出门—13

16.2.6BPTTBPTT—14

LSTM保留了与RNN相同的BPTT的方式,RNN以BPTT的方式进行前向和反向传播,其中前向传播及反向传播示意图分别下图所示,首先看一下RNN的基本模型。

16.2.6BPTTBPTT—15

我们的目标是计算误差对于U、V、W参数的梯度,然后用随机梯度下降法学习更好的参数,此过程需要将每个训练实例中每个时间步的梯度相加。

16.2.6BPTTBPTT—16

将每个时间步的梯度进行相加求和。换句话说,因为W在每一步中都被使用,一直到最后的输出,因此我们需要从t=3一直反向传播到t=0。

可以观察到,这一步骤与深度前馈神经网络中适用的标准反向传播算法完全相同。关键的区别是需要把每个时间步长的梯度加起来。在传统的神经网络中,不跨层共享参数,因此不需要对任何东西求和。16.2.7梯度消失梯度消失—17

tanh函数和Sigmoid函数在两端的导数都是0,此时神经元是饱和的。有零梯度并且驱动其他的梯度在前面的层接近0。因此,对于较小的矩阵值和多重矩阵的乘法,梯度值以指数速度缩小,最终在几个时间步后完全消失,最终没有学习到长期依赖关系。如果雅可比矩阵的值很大,我们可以得到爆炸的梯度。梯度消失比梯度爆炸受到更多关注主要是因为爆炸式渐变是显而易见的,此时梯度将变成NaN,程序将崩溃。幸运的是,有一些方法可以解决梯度消失的问题。适当的初始化矩阵可以减小消失梯度的影响。所以能正规化。更可取的解决方案是使用ReLU而不是Sigmoid激活函数。ReLU的导数是一个常数,要么为0,要么为1,所以它不太可能受到梯度消失的影响。tanh函数及其导数示意图Sigmoid函数及其导数示意图03算法案例PartTHREE股票价格预测—18

预测训练模型定义模型初始化参数在该步骤中需要对使用到的参数进行定义和初始化,其中包含输入值的数目、隐藏单元的个数、输出值的数目,还包括输入门参数、遗忘门参数、输出门参数、候选记忆细胞参数、输出层参数。初始化模型参数后,该步使用这些参数进行遗忘门、输入门、输出门的计算,同时计算出输出参数。LSTM的训练算法仍是反向传播算法。第一,前向计算每个神经元的输出值。第二,反向计算每个神经元的误差项,与RNN相同的是,LSTM误差项的反向传播也包括两个方向:一个是沿时间的反向传播,即从当前时刻开始,计算每个时刻的误差项;一个是将误差项向上一层传播。第三,根据误差项,计算每个权重的梯度。通常情况下TensorFlow或Keras框架是进行预测的较好选择。将测试集作为参数,直接调用对应的预测函数即可。16.3.1LSTM算法构建LSTM算法构建—19

LSTM算法首先对每个数据集进行读取操作,得到数据集列表,然后定义并初始化将要用到的模型参数,然后定义LSTM模型,最终构建模型并进行数据预测。LSTM算法伪代码:16.3.2LSTM算法描述LSTM算法实现—20

LSTM的优点在于模型预测准确率较高,高于RNN,但是其缺点也很明显,当LSTM的层数很多时,训练模型的参数会超级多,因此会花费很多时间,为了解决这一问题,有学者提出了将LSTM的遗忘门与输入门进行合并的方法,即GRU(GatedRecurrentUnit,门控循环单元),其模型预测准确率与LSTM不相上下,但训练时参数相较于LSTM大大减少,训练速度显著快于LSTM。16.3.3LSTM算法实现LSTM算法实现—21

1前向计算LSTM的前向计算是通过式(16-1)~式(16-6)实现的,最终得到该时间序列的输出值。2随时间反向传播算法LSTM的反向传播算法与RNN相同,都使用BPTT算法。该算法是常用的训练RNN的方法,其本质还是BP算法,只不过RNN处理时间序列数据,因此要基于时间反向传播,所以被称为随时间反向传播。BPTT的中心思想与BP算法相同,即沿着需要优化的参数的负梯度方向不断寻找最优的点直至收敛。因此BPTT的核心为求各个参数的梯度。反向传播算法主要包含以下3步。(1)前向计算每个神经元的输出值,计算的方法就是前向传播计算。。(2)反向计算每个神经元的误差项。与RNN一样,LSTM误差项的反向传播也包含两个方向:一个是沿时间的反向传播,即从当前t时刻开始,计算每个时刻的误差项;一个是将误差项传播给上一层。(3)根据相应的误差项,计算每个权重的梯度。16.3.3LSTM算法实现LSTM算法实现—22

前向计算下面代码中的calc_gate()方法实现了门的运算操作,即用上一时间序列的输入乘以权重,加上当前时间序列的输入乘以权重,再加上当前门对应的偏置。16.3.3LSTM算法实现LSTM算法实现—23

随时间反向传播算法下面代码中的calc_gate()方法实现了门的运算操作,即用上一时间序列的输入乘以权重,加上当前时间序列的输入乘以权重,再加上当前门对应的偏置。16.3.4LSTM基于Keras-TensorFlow

框架实现股票价格的预测基于Keras-TensorFlow框架实现股票价格的预测—24

实验说明(1)数据集来源于。该数据集包含7个属性,分别是日期、开盘价、最高价、最低价、收盘价、调整后的收盘价,成交量,部分数据见表16-2。(2)网络中使用的是最近的5列数据。(3)数据被标准化为0~1之间。(4)数据集被划分为训练集和测试集,二者比例为1:1。(5)LSTM网络包含85个隐藏层、一个输出层和一个输入层,优化器使用的是Adam,噪声为0.1,时间步为240,迭代次数为100。(6)将训练集用来拟合数据,用于预测测试集部分的股票价格,并和真实值进行对比。16.3.4LSTM基于Keras-TensorFlow框架实现股票价格的预测基于Keras-TensorFlow框架实现股票价格的预测—25

实验结果实验结果如图16-12所示,在图16-12的后半段中,绿色曲线代表真实值,蓝色曲线代表预测值。可以看出,经过训练后的数据值与真实值大部分数据拟合得比较好,充分证明LSTM处理时序性问题的优越性。04算法总结PartFOUR—26

通过本章的学习,我们了解了LSTM是针对RNN容易产生梯度消失和梯度爆炸而提出来的,目前常用于基于时间序列处理的场景,尤其是在自然语言处理中用得较多。目前有现成的框架可以方便地进行调用,如Keras、TensorFlow等,使用户不必了解算法底层的处理细节,快速并且高效地构建出神经网络模型。LSTM算法改善了RNN中存在的长期依赖问题,并且其表现通常比隐马尔科夫模型(HMM)较好,其作为非线性模型,可作为复杂的非线性单元构造更大型的深度神经网络;但其缺点也很明显,虽然RNN的梯度问题得到了一定程度的解决,但程度还是不够。对于超长序列的处理依然很棘手,若LSTM的时间跨度

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论