未来智库 > 神经网络论文 > 一种BP神经网络改进算法研究

一种BP神经网络改进算法研究

发布时间:2018-07-02 01:06:00 文章来源:未来智库    
    关键词:人工神经网络;BP网络算法;动量因子
    中图分类号:TP301.6
    文献标识码:A 文章编号:1672-7800(2015)003-0052-02
    0 引言
    人工神经网络是在现代神经科学研究成果的基础上所提出,它通过模拟大脑神经网络处理、记忆信息的方式进行信息处理[1,2]。近年来,其受到了计算机学界的广泛关注,在图像处理、模式识别、智能预测等领域,有着非常广阔的发展前景。
    BP神经网络是误差反向传播神经网络的简称,是目前应用最广泛的神经网络模型之一。BP神经网络算法是基于BP神经网络模型的一种人工神经网络算法。
    1 BP神经网络算法改进
    1.1 BP神经网络的基本结构
    BP神经网络是一个多层的人工神经网络[3],前部是一个输入层,中间包含若干隐含层,后部是一个输出层,各层之间采用互连方式连接,同层神经元之间不允许有任何连接,各层神经元只能向下一层神经元输出激活信号。其基本结构如图1所示。
    1.2 BP神经网络算法基本思想
    BP神经网络算法利用输出后的误差来估计输出层上一层(如隐含层)的误差,再用这个误差估计更前一层的误差,通过这样一层一层的反传,可以获得从输入层到输出层的各层误差估计,并逐层修正各层的连接权值[4]。
    BP网络算法为步骤如下:
    第一步:网络初始化。给所有连接权值赋上(-1,1)内的随机数,设定误差函数e,给定计算精度值ε,最大学习次数M。
    第二步:随机选取一个输入样本及对应的期望输出。
    第三步:计算隐含层各神经元的输入输出。
    第四步:利用实际输出和期望输出计算误差函数对输出层各神经元的偏导数。
    第五步:利用隐含层到输出层的连接权值、输出层的偏导数以及隐含层的输出计算误差函数对隐含层各神经元的偏导数。
    第六步:利用输出层各神经元的偏导数和隐含层各神经元的输出修正连接权值。
    第七步:利用隐含层各神经元的偏导数和输入层各神经元的输入修正连接权值。
    第八步:计算全局误差。
    第九步:判断误差是否满足要求,继而停止学习。如果误差达到设定的误差值或者达到最大学习次数,结束算法。否则返回第三步,进行下一轮学习。
    BP神经网络的训练学习使用非线性规划理论中的最速下降法,连接权值修正以误差函数的负梯度方向进行[5],其中局部极小值点和全局最小值点的误差梯度都为0。BP算法一旦陷入局部极小值点,便无法判断出全局最小值点,即BP算法有可能陷入局部极小值点而无法跳出,无法收敛于期望误差,最后导致训练学习失败。同时,误差函数收敛失败,学习时间将变成无穷大。如何解决BP神经网络的训练时间和收敛速度问题是提高该算法效率的关键。
    1.3 改进算法的基本思想
    为了提高BP网络的收敛速度,本文加入动量因子α调节各层连接权值。在训练学习中由于各层连接权值容易发生剧烈的变化引起训练过程震荡,通过加入动量因子α可使连接权值变化平缓,达到提高收敛速度的目的。
    wN+1h0=αwNh0+(1-α)ηδ0(k)hoh(k)(1)wN+1ih=αwNih+(1-α)ηδh(k)xi(k)(2)
    其中,α为动量因子,其取值直接决定了连接权值的修正行为。当α=0时,连接权值修正与以前积累的调整经验无关,只与当前的梯度下降有关;当α=1时,连接权值修正完全由以前积累的调整经验决定。如此,通过附件动量因子α的方法完成对当前梯度下降的过滤,当梯度下降过快时,则为上一次的修正量,这样就可以将震荡修正过滤掉,稳定BP算法的修正过程,加快BP算法的收敛速度,从而可以提高BP算法的训练学习效率。
    2 改进算法实例
    第一步:取(-1,1)内的12个随机数,并将这些随机数复制给各层之间的连接权值,选取隐含层4个节点,给设定计算精度值ε=0.01和最大学习次数M=10 000。
    随机赋值的输入层-隐含层权值矩阵如下:
    pplfW1[0][0]=0.1; pplfW1[0][1]=0.2; pplfW1[0][2]=0.4; pplfW1[0][3]=0.5;
    pplfW1[1][0]=0; pplfW1[1][1]=-0.5; pplfW1[1][2]=-0.8;pplfW1[1][3]=-0.1;
    随机赋值的隐含层-输出层权值矩阵如下:
    pplfW2[0][0]=0.1; pplfW2[1][0]=-0.2; pplfW2[2][0]=-0.5; pplfW2[3][0]=0.5;
    第二步:随机抽取第k个输入样本及其对应的期望输出。
    输入矩阵:ppInput[1][0]=0; ppInput[1][1]=1;
    期望输出向量:ppOutput[1][0]=1;
    第三步:计算隐含层各神经元节点的输入和输出。
    plfHideIn[0]=ppInput[0]*pplfW1[0][0]+ppInput[1]*pplfW1[1][0]=0;
    plfHideIn[1]=ppInput[0]*pplfW1[0][1]+ppInput[1]*pplfW1[1][1]=-0.5;
    plfHideIn[2]= -0.8; plfHideIn[3]=-0.1;
    plfHideOut[0]=sigmoid(plfHideIn[0])=0.5;
         plfHideOut[1]=0.377; plfHideOut[2]=0.310; plfHideOut[3]=0.475
    plfOutputIn[0]=plfHideOut[0]*pplfW2[0][0]+plfHideOut[1]*pplfW2[1][0]
    +plfHideOut[2]*pplfW2[2][0]+plfHideOut[3]*pplfW2[3][0]=0.0569
    plfOutputOut[0]=sigmoid(plfOutputIn[0])=0.5142
    第四步:计算隐含层-输出层权系数增量。
    plfChange2[0]=plfOutputOut[0]*(1-plfOutputOut[0])*(ppOutput[0]-plfOutputOut[0])=0.1213
    pplfDeltaW2[0][0]=a*plfHideOut[0]*plfChange2[0]=0.0060
    pplfDeltaW2[1][0]=0.0045; pplfDeltaW2[2][0]=0.0037; pplfDeltaW2[3][0]=0.0057
    第五步:计算输入层-隐含层权系数增量。
    plfChange1[0]=(pplfW2[0,0]*plfChange2[0])*plfHideOut[0]*(1-plfHideOut[0])=0.0030
    plfChange1[1]=-0.0057; plfChange1[2]=-0.0129; plfChange1[3]=0.0151
    pplfDeltaW1[0][0]=a*plfInput[0]*plfChange1[0]=0
    pplfDeltaW1[0][1]=0; pplfDeltaW1[0][2]=0; pplfDeltaW1[0][3]=0;
    pplfDeltaW1[1][0]=0.0003; pplfDeltaW1[1][1]=-0.000 5; pplfDeltaW1[1][2]=-0.001 2;
    pplfDeltaW1[1][3]=0.0015
    第六步:利用隐含层-输出层权系数增量更新隐含层-输出层的网络权值。
    pplfW2[0][0]=pplfW2[0][0]+pplfDeltaW2[0][0]=0.106 0
    pplfW2[1][0]=-0.195 4; pplfW2[2][0]=-0.496 2; pplfW2[2][0]=0.505 7
    第七步:利用输入层-隐含层权系数增量更新输入层-隐含层的网络权值。
    pplfW1[0][0]=pplfW1[0][0]+pplfDeltaW1[0][0]=0.1
    pplfW1[0][1]=0.2; pplfW1[0][2]=0.4;pplfW1[0][3]=0.5; pplfW1[1][0]=0.000 3;
    pplfW1[1][1]=-0.500 5; pplfW1[1][2]=-0.8012; pplfW1[1][3]=-0.0984
    第八步:计算全局误差。
    lfEp=(ppOutput[0]-plfOutputOut[0])*(ppOutput[0]-plfOutputOut[0])=0.235 96
    第九步:判断是否停止学习。全局误差lfEp=0.235 96>ε=0.01,学习次数为1,小于10 000,因此需要进行下一轮次学习过程:在学习样本中选择一个未使用的学习样本数据,返回到算法的第三步,继续下一轮学习,直到误差满足要求或者学习次数达到最大值。
    3 结语
    本文探讨了BP神经网络模型的基本原理和实现算法,针对原有BP网络算法的缺点和不足提出了改进方法,并通过实例进行了验证。
    参考文献:
    [1] 蔡瑞英,李长河.人工智能[M].武汉:武汉理工大学出版社,2003:1-20.
    [2] Martin T.Hagan, Howard B.Demuth, Mark H.Beale.神经网络设计[M].戴葵等,译.北京:机械工业出版社,2002:43-46.
    [3] 魏海坤.神经网络结构设计的理论与方法[M].北京:国防工业出版社,2005.
    [4] 黄宇栋.BP神经网络在信息系统数据分类中的应用研究[D].北京:中国地质大学,2013.
    [5] 卢丹丹.基于人工智能的大学英语辅助教学专家系统[D].北京:北京化工大学,2009.
    (责任编辑:陈福时)
转载请注明来源。原文地址:https://www.7428.cn/vipzj20805/
 与本篇相关的热门内容: