BP算法的实现.doc

上传人:土8路 文档编号:10044906 上传时间:2021-04-13 格式:DOC 页数:9 大小:294KB
返回 下载 相关 举报
BP算法的实现.doc_第1页
第1页 / 共9页
BP算法的实现.doc_第2页
第2页 / 共9页
BP算法的实现.doc_第3页
第3页 / 共9页
BP算法的实现.doc_第4页
第4页 / 共9页
BP算法的实现.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《BP算法的实现.doc》由会员分享,可在线阅读,更多相关《BP算法的实现.doc(9页珍藏版)》请在三一文库上搜索。

1、BP算法的实现Performing BP Caculation摘要:BP算法采用广义的学习规则,是一种有导师的学习算法。它分两个阶段:正向传播阶段和反向传播阶段。误差反向传播算法简称算法 ,现在成为人工神经网络中最引人注意应用最广泛的算法之一。该算法是一种有教师示教的训练算法。关键词:BP算法; 权值 ; 学习步长 ; 学习样本(The Information engineering school of Yantai Nanshan College longkou Shandong 265708)Abstract:Bp Caculation adopts broadsense tearning

2、 rinciphes,which is guided by instructors.It falls into two stasces.direct Propagation and back propagation,Error back propagation is shorttormed BP Caculation,Which has become one of the most actractrue and Popular Caculations.It is a training Caculation demonstrated by teachers.Keywords: Bp Cacula

3、tion ;studying sample ;limit value time-length ; trequeucy for studying 一、BP算法思想及实现 BP算法采用广义的学习规则,是一种有导师的学习算法。它分两个阶段:正向传播阶段和反向传播阶段。正向传播阶段,将学习样本的输入信息输入前馈网络的输入层,输入层单元接受到输入信号,计算权重合,然后根据神经元的激活函数将信息传到隐含层(1层或2层),同样根据隐含层的输出计算输出层的输出。反向传播阶段,将网络的实际输出与期望输出相比较,如果误差不满足要求,将误差向后传播,即从输出层到输入层逐层求其误差(实际上是等效误差),然后相应地修改

4、权值。误差反向传播算法简称算法 ,现在成为人工神经网络中最引人注意应用最广泛的算法之一。该算法是一种有教师示教的训练算法 ,它通过对个输入输出对 (即样本 ) (1,1) , (2,2) , , (,)的学习训练 ,得到神经元之间的连接权、和阈值收稿日期:2004-11-10作者简介:田华(1980-)女,山东德州人,烟台南山学院软件工程学院教师、,使维空间对维空间的映射获得成功训练后得到的连接权和阈值 ,对其它不属于1=1, 2, ,的子集进行测试 ,其结果仍能满足正确的映射 。 1.BP网络的学习结构。在神经网络中 ,对外部环境提供的模式样本进行学习训练 ,并能存储这种模式 ,则称为感知器

5、 ;对外部环境有适用能力 ,能自动提取外部环境变化特征 ,则称为认知器。一个有教师的学习系统分成三个部分 :输入部、训练部和输出部。如图 1所示:输入部接收外来样本X,由训练部进行网络的权系数 W调整 ,然后输出部输出结果。多层神经网络 1-4-6-4-1的学习机构用图 2表示 :X是输入样本信号 ,可取任意值。输入样本信号通过每一层的权系数作用 ,最终在输出部产生结果 :y = e-x图2 1-4-6-4-1的学习机构 再把期望输出信号 y与 u进行比较 ,从而产生误差 e。权值调整机构根据误差 e对学习系统的各层权系数进行修改 ,修改方向使用负梯度方向 ,即达到最速下降法 ,不断进行下去

6、,使误差 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,

7、 , Xn的共同刺激达到阀值时以何种方式输出。数学模型表达式为 : 取激发函数为S型: 是对应第i个样本Xi的实际输出;Yi是对应第i个样本Xi的期望输出。求令e最小时W: 其中: 则: 取负梯度修改权系数,可获得最速下降法即: 3BP算法推导 定义误差函数e为期望输出与实际输出之差和平方和:其中:Y为期望值,即教师信号;X为实际输出。考察权系数Wij的修改量,与e的负梯度有关。即: 其中K为网络层数,由于: 从而有: 从修改系数角度出发,有令: 则: 因d非显式,要进行变换: 因: 故:即: 分两种情况求:(1) 当k=m时,即最后一层,则: 由于: 故有:(2)当km时,则该层为隐层,这时

