一、RBF神经网络
1988年,Broomhead和Lowc根据生物神经元具有局部响应这一特点,将RBF引入神经网络设计中,产生了RBF(Radical Basis Function)。1989年,Jackson论证了RBF神经网络对非线性连续函数的一致逼近性能。
RBF的基本思想是:用RBF作为隐单元的“基”构成隐藏层空间,隐含层对输入矢量进行变换,将低维的模式输入数据变换到高维空间内,使得在低维空间内的线性不可分的问题在高维空间内线性可分。
RBF神经网络结构简单、训练简洁而且学习收敛速度快,能够逼近任意非线性函数,因此已被广泛应用于时间序列分析、模式识别、非线性控制和图形处理等领域。
RBF神经网络学习算法需要优化的参数有3个:基函数的中心、方差以及隐含层到输出层的权值。
基于高斯核的RBF神经网络拓扑结构:
第一层输入层:由信号源节点构成,仅起到数据信息的传递作用,对输入信息不做任何变换
第二层隐含层:节点数视需要而定。隐含层神经元核函数(作用函数)是高斯函数,对输入信息进行空间映射的变换。
第三层输出层,对输入模式做出响应。输出层神经元的作用函数为线性函数,对隐含层神经元输出的信息进行线性加权后输出,作为整个神经网络的输出结果。

二、斑马优化算法ZOA
斑马优化算法(Zebra Optimization Algorithm,ZOA)Eva Trojovská等人于2022年提出,其模拟斑马的觅食和对捕食者攻击的防御行为。
斑马优化算法(Zebra Optimization Algorithm,ZOA)
参考文献:
E Trojovská, M Dehghani, P Trojovský. Zebra Optimization Algorithm: A New Bio-Inspired Optimization Algorithm for Solving Optimization Algorithm[J]. IEEE Access, 2022,10:49445-49473.
三、斑马优化算法ZOA优化RBF神经网络
斑马优化算法ZOA中每个个体由基函数的中心、方差以及隐含层到输出层的权值构成,目标函数为样本真实值与预测值的均方误差(MSE)。训练数据集为5个输入,2个输出,共200个样例,前150个作为训练集,后50个作为测试。构建结构为5-8-2的RBF神经网络,其中隐藏层神经元数目可以修改。
部分样例如下:(前5列为输入,后2列为输出)
0.319092913309319 0.481187352372713 0.806946793185885 0.446710413339954 0.135069357093368 0.814916913929440 2.18900682930124 0.805490885620493 0.511329091919603 0.665885374485020 0.124243309808503 0.0622595403048927 0.826231296361042 2.16920820213851 0.643511806008414 0.398174756770190 0.241493045846128 0.502882183320845 0.459275006919147 0.780994026463518 2.24533679886472 0.901271248588548 0.549231662834719 0.703023694829230 0.908927249219787 0.739639418839036 -0.613512261607837 3.80209327431132 0.681505947565831 0.266233154577239 0.598418592249671 0.317167144217078 0.609254396829780 0.620212380716577 2.47257923543960 0.816569860102527 0.683944831227131 0.521367561118003 0.870221958193913 0.600511717735747 -0.343858864178209 3.49261592837732 0.772509673236830 0.0274391471182466 0.687829827801033 0.452380982873335 0.981559485726264 0.218106206255082 2.92171911675571 0.160185200114371 0.0795172296614494 0.620546519003247 0.999332632912895 0.250782059014371 0.857931060559171 2.11036364070633 0.0402959156622391 0.509270610965360 0.852477631133460 0.452687896323640 0.724261360734026 0.533386619417532 2.57899341481873 0.735334088804208 0.710668590958176 0.974963589747738 0.574329891684942 0.436600601180894 -0.286243622259437 3.43189676237596 0.466467678049791 0.166288513494538 0.488391088956297 0.634290143142006 0.926667090747635 0.443489394679368 2.68210451439027 0.464121551505859 0.455196914999633 0.553823865918665 0.609545414679817 0.563690666139306 0.475220165169104 2.64637841324328 0.601420215398734 0.369480057052477 0.763314435959030 0.425637578889505 0.745658842046165 0.233894646967457 2.90551112934591 0.620754102929979 0.888757283156443 0.690781994520698 0.195819380573510 0.253404766159063 0.472455825641103 2.64951752733969 0.0905835553696127 0.774495264922404 0.667743447213650 0.343905618276708 0.00161447207556698 0.953079306094570 1.87834235785794 0.936158467746128 0.625113598671965 0.883561786386136 0.984244186352477 0.673258834569808 -0.819618166523854 4.10233687372651 0.648833647439350 0.328612115417025 0.174165206993631 0.850426232098539 0.114871165935286 0.854550259941185 2.11690836788383 0.648659397116181 0.625285723910437 0.955318794092425 0.920544300669473 0.504611207492369 -0.490642340899827 3.65441942328089 0.896170593348607 0.911621786781762 0.569410717046772 0.150546106498604 0.806143037966217 -0.191116598839852 3.33389224164196 0.00630474459277053 0.892428774292225 0.466825651982977 0.544818690368394 0.491436059320132 0.674124496425226 2.40181392055650
部分代码
close all
clear
clc
global inputnum hiddennum outputnum TrainNum
inputnum=5;%神经网络输入层神经元个数(输入样本维度)
hiddennum=8;%神经网络隐藏层神经元个数(可以自己修改)
outputnum=2;%神经网络输出层神经元个数(输出样本维度)
TrainNum=150;%训练集数目 (数据集data中前TrainNum个为训练集,剩余数据为测试集)
%% ZOA 优化RBF神经网络,目标函数是均方误差MSE
SearchAgents_no=100; % 种群大小(可以修改)
Function_name='F1';
Max_iteration=500; % 最大迭代次数(可以修改)
[lb,ub,dim,fobj]=fun_info(Function_name);% 在fun_info.m中可以查看上下限及目标函数
[fMin,bestX,curve]=ZOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); %算法优化RBF神经网络的参数
save bestX bestX %保留算法优化RBF神经网络得到的最优参数
save curve curve
figure
semilogy(curve,'Color','k','linewidth',2)
xlabel('迭代次数');
ylabel('均方差');
grid on
box on
legend('ZOA')
Predata;%预测
%%
display(['The best solution obtained is : ', num2str(bestX)]);
display(['The best optimal value of the objective funciton is : ', num2str(fMin)]);%fMin越小说明算法优化RBF神经网络效果越好
部分结果

训练集结果:



测试集结果:



四、参考代码
文件夹内包含完整Matlab代码,RBF隐藏层神经元个数可以自行设定。
