第十二章. 反向传播算法的变形

本文探讨了反向传播算法在实际应用中的不足,并介绍了两种优化方法:启发式改进和数值优化技术。启发式改进包括动量方法和平滑学习速度,而数值优化技术涉及共轭梯度反向传播和Levenberg-Marquardt算法。这些方法旨在提高多层神经网络的收敛速度和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        基本的反向传播算法对实际应用来说太慢了,快速算法的研究粗略分成两类:第一类包括那些使用启发式信息的技术,这源于对标准反向传播算法特定性能的研究。这些启发式技术包括可变的学习速度、使用动量和改变比例向量。第二类研究集中在标准数值优化技术,其实训练前向神经网络减小均方误差只是一个数值优化问题,可以从大量已有的数值算法中选择快速训练算法。

        SDBP:称基本的反向传播算法为最速下降反传算法(SDBP, Steepest Descent Back Propagation)

12.2.1 BP算法的缺点
        SDBP是LMS算法的推广,在使用单层线性网络时二者等价,但对于多层网络,SDBP特性完全不同,这是由于单层线性网络的均方误差是二次函数,而多层不是。
        多层网络有一个特性:对称性。对称性使0称为性能曲面的一个鞍点。所以,设置SDBP网络初始参数时不能设置为0(因为原点趋向于鞍点),也不能设置过大(因为在远离优化点的位置,性能曲面变得十分平坦),可以选择小的随机值作初始值。
        批处理:整个训练集都出现后,网络才进行更新。每个训练例子的梯度被平均在一起,以获得更精确的梯度估计。
        由于存在多个局部极小点,所以不能期望每组初始值都收敛到相同的参数值,只能期望获得同样的最小误差。
        通过迭代次数-均方误差曲线图可以看出,SDBP的典型曲线是——具有长时间的慢进展和短时间的快进展。
        提高收敛性的方法:
                1. 调整学习速度,平坦区域加大,斜率增加时减小。
                2. 平滑轨迹:算法开始发散时,在窄谷内震荡,若用平均改变参数的方法过滤轨迹,可以平滑掉震荡并产生平滑轨迹。

12.2.2 BP算法的启发式改进
        方法一    动量方法:平滑掉轨迹中的震荡。可以采用低通滤波器。
        参考一阶滤波器: y[k+1] = gama * y[k] + (1-gama) * w[k], w[k]为输入,y[k]为滤波器输出,gama为动量系数 0<=gama<1。
                SDBP的参数更新为:
                        delta_W[m][k] = -alpha * s[m] * a[m-1]' , delta_b[m][k] = -alpha * s[m]
                更改为 动量改进( MOBP )公式:
                        delta_W[m][k] = gama * delta_W[m][k-1] - (1-gama) * alpha * s[m] * a[m-1]' , delta_b[m][k] = gama * delta_b[m][k-1] - (1-gama) * alpha * s[m]
        使用了动量项后,可以在维持算法稳定的前提下使用更高的学习速度,动量的另一个特征是当轨迹进入某个一致方向后可以加速收敛。

        方法二    可变的学习速度:
        
介绍一种直观的  可变学习速度方向传播算法(Variable Learning Rate Backpropagation, VLBP),规则如下:
                1. 若均方误差(在整个训练集上)在权值更新后增加了,且超过了某个设置的百分数 eps (典型值1% ~ 5%),则权值更新被取消,学习速度乘以因子rou ( 0<rou<1),并且动量系数gama(如果存在)设置成0。
                2. 若均方误差在权值更新后缩小,则权值更新被接受,且学习速度乘以一个因子 yita ( yita>1),如果gama被设置为0则恢复到以前的值。
                3. 若均方误差在权值更新后增加,且小于eps,则权值更新被接受,学习速度保持不变,如果gama被设置为0则恢复到以前的值。
如果gama被设置为0则恢复到以前的值。

        方法三    Quickprop算法:假设误差曲面是抛物面且在极小点附近是向上凹的,且每个参数的影响被认为是独立的。

        对SDBP进行启发式改进的优点是对某些问题可以提高收敛速度。但是又有两个主要缺点:1. 这些改进需要设置一些参数(eps, rou, yita等),而SDBP只需要一个学习速度参数,算法的性能对这些参数的改变往往十分敏感,而且参数的选择还是问题相关的。 2. 对某些SDBP能找到解的问题却不能收敛。越复杂的算法这些问题越容易发生。

12.2.3 数值优化技术

        方法一    共轭梯度反向传播算法(conjugate gradient backpropagation, CGBP):共轭梯度算法是不能直接用于一般神经网络的训练的,因为性能指数不是二次函数,导致1) 不能用原先公式沿直线最小化函数,2) 通常不能在有限步内得到精确的最小值。解决方法:
        1). 对于线性搜索,分为 区间定位 和 区间缩小。
                区间定位:确定极小值在[ ai , bi ]之间
                区间缩小:根据搜索算法缩小[ ai, bi ]的范围
        2). 由于算法一般不能再n此迭代内收敛,只需多运行几个周期。
        CGBP需要比其它算法都少的迭代次数收敛,但是它每一步迭代需要的计算比其它算法多。尽管如此,它仍是多层网络批处理训练算法中最快的方法之一

        方法二    Levenberg-Marquardt算法:牛顿法的变形,用以最小化那些作为其他非线性函数平方和的函数。
        高斯-牛顿方法:F(x)为平方和函数 F(x) = v(x)' * v(x), 则x[k+1] = x[k] - inv(J(x[k])' * J(x[k])) * J(x[k])' * v(x[k]), J(x[k])为v(x)的雅可比矩阵。
        高斯-牛顿方法比标准牛顿法的优点是不需要计算二阶导数。
        由于J‘ * J 可能不可逆,所以改为 (J' * J + u* I ),增加u即可保证正定性,从而可逆。
        Levenberg-Marquardt算法: x[k+1] = x[k] - inv(J(x[k])' * J(x[k]) + u[k] * I) * J(x[k])' * v(x[k])
        当u[k]增加时,接近于有小的学习速度的最速下降法,而当u[k]下降到0时,就是高斯-牛顿方法。
                先取一个很小的u[k](如0.01),若F(x)不减少,则将u[k]乘以一个大于1的因子后重新计算,直到某一步产生更小的F(x),则u[k]在下一步除以一个大于1的因子。这个算法提供了在牛顿法和保证收敛的最速下降法之间的折衷。优点是对于中等数量的网络参数,LMBP是最快的神经网络训练算法。缺点是需要存储近似赫森矩阵J' * J,当参数数目很大时,存储空间巨大。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值