8、考虑上一层对它的作用: 由于: 故:最后有: 按负梯度方向修改权系数,采用加速算法,则有: 4 .BP算法的执行。 BP算法执行分两个过程 : ( 1)正向传播 :输入的样本从输入层经过隐单元一层一层进行处理 ,通过第二层 ,第三层 ,第四层之后 ,传出第五层输出层 ;在逐层处理过程中 ,每一层神经元的状态只对下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。( 2)反向传播 :反向传播时 ,把误差信号按原来正向传播的通路反向传回 ,并对每一隐层各个神经元的权系数进行修改 ,以使误差信号趋向最小。根据 BP算法的两个过程 ,采用

9、S型激发函数时 ,可用下列步骤对网络的权系数 Wij进行递归求取。注意如果输入 ( 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, , X

10、n, 1)。算法的执行步骤如下 :( 1)权系数 Wij置初值 :对各层的权系数 Wij置一个较小的非零随机数 ,但其中Win + 1=-。 ( 2)输入一个样本 X0,以及对应期望值 : (3)计算各层的输出: 第一层: 第二层其中i=1,2,3,4第三层: 其中i=1,2,3,4,5,6(4)计算: 如e0.003则转(8),否则转(5)执行;(5) 求各层的学习误差:k=3; j=1,2,3,4,5,6 k=2; j=1,2,3,4 (6) 修正权系数和阀值: 当k=1时: 当k=2时:I=1,2,3,4; j=1,2 当k=3时:I=1,2,3,4,5,6; j=1,2,3,4(7)

11、返回(3)执行:.(8) 输出各层权系数。实验结果表明 : ( 1)如改变精度要求 ,将影响 BP算法的计算次数 ,当精度提高时 ,计算量明显加大 ;当精度降低时 ,计算量减小。 ( 2)当改变神经网络的结构时 ,意味着整个计算过程将变化。( 3)当取不同样本点组时 ,有的收敛较快 ,有的计算非常多。( 4)当取不同加速因子时 ,加速效果不同。有的较快 ,有的较慢。( 5) BP算法求函数逼近有一定的实用性。二、使用 BP算法时应考虑的若干问题 归纳总结了使用 BP算法时可能涉及到的问题和一些技巧。尤其对学习方法的选择、隐层数和隐层单元数的选择、学习步长的选择、避免局部最小的方法、学习样本的选

12、择、激活函数的选择等都作了详细的介绍 。1学习方法的选择1)单样本学习法根据每一个学习样本的误差 ,求权值修正值 ,更新权值 ;成批学习法根据所有学习样本的总误差 ,求权值修正值 ,更新权值。一般来说 ,学习样本中噪声较小时 ,用单样本学习法较合适 ,否则用成批学习法较合适。2)单样本学习法的缺点是每次迭代的梯度值受学习样本中的噪声影响较大 ,而成批学习法的缺点是忽略了学习样本的个体差异而降低学习的灵敏度。通常 ,可以将上述两种方法进行折衷 ,即将学习样本集分成若干个子块分别进行以子块为单位的成批学习 ,当误差收敛到一预定数值 ,再以此时权值为初值 ,转入下一个子块进行学习 ,在所有的子块学习

13、完后 ,如果总的误差满足要求 ,学习结束。否则 ,转入下一个循环继续学习 。3)规模较大的 BP网络 ,学习时 ,可以将它以一定的比例缩小成较小的 BP网络 ,先训练这个较小的BP网络 ,将学习的结果以同样的比例提升到原来较大规模的网络 ,再训练较大规模的网络。实验证明对于大规模 BP网络这种学习方法速度快 ,特征抽取能力强。2 隐层数和隐层单元数的选择1) 一般总是先选择一个隐层的 BP网络 ,但如果选择一个隐层时 ,隐层单元数目较大 ,可以考虑选用两个隐层 ,而每个隐层的单元数取较小值 。2) 隐层单元数目 HN的选择是否合适是应用 BP网络成功与失败的关键因素之一 , HN值太小 ,学习

