一种基于神经网络的锚杆杆体损伤位置识别方法与流程

文档序号:11946279阅读:247来源:国知局
一种基于神经网络的锚杆杆体损伤位置识别方法与流程

本发明涉及一种锚杆杆体损伤位置识别方法,特别是一种基于神经网络的锚杆杆体损伤位置识别方法。



背景技术:

在现在的土木工程施工中,洞室、边坡、隧道以及矿山巷道支护常常使用大量的锚杆进行锚固处理,而锚杆锚固之后是否会出现损伤以及损伤位置的检测对后期锚固质量的评估非常重要,锚杆损伤及损伤位置检测难以确定。



技术实现要素:

本发明的目的是要提供一种基于神经网络的锚杆杆体损伤位置识别方法,解决锚杆损伤及损伤位置检测难的问题。

本发明的目的是这样实现的:

该识别方法通过实际工程观测的数据,输入锚杆杆体损伤位置数据的训练样本,对神经网络进行训练;利用经训练的神经网络对巷道支护所用的锚杆杆体进行检测,根据输入指标参数,通过神经网络的反馈分析,神经网络会根据预测请求预测出锚杆杆体损伤位置,选取合适的支护参数对巷道进行支护控制,利用得到的锚杆杆体损伤位置数据判断锚杆的锚固质量,预防由于岩体失稳所带来的安全事故;

步骤如下:

a、通过层次分析法确定预测锚杆杆体损伤位置的输入指标参数;所述的输入指标参数为:锚杆杆体参数、锚杆的锚固长度L2、振动频率w、锚固力F和锚杆杆体的材料参数;所述的锚杆杆体参数为杆长L1和直径D;所述的锚杆杆体的材料参数为泊松比μ,弹性模量E;

b、将前期的检测数据作为各指标数据的训练样本,同时对样本进行归一化处理,使所有的样本数据都归一为[-1,1]之间,归一化后的样本为:

<mrow> <msub> <mi>x</mi> <mi>k</mi> </msub> <mo>=</mo> <mn>2</mn> <mo>&times;</mo> <mfrac> <mrow> <mi>x</mi> <mo>-</mo> <msub> <mi>x</mi> <mi>min</mi> </msub> </mrow> <mrow> <msub> <mi>x</mi> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>x</mi> <mi>min</mi> </msub> </mrow> </mfrac> <mo>-</mo> <mn>1</mn> <mo>;</mo> </mrow>

x代表输入或输出的数据,xmin代表数据变化范围的最小值,xmax代表数据变化范围的最大值,xk归一化后得到的数值;

c、对样本数据进行训练,采用trainlm训练函数对样本数据进行训练,并对训练样本进行滚动累积,使所建立的神经网络模型达到很好的学习记忆功能;

d、建立神经网络模型;首先,根据步骤a的7个指标,建立具有7个节点的网络模型输入层;然后,参考公式来确定隐含层节点数的范围:

<mrow> <mi>l</mi> <mo>=</mo> <msqrt> <mrow> <mo>(</mo> <mi>m</mi> <mo>+</mo> <mi>n</mi> <mo>)</mo> </mrow> </msqrt> <mo>+</mo> <mi>a</mi> </mrow>

式中,m隐层节点数,n为输入层节点数,l为输出层节点数,a为1~10之间的数;

重复步骤c对样本数据进行训练,训练过程中逐渐增加隐含层节点数,当训练过程中达到目标误差所需的步数相对较少时,即为隐含层的最佳节点数;最后,神经网络的输出层为1个节点,预测锚杆杆体损伤位置和损伤程度;通过对输入变量正向计算与误差的逆向传播逐层调节各层权值和阀值矩阵,最终达到所要求的训练精度,得到预测巷道围岩变形的BP神经网络模型;

e、预测锚杆杆体损伤位置和损伤程度;根据不同的条件,采用标准BP神经网络算法预测锚杆杆体损伤位置和损伤程度,将锚杆杆体设计为非线性的动态反馈系统,对BP神经网络的预测结果进行反归一化处理,得到锚杆杆体损伤位置预测结果。

所述的神经网络为:多节点的输入层、多节点的隐含层和多节点的输出层。

所述的BP神经网络的训练样本为前期在不同条件下监测的数据,样本数据是由样本输入和期望输出组成的样本对。

有益效果,由于采用了上述方案,建立合适的BP神经网络模型,输入锚杆杆体损伤位置训练样本,通过检测不同损伤位置的锚杆获得训练数据,在进行样本训练中首先需要做的就是进行输入样本和期望输出样本的数据输入,对样本数据的输入输出数据分别进行归一化处理,采用trainlm函数对神经网络进行训练,归一化后的数据不仅可以大大提高训练的效率,减少训练所需的时间,还可以避免因为输入输出数据数量级差别较大而造成网络预测误差较大及防止部分神经元达到过饱和状态;并将训练后的神经网络模型用于实际预测,根据输入指标参数,得到锚杆杆体损伤位置。解决了锚杆损伤及损伤位置检测难的问题,达到了本发明的目的。

优点:本方法可实现锚杆的无损检测,在训练样本足够多的话检测结果准确,操作简单,在杆体尺寸已知的情况下只需在锚杆的支护裸露端测得锚杆的频率即可。

附图说明

图1是本发明的BP算法的BP神经网络结构示意图。

图2是本发明实现的装置示意图。

图3是本发明的预测巷道围岩变形与塑性区深度的标准BP神经网络算法流程。

图中,1、传感器;2、杆体;3、信号接收与分析仪;4、损伤位置;5、激振面。

具体实施方式

该识别方法通过实际工程观测的数据,输入锚杆杆体损伤位置数据的训练样本,对神经网络进行训练;利用经训练的神经网络对巷道支护所用的锚杆杆体进行检测,根据输入指标参数,通过神经网络的反馈分析,神经网络会根据预测请求预测出锚杆杆体损伤位置,选取合适的支护参数对巷道进行支护控制,利用得到的锚杆杆体损伤位置数据判断锚杆的锚固质量,预防由于岩体失稳所带来的安全事故;

步骤如下:

a、通过层次分析法确定预测锚杆杆体损伤位置的输入指标参数;所述的输入指标参数为:锚杆杆体参数、锚杆的锚固长度L2、振动频率w、锚固力F和锚杆杆体的材料参数;所述的锚杆杆体参数为杆长L1和直径D;所述的锚杆杆体的材料参数为泊松比μ,弹性模量E;所述的通过层次分析法:是将与决策有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。该方法是美国运筹学家匹茨堡大学教授萨蒂(T.L.Saaty)于1980年,在为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法;

b、将前期的检测数据作为各指标数据的训练样本,同时对样本进行归一化处理,使所有的样本数据都归一为[-1,1]之间,归一化后的样本为:

<mrow> <msub> <mi>x</mi> <mi>k</mi> </msub> <mo>=</mo> <mn>2</mn> <mo>&times;</mo> <mfrac> <mrow> <mi>x</mi> <mo>-</mo> <msub> <mi>x</mi> <mi>min</mi> </msub> </mrow> <mrow> <msub> <mi>x</mi> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>x</mi> <mi>min</mi> </msub> </mrow> </mfrac> <mo>-</mo> <mn>1</mn> <mo>;</mo> </mrow>

x代表输入或输出的数据,xmin代表数据变化范围的最小值,xmax代表数据变化范围的最大值,xk归一化后得到的数值;

c、对样本数据进行训练,采用trainlm训练函数对样本数据进行训练,并对训练样本进行滚动累积,使所建立的神经网络模型达到很好的学习记忆功能;

d、建立神经网络模型;首先,根据步骤a的7个指标,建立具有7个节点的网络模型输入层;然后,参考公式来确定隐含层节点数的范围:

<mrow> <mi>l</mi> <mo>=</mo> <msqrt> <mrow> <mo>(</mo> <mi>m</mi> <mo>+</mo> <mi>n</mi> <mo>)</mo> </mrow> </msqrt> <mo>+</mo> <mi>a</mi> </mrow>

式中,m隐层节点数,n为输入层节点数,l为输出层节点数,a为1~10之间的数;

