✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
极限学习机(Extreme Learning Machine, ELM)是近几年发展起来的一种有效的新型单隐层前馈神经网络学习算法,和传统学习算法不同的是,ELM算法的网络参数随机选取,无需调节,输出权值是通过对平方损失函数最小化得到的最小二乘解,因此该算法具有较快的学习速度和良好的泛化性能,并在多模式分类,非线性预测等领域得到了广泛的应用.但是ELM在学习过程中也不可避免的存在众多缺点,其参数的随机选取导致一系列非最优参数的生成,使得所需隐含层节点数多于传统学习算法,影响其泛化性能,并导致系统的病态;在学习过程中仅仅只利用了输入参数的信息进行计算,而忽略了非常有价值的实际输出值;将其应用于工业生产中所得到的精度不能满足实际的标准等等.针对上述缺点,本文提出了一种对ELM的引力搜索算法极限学习机(GSA-ELM)。
1 引力搜索算法原理
GSA是2009年提出的一种新型的启发式群智能优化算法,具有全局搜索能力强、收敛速度快等优点。在GSA中,种群粒子相当于空间中运动的个体,这些个体在万有引力的作用下彼此吸引、运动,个体的质量是评价粒子好坏的标准,质量越大的个体吸引其他粒子的能力越强,即表示其对应的解更好,整个种群凭借粒子相互间力的作用相互运动实现信息的共享,并朝着最优区域展开搜索。
2 极限学习机
传统的单隐层神经网络由三部分组成,分别是输入层、隐含层和输出层,输入层神经元节点个数即输入变量的个数,隐含层节点个数则需要人为给定,输出层节点个数也就是输出变量的个数。在2006年,新加坡南洋理工大学的Huang等[16]在传统的单隐层神经网络的基础上提出了一种新的前馈神经网络学习算法,命名为极限学习机(extremelearningmachine,ELM),不同于传统的基于梯度的前馈神经网络算法,该方法随机产生隐含层与输入层之间的连接权值及隐含层神经元的阈值,训练过程中只需要设置隐含神经元的个数便可获得唯一最优解,极限学习机网络结构如图1所示。
3 引力搜索算法优化极限学习机
本文采用引力搜索算法对其隐含层的初始权值与阈值进行优化,具体构建过程可以概述为:确定ELM的输入与输出样本集;确定对ELM初始权值及阈值的编码方式;随机采样产生第一代种群;计算每个个体的适应值,并排序选优;按照既定规则更新产生下一代种群直至满足终止条件为止,终止条件设置为预测值与期望值的误差矩阵的范数小于某一设定值。
利用引力搜索算法对核极限学习机的两项参数:核参数及正则化系数进行优化,得到耦合滑坡预测模型,其实施步骤如下。
步骤1初始化种群。设置粒子数量为20,随机产生初始核参数及正则化系数,生成种群初始位置。
步骤2确定优化参数的取值范围。根据多次实验,确定核参数为(-100 100),正则化系数为(-100 100)。
步骤3建立SSA-KELM耦合模型,计算粒子个体适应度,对适应度值进行排序,寻找出当前最好和最差的个体。
适应度函数为式(16)中为真实值;为函数预测值。
步骤4根据式式(7)更新粒子位置。
步骤5获取新的粒子位置及个体适应度值,将本轮最优适应度值与之前的最优适应度值做比较,如果本轮更优,则更新全局最优适应度值与相关位数。
步骤6循环结束。当迭代次数大于500,则寻优过程结束。步骤7得到KELM的最佳训练参数,模型建立。
⛄ 部分代码
function [output] = my_map(type, raw_data, raw_data_max, raw_data_min, max, min)
if type ~= 0
output = my_pos_map(raw_data, raw_data_max, raw_data_min, max, min);
end
if type ~= 1
output = my_rev_map(raw_data, raw_data_max, raw_data_min, max, min);
end
end
function [out] = my_pos_map(raw_data, raw_data_max, raw_data_min, max, min)
for i = 1:length(raw_data')
out(i) = (max - min) * (raw_data(i) - raw_data_min) / (raw_data_max - raw_data_min) + min;
end
end
function [out] = my_rev_map(raw_data, raw_data_max, raw_data_min, max, min)
for i = 1:length(raw_data')
out(i) = (raw_data(i) - min) * (raw_data_max - raw_data_min) / (max - min) + raw_data_min;
end
end
⛄ 运行结果
⛄ 参考文献
[1]刘萌萌. 基于信息融合的改进极限学习机预测算法研究[D]. 辽宁大学, 2015.
[2]刘艺凡. 基于万有引力搜索算法极限学习机的电磁问题优化[D]. 江苏科技大学.
❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除
转载:https://blog.csdn.net/qq_59747472/article/details/127587769