MATLAB实现GWO-GRU灰狼算法优化门控循环单元多输入单输出回归预测。优化参数为学习率,隐藏层节点个数,正则化参数。
- 灰狼优化算法(Grey Wolf Optimizer,GWO)由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法。该算法受到了灰狼捕食猎物活动的启发而开发的一种优化搜索方法,它具有较强的收敛性能、参数少、易实现等特点。门控循环单元与普通的循环神经网络之间的关键区别在于: 前者支持隐状态的门控。 这意味着模型有专门的机制来确定应该何时更新隐状态, 以及应该何时重置隐状态。 这些机制是可学习的,并且能够解决了上面列出的问题。
门控循环神经网络可以更好地捕获时间步距离很长的序列上的依赖关系。重置门有助于捕获序列中的短期依赖关系。更新门有助于捕获序列中的长期依赖关系。重置门打开时,门控循环单元包含基本循环神经网络;更新门打开时,门控循环单元可以跳过子序列。
%% 建立模型结构
layers = [
sequenceInputLayer(f_) % 输入层
gruLayer(Positions(2)) % GRU层
reluLayer % Relu激活层
fullyConnectedLayer(1) % 输出回归层
regressionLayer];
%% 参数设置
options = trainingOptions('adam', ... % Adam 梯度下降算法
'MaxEpochs', 500, ... % 最大训练次数 500
'InitialLearnRate', Positions(1), ... % 初始学习率 best_lr
'LearnRateSchedule', 'piecewise', ... % 学习率下降
'LearnRateDropFactor', 0.5, ... % 学习率下降因子 0.1
'LearnRateDropPeriod', 400, ... % 经过 400 次训练后 学习率为 best_lr * 0.5
'Shuffle', 'every-epoch', ... % 每次训练打乱数据集
'ValidationPatience', Inf, ... % 关闭验证
'L2Regularization', Positions(3), ... % 正则化参数
'Verbose', false);
%% 模型训练
net = trainNetwork(p_train, t_train, layers, options);
[1] https://blog.csdn.net/article/details/126072792spm=1001.2014.3001.5502
[2] https://blog.csdn.net/article/details/126044265spm=1001.2014.3001.5502