14、过程可能不收敛 ; HN值越大 ,网络映射能力越强 ,局部最小点越少 ,越容收敛到全局最小点。但 HN过大 ,不但使学习时间过长 ,而且网络容易训练过渡 ,这时网络不但记住了学习样本的一般特征 ,而且记住了学习样本中的个别特征 (包括随机噪声 )。这样也会使网络的容错性降低。因为如果网络对学习样本的学习太“精确”,即使检测样本与学习样本之间有很小的畸变 ,网络也会判为非。目前 ,最佳隐层单元数的选择尚无理论指导。实际应用中 ,可以先取较小的 HN,训练并检验网络的性能 。然后稍增大 HN,再重试。试验确定合适的。试验时 ( 1) ( 3)式可以作为大致的参考 ( BP网络作为分类器时 )(1)

15、(2)(3)式 ( 1) ( 3)中 , J表示隐层单元数目 HN, k为样本数 , n为输入单元数 ,对于组合数 ,如果 i J, =0, m为输出单元数 , a为 1 10之间的常数。也可以在开始时选择足够大的 HN,然后把学习后那些不起作用的隐层单元去掉。3学习步长的选择学习步长 (或称学习速率 )的取值较大时 ,学习速度快 ,但会引起权值振荡 ,太大将引起权值发散 ;的取值较小时 ,网络学习速度慢 ,训练时间长 。步长的取值应在学习速度与权值的稳定性之间折衷选择 ,但最好是用变步长的方法 。讨论变步长方法的文献很多 ,文献 1给出一种方法 ,先设一初始步长 ,若一次迭代后误差增大 ,则

16、将步长乘以小于 1的正数 ,否则步长乘以大于 1的正数。文献 2令步长随学习的进展而逐步减小 。文献 3根据连续两次迭代时 ,梯度方向的相似或相反 ,来增加或减小步长 。应该注意的是 ,学习步长的选择与 2.4中的动量因子的选择不是孤立的 ,它们之间有一定的等效性。4避免局部最小的方法1)增加动量项 (或称惯性项、矩项等 )并适当选择动量因子 (或称惯性系数 ) ,可以抑制学习过程中的振荡和有助于摆脱局部最小 。动量因子一般选在 0.9左右。文献 3根据连续两次迭代时 ,梯度方向的相似或相反 ,来增加或减小动量因子 (与学习步长同时考虑 ) 。2)给权值加小的随机扰动 ,有助于网络摆脱局部最小

17、 。3)将 BP算法与模拟退火算法或遗传算法结合起来 ,可以避免陷入局部最小 ,但要影响学习速度 。5学习样本的选择1)选择学习样本时 ,不仅要包括所有的模式类别 ,而且每种类别所具有的学习样本数要平衡 ,不能偏重某一类型 .但如果事先明确类型 A出现的机会比类型 B大一倍 ,这时可以选择类型 A的学习样本比类型B的学习样本多一倍 。2)学习时 ,在学习样本中适当加些噪声 ,可以提高网络的抗噪声能力。3)学习样本应尽可能相互独立而没有相关关系 ,尽可能用正交设计方法来获得足够多的学习样本 。6激活函数的选择BP算法的激活函数一般采用S型函数 : ,可用带形状因子的 S型函数来代替 。大 , S

18、型函数的形状平坦 ,识别率高 ,但学习速度下降 ;小 ,网络收敛快 ,但识别率降低 。可以在开始学习时取较小值 ,以后逐渐增大 。文献 4用作为激活函数 ,实验证明可以提高学习速度 。 7其它技巧1) 初始权值最好设置为较小 (单极 S型函数时 ,可选 -0.3 0.3之间 )的随机数 。2) 激活函数采用单极 S型函数时 ,学习样本期望输出设置为 0.1或 0.9较合适 。3)给定一定的允许误差 ,当网络的输出与样本之间的差小于给定的允许误差时 ,则停止学习。对网络学习采取这种宽容的做法 ,可加快学习速度。还可以在开始学习时允许误差取大些 ,以后逐渐减小。另外 ,近年来 ,将模糊数学、粗集理论和证据理论等与 BP算法结合起来训练神经网络方面的文章很多 ,有兴趣的读者可以参考有关的文献。 参考文献1 张立明编著。人工神经网络的模型及其应用M。上海:复旦大学出版社。1993.42.2 黄凤岗,宋克鸥编著。模式识别M。哈尔滨:哈尔滨工程大学出版社.1998.65,68,69.3 杨万山,陈松乔等。基于BP神经网络的工程图纸图形符号识别J.微型电脑应用,2000,2:22-23.4 扬葳,韩春成。BP网络接点作用函数的改进及算法在汉字字库学习中的应用J。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1