强化学习驱动的光伏功率时间序列预测:LSTM与GRU动态权重组合方法Python

张开发
2026/5/30 5:44:34 15 分钟阅读
强化学习驱动的光伏功率时间序列预测:LSTM与GRU动态权重组合方法Python
引言时间序列预测在能源、金融、气象等领域具有广泛应用。单一预测模型往往难以适应数据中复杂的时序模式而模型组合Ensemble通过融合多个基模型的预测结果通常能获得更优的泛化性能。传统的组合方法多采用固定权重或基于验证集性能的静态加权难以适应数据分布的动态变化。本文介绍一种基于强化学习思想的动态权重学习框架使用一个小型神经网络作为“智能体”Agent以LSTM和GRU两个基模型的当前预测误差为状态实时生成二者的组合权重并通过最小化组合预测的均方误差MSE来端到端训练整个系统。实验使用光伏功率数据结果表明该动态组合方法显著优于单一模型及静态加权方法。方法框架基模型LSTM与GRU本方法选用两种循环神经网络作为基模型LSTM长短期记忆网络通过门控机制输入门、遗忘门、输出门有效缓解长期依赖问题。GRU门控循环单元结构比LSTM更简洁参数量更少训练效率更高在许多序列任务中表现与LSTM相当。两个模型均采用单层结构隐藏单元数为64输入特征维度为1单变量时间序列输出为下一时刻的预测值。模型定义如下classLSTMModel(nn.Module):def__init__(self,input_dim1,hidden_dim64,num_layers1,output_dim1):super().__init__()self.lstmnn.LSTM(input_dim,hidden_dim,num_layers,batch_firstTrue)self.fcnn.Linear(hidden_dim,output_dim)defforward(self,x):out,_self.lstm(x)returnself.fc(out[:,-1,:])GRU结构类似仅将nn.LSTM替换为nn.GRU。权重智能体Weight Agent智能体是一个小型前馈神经网络输入为当前批次两个基模型的平均绝对误差组成的二维状态向量state[1B∑i1B∣yi−y^LSTM,i∣1B∑i1B∣yi−y^GRU,i∣] \text{state} \begin{bmatrix} \frac{1}{B}\sum_{i1}^B |y_i - \hat{y}_{\text{LSTM},i}| \\ \frac{1}{B}\sum_{i1}^B |y_i - \hat{y}_{\text{GRU},i}| \end{bmatrix}state[B1​∑i1B​∣yi​−y^​LSTM,i​∣B1​∑i1B​∣yi​−y^​GRU,i​∣​]其中BBB为批大小。该状态反映了基模型在当前数据上的实时表现。智能体网络结构classWeightAgent(nn.Module):def__init__(self,state_dim2,hidden_dim32):super().__init__()self.netnn.Sequential(nn.Linear(state_dim,hidden_dim),nn.ReLU(),nn.Linear(hidden_dim,2),nn.Softmax(dim-1))defforward(self,state):returnself.net(state)Softmax层确保输出权重非负且和为1即wLSTMwGRU1w_{\text{LSTM}} w_{\text{GRU}} 1wLSTM​wGRU​1。组合预测与损失函数组合预测为两个基模型预测的加权平均y^combwLSTM⋅y^LSTMwGRU⋅y^GRU \hat{y}_{\text{comb}} w_{\text{LSTM}} \cdot \hat{y}_{\text{LSTM}} w_{\text{GRU}} \cdot \hat{y}_{\text{GRU}}y^​comb​wLSTM​⋅y^​LSTM​wGRU​⋅y^​GRU​训练损失采用组合预测与真实值的均方误差Ltotal1N∑i1N(yi−y^comb,i)2 \mathcal{L}_{\text{total}} \frac{1}{N}\sum_{i1}^N (y_i - \hat{y}_{\text{comb},i})^2Ltotal​N1​i1∑N​(yi​−y^​comb,i​)2梯度同时回传至基模型和权重智能体实现端到端的联合优化。智能体学习如何根据基模型的当前误差调整权重以最小化最终预测误差——这是一种隐式的强化学习范式其中“奖励”隐含在损失函数中。实验设置数据数据来源于光伏电站的Active_Power序列取前2000个点。按8:2划分训练集和测试集并使用Z-score标准化xnormx−μσ x_{\text{norm}} \frac{x - \mu}{\sigma}xnorm​σx−μ​滑动窗口长度SEQ_LENGTH 20即用过去20个时刻预测下一个时刻。训练配置批大小64学习率0.001Adam优化器训练轮数50损失函数MSE评估指标MAE、RMSE、R²实验结果与分析训练过程从训练日志可见组合损失从初始的0.6454迅速下降至0.0271左右。权重智能体逐渐将更多权重赋予GRU模型最终约0.89这是因为GRU的误差持续低于LSTM。这一现象表明智能体能够正确识别表现更优的基模型并加大其贡献。测试集性能对比模型MAERMSER²LSTM1.16501.3363-0.6233GRU0.22140.32220.9056Combined0.15910.28020.9286LSTM在该数据集上表现异常差R²为负可能原因包括数据量较小、LSTM过拟合或超参数不适应。GRU显著优于LSTM验证了GRU在中小规模时序数据上的效率优势。动态组合模型在所有指标上均优于单一最优模型GRUMAE降低28.1%RMSE降低13.0%R²提升2.5%。可视化解读训练曲线显示损失函数平稳下降无明显震荡说明联合优化收敛良好。权重曲线平滑变化智能体未出现剧烈波动学习过程稳定。误差曲线显示GRU误差始终低于LSTM与权重分配一致。测试集预测曲线中组合模型的预测轨迹最贴近真实值尤其在波动较大区域仍能保持较低偏差。讨论方法优势动态适应性权重随当前数据状态实时调整可应对概念漂移或局部模式变化。端到端学习无需单独设计启发式权重更新规则一切参数由目标驱动优化。轻量化智能体仅含少量参数约100个几乎不增加推理开销。局限与改进方向状态设计较为简单仅当前批次的误差可扩展为历史误差序列或更丰富的统计特征。基模型目前仅包含LSTM和GRU可引入更多异构模型如Transformer、TCN以提升组合多样性。损失函数仅采用MSE在非高斯噪声或长尾分布下可考虑Huber损失或分位数损失。结论本文提出了一种基于强化学习思想的动态权重组合方法利用一个轻量级神经网络智能体根据LSTM和GRU的实时预测误差调整二者权重并通过联合优化实现端到端训练。在光伏功率预测任务上该方法相较于单一最优模型取得了显著的性能提升展示了动态模型组合在时间序列预测中的潜力。未来工作将探索更复杂的状态表征和更多样化的基模型集成。完整源码私信回复强化学习驱动的光伏功率时间序列预测LSTM与GRU动态权重组合方法Python

更多文章