💥1 概述
本研 究 利 用 麻 雀搜索算法 ( SSA) 以 提 高LSTM 模型准确度为优化目标,以 LSTM 模型中超
参数为优化对象,对 LSTM 进行优化,搭建 SSA-LSTM 神经网络模型; 将 SSA-LSTM 模型参数的预测。
1.1 麻雀搜索算法
麻雀搜索算法模拟麻雀觅食过程中行为,将种群的麻雀分为三类,一类是生产者,负责寻找食物,引导种群前往食物丰富的区域; 另一类是跟随者,在觅食的过程中它们会时刻观察着生产者,一旦发现生产者找到了更好的食物,会立刻放弃自己现在的食物,转向生产者。此外种群中还有一 定比例的警戒者,没有危险时就在种群中随意走动,一旦发现了危险就立刻向安全区域移动。在
迭代的过程中,他们按照会一定的规则进行更新位置信息。生产者:
如果 i 大于 n /2,则表示当前的麻雀位置不好,可能会挨饿,因此需要飞往更远的地方去觅食。如果 i 小于或等于 n /2,说明当前麻雀位置尚可,只需向位置最好的麻雀靠近即可。
当 fi >fg 时,代表当前麻雀处于种群的边缘,极易受到攻击。当 fi = fi 时,表示处于种群中心的
麻雀意识到危险,开始向其他麻雀移动,减少被捕食的风险。
LSTM 由遗忘门、输入门和输出门三部分组成。通过巧妙的结构设计( 图 3) ,很好地解决了
RNN 对于较长的时间序列状态无法传递的问题。
1.2 长短期记忆神经网络
RNN 是机器学习方法之一,主要用于处理时间序列数据。RNN 的网络结构如图 2 所示,有一
个自连接的隐藏层,它的当前状态可以依靠前一 时刻输出进行更新,因此可以解决时间序列的长
期依赖问题。 但是对于较长的时间序列,在实际 RNN 的使用过程中,会出现梯度消失和梯度爆炸的现象。为了解决以上问题,提出了 LSTM。LSTM 是基于RNN 的一种改进,它保留了 RNN 自连接的隐藏层,而且隐藏层中的节点更为复杂,可以实现较长时间序列的信息保留
📚2 运行结果
部分代码:
%% 获取优化参数 numHiddenUnits = round(x(1));%LSTM网路包含的隐藏单元数目 maxEpochs = round(x(2));%最大训练周期 InitialLearnRate = x(3);%初始学习率 L2Regularization = x(4);%L2参数 %设置网络 layers = [ ... sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits) fullyConnectedLayer(numResponses) regressionLayer]; %指定训练选项,采用cpu训练, 这里用cpu是为了保证能直接运行,如果需要gpu训练,改成gpu就行了,且保证cuda有安装 options = trainingOptions('adam', ... 'MaxEpochs',maxEpochs, ... 'ExecutionEnvironment' ,'cpu',... 'InitialLearnRate',InitialLearnRate,... 'GradientThreshold',1, ... 'L2Regularization',L2Regularization, ... 'Verbose',0); %'Plots','training-progress' %训练LSTM net = trainNetwork(XTrain,YTrain,layers,options); %训练集测试 PredictTrain = predict(net,XTrain, 'ExecutionEnvironment','cpu'); %测试集测试 PredictTest = predict(net,XTest, 'ExecutionEnvironment','cpu'); %训练集mse mseTrain = mse(YTrain-PredictTrain); %测试集mse mseTest = mse(YTest-PredictTest); %% 测试集准确率 fitness =mseTrain+mseTest; disp('训练结束....') end
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]陈玺. 基于ISSA-LSTM的超短期风电功率预测[D].宁夏大学,2022.DOI:10.27257/d.cnki.gnxhc.2022.000273.
[2]林彬彬,袁泉,田志新,潘显斌,周文宗,徐震.基于SSA- LSTM模型的黄鳝池溶氧预测研究[J].渔业现代化,2023,50(01):71-79.