BP神经网络训练算法的比较

发表时间:2021/4/9   来源:《科学与技术》2020年35期   作者:彭灵基 罗思汗
[导读] BP神经网络是一种按照误差逆向传播算法训练的多层前馈
        彭灵基  罗思汗
        (重庆工商大学 重庆 400000)
        摘要:BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络。BP网络主要用于函数逼近、模式识别、分类、数据压缩。BP神经网络是前向网络的核心部分,体现了人工神经网络的精华。不过BP神经网络算法的收敛速度慢一直是其缺点。基于BP神经网络对数据分类、拟合的重要性,对BP神经网络训练算法的改进一直在进行,不过本文只对已成熟的部分训练算法进行比较,找出它们各自适用的范围。
        关键词:BP神经网络算法、梯度下降法、牛顿法、共轭梯度法
        
一、算法的基础理论
1.梯度下降法
        梯度下降法是利用一阶的梯度信息找到函数局部最优解的一种方法,也是机器学习里面最简单最常用的一种优化方法。迭代公式如下:
        
        其中,是第 k 次迭代我们选择移动的方向,在梯度下降法中,移动的方向设定为梯度的负方向,是第 k 次迭代用直线搜索方法选择移动的距离,每次移动的距离系数可以相同,也可以不同,有时候我们也叫学习率。
        在数学上,移动的距离可以通过直线搜索令导数为零找到该方向上的最小值,但是在实际编程的过程中,这样计算的代价太大,我们一般将它设定为一个常量。
        梯度下降方法有一个严重的弊端,若函数的梯度变化如图所示呈现出细长的结构时,该方法需要进行多次迭代运算。而且,尽管梯度下降的方向就是损失函数值减小最快的方向,但是这并不一定是收敛最快的路径。
        标准的梯度下降算法是一种贪心算法,虽然可以很有效地求解优化问题,但是可能会陷入局部极小值。为了避免寻找优化解的过程中陷入局部极小值,D.E.Rumelhart提出了一种方法[2],该方法是在修改规则中增加一个动量项。该项会考虑之前时刻梯度的贡献,其权值迭代公式如下:
      
第一项是常规算法的学习因子项,第二项是动量项,a为动量因子。由于加入了之前时刻梯度的贡献,这相当于给迭代过程添加了一个低通滤波器,可以使网络忽略误差曲面上的细节特征,从而避免了陷入周部极小值的问题。
        另外,在基本网络算法中,一般学习因子项n取为固定值,为了更好的控制网络的收敛性和学习速度,可以根据需要选择自适应的可变学习因子,则上述方法称之为自适应学习算法。
2.牛顿法和拟牛顿法
        梯度下降法主要利用的是目标函数的局部性质,具有一定的“盲目性”。牛顿法则是利用局部的一阶和二阶偏导信息,推测整个目标函数的形状,进而可以求得出近似函数的全局最小值,然后将当前的最小值设定近似函数的最小值。相比梯度下降法,牛顿法带有一定对全局的预测性,收敛性质也更优良。牛顿法的主要迭代公式如下:

我们可以看到,当HK为正定的时候,可以保证牛顿法的搜索方向是向下搜索的。
牛顿法的性能如图2-2所示。从相同的初始值开始寻找损失函数的最小值,它比梯度下降方法需要更少的步骤。


3.共轭梯度法
        共轭梯度法是介于梯度下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了梯度下降法收敛慢的缺点,又避免了牛顿法需要存储和计算海塞矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有不收敛性,稳定性高,而且不需要任何外来参数。共轭梯度法的迭代公式为:
        


二、研究实例及结果分析
1.数据收集
        Iris数据集是常用的分类实验数据集,Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(山鸢尾,杂色鸢尾,维吉尼亚鸢尾)三个种类中的哪一类。
        本实验中将Iris数据集分为2组,每组各75个样本,每组中每种花各有25个样本。其中一组作为训练样本,另一组作为检验样本。为方便训练,将3类花分别编号为0,1,2
2.创建BP神经网络
        输入层神经元数目为4,分别读取Iris数据集的4个属性,即花萼长度、花萼宽度、花瓣长度和花瓣宽度。共设置两个隐含层,隐含层节点数目分别为10和3。输出层神经元数目为3,分别对应样本属于某一品种的可能性的大小。
3.实验流程
        使用Python编写代码实现神经网络的训练过程,先下载more_itertools包用于查看迭代过程,具体做法为:
        (1).读取训练数据
        把Iris数据集分成了训练样本和检验样本,首先读取训练样本。
        (2).特征值归一化
        把读取到的训练样本数据都归一化到[0,1]之间。
        (3).创建神经网络
        编写Python代码实现第二节中的神经网络。
        (4).设置训练参数
        对BP神经网络的训练参数进行设置,本实验中取训练精度为0.01,最大训练次数为10000次,学习率设为固定值0.25。
        (5).开始训练
        对神经网络进行训练
        (6).读取测试数据并进行测试
        (7).对Iris数据集的检验样本进行读取,然后输入神经网络中进行测试。
        (8).对实验结果进行分析
        (9).统计神经网络的样本识别正确率。
3.1结果分析
        (1).梯度下降法及其改进算法的实验
        首先对梯度下降法及其改进算法进行实验,分别使用标准梯度下降法,带有动量项的梯度下降法,以及带有动量项的自适应学习算法进行对比实验。迭代10000次后标准梯度下降法训练性能,识别率为90.667%,带有动量项的梯度下降法训练性能,识别率为94.667%,带有动量项的自适应学习算法训练性能,识别率为97.333%。
        从实验结果中可以看到,标准梯度下降法的训练效率最低。相比较而言,带有动量项的梯度下降法的识别率更高,而且其初始下降速度明显比标准梯度下降法要快,但是在接近最优解时的下降速度也会逐渐减慢,最后仍达不到精度要求。这些方法中,带有动量项的自适应学习算法识别率最高。
        (2).牛顿法和共轭梯度法的实验
本部分为牛顿法和共轭梯度法中存储量要求最小的算法进行对比实验,实验环境和梯度下降法中的实验环境相同。
经过10000次迭代,牛顿法训练性能,识别率为98.333%;共轭梯度法的训练性能,识别率也为98.333%。


参考文献
[1]陈明忠.BP神经网络训练算法的分析与比较,2010.(3)
[2]张德丰.神经网络应用设计[M].北京:机械工业出版社,2009
[3]杨益君,古春生,朱广萍,蒋红芬,陈丹.LM神经网络在环境质量评估中的应用.江南大学学报.2010(4),9(2):213-216
[4]乔冰琴、常晓明.改进粒子群算法在 BP 神经网络拟合非线性函数方面的应用,2012
张文田.基于 BP 神经网络的参数迁移学习算法研究,2019
[5]刘栋.基于改进灰狼算法优化 BP 神经网络的研究和应用,2019
[6]付海兵、曾黄麟.BP神经网络的算法及改进,2012
[7]Rumelhart D.E.,Hinton G.E.,Williams R,J…Parall Distributed Processing-Explorations in the Microstructre of Congnition[J].MIT press,1986,page:318-362.
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: