基于Adam算法优化GRU神经网络的短期负荷预测(Python代码实现)

目录

1 Adam优化算法

2 Adam算法中的学习率衰减策略

3 GRU神经网络

4 运行结果

5 参考文献

6 Python代码实现


1 Adam优化算法

基于Adam算法优化GRU神经网络的短期负荷预测(Python代码实现)_第1张图片

基于Adam算法优化GRU神经网络的短期负荷预测(Python代码实现)_第2张图片

2 Adam算法中的学习率衰减策略

该文在Adam算法的基础上引入了学习率衰减策略"",可以加快参数的更新速度,使 Adam算法在前期的收敛速度加快,并且可以提升模型的精度。该文采用的是分数衰减方式,分数衰减的公式为:

\text { alpha } a_{t}=\frac{\text { alpha }{ }_{t-1}}{1+\text { decayrate } \times \text { epoch }}

其中, epoch代表样本集内所有的数据经过了一次训练;decayrate为衰减率。文中令参数decayra
te=1,epoch=1。
随着迭代次数的增加,学习率将以分数衰减方式衰减,通过衰减后的学习率寻求全局最优解。采用此方法的目的是希望减少迭代过程中收敛曲线的振荡,提高模型收敛速度和稳定性,得到全局最优解。
为了避免出现采用学习率衰减策略时学习率衰减到零的情况,令最小学习率为0.000 5。在算法迭代过程中,当学习率小于0.0005时,将不再进行学习率衰减。

Adam优化算法是随机梯度下降的扩展,最近在计算机视觉和自然语言处理中更广泛地采用深度学习应用。亚当不同于经典的随机梯度下降。随机梯度下降对所有体重更新保持单一学习速率(称为 alpha),并且学习速率在训练期间不会改变。每个网络权重(参数)都保持学习速率,并随着学习的展开而单独调整。Adam 意识到 AdaGrad 和 RMSProp 的好处。Adam 没有像 RMSProp 那样根据平均第一矩(平均值)调整参数学习速率,而是利用梯度的第二个时刻的平均值(无中心方差)。具体而言,该算法计算梯度和平方梯度的指数移动平均线,参数beta1和beta2控制这些移动平均线的衰减率。移动平均线的初始值以及接近 1.0 的 beta1 和 beta2 值(推荐)会导致矩估计值偏向于零。通过先计算偏倚估计值,然后再计算偏差校正估计值,可以克服这种偏差。

3 GRU神经网络


GRU是在LSTM神经网络的基础上提出来的LSTM神经网络由输入门、遗忘门、输出门组成"
GRU将ISTM的遗忘门和输入门合并成更新门,可时将记忆单元与隐含层合并成重置门,进而让整个
结构运算变得更加简化且性能得以增强GRU结构图如图1所示。

基于Adam算法优化GRU神经网络的短期负荷预测(Python代码实现)_第3张图片

基于Adam算法优化GRU神经网络的短期负荷预测(Python代码实现)_第4张图片

常规的GRU神经网络采用随机梯度下降算法迭代更新神经网络的权重,此模型算法前期的收敛速度较慢,而且容易出现精度下降的问题。为了提高预测的精度,加快模型前期的收敛速度,文中米用Adam优化算法并引入学习率衰减策略,对GRU神经网络模型进行优化。

4 运行结果

基于Adam算法优化GRU神经网络的短期负荷预测(Python代码实现)_第5张图片
基于Adam算法优化GRU神经网络的短期负荷预测(Python代码实现)_第6张图片

基于Adam算法优化GRU神经网络的短期负荷预测(Python代码实现)_第7张图片

部分代码: 

xtest = (xtest-xmean)/xstd
Z1t = np.dot(wh, xtest.T) + bh
A1t = sigmoid(Z1t)
Z2t = np.dot(wo, A1t) + bo
A2t = Z2t
ypredt = A2t.T
ypredt = ypredt*ystd+ymean
errort = ytest-ypredt

plt.plot(ypredt,label='预测负荷')
plt.plot(ytest,label='真实负荷')
plt.title('基于Adam算法优化GRU神经网络的短期负荷预测')
plt.legend()
plt.show()

(Rt, pvalt) = stats.pearsonr(ytest.flatten(),ypredt.flatten())
print(Rt)

5 参考文献

部分理论引用网络文献,如有侵权请联系删除。

[1]高翱,李国玉,撖奥洋,周生奇,魏振,张智晟.基于Adam算法优化GRU神经网络的短期负荷预测模型[J].电子设计工程,2022,30(09):180-183+188.DOI:10.14022/j.issn1674-6236.2022.09.038.

6 Python代码实现

你可能感兴趣的:(#,电力系统Matlab,#,电气期刊论文,#,电气论文代码,gru,神经网络,深度学习,python)