个人主页:研学社的博客
欢迎来到本博客❤️❤️
博主优势: 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。r/>
⛳️座右铭:行百里者,半于九十。 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.
4 Matlab代码实现
|