怎么学神经网络模型预测控制?负荷预测怎么做
怎么学神经网络模型预测控制?负荷预测怎么做如图三所示:单向LSTM和反向的LSTM结合成双向BiLSTM(双向LSTM)。单向LSTM关注的是过去对未来的影响,而反向LSTM关注的是未来对过去的影响,两个方向的网络结合到一起就能关联历史与未来。除了上图展示的LSTM以外,还出现了一些LSTM的变体。在训练的过程中,RNN的训练特别困难,因为RNN梯度被表示为连成积的形式,导致梯度消失。而LSTM则很好的解决了这个问题:如图二公式展示的那样,最终的细胞状态是由遗忘门和输入门的计算结果求和得到的,这样的梯度表示为累加的形式,避免了梯度消失。 图一: RNN和LSTM结构图图二: 细胞状态更新
之前连载的负荷预测,都是使用传统机器学习的方法,这一期我们将使用工业领域中大放异彩的循环神经网络:长短期记忆网络(LSTM)。
LSTM是一种时间递归神经网络,适用于处理和预测时间序列,基于LSTM的系统可以进行机器翻译,语音识别,文本识别,诗歌合成,自动驾驶等任务。电量的负荷值也是一个时间序列,使用LSTM的预测效果如何?今天小编带大家来看一下。
LSTM模型介绍
相对RNN,LSTM的结构更复杂。如图一所示:LSTM由三个门组成:遗忘门,输入门和输出门。遗忘门决定有多少信息被忘记,输入门决定保留哪些信息,输出门输出结果。LSTM就是在RNN的基础上,增加了对过去状态的过滤,从而可以选择哪些状态对当前更有影响,而不是简单的选择最近的状态。
在训练的过程中,RNN的训练特别困难,因为RNN梯度被表示为连成积的形式,导致梯度消失。而LSTM则很好的解决了这个问题:如图二公式展示的那样,最终的细胞状态是由遗忘门和输入门的计算结果求和得到的,这样的梯度表示为累加的形式,避免了梯度消失。
图一: RNN和LSTM结构图
图二: 细胞状态更新
除了上图展示的LSTM以外,还出现了一些LSTM的变体。
如图三所示:单向LSTM和反向的LSTM结合成双向BiLSTM(双向LSTM)。单向LSTM关注的是过去对未来的影响,而反向LSTM关注的是未来对过去的影响,两个方向的网络结合到一起就能关联历史与未来。
举个例子:我明天去___一天。假如有2个选择项:喝水,上班。如果是单向的LSTM,只考虑前面的词,两个选项都满足条件,但是从后面的词看,"喝水一天"显然不合常规,而反向的LSTM就可以考虑后面语句对前面选项的影响。
图三: BiLSTM结构图
LSTM 是我们在 RNN 中获得的重要成功。很自然地,我们也会考虑:哪里会有更加重大的突破呢?——那就是注意力模型。注意力模型借鉴了人类的注意力机制,人的大脑在扫描全局图像时,获得需要关注的目标区域,然后把焦点投入到目标区域,以获取更多的目标区域的信息,同时抑制其他目标区域的信息。
如图四所示:在LSTM的输入层前加入AM(注意力模型),对历史的输入序列进行筛选,计算所有历史输入序列的权重, 权重高的信息会被关注,权重低的信息会被抑制,然后将历史输入序列的加权结果输入到LSTM模型中。
图四: LSTM with AM
梯度消失和梯度爆炸
梯度消失和梯度爆炸是神经网络模型的通病。LSTM模型本身克服了梯度消失的问题,对于梯度爆炸,有以下两种做法:
在损失函数中加入正则项:把模型参数的范数作为损失函数的一部分,会使梯度更新时减小模型参数的大小,有效避免参数过大。
正则项实现方式:
梯度裁剪:梯度更新过程中,把梯度的大小限制在一个范围内,当梯度超出限制时,将梯度更新为范围内的最大值或最小值。
梯度裁剪实现方式:
过拟合和欠拟合
对于任何神经网络模型,都需要避免过拟合和欠拟合。从模型本身的结构考虑,可以通过增加正则项和dropout避免过拟合。
dropout实现方式:
除此之外,对训练过程的控制也会对过拟合和欠拟合产生影响。可以通过对学习率的调整和设置恰当的训练结束时机来控制训练过程。
如图五所示:当学习率过高时,损失值快速变小,然后很快停止变小,甚至变大;当学习率过低,损失值缓慢减小,训练的非常慢;而好的学习率会使损失值先快速减小然后缓慢减小。根据训练过程损失值的变化规律,可以先设置一个较大的学习率,让损失值快速减小,然后随着epoch增大,不断减小学习率的大小,使损失值不断收敛到最小值。
图五: 学习率对训练效果的影响
学习率设置的实现方式
随着epoch的增加,训练集的准确率会不断增加,测试集的准确率先增加后减小,这时候模型会出现过拟合的情况。当epoch=N的时候,模型已经训练好了。所以可以设置一下,当模型的测试集的准确率不再连续增加或损失值不再连续减小时,停止训练,保存模型。
图六: epoch对训练效果的影响
训练停止设置的实现方式
负荷预测结果分析
这一期我们选择了化学制品行业,使用该行业下所有用户2018年4月开始的电力负荷数据,对2019年1月10号到2019年1月17号连续8天的逐时负荷值进行预测。
图七是待测时间段的真实值负荷曲线,可以看到数据相对平稳,但是没有明显的周期性规律,并且在某些时间点上负荷会出现骤降。
图七: 待测时间段的真实值负荷曲线
为了对比神经网络与传统机器学习方式的优劣,我们选择了三个传统的机器学习算法,作为神经网络的对比组。选取了十组与负荷相关性大的特征作为输入,可以看到三组算法的平均准确率相差不大,逐日的准确率基本都在百分之九十以上,唯有17号的准确率较低,因为这一天的真实负荷值相对历史负荷值出现骤降。
图八: 传统机器学习预测曲线
图九: 传统机器学习准确率
我们分别构建LSTM,BiLSTM,AttLSTM三种模型进行负荷预测,使用和上面的传统机器学习算法相同的特征作为输入。可以看到,三种模型的平均预测准确率也都达到百分之90以上。
其中,LSTM和BiLSTM的预测平均准确率相差很少,而AttLSTM模型的准确率会高一些。这说明对于该组数据,负荷值并不受未来的影响,而对于历史数据的筛选有助于预测准确率的提高。
图十: 神经网络模型预测曲线
图十一: 神经网络模型准确率
通过本次实验,我们看到在NLP领域大放异彩的LSTM,相对传统机器学习算法在时间序列的预测上并没有很明显的提高,但是对特征的挖掘能力,决不亚于传统机器学习算法,所以在时间序列的预测上,也能够获得比较好的结果。
当然,这是在该行业数据下的结果,后续我们会依托汇电的大数据平台和自身丰富的算法库对更多的行业做测试,敬请关注。
本文版权归“汇电云联”所有,转载请联系作者。