重复步骤c对样本数据进行训练,训练过程中逐渐增加隐含层节点数,当训练过程中达到目标误差所需的步数相对较少时,即为隐含层的最佳节点数;最后,神经网络的输出层为1个节点,预测锚杆杆体损伤位置和损伤程度;通过对输入变量正向计算与误差的逆向传播逐层调节各层权值和阀值矩阵,最终达到所要求的训练精度,得到预测巷道围岩变形的BP神经网络模型;

e、预测锚杆杆体损伤位置;根据不同的条件,采用标准BP神经网络算法预测锚杆杆体损伤位置,将锚杆杆体设计为非线性的动态反馈系统,对BP神经网络的预测结果进行反归一化处理,得到锚杆杆体损伤位置预测结果。

所述的神经网络为:多节点的输入层、多节点的隐含层和多节点的输出层。

所述的BP神经网络的训练样本为前期在不同条件下监测的数据,样本数据是由样本输入和期望输出组成的样本对。

所述的标准BP神经网络算法步骤为:

(1)选定权系数初值;

(2)重复以下过程直到收敛:

①对k=1到N,正向过程计算:

计算每层各单元的样本输入函数样本输出函数和单元j的实际输出

当给定网络N个样本对(xk,yk)k=1,2,…N,网络中第l层的第j个单元对应于第k个输入样本的输入为:

<mrow> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mi>j</mi> </munder> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> <mi>l</mi> </msubsup> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mrow> <mi>l</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> </mrow>

式中,是神经元i对输入j的连接权值,表示前一层即l-1层的输出,则第j个单元的输出为:

<mrow> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>=</mo> <mi>f</mi> <mrow> <mo>(</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>)</mo> </mrow> </mrow>

②对k=1到N,反向过程计算:对各层(l=L-1到2),求解各单元计算误差信号

神经网络误差为:

<mrow> <msub> <mi>E</mi> <mi>k</mi> </msub> <mo>=</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <munder> <mo>&Sigma;</mo> <mi>i</mi> </munder> <msup> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>-</mo> <mover> <msub> <mi>y</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>&OverBar;</mo> </mover> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow>

式中,为单元j的实际输出,i为网络的输出端单元数,则对于N个样本对的总误差为:

<mrow> <msub> <mi>E</mi> <mi>k</mi> </msub> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mn>2</mn> <mi>N</mi> </mrow> </mfrac> <munderover> <mo>&Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow>

定义误差信号为则有:

<mrow> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mfrac> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mrow> <mi>l</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>.</mo> </mrow>

对于隐含层与输出层其误差信号会有所不同,因此需要对隐含层与输出层的误差信号分别进行讨论:

a.对于输出层节点j,有则误差信号为:

<mrow> <msubsup> <mi>&delta;</mi> <mrow> <mi>i</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msub> <mover> <mi>y</mi> <mo>&OverBar;</mo> </mover> <mrow> <mi>j</mi> <mi>k</mi> </mrow> </msub> </mrow> </mfrac> <mfrac> <mrow> <mo>&part;</mo> <msub> <mover> <mi>y</mi> <mo>&OverBar;</mo> </mover> <mrow> <mi>j</mi> <mi>k</mi> </mrow> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>k</mi> </msub> <mo>-</mo> <msub> <mover> <mi>y</mi> <mo>&OverBar;</mo> </mover> <mi>k</mi> </msub> <mo>)</mo> </mrow> <msup> <mi>f</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>)</mo> </mrow> </mrow>

b.对于隐层节点j,有:

<mrow> <msubsup> <mi>&delta;</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mfrac> <mrow> <mo>&part;</mo> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <msup> <mi>f</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>)</mo> </mrow> </mrow>

式中作为l层送到下一层(l+1)层的输入,计算误差信号时要从(l+1)层算回来,在(l+1)层的第m个单元有:

<mrow> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mi>m</mi> </munder> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mfrac> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mi>m</mi> </munder> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <msubsup> <mi>w</mi> <mrow> <mi>m</mi> <mi>j</mi> </mrow> <mrow> <mi>l</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mi>m</mi> </munder> <msubsup> <mi>&delta;</mi> <mrow> <mi>m</mi> <mi>k</mi> </mrow> <mrow> <mi>l</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> <msubsup> <mi>w</mi> <mrow> <mi>m</mi> <mi>j</mi> </mrow> <mrow> <mi>l</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> </mrow>

可以得到:

<mrow> <msubsup> <mi>&delta;</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mi>m</mi> </munder> <msubsup> <mi>&delta;</mi> <mrow> <mi>m</mi> <mi>k</mi> </mrow> <mrow> <mi>l</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> <msubsup> <mi>w</mi> <mrow> <mi>m</mi> <mi>j</mi> </mrow> <mrow> <mi>l</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> <msup> <mi>f</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>)</mo> </mrow> </mrow>

③修正权值其中μ>0,μ为步长,

实施例1:为了使本发明的目的和优点更加清楚,下面结合附图对本发明技术方案进行详细完整的描述:

图1是根据本发明的BP算法的神经网络结构示意图。根据图1所示,该算法正向计算过程和误差反传过程是构成BP神经网络算法的主要两部分;正向计算过程为:输入信息从输入层输入经隐含层逐层处理,最终传至输出层,在信息正向传播的过程中,下一层神经元的状态只受上一层神经网络的状态的影响。如果输出层与期望值误差较大,则转入误差反向过程,误差通过修改各层神经元的权值沿原来的连接通路返回,使最终的输出误差达到最小。

其学习规则的指导思想是:对网络权值和阈值的修正要沿着传递函数下降最快的方向—负梯度方向进行。

预测围岩变形神经网络模型的输入层有7个节点,分别是锚杆杆体尺寸(杆长L1、直径D)、锚杆的锚固长度L2,振动频率w,锚固力F,锚杆杆体的材料参数(泊松比μ,弹性模量E),这7个指标反映了巷道围岩的复杂地质条件,每个因素的输入都影响着输出结果,因此通过综合考虑这些因素,可以提高神经网络预测的准确性和可靠性。

a.样本的获取及处理

为实现上述方法,本发明还提供了一种塑料枪弹激振的锚杆检测装置,包括锚杆,其中,在锚杆外露端部设一激发面,在距离激发面0-20cm范围内对准激发面设有一可发射塑料枪弹的塑料枪弹发射激振器;在激发面上设有接受传感器,接受传感器通过连线与信号接收与分析仪;通过检测不同损伤位置的锚杆获得训练数据,在进行样本训练中首先需要做的就是进行输入样本和期望输出样本的数据输入,对样本数据的输入输出数据分别进行归一化处理,使所有的样本数据都归一为[-1,1]之间:

<mrow> <msub> <mi>x</mi> <mi>k</mi> </msub> <mo>=</mo> <mn>2</mn> <mo>&times;</mo> <mfrac> <mrow> <mi>x</mi> <mo>-</mo> <msub> <mi>x</mi> <mi>min</mi> </msub> </mrow> <mrow> <msub> <mi>x</mi> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>x</mi> <mi>min</mi> </msub> </mrow> </mfrac> <mo>-</mo> <mn>1</mn> </mrow>

x代表输入或输出的数据,xmin代表数据变化范围的最小值,xmax代表数据变化范围的最大值,xk归一化后得到的数值

归一化后的数据不仅可以大大提高训练的效率,减少训练所需的时间,还可以避免因为输入输出数据数量级差别较大而造成网络预测误差较大及防止部分神经元达到过饱和状态。

b.看图2,图中1.传感器,两传感器相交分别测量横向和纵向频率2.杆体3.信号接收与分析仪4.损伤位置5.激振面

c.本发明实施时,信号接收与分析仪3开机并使仪器处于正常的接受状态准备测试。激振时塑料枪弹发射激振器发射塑料枪弹激振激发面5,信号接收与分析仪3自动获取锚杆振动频率,测试完成读取损伤位置。

图3是根据本发明的预测锚杆杆体损伤位置的标准BP神经网络算法流程,本发明的的算法实现主要以matlab软件编程为主,主要程序流程如下:

(1)选定权系数初值;

(2)重复以下过程直到收敛:

①对k=1到N,正向过程计算:

计算每层各单元的样本输入函数样本输出函数和单元j的实际输出

假设给定网络N个样本对(xk,yk)k=1,2,…N,网络中第l层的第j个单元对应于第k个输入样本的输入为:

<mrow> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mi>j</mi> </munder> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> <mi>l</mi> </msubsup> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mrow> <mi>l</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> </mrow>

式中,是神经元i对输入j的连接权值,表示前一层即l-1层的输出,则第j个单元的输出为:

<mrow> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>=</mo> <mi>f</mi> <mrow> <mo>(</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>)</mo> </mrow> </mrow>

②对k=1到N,反向过程计算:对各层(l=L-1到2),求解各单元计算误差信号

神经网络误差为:

<mrow> <msub> <mi>E</mi> <mi>k</mi> </msub> <mo>=</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <munder> <mo>&Sigma;</mo> <mi>i</mi> </munder> <msup> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>-</mo> <mover> <msub> <mi>y</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>&OverBar;</mo> </mover> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow>

式中,为单元j的实际输出,i为网络的输出端单元数,则对于N个样本对的总误差为:

<mrow> <msub> <mi>E</mi> <mi>k</mi> </msub> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mn>2</mn> <mi>N</mi> </mrow> </mfrac> <munderover> <mo>&Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow>

定义误差信号为则有:

<mrow> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mfrac> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mrow> <mi>l</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>.</mo> </mrow>

对于隐含层与输出层其误差信号会有所不同,因此需要对隐含层与输出层的误差信号分别进行讨论:

a.对于输出层节点j,有则误差信号为:

<mrow> <msubsup> <mi>&delta;</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msub> <mover> <mi>y</mi> <mo>&OverBar;</mo> </mover> <mrow> <mi>j</mi> <mi>k</mi> </mrow> </msub> </mrow> </mfrac> <mfrac> <mrow> <mo>&part;</mo> <msub> <mover> <mi>y</mi> <mo>&OverBar;</mo> </mover> <mrow> <mi>j</mi> <mi>k</mi> </mrow> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>k</mi> </msub> <mo>-</mo> <msub> <mover> <mi>y</mi> <mo>&OverBar;</mo> </mover> <mi>k</mi> </msub> <mo>)</mo> </mrow> <msup> <mi>f</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>)</mo> </mrow> </mrow>

b.对于隐层节点j,有:

<mrow> <msubsup> <mi>&delta;</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mfrac> <mrow> <mo>&part;</mo> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <msup> <mi>f</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>)</mo> </mrow> </mrow>

式中作为l层送到下一层(l+1)层的输入,计算误差信号时要从(l+1)层算回来,在(l+1)层的第m个单元有:

<mrow> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mi>m</mi> </munder> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mfrac> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>O</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mi>m</mi> </munder> <mfrac> <mrow> <mo>&part;</mo> <msub> <mi>E</mi> <mi>k</mi> </msub> </mrow> <mrow> <mo>&part;</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> </mrow> </mfrac> <msubsup> <mi>w</mi> <mrow> <mi>m</mi> <mi>j</mi> </mrow> <mrow> <mi>l</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mi>m</mi> </munder> <msubsup> <mi>&delta;</mi> <mrow> <mi>m</mi> <mi>k</mi> </mrow> <mrow> <mi>l</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> <msubsup> <mi>w</mi> <mrow> <mi>m</mi> <mi>j</mi> </mrow> <mrow> <mi>l</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> </mrow>

可以得到:

<mrow> <msubsup> <mi>&delta;</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mi>m</mi> </munder> <msubsup> <mi>&delta;</mi> <mrow> <mi>m</mi> <mi>k</mi> </mrow> <mrow> <mi>l</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> <msubsup> <mi>w</mi> <mrow> <mi>m</mi> <mi>j</mi> </mrow> <mrow> <mi>l</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> <msup> <mi>f</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msubsup> <mi>net</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> <mi>l</mi> </msubsup> <mo>)</mo> </mrow> </mrow>

③修正权值其中μ>0,μ为步长,

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1