⛄一、黏菌算法优化宽度学习神经网络SMA-BLS回归预测

1 黏菌算法 SMA是根据黏菌个体的振荡捕食行为提出的一种智能优化算法,自然界中的黏菌可以根据空气中食物气味的浓度来接近食物,当黏菌静脉接触的食物浓度越高,生物振荡越强,黏菌静脉宽度增大,该区域聚集更多黏菌;当该区域食物浓度低时,黏菌转向探索其他区域。黏菌接近食物的数学模型描述如公式1所示: 式中,t为当前迭代次数,Xb(t)为当前最优个体位置,XA(t)和XB(t)为随机选择两个个体的位置,W为黏菌质量,代表适应度权重,vb和vc为控制参数,其中vb∈[-a,a],vc从1线性下降到0,r是[0,1]之间的随机数,控制变量p和参数a的数学模型描述如公式2和公式3所示: 式中,i∈1,2,3…,n,S(i)是当前个体适应度值,DF为当前最佳适应度值,tmax为最大迭代次数。权重参数W的数学模型描述如公式4所示: 式中,r表示取值[0,1]的随机数,bF表示当前迭代最佳适应度,S(i)表示当前个体适应度值,wf表示当前迭代最差适应度值,i=C表示种群中适应度排在前一半个体,i=O表示剩下的个体,SI(i)是适应度排序,表示气味指数。

即使黏菌找到了更好的食物来源,它们仍然会分离一些个体探索其他领域试图寻找更高质量的食物来源。因此,黏菌种群更新位置的数学模型描述如公式6所示: 式中,UB和LB分别表示搜索区域的上下界,rand表示取值[0,1]之间的随机数,z为自定义参数。

2 宽度学习神经网络 宽度学习系统(BLS) 的提出最早源于澳门大学科技学院院长陈俊龙和其学生于2018年1月发表在IEEE TRANSACTIONS ON NEURAL NETWORKS AND LEARNING SYSTEMS,VOL. 29, NO. 1 的一篇文章,题目叫《Broad Learning System: An Effective and Efficient Incremental Learning System Without the Need for Deep Architecture 》。文章的主旨十分明显,就是提出了一种可以和深度学习媲美的宽度学习框架。 宽度学习系统的前身实际上是已经被人们研究了很久的随机向量函数连接网络 random vector functional-link neural network (RVFLNN). 该网络就是在单层前馈网络中增加了从输入层到输出层的直接连接。网络的第一层也叫输入层,第二层做增强层,第三层是输出层。具体来看,网络中有三种连接,分别是: • (输入层 => 增强层)加权后有非线性变换 • (增强层 => 输出层)只有线性变换 • (输入层 => 输出层)只有线性变换

所以在随机向量函数连接网络中只有增强层是真正意义上的神经网络单元,因为只有它带了激活函数,网络的其他部分均是线性的。下面我们将这个网络结构进行简单的变形,如下图所示: 当我们把增强层和输入层排成一行时,并将它们视为一体,那网络就成了由 A(输入层+增强层)到 Y (输出层)的线性变换。线性变换对应的权重矩阵 W 就是输入层和增强层到输出层之间的线性连接。对于输入层到增强层之间的连接权重W_h和偏差β_h随机初始化并固定不变,如果我们固定输入层到增强层之间的权重W_h和偏差β_h,那么对整个网络的训练就是求出 A (输入层+增强层)到 Y(输出层) 之间的变换 W,而 W 的确定非常简单。

⛄二、部分源代码

%% 基于宽度学习的回归预测 clc clear close all %% 读取数据 data=xlsread(‘瓦斯.xlsx’); %% 数据大小(行列) [row,col]=size(data); %% 划分训练集 ratio=0.8; L=floor(ratio*row); % 训练集 input_train=data(1:L,2:col-1)‘; output_train=data(1:L,col)’; % 测试集 input_test=data(L+1:end,2:col-1)‘; output_test=data(L+1:end,col)’;

%% 数据归一化处理 % 输入数据归一化 [train_x,inputps]=mapminmax(input_train,0,1); % 输出数据归一化 [train_y,outputps]=mapminmax(output_train,0,1); % 测试数据归一化 test_x=mapminmax(‘apply’,input_test,inputps); test_y=mapminmax(‘apply’,output_test,inputps); train_x=train_x’; train_y=train_y’; test_x=test_x’; test_y=test_y’; %% BLS参数设置 C = 2^-10; s = .8;% L2正则化参数和增强节点缩小比例 N1=20;% 每个窗口的特征映射节点数 N2=10;% 特征节点的窗口数 N3=100;% 增强节点数 epochs=10;% 周期数 %% 调用bls_trainReg函数 for j=1:epochs [yy,y] = bls_trainReg(train_x,train_y,test_x,test_y,s,C,N1,N2,N3); end %% 预测结果反归一化 train_sim=mapminmax(‘reverse’,yy’,outputps); test_sim=mapminmax(‘reverse’,y’,outputps); %% 绘制评价结果 PlotResult(output_train,train_sim,output_test,test_sim,‘BLS’)

⛄三、运行结果

⛄四、matlab版本及参考文献

1 matlab版本 2014a

2 参考文献 [1]赵侃,师芸,牛敏杰,王虎勤.基于改进麻雀搜索算法优化BP神经网络的PM2.5浓度预测[J].测绘通报. 2022(10)

3 备注 简介此部分摘自互联网,仅供参考,若侵权,联系删除

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: