首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深度学习(2)LSTM长短期记忆网络

一. LSTM提出原因

Sigmoid函数的导数值域范围是(0,1/4]内,每次反向传播都会以1/4的速度递减,时间越远梯度减小越明显。

例:若当前时刻为t,在(t-3)时刻时,梯度将减少至少(0.25*0.25*0.25=1/64),这就是原始RNN无法处理长距离依赖的原因。

LSTM则克服了梯度消失的缺点,对于捕获长时间的记忆信息效果非常显著。

梯度消失:上图的t-3时刻开始,梯度已经几乎减少到0。从这个时刻开始再往之前走,得到的梯度(几乎为零)就不会对最终的梯度值有任何贡献,这就相当于无论t-3时刻之前的网络状态h是什么,在训练中都不会对权重数组W的更新产生影响,也就是网络事实上已经忽略了t-3时刻之前的状态。

二. LSTM模型

1RNN与LSTM

1.1RNN

在标准的 RNN 中,这个重复的模块只有一个非常简单的结构

1.2LSTM

在下面的图例中,每一条黑线传输着一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表 pointwise 的操作,诸如向量的和,而黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置。

1.3LSTM与RNN

长短时记忆网络的思路比较简单。原始RNN的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。那么,假如我们再增加一个状态,即c,让它来保存长期的状态。新增加的状态c,称为单元状态(cell state)。

2存储长期信息

2.1引入simple RNN

为介绍如何存储长期信息,引入simple RNN。

2.2如何存储新的信息

把新信息放到长期状态C,有两种操作,乘法操作,加法操作。

乘法操作更多的是作为一种对信息进行某种控制的操作(比如任意数与0相乘后直接消失,相当于关闭操作;任意数与大于1的数相乘后会被放大规模等),而加法操作则是新信息叠加旧信息的操作。

2.3乘法操作

通过以上模型的构建,可以发现直接将历史记忆乘进长时记忆单元只会让情况更糟糕,这也说明了乘性更新并不是简单的信息叠加,而是控制。

2.4加法操作

直接将历史记忆乘进长时记忆单元只会让情况更糟糕,这也说明了乘性更新并不是简单的信息叠加,而是控制。加法操作则是新信息叠加旧信息的操作。

3LSTM结构

3.1门(gate)

门的使用,就是用门的输出向量按元素乘以我们需要控制的那个向量。因为门的输出是0到1之间的实数向量,那么,当门输出为0时,任何向量与之相乘都会得到0向量,这就相当于什么都不能通过;输出为1时,任何向量与之相乘都不会有任何改变,这就相当于什么都可以通过。而这里sigmoid函数的值域是(0,1) ,所以门的状态都是半开半闭的。

3.2遗忘门

通过将上一隐藏层的输出信息与当前的输入进行线性组合后,利用激活函数,将函数值压缩,得到一个大小在0和1之间的阈值,当函数值越接近1时,表示记忆体保留的信息越多。当函数值越接近0时,表示记忆体丢弃的信息就越多。

3.3输入门

输入门决定了当前时刻的输入信息,有多少信息将添加到记忆信息流中,与遗忘门计算公式几乎一致,输入门同样通过一个激活函数来实现。

3.4候选门

新信息是否被记忆是一个控制操作,应该使用乘法操作。因此在新信息前加一个控制阀门。

遗忘门是用来控制记忆消失程度的,因此也要用乘性运算。

然后在采用之前提到为把把新信息放到长期状态C中的加法操作。

3.5输出门

输出门,它控制着有多少记忆信息将被用于下一阶段的更新中。

3.6LSTM整体模型

输出门,它控制着有多少记忆信息将被用于下一阶段的更新中。

三. LSTM用于时间序列分析

1.1目的

用前几个月的飞机流量来预测当月的流量。

读入数据是2010年的飞机月流量

1.2模型

数据预处理,将数据中 na 的数据去掉,然后将数据标准化到 0 ~ 1 之间。

进行数据集的创建,可以把前两个月流量数据作为输入,当月流量作为标签。为了进一步测试可以把数据划分为训练集、测试集。这里主要看下LSTM模型。

定义好网络结构,输入的维度是 2,因为使用两个月的流量作为输入,隐藏层的维度可以任意指定,这里指定为 4

预测结果如下

这里蓝色的是真实的数据集,红色的是预测的结果,可以看到,使用 lstm 能够得到比较相近的结果,预测的趋势也与真实的数据集是相同的.

代码及数据下载: https://github.com/CaoZeKun/code-of-learn-deep-learning-with-pytorch/tree/master/chapter5_RNN/time-series参考

注1:内容参考了博文LSTM

注2:代码参考了书籍

后记:孔曰成仁,孟曰取义,惟其义尽,所以仁至。读圣贤书,所学何事,而今而后,庶几无愧。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180708G0RE2600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券