ZKX's LAB

BP算法及其改进 有约束优化的bp神经网络

2021-04-26知识6

神经网络训练时对输入有什么特别的要求吗? 请教各位大神,神经网络进行回归分析,除了数据要预先清洗以外,在以下方面有没有特别的限制。假设一层…

在MATLAB中用神经网络算法求解无约束最优化问题 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY)%使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络%数据归一化预处理 nntwarn off XX=[1:19;2:20;3:21;4:22]';YY=[1:4];XX=premnmx(XX);YY=premnmx(YY);YY%创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'trainlm');下面使用遗传算法对网络进行优化 P=XX;T=YY;R=size(P,1);S2=size(T,1);S1=25;隐含层节点数 S=R*S1+S1*S2+S1+S2;遗传算法编码长度 aa=ones(S,1)*[-1,1];popu=50;种群规模 save data2 XX YY%是将 xx,yy 二个变数的数值存入 data2 这个MAT-file,initPpp=initializega(popu,aa,'gabpEval');初始化种群 gen=100;遗传代数%下面调用gaot工具箱,其中目标函数定义为gabpEval[x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,.'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);绘收敛曲线图 figure(1)plot(trace(:,1),1./trace(:,3),'r-');hold on plot(trace(:,1),1./trace(:,2),'b-');xlabel('Generation');ylabel('Sum-Squared Error');figure(2)plot(trace(:,1),trace(:,3),'r-');hold on plot。

传统的BP算法及其改进算法的一个很大缺点是:由于其误差目标函数对于待学习的连接权值来说非凸的,存在局部最小点,对网络进行训练时,这些算法的权值一旦落入权值空间的局部最小点就很难跳出,因而无法达到全局最小点(即最优点)而使得网络训练失败。针对这些缺陷,根据凸函数及其共轭的性质,利用Fenchel不等式,使用约束优化理论中的罚函数方法构造出了带有惩罚项的新误差目标函数。用新的目标函数对前馈神经网络进行优化训练时,隐层输出也作为被优化变量。这个目标函数的主要特点有:1.固定隐层输出,该目标函数对连接权值来说是凸的;固定连接权值,对隐层输出来说是凸的。这样在对连接权值和隐层输出进行交替优化时,它们所面对的目标函数都是凸函数,不存在局部最小的问题,算法对于初始权值的敏感性降低;2.由于惩罚因子是逐渐增大的,使得权值的搜索空间变得比较大,从而对于大规模的网络也能够训练,在一定程度上降低了训练过程陷入局部最小的可能性。这些特性能够在很大程度上有效地克服以往前馈网络的训练算法易于陷入局部最小而使网络训练失败的重大缺陷,也为利用凸优化理论研究前馈神经网络的学习算法开创了一个新思路。在网络训练时,可以对连接权值和隐层。

#有约束优化的bp神经网络

随机阅读

qrcode
访问手机版