长短时记忆神经网络模型(LSTM)简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1.1 LSTM模型概述
长短时记忆网络是一种深度学习方法,目前是机器学习领域中应用最广泛的模型,并在科技领域有了众多应用。在2015年,谷歌通过LSTM模型大幅提升了安卓手机和其他设备中语音识别的能力,之后谷歌使用LSTM 的范围更加广泛,它可以自动回复电子邮件,生成图像字幕,同时显著地提高了谷歌翻译的质量;苹果的iPhone 也在QucikType和Siri中使用了LSTM;微软不仅将LSTM用于语音识别,还将这一技术用于虚拟对话形象生成和编写程序代码等等[56]。
LSTM算法全称为Long short-term memory,最早由Sepp Hochreiter和Jürgen Schmidhuber于1997年提出[57],是一种特定形式的循环神经网络(RNN,Recurrent neural network,),而循环神经网络是一系列能够处理序列数据的神经网络的总称。RNN在处理时间序列上距离较远的节点时会发生梯度膨胀和梯度消失的问题,为了解决RNN的这个问题,研究人员提出基于门限的RNN(Gated RNN),而LSTM就是门限RNN中应用最广泛的一种,LSTM通过增加输入门(Input Gate),输出门(Ouput Gate)和遗忘门(Forget Gate),使得神经网络的权重能够自我更新,在网络模型参数固定的情况下,不同时刻的权重尺度可以动态改变,从而能够避免梯度消失或者梯度膨胀的问题。LSTM的结构中每个时刻的隐层包含了多个记忆单元(Memory Blocks),每个单元(Block)包含了多个记忆细胞(Memory Cell),每个记忆细胞包含一个细胞(Cell)和三个门(Gate)[58],一个基础的LSTM结构示例如图5- 1所示:
图5- 1 LSTM的基础结构[58]
一个记忆细胞只能产出一个标量值,一个记忆单元能产出一个向量。LSTM的算法包括两个部分:1. LSTM的前向传播(Forward Pass),用于解决已知LSTM输入如何得到输出的问题;2. LSTM的反向传播(Backward Pass),用于更新LSTM中每个权重的梯度,解决LSTM 的训练问题。
5.1.2 LSTM的前向传播算法
本文应用最基础的LSTM结构来进行公共自行车出行链出行目的需求预测,该模型每个时刻的隐含层只包括一个记忆单元,每个记忆单元只包含一个记忆细胞。LSTM的前向传播算法从输入开始,逐个求解输入门、遗忘门、细胞门和输出门,求解过程如图5- 2所示:
图5- 2 LSTM的前向传播算法流程图
(1)输入门()的计算
输入门接受两个输入:1. 当前时刻的输入:;2. 上一时刻同一单元内所有细胞作为输入:。
最终输入门的输出为:
(5-1)
(5-2)
(2)遗忘门()的计算
遗忘门接受两个输入:1. 当前时刻的输入:;2. 上一时刻同一单元内所有细胞作为输入:。
最终输入门的输出为:
(5-3)
(5-4)(3)记忆细胞()的计算
记忆细胞的计算稍有些复杂,接受两个输入:1. 输入门和输入的乘积;2. 遗忘门和上一时刻对应记忆细胞输出的乘积。
最终记忆细胞的输出为:
(5-5)
(5-6)(4)输出门()的计算
遗忘门接受两个输入:1. 当前时刻的输入:;2. 当前时刻同一单元内所有细胞作为输入:。
最终输出门的输出为:
(5-7)
(5-8)(5)记忆细胞()输出的计算
记忆细胞输出的计算,即将输出门和记忆细胞做乘积即可。
最终记忆细胞输出的输出为:
(5-9)至此,整个记忆单元从输入到输出整个前向传播算法已经结束,其中涉及三个门和中间记忆细胞的计算,其中三个门使用的激活函数是,而输入的激活函数是、记忆细胞输出的激活函数是。
5.1.3 LSTM的反向传播算法
LSTM的反向传播算法,利用链式求导求解整个LSTM中每个权重的梯度。LSTM的反向传播算法从求解输出门梯度开始,逐个求解细胞门、遗忘门和输入门的梯度,应用梯度下降原则训练LSTM网络模型,求解过程如图5- 3所示:
图5- 3 LSTM的反向传播算法流程图
(1)权重的更新
对于神经网络中的每一个权重,都需要找到对应的梯度,从而通过不断地用训练样本进行随机梯度下降找到全局最优解。一般层次分明的神经网络有输入层、隐含层和输出层,层与层之间的权重比较直观;但在LSTM中通过公式才能找到对应的权重,图5- 3标识了LSTM 的单个记忆单元中需要更新的权重:、、、。
(2)记忆细胞输出的梯度
首先计算每个样本输出的梯度:
′′
′(5-10)即每一个样本输出的梯度仅和其预测值和真实值相关,这样对于记忆细胞输出的梯度则可以通过链式求导法则推导出来:
(5-11)其中输出结果还可以连接下一个时刻的一个记忆细胞和三个门,则下一个时刻的一个记忆细胞和三个门的梯度则可以传递回当前时刻输出,以此来训练LSTM网络。
(3)输出门的梯度
根据链式求导法则,输出门的梯度可以由以下公式推导出来:
′(5-12)(4)记忆细胞的梯度
记忆细胞的输入数据为,而细胞同时能够接受输入门和遗忘门的输入。这样梯度就直接从记忆细胞向下传递:
′(5-13)在这个过程中,记忆细胞的梯度由4个计算单元传递回来:1.当前时刻的记忆细胞输出;2.下一时刻的记忆细胞;3.下一时刻的输入门;4.下一时刻的输出门。
定义当前记忆细胞的状态(States)函数,则梯度可以这样求解:
′(5-14)带入式(5-13)那么记忆细胞的梯度为:
′(5-15)(5)遗忘门的梯度
遗忘门的梯度计算比较简单明了:
′(5-16)(6)输入门的梯度
输入门的梯度计算如下:
′(5-17)至此,所有的梯度求解已经结束,剩下的事情即利用梯度去更新每个权重:
Δ(5-18)其中为上一次权重的更新值,且;而即为上文所求到的每一个梯度,则梯度每次更新的量为:
Δ(5-19)其中为遗忘门的梯度。