关键词:
人工神经网络
BP神经网络
比例因子
改进共轭梯度法
非二次模型
牛顿法
Levenberg–Marquardt算法
摘要:
本文的目的就是针对BP算法的这些局限性,如BP算法的学习速率较慢,网络会产生部分平坦区,网络权重的误差变化量在平坦区的变化几乎为零,致使整个网络的训练过程停止等,通过对算法结构及原理的分析,提出新的改进算法,使新算法较原算法在收敛速度和训练次数等方面有显著的提高。文中分别从标准权重更新公式中加入新的比例因子,并将训练中为常数的学习速率调整为随着训练逐渐改变的量,利用增益变化项可以修改本地梯度的同时给每次的迭代训练提供一个改进的梯度搜索方向,及基于拟牛顿法的Levenberg–Marquardt算法三个方向分别改进。 在反向传播算法中,学习速率的大小直接影响着整个网络的收敛速度。因为学习速率和梯度是权重连接数变化量的直接影响因素。但是,在标准BP算法中,学习速率在网络训练开始前已经初始化为一个常数。固定学习率的梯度下降法是低效的。因此提出了一种新的高效的方法,让学习速率适时调整,即第K次网络训练的学习速率与第K-1次的学习速率有关,并在权值变化公式中在原来两个影响因子(动量因子和学习速率因子)的基础上加入一个新的比例因子来调节每一次迭代所得到的输出和目标的差异,使网络的训练更准确,并且改善了标准算法存在的局限性问题。 BP算法中的激活函数使用信息增益量要比标准BP算法收敛速度快,然而,它没有注意到增益变化项可以修改本地梯度的同时给每次的迭代训练提供了一个改进的梯度搜索方向。这一事实让我们想到研究几个重要共轭梯度法公式,以提高类型算法的收敛性。研究表明,对搜索方向一个简单的修改也可以大幅度提高几乎所有主要的优化方法训练效率。共轭梯度法在精密或非精密的线搜索中能够全局收敛,但是这个搜索方向受当时条件的限制并不适用整个训练。任何使用梯度向量的方法,可以预计出最低点。因此这里提出一种基于非二次模型的改进共轭梯度法。所谓非二次模型就是首先定义一个关于向量X的二次函数,并将该函数的非线性放缩定义为新的激活函数,在此基础上修改网络的搜索方向,计算学习速率最优值,更新权重连接数,计算新的梯度向量,直到网络训练结束。 虽然牛顿法相对于神经网络算法中的标准算法其收敛速度更快更有效,但其中的Hessian矩阵计算复杂度较大,付出的成本较大,所以一般情况下不适用牛顿法作为神经网络的训练算法。而Levenberg-Marquardt法是在梯度下降法和牛顿法基础上演变而来的,这亦是迭代求解,通过在梯度相反方向的基础上选择参数提高预算的每一步。Levenberg-Marquardt方法采用了阻尼参数,增加了稳定并且可帮助收敛。 文中为了进一步验证新算法的有效性,利用Matlab神经网络工具箱对标准算法与新算法进行了仿真实验。并以具体问题为实例如数据仓库中的逻辑异或问题(这种模式分类不能用线性模型加以解决,而BP神经网络可以模拟任意的非线性问题且具有较强的映射能力),函数逼近问题(BP神经网络主要应用是函数映射、模式识别和函数逼近,且一个三层的BP网络可以完成任意的n维到m维的非线性映射)具体验证。 经过实验对比发现,本文中提出的新算法改善了标准算法中存在的部分问题且收敛速度较原算法显著提高,达到了预期的效果。