一种自适应学习率的BP神经网络算法[发明专利]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201710127684.5
(22)申请日 2017.03.06
(71)申请人 南京理工大学
地址 210094 江苏省南京市孝陵卫200号
(72)发明人 华雨 王晓鸣
(74)专利代理机构 南京理工大学专利中心
32203
代理人 唐代盛
(51)Int.Cl.
G06N 3/08(2006.01)
(54)发明名称
一种自适应学习率的BP神经网络算法
(57)摘要
本发明公开了一种自适应学习率的BP神经
网络算法,针对BP神经网络算法的反向传播过程
进行优化,对不同神经元的连接权值动态适配不
同的学习率,保证其每一个方向上的寻优都能寻
到这个方向上的最优解,从而最大限度的提高权
重的调整效率来加快整个训练的收敛速度;第一
步:网络初始化;第二步:样本输入;第三步:正向
传播;第四步:结果判断;第五步:反向传播;本发
明程序简单容易实现,改进效果良好,大幅缩短
了BP神经网络的训练时间,并且有效克服了现有
算法中易于陷入局部最小值的问题且泛用性强,
具有良好的实际应用价值。
权利要求书2页 说明书6页 附图3页CN 108537335 A 2018.09.14
C N 108537335
A
1.一种自适应学习率的BP神经网络算法,其特征在于,具体包括以下步骤:
第一步:网络初始化;
初始化输入层I到隐层J的权值矩阵U以及隐层J到输出层P的权值矩阵V,确定各层神经元个数以及隐层中的传递函数;设定期望输出E以及期望收敛精度Es;
第二步:样本输入;
将需要训练的样本数据依次输入至算法程序中;
第三步:正向传播;
计算实际输出和期望输出的误差值E(n);
第四步:结果判断;
并判断误差值E(n)是否符合要求,即E(n)<E s,若符合要求则输出结果并结束训练,否则转至反向传播;
第五步:反向传播;
即通过调整学习率来寻找当前迭代计算梯度方向上的最优解;这里以任意权值矩阵W
中的任意权值w i为例,进行具体的调整方法说明;首先判断w i的梯度若w i的梯度为0,
即那么调整下一个权值w i+1,且调整方法与w i一致,若其不为0,那么按照公式(1)和式(2)进行调整:
w i(n+1)=w i(n)+Δw i(n) (2)
式中,Δw i(n)表示调整的权值变化量,ηi(n)为该权值在第n次调整时的学习率,根据调整后所得权值即第n+1次迭代的权值w i(n+1)相对于本次权值即第n次迭代的权值Δw i(n)是否更为接近最优解。
2.如权利要求1所述的一种自适应学习率的BP神经网络算法,其特征在于,步骤5反向传播分两种情况处理,具体为:
5.1若调整后所得w i(n+1)相对Δw i(n)更接近最优解,即误差有所减小,那么暂时提高学习率,令学习率翻倍:
沿Δw i(n)的负梯度方向按照第一次翻倍后的新学习率重新计算权值w i(n+1),求
得一个新的权值若经正向传播后所得误差相比权值w i(n+1)更小,那么
按照式(3)继续增大学习率得到第二次翻倍后的学习率并按上述办法继续计算权
值并作比较;直到经过第a次计算后所得权值相比前一次计算所得权值误差较大,则停止计算,令:
随后跳转至第三步进行下一次迭代计算;
5.2若调整后的误差更偏离最优解,即误差反而增大了,那么暂时减小学习率,这里我
们令学习率减半:
同样的,沿w i(n)的负梯度方向按照第一次减半后的新学习率重新计算
求得一个新的权值若新的权值仍旧不如权值w i(n),即误差相比权值w i(n)提高了,那么则按照式(6)继续减小学习率得到第二次减半后的学习率继续上
述计算,直到经过q次计算后所得权值相比w i(n)更优,则停止计算,令:
随后跳转至第三步进行下一次迭代计算。
一种自适应学习率的BP神经网络算法
技术领域
[0001]本发明属于人工智能技术领域,特别是一种自适应学习率的BP神经网络算法。
背景技术
[0002]人工神经网络是现代科学人工智能方向的研究热点之一。
它通过对人脑神经系统的网络结构进行分析,分析人脑神经工作的系统机制来建立一个模仿人脑工作的,具备实时接受处理并具有存储功能的一个数学网络模型。
BP神经网络是人工智能网络中的最常用的算法,是目前研究最成熟的网络结构之一,因其超强的自学习、自组织、自适应、联想记忆及容错能力,其应用非常广泛,几乎涵盖了生活中的每一方面,包括信息处理、自动化控制、经济、医学、交通、科技、航天、心理学等。
[0003]然而,现有的BP算法在应用时仍存在一定的问题:收敛时间过长且容易陷入局部最小值。
目前针对这些缺陷所作的改进主要有启发式改进方法和基于数值优化的改进方法,但两者都存在一定局限性。
启发式改进方法程序简单,实现条件要求低,但是改进效果一般;基于数值优化的改进方法改进效果较好,但是程序复杂,实现条件要求高。
发明内容
[0004]本发明所解决的技术问题在于提供一种自适应学习率的BP神经网络算法,以解决现有BP算法训练时间长且容易陷入局部最小值的问题;同时,本发明的自适应学习率的BP 神经网络算法能够保证算法的复杂程度较低,实现条件容易。
[0005]实现本发明目的的技术解决方案为:
[0006]一种自适应学习率的BP神经网络算法,具体包括以下步骤:
[0007]第一步:网络初始化;
[0008]初始化输入层I到隐层J的权值矩阵U以及隐层J到输出层P的权值矩阵V,确定各层神经元个数以及隐层中的传递函数;设定期望输出E以及期望收敛精度Es;
[0009]第二步:样本输入;
[0010]将需要训练的样本数据依次输入至算法程序中;
[0011]第三步:正向传播;
[0012]计算实际输出和期望输出的误差值E(n);
[0013]第四步:结果判断;
[0014]并判断误差值E(n)是否符合要求,即E(n)<E s,若符合要求则输出结果并结束训练,否则转至反向传播;
[0015]第五步:反向传播;
[0016]即通过调整学习率来寻找当前迭代计算梯度方向上的最优解;这里以任意权值矩
阵W中的任意权值w i为例,进行具体的调整方法说明;首先判断w i的梯度若w i的梯度为
0,即那么调整下一个权值w i+1,且调整方法与w i一致,若其不为0,那么按照公式(1)和式(2)进行调整:
[0017]
[0018]w i(n+1)=w i(n)+Δw i(n) (2)
[0019]式中,Δw i(n)表示调整的权值变化量,ηi(n)为该权值在第n次调整时的学习率,根据调整后所得权值即第n+1次迭代的权值w i(n+1)相对于本次权值即第n次迭代的权值Δw i (n)是否更为接近最优解。
[0020]本发明与现有技术相比,其显著优点:
[0021](1)通过对每个神经元自动适配不同的学习率,大幅缩短了训练时间。
[0022](2)算法程序相对简单,容易实现。
[0023](3)通用性更强,能应对复杂网络结构。
[0024]下面结合附图对本发明作进一步详细描述。
附图说明
[0025]图1为自适应学习率BP神经网络算法的流程图。
[0026]图2为自适应学习率BP神经网络算法的网络结构图。
[0027]图3为初始参数设定代码。
[0028]图4为生成网络初始权值代码。
[0029]图5为反向传播过程部分代码。
[0030]图6为自适应学习率BP神经网络算法的误差收敛曲线图。
具体实施方式
[0031]本发明的一种自适应学习率的BP神经网络算法,在神经网络训练的反向传播过程中对不同神经元的连接权值动态适配不同的学习率,并且每一个方向上的寻优都能寻到这个方向上的最优解,从而最大限度的提高权重的调整效率来加快整个训练的收敛速度,同时本发明的算法不断调整的学习率也保证本算法在训练过程中不会陷入局部最小值。
由于多层结构的神经网络的工作原理是一样的,因此,本发明以三层结构的BP神经网络为例,进行自适应学习率BP神经网络算法的具体说明;结合图1、图2,本发明方法具体包括以下步骤:
[0032]第一步:网络初始化;
[0033]初始化输入层I到隐层J的权值矩阵U以及隐层J到输出层P的权值矩阵V,确定各层神经元个数以及隐层中的传递函数;设定期望输出E以及期望收敛精度Es。
[0034]第二步:样本输入;
[0035]将需要训练的样本数据依次输入至算法程序中;
[0036]第三步:正向传播;
[0037]计算实际输出和期望输出的误差值E(n)(该步骤过程与现有标准BP算法一致);[0038]第四步:结果判断;
[0039]并判断误差值E(n)是否符合要求,即E(n)<E s,若符合要求则输出结果并结束训练,否则转至反向传播;
[0040]第五步:反向传播;
[0041]即通过调整学习率来寻找当前迭代计算梯度方向上的最优解。
这里以任意权值矩阵W中的任意权值w i为例,进行具体的调整方法说明。
首先判断w i的梯度若w i的梯度为
0,即那么调整下一个权值w i+1,且调整方法与w i一致,若其不为0,那么按照公式(1)和式(2)进行调整:
[0042]
[0043]w i(n+1)=w i(n)+Δw i(n) (2)
[0044]式中,Δw i(n)表示调整的权值变化量,ηi(n)为该权值在第n次调整时的学习率,根据调整后所得权值即第n+1次迭代的权值w i(n+1)相对于本次权值即第n次迭代的权值Δw i (n)是否更为接近最优解,分为两种情况处理:
[0045] 5.1若调整后所得w i(n+1)相对Δw i(n)更接近最优解,即误差有所减小,那么暂时提高学习率,令学习率翻倍:
[0046]
[0047]沿Δw i(n)的负梯度方向按照第一次翻倍后的新学习率重新计算权值w i(n+
1),求得一个新的权值若经正向传播后所得误差相比权值w i(n+1)更
小,那么按照式(3)继续增大学习率得到第二次翻倍后的学习率并按上述办法继续
计算权值并作比较。
直到经过第a次计算后所得权值相比前一次计算所得权值误差较大,则停止计算,令:
[0048]
[0049]
[0050]随后跳转至第三步进行下一次迭代计算。
[0051] 5.2若调整后的误差更偏离最优解,即误差反而增大了,那么暂时减小学习率,这里我们令学习率减半:
[0052]
[0053]同样的,沿w i(n)的负梯度方向按照第一次减半后的新学习率重新计算
求得一个新的权值若新的权值仍旧不如权值w i(n),即误差相比权值w i(n)提高了,那么则按照式(6)继续减小学习率得到第二次减半后的学习率继续上
述计算,直到经过q次计算后所得权值相比w i(n)更优,则停止计算,令:
[0054]
[0055]
[0056]随后跳转至第三步进行下一次迭代计算。
[0057]实施例1:
[0058]基于BP神经网络算法的仿真实验采用Matlab进行软件编程,根据本发明提出的改进后的BP算法,将一套不规则的待校正数据导入到程序中进行训练,并与现有神经网络算法校正所得结果进行对比。
[0059]在训练开始前需设置神经网络的结构,首先确定神经网络的隐层数和每层的神经元个数。
隐层的选取关乎到训练精度和训练时间,选用过多隐层会使误差曲面梯度不够稳定,网络会有更多的局部谷地面,从而使网络在训练过程中更容易陷入局部极小值。
而如果选用过少的隐层,由于每个隐层其权值调整的误差有一定限度,若选择过少可能较难满足实验的精度要求。
根据本次实验的需要,中间层选取为双隐层结构。
隐层的神经元数目选择也很重要,通常取决于训练的样本数目。
因为样本越大,训练所产生的误差就越大,这就需要足够的神经元个数来满足需求,因为若个数不够,那么网络从样本中获取信息的能力不足,这样在训练过程中会出现陷入局部最小值的情况,有时候甚至会训练不出来。
而若神经元数目过多,那么在训练过程中会出现过吻合线性,得到的结果也不一定更好而且会降低收敛速度。
因此确定隐层神经元数目的最佳值也是一个难题,这里根据本次实验的需求,设置两个隐层分别包含40和35个神经元。
[0060]随后,需选取传递函数并设置初始参数,传递函数是控制网络最终输出的重要函数,误差函数的导数在误差反向调节的过程中也是用来求梯度的重要参数之一。
目前常用的传递函数是Sigmoid函数,它有两种表现形式:对数型Sigmoid函数和正切型Sigmoid函数,分别对应把任一输入范围处理至区间(0,1)和区间(-1,+1)上,各自具体函数表达式如下。
[0061]
[0062]
[0063]式中,λ为常数,且其变化会对网络训练有一定影响,具体表现为λ越大,收敛速度越快,但是同时网络振荡也会更严重,从而使网络不稳定严重时甚至会无法训练。
因此针对λ的数值调整找到最佳的Sigmoid函数的形状也是一个研究方向,但是试图以增大λ的数值来提高收敛速度是行不通的。
这里本实验选择正切型Sigmoid函数作为隐层的传递函数。
关于收敛精度和最大迭代次数的选择设定,精度要求越高,则收敛时间越长,这里考虑到实验时间的问题,用于对比的收敛精度设为0.0001,相应的最大迭代训练次数为500次。
初始参数设定代码如图4所示。
[0064]网络初始权值的选择虽然不会影响到网络的收敛精度,但是也有可能对网络收敛过程中陷入局部最小值的概率造成影响。
从现有技术可以得出,在其他条件一定的情况下,初始权值取在区间[-0.5,+0.5]范围内最佳。
因此本实验初始权值也将在这一区间内随机选择。
由于改进后的算法针对学习率会进行后续详尽的调整,因此初始学习率也设为在区间[0,1]范围内随机选取。
产生初始权值代码如图5所示。
[0065]随后程序进行正向传播和反向传播,通过对每一层的每一个神经元的学习率进行调整来对样本误差进行校正,这一部分的部分源代码如图6所示。
[0066]达到精度要求后,输出训练结果。
本发明选取10次校正计算结果的平均值作为实验结果,10次训练收敛至误差精度为0.0001的收敛时间和迭代次数如表1所示。
[0067]表1.自适应学习率BP神经网络算法的训练时间
[0068]
[0069]由表1可见,运用改进后的自适应学习率BP神经网络算法进行训练至精度为0.0001所需的训练时间基本稳定在10S左右,迭代次数也基本稳定在50次上下。
收敛速度是非常快的,而且在仿真实验的整个过程中,算法从未出现陷入停滞或陷入局部最小值的情况,足以证明改进后的算法也较好的克服了这一点。
自适应学习率BP神经网络校正算法的误差收敛曲线如图3所示。
[0070]图3中可以看出,自适应学习率的BP神经网络算法在经过5次迭代计算后即可将误差收敛至0.01左右,在经过50次左右的迭代计算后即可将误差收敛至0.0001左右,整个训练过程快速而且平稳,没有明显跳动的现象,若是将误差精度设为10-10,最大迭代次数设为5000次,自适应学习率BP神经网络算法也可以实现,只需要给予更长的训练时间。
[0071]接下来,我们将对自适应学习率BP算法和其它其他现有神经网络的校正算法的校正结果进行对比。
将实验数据分别代入各自程序运行后,依旧以十次运算的平均值为准,其对比情况如表2所示。
[0072]表2.各种BP非线性校正算法的效果对比
[0073]
[0074]表2中可以看出,现有标准BP算法的收敛速度非常慢,将误差精度收敛至0.0009需要平均51秒左右的时间,而且进行了大量的迭代计算,其自身的缺陷在前面已经进行了详细分析。
附加动量法同标准BP算法相比略有改善,在误差精度为0.0009时,其收敛时间为42秒,迭代次数也有所减小,但是可以看到效果并不明显,收敛速度仍然是一个问题,这种算法对于动量系数的选取一直有一定不确定性。
传统步长适应法的改进效果也并不十分明显,在误差精度为0.0001时,其平均收敛时间为98秒,虽然相较标准BP算法有较大改观,且编程简单易于操作,但是收敛速度依然有待提高。
弹性BP算法在三种启发式改进方法中效果最好,它能在24秒左右将误差收敛至0.0001,较好的缩短了收敛时间,但是其仿真实验需要大量的计算,对计算机的性能是一个考验。
基于数值改进的三种方法对于收敛时间都有较好的改进,但是他们的算法复杂程度一直是一个问题。
可以看到,拟牛顿法改进效果非常明显,误差精度为0.0001时,它所需要的训练时间仅仅为16秒左右,已经比启发式改进方法中效果最好的弹性BP算法还要优秀,但是这种算法的缺陷也非常明显,需要计算海森矩阵,算法程序非常复杂,实用性不是很高。
共轭梯度法的改进效果也非常不错,误差精度为0.0001时的收敛时间仅需12秒左右,但是需要计算函数的二阶导数信息,算法程序也相对复杂。
特别需要关注的是,LM算法在所有BP神经网络算法中对于收敛速度的时间的缩短效果是最好的,平均仅需2.18秒,104次迭代计算即可完成误差精度要求为0.0001的训练,但是同样的,它需要计算误差函数的二阶导数,而且在计算过程中会产生很多中间矩阵,需要占用大量的内存,因此在BP网络结构较为简单且网络参数较少时,LM算法是较好的选择,而当网络结构较为复杂时,LM算法的实现难度较大。
最后,本发明提出的自适应学习率BP神经网络算法的改进效果也非常突出,可以在10秒左右将误差函数收敛至0.0001,和标准BP算法相比大大缩短了收敛时间,需要指出的是,这种算法的原理依旧是基于原BP算法中的梯度下降法,算法流程相对简单,无需计算误差函数的二阶导数,但是其改进效果已然优于基于数值改进的拟牛顿法和共轭梯度法,仅次于LM算法。
而由于该算法程序简单,计算占用内存较小,其面对复杂网络结构依然适用,其泛用性更好。
图1
图2
图3
图4
图5
图6。