误差反向传播(BP)神经网络根据反向传播的误差来调节连接权值和阈值,具有很强的非线性模拟能力
第一层为输入层,节点数目M由输入向量维数确定;中间层为双隐含层,节点数可选,一般不同层有不同的节点数;最后一层为输出层,节点数目N由输出向量维数确定.
不同层的神经元由权值连接,每个神经元带有一个阈值θ.
其中Im为输入层第m个神经元的输入值,θj为第一隐含层第j个神经元阈值,ωjm表示第一隐含层第j个神经元与输入层第m个神经元之间的连接权值,netj表示第一隐含层第j个神经元的输入值.第一隐含层第j个神经元输出为hj=f(netj),其中f为激活函数,一般选择S型函数,函数形式为f(x)=1/(1+e-x).
第一隐含层输出即为第二隐含层输入。
其中hj为第一隐含层第j个神经元的输出值,θk为第二隐含层第k个神经元阈值,ωkj表示第二隐含层第k个神经元与第一隐含层第j个神经元之间的连接权值,Hk表示第二隐含层第k个神经元的输出值.
Hk作为输出层的输入,得到最终预测输出。
其中Hk为第二隐含层第k个神经元的输出值,θn为输出层第n个神经元阈值,ωnk表示输出层第n个神经元与第二隐含层第k个神经元之间的连接权值,On表示输出层第n个神经元的最终输出值.
网络预测误差记为
其中Tn为期望输出值,在大地电磁数据的网络学习训练中,Tn为已知模型的地电参数理论值.
经典BP算法是采用梯度下降法修正权值和阈值,即
其中η为学习速率,一般取值为0.1~0.2.Δω和Δθ分别为修正的权值和阈值,ωt和θt分别为第t次迭代的权值和阈值,ωt+1和θt+1分别为第t+1次迭代的权值和阈值.通过公式(1)—(6)循环迭代,直到误差满足精度或达到设定迭代次数,网络训练结束.针对经典BP算法存在的收敛速度慢、易陷入局部最优等问题,出现了一些改进方法,如附加动量法、弹性BP算法、共轭梯度法等,本文就不再赘述.
这里需要说明的是:在大地电磁数据反演中,网络学习训练的过程为公式(1)—(6)的多次循环迭代,以获得最优的网络参数;而反演测试时只需将已训练好的网络参数即最优权值和阈值与未知模型或实测视电阻率以公式(1)—(3)进行一次计算,得到的On就是未知模型或实测数据地电参数的计算值.这种网络学习训练和反演测试分两部分进行的反演方法是神经网络反演与其他反演方法的主要不同之处,其主要计算过程和耗时在网络学习训练阶段,而将训练好的网络进行直接反演测试(只要一次计算,无需迭代),可使反演具有实时性,这也是神经网络反演的最大优势.
1.2 遗传算法优化神经网络
遗传算法是基于自然选择和遗传学机理的迭代自适应概率搜索算法,具有很强的全局搜索能力,稳定性强.首先将待求解问题的各参数采用二进制(或其他编码形式)进行编码,每条染色体均包括所有参数信息,随机产生在模型空间均匀分布的初始模型群体.然后通过选择、交叉、变异一系列操作产生新一代种群.重复这一过程,使得种群不断进化,直到最优个体满足目标精度要求或达到最大遗传代数为止.
面对较复杂的非线性系统问题时,由于BP网络设置的初始权值依赖设计者的经验和样本空间的反复试验,容易产生收敛速度慢、网络不稳定以及陷入局部最优等一系列问题.将BP神经网络算法与遗传算法结合,理论上可以对任意非线性系统进行映射,并且得到全局最优的效果,从而形成一种更加有效的非线性反演方法.本文中遗传算法对BP神经网络进行如下优化:
(1) 依据待解决的问题,对网络结构进行初始化设置,确定输入层、输出层节点个数及双隐含层节点个数,分别记为M、N、H1、H2.
(2) 产生初始化种群P(t),设定遗传的种群规模,并对种群中的每个个体进行基因编码,每条染色体编码长度为N=(M×H1+H1×H2+H2×N+H1+H2+N)×L,L为变量的编码位数,包含了一个网络的所有权值和阈值信息,本文采用二进制编码.
(3) 计算种群中每一个个体的适应度,并按一定法则选取适应度好的个体组成新种群P(t).适应度函数为, 其中E(k)为网络预测误差,见公式(4).函数值越小,则适应度越大,给定的神经网络的性能越好.
(4) 将新种群中的个体随机搭配成对,对每对个体按照一定的交叉概率pc进行交叉操作,从而产生两个新的个体;并对新种群中每个个体按照设定的变异概率pm进行变异进化,产生新个体.
(5) 将产生的新个体加入到种群中,形成新种群P(t+1),群体规模不变,计算新种群中个体适应度,若满足迭代终止条件,则进行下一步,否则重复(3)—(5)步.
(6) 当达到最大遗传代数或满足误差要求时,选取最佳个体作为遗传结果,进行解码,对神经网络的连接权值和阈值进行初始赋值,然后进行网络训练,调节权值和阈值,直到满足精度要求或达到最大迭代次数,算法结束.
遗传算法优化神经网络初始权值。
作为三层BP神经网络模型,输入节点为272,输出节点为352,隐含层数为2,各隐含层节点数目按经验和试错法进行选取,确定双隐含层节点分别为12和8,训练算法选择弹性BP算法,设置训练目标拟合差(即均方误差,见公式(7))为0.1,网络的最大迭代次数为1000次.如果某次网络训练迭代次数达到了1000次,而迭代拟合差仍大于0.1,则该次训练不成功.
遗传算法优化神经网络参数设置如下:种群规模30,遗传代沟为0.95,交叉概率为0.7,变异概率为0.01,最大遗传代数为20代.对建立的三层神经网络的不同层神经元之间连接权值及隐含层阈值、输出层阈值进行二进制编码,得到一个个体的编码染色体,基因长度为65480.选择算子采用随机遍历抽样,交叉算子采用高级重组算子.
链接:http://html.rhhz.net/dqwlxb/2018-4-1563.htm#outline_anchor_12
https://www.cnblogs.com/sallybin/p/3169572.html