BP算法实现---介绍相关改进方法

  • 格式:doc
  • 大小:221.00 KB
  • 文档页数:6

BP算法的实现摘要:BP算法采用广义的δ学习规则,是一种有导师的学习算法。

它分两个阶段:正向传播阶段和反向传播阶段。

误差反向传播算法简称BP算法 ,现在成为人工神经网络中最引人注意应用最广泛的算法之一。

该算法是一种有教师示教的训练算法。

关键词:BP算法;权值;学习步长;学习样本一、BP算法思想及实现BP算法采用广义的δ学习规则,是一种有导师的学习算法。

它分两个阶段:正向传播阶段和反向传播阶段。

正向传播阶段,将学习样本的输入信息输入前馈网络的输入层,输入层单元接受到输入信号,计算权重合,然后根据神经元的激活函数将信息传到隐含层(1层或2层),同样根据隐含层的输出计算输出层的输出。

反向传播阶段,将网络的实际输出与期望输出相比较,如果误差不满足要求,将误差向后传播,即从输出层到输入层逐层求其误差(实际上是等效误差),然后相应地修改权值。

误差反向传播算法简称BP算法 ,现在成为人工神经网络中最引人注意应用最广泛的算法之一。

该算法是一种有教师示教的训练算法 ,它通过对P个输入输出对 (即样本 ) (X1,Y1) , (X2,Y2) ,… , (XP,YP)的学习训练 ,得到神经元之间的连接权Wij、Wjk和阈值θj、 k,使n维空间对m维空间的映射获得成功训练后得到的连接权和阈值 ,对其它不属于P1=1, 2,… ,P的X子集进行测试 ,其结果仍能满足正确的映射。

1.BP网络的学习结构。

在神经网络中 ,对外部环境提供的模式样本进行学习训练 ,并能存储这种模式 ,则称为感知器 ;对外部环境有适用能力 ,能自动提取外部环境变化特征 ,则称为认知器。

一个有教师的学习系统分成三个部分 :输入部、训练部和输出部。

如图 1所示:输入部接收外来样本X,由训练部进行网络的权系数 W调整 ,然后输出部输出结果。

多层神经网络 1-4-6-4-1的学习机构用图 2表示 :X是输入样本信号 ,可取任意值。

输入样本信号通过每一层的权系数作用 ,最终在输出部产生结果 :y = e-x²图2 1-4-6-4-1的学习机构再把期望输出信号 y与 u进行比较 ,从而产生误差 e。

权值调整机构根据误差 e对学习系统的各层权系数进行修改 ,修改方向使用负梯度方向 ,即达到最速下降法 ,不断进行下去 ,使误差 e 满足给定精度要求 0.003,这时实际输出值 u 和期望输出值 y 的误差符合要求 ,则学习过程结束。

2.BP 网络的数学模型。

从第一节神经元的讨论可知 ,神经元是一个多输入单输出的信息处理单元。

它对信息处理是非线性的。

可把神经元抽象为一个简单的数学模型 ,如图 3所示。

图 3中 , X1, X2,… , Xn 是神经元的输入 ,即来自前级 n 个神经元的轴突信息 ;θi 是 i 神经元的阀值 , Wi1, Wi2,… , Win 分别是 i 神经元对 X1, X2,… , Xn 的权系数 ,也即突触的传递效率 ; Yi 是 i 神经元受到输出 ; f[· ]是激发函数 ,它决定 i 神经元受到输入 X1, X2,… , Xn 的共同刺激达到阀值时以何种方式输出。

数学模型表达式为 :取激发函数为S 型:是对应第i 个样本X i 的实际输出;Y i 是对应第i 个样本X i 的期望输出。

求令e 最小时W :其中:则:取负梯度修改权系数,可获得最速下降法即:3.BP 算法推导定义误差函数e 为期望输出与实际输出之差和平方和:其中:Y 为期望值,即教师信号;X 为实际输出。

考察权系数W ij 的修改量ij W ,ij W 与e 的负梯度有关。

即:其中K 为网络层数,由于:从而有:1[]ni ij j i j y f W X θ==-∑1()1exp()i i f U U =+-211()2ni i i e y y ∧==-∑[]i i y f W X ∧=∙1nekk e egradw w w=∂∂==∂∂∑21()2k k k e y y ∧=-k kU W X =∙1[][]nkk k k k y f W X f U ∧===∑[][](1[])k k k f U f U f U '=∙-11()[]nk k i i i ii W W U y y f U X ∧+='=+-∙∙∑21()2m j i je X y =-∑21()2e x y =-ij ijeW W η∂∝-∂V ki k ij i ijU e eW U W ∂∂∂=∙∂∂∂111()k k il l k iljijijk W X UX W W e e X ---∂∂==∂∂∂∂=∙∑从修改系数角度出发,有令: 则:因d 非显式,要进行变换:因: 故: 即:分两种情况求:(1) 当k=m 时,即最后一层,则: 由于: 故有:(2)当k 〈m 时,则该层为隐层,这时考虑上一层对它的作用:由于: 故:最后有:按负梯度方向修改权系数,采用加速算法,则有: 1(1)()(1)()()kk ij ij ij ij i j ij W t W t W t W t d X W t ηα-+=++=-+4 .BP 算法的执行。

BP 算法执行分两个过程 :( 1)正向传播 :输入的样本从输入层经过隐单元一层一层进行处理 ,通过第二层 ,第三层 ,第四层之后 ,传出第五层——输出层 ;在逐层处理过程中 ,每一层神经元的状态只对下一层神经元的状态产生影响。

在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。

( 2)反向传播 :反向传播时 ,把误差信号按原来正向传播的通路反向传回 ,并对每一隐层各个神经元的权系数进行修改 ,以使误差信号趋向最小。

根据 BP 算法的两个过程 ,采用 S 型激发函数时 ,可用下列步骤对网络的权系数 Wij 进行递归求取。

注意如果输入1k ij j kij ie e W X W U ηη-∂∂=-=-∙∂∂V k ikie d U∂=∂1k k ij i jW d X η-=- kki ik k ki i iX e e d U X U ∂∂∂==∙∂∂[]kki i X f U =[][](1[])kk k i i i f U f U f U '=-k mi i X X =k i ki ed X ∂=∂11k i k i e d U ++∂=∂1(1)k k kk i i i llild X X dW +=-∑(1)k kk ki ii i k k ki i iX e e d X X X U U ∂∂∂=∙=∙-∂∂∂21()2m e X Y =-1k l k k k l i li U e eX U X +∂∂∂=∙∂∂∂∑1[]nk lj j k j l likki i W X U W X X +∂∂==∂∂∑( X1, X2,… , Xn)对于该层的第 i 个神经元 ,则有 n 个权系数 Wi1, Wi2,… , Win,另外多取一个 Win+ 1,用于表示阀值;并将输入样本 X 取 ( X1, X2,… , Xn, 1)。

根据 BP 算法的两个过程 ,采用 S 型激发函数时 ,可用下列步骤对网络的权系数 Wij 进行递归求取。

注意如果输入 ( X1, X2,… , Xn)对于该层的第 i 个神经元 ,则有 n 个权系数 Wi1, Wi2,… , Win,另外多取一个 Win+ 1,用于表示阀值 ;并将输入样本 X 取 ( X1, X2,… , Xn, 1)。

算法的执行步骤如下 :( 1)权系数 Wij 置初值 :对各层的权系数 Wij 置一个较小的非零随机数 ,但其中W in + 1=-θ。

( 2)输入一个样本 X0,以及对应期望值 :20x y e-=(3)计算各层的输出:第一层:第二层其中i=1,2,3,4 第三层:其中i=1,2,3,4,5,6 (4)计算:如e 〈0.003则转(8),否则转(5)执行; (5) 求各层的学习误差: k=3; j=1,2,3,4,5,6k=2; j=1,2,3,4(6) 修正权系数和阀值: 当k=1时: 010101000W W d X W ηα----=-+当k=2时:I=1,2,3,4; j=1,2111110ij ij i j W W d X W ηα-----=-+当k=3时:I=1,2,3,4,5,6; j=1,2,3,401010010101011()1exp()UW X X f U U θ------=-==+-2110_0_111i ij j l il ij U X X W X θ----===-∑54221212112221()1exp()i ij j ij j ij j i i i U W X W X X f U U θ------==---==-==+-∑∑4l e X Y-=-222313(1)j j j j lld X X W d -----=-∑111212(1)j j j j lld X X W d -----=-∑000111(1)j j j j lld X X W d -----=-∑221110ij ij i j W W d X W ηα-----=-+(7) 返回(3)执行: (8) 输出各层权系数。

实验结果表明 :( 1)如改变精度要求 ,将影响 BP 算法的计算次数 ,当精度提高时 ,计算量明显加大 ;当精度降低时 ,计算量减小。

( 2)当改变神经网络的结构时 ,意味着整个计算过程将变化。

( 3)当取不同样本点组时 ,有的收敛较快 ,有的计算非常多。

( 4)当取不同加速因子时 ,加速效果不同。

有的较快 ,有的较慢。

( 5) BP 算法求函数逼近有一定的实用性。

二、使用 BP 算法时应考虑的若干问题归纳总结了使用 BP 算法时可能涉及到的问题和一些技巧。

尤其对学习方法的选择、隐层数和隐层单元数的选择、学习步长的选择、避免局部最小的方法、学习样本的选择、激活函数的选择等都作了详细的介绍 。

1 学习方法的选择1)单样本学习法根据每一个学习样本的误差 ,求权值修正值 ,更新权值 ;成批学习法根据所有学习样本的总误差 ,求权值修正值 ,更新权值。

一般来说 ,学习样本中噪声较小时 ,用单样本学习法较合适 ,否则用成批学习法较合适。

2)单样本学习法的缺点是每次迭代的梯度值受学习样本中的噪声影响较大 ,而成批学习法的缺点是忽略了学习样本的个体差异而降低学习的灵敏度。

通常 ,可以将上述两种方法进行折衷 ,即将学习样本集分成若干个子块分别进行以子块为单位的成批学习 ,当误差收敛到一预定数值 ,再以此时权值为初值 ,转入下一个子块进行学习 ,在所有的子块学习完后 ,如果总的误差满足要求 ,学习结束。