四、长短期记忆网络(LSTM)数据驱动模型

长短期记忆网络(LSTM)数据驱动模型

5.1 基本原理

长短时记忆网络(Long Short Term Memory Network, LSTM),是一种改进之后的循环神经网络,可以解决RNN无法处理长距离的依赖的问题。在原始的 RNN 模型中,隐藏层只有一个状态,即h,RNN对于短期的输入非常敏感。如果此时再增加一个状态c,让它来保存长期的状态,那么则称之为称为单元状态(cell state)。

按照时间维度展开:在 t 时刻,LSTM 的输入有三个:分别是当前时刻网络的输入值 X_t、上一时刻 LSTM 的输出值 h_t-1、以及上一时刻的单元状态 C_t-1;

LSTM 的输出有两个:当前时刻 LSTM 输出值 h_t、和当前时刻的单元状态 C_t.

使用三个控制开关控制长期状态 c:

第一个开关,负责控制继续保存长期状态c;

第二个开关,负责控制把即时状态输入到长期状态c;

第三个开关,负责控制是否把长期状态c作为当前的LSTM的输出。

用门(gate)的结构在算法中可以这三个开关, gate 实际就是该模型中的一层全连接层,输入的数据类型是一个向量,而输出是一个 0到1 之间的实数向量。

公式为:                        (5-1)

                                  

图5-1 门开关原理

如图5-1所示,通过用门的输出向量按元素乘上我们需要控制的向量,在sigmoid函数中门的输出是0到1之间的实数向量,当门输出为0时,任何向量与之相乘都会得到0 向量,这就表明数据被舍弃或者遗忘,任何数据也无法通过;而当输出为1时,任何向量与之相乘的结果都为原向量,这就表明数据被保存,可以通过。

遗忘门(forget gate):它决定了上一时刻的单元状态 c_t-1 有多少保留到当前时刻 c_t,可以保存很久很久以前的信息。

输入门(input gate):它决定了当前时刻网络的输入 x_t 有多少保存到单元状态 c_t,可以避免当前无关紧要的内容进入记忆。

输出门(output gate):控制单元状态 c_t 有多少输出到 LSTM 的当前输出值 h_t,控制了长期记忆对当前输出的影响。

5.2 LSTM算法实现

第一步:读取测量的数据,由表3-1知,要用后10组数据预测第一组数据,这里依旧使用pd.excel()函数读取数据。

第二步:进行数据标准化,为了保证与CNN进行同样的处理,使用正规化方法。

第三步:进行参数定义,一共有609组样本,为了保证与CNN进行同样的处理因此同样按照8:2 划分训练集和测试集。定义迭代次数为200,批次训练样本数目为200.获取后10列为输入x,第二列为输入y。

第四步:打乱数据集行顺序。构建测试集数据。

第五步:构建LSTM模型,模型如图5-2,分为

LSTM层1—LSTM层2—全连接层1—dropout层1—全连接层2

图5-2  LSTM模型

LSTM函数中所用到的核心参数如下

units:门结构(forget门、update门、output门)使用的隐藏单元个数。

input_dim:表示的是输入维度,当使用该层为模型的首层时,需要指定该值(在本实验中将数据类型reshape后再输入)

return_sequences:即布尔值,默认的值为False,该值控制返回的类型。若为True则返回整个序列,否则仅返回输出序列的最后一个输出

input_length:该参数为输入序列的长度。尤其是当LSTM层后如果紧接着就是Flatten层以及全连接层时则需要该参数,否则全连接层的输出无法计算。

在本次的设计中数据集为609组,而训练模型的参数却有十个参数,所以训练模型的预测结果极容易产生过拟合的现象,即:在训练集上的损失比较小,且预测值与实际值的误差较小,然而在测试集上损失较大,预测值与实际值的误差较大。基于此种考虑,添加dropout函数,该函数旨在增强模型的泛化性。具体原理如下

在使用dropout前,输入根据网络流程向前传播,误差通过反向传播后用以更新模型的参数,让模型来学习。

在使用dropout后会按照给定的比例值P,临时的删除模型中的部分神经元,此时输入以及输出的神经元数目保持不变。此时输入将在改变后的网络向前传播,损失值再通过模型反向传播没有被临时删除的神经元上会按照随机梯度下降法来更新参数。

不断地重复这一过程,之前被删除的神经元会被备份后再提取出来,然后所有神经元按照给定的比例值再进行临时的删除。

Dropout通过每次按照比例随机删除神经元,实际上依旧改变了模型的结构,而通过不断地重复该过程,相当于对多个不同结构的模型取了一个平均值,当不同的模型产生不同的过拟合时,某些拟合可以相互抵消,整体上可以减少过拟合的现象。

5.3 结果展示

图5-3 训练过程中Loss变化曲线

图5-4 训练过程中Mse变化曲线

图5-5 真实值与预测值变化曲线

可以看出

train loss 不断下降,test loss不断下降,说明网络在学习表明参数很好

5.4 本章小节

本章内容主要阐述了长短期记忆网络的基本原理,并且结合其输入数据类型的不同,重新构造了输入数据的维度,然后对长短期记忆网络进行具体分布的设计。将测试数据带入模型中,用第三章的评估特征来观察模型的优劣。最后展示在测试集中长短期记忆网络预测数据以及真实数据的对比图。

猜你喜欢

转载自blog.csdn.net/weixin_49305883/article/details/123240486