基于梯度下降法的置信域法和阻尼法

在神经网络中,训练函数是重要组成部分,也是较为复杂的概念。对于什么问题,什么样的数据模型,该用什么样的训练函数对训练后的结果起着至关重要的作用。常用的训练函数有:1.梯度下降法;2.有动量的梯度下降法;3.拟牛顿法;4.列文伯格-马奎特算法。
对于非线性的优化这些方法都是通过迭代来进行的,从初始起点x0逐渐逼近满足条件的点x*。大多数的训练函数都需要满足以下的下降条件:
基于梯度下降法的置信域法和阻尼法
我们假设函数F在定义域内是可微的并且是平滑的,那么我们通过泰勒展开式可以得到:
基于梯度下降法的置信域法和阻尼法
这里h是下降的步长,||h||指的是向量h的2范数,即
基于梯度下降法的置信域法和阻尼法
其中g是梯度,
基于梯度下降法的置信域法和阻尼法
H是海塞矩阵,
基于梯度下降法的置信域法和阻尼法
通过泰勒展开式我们发现当||h||很小时,O(||h||^3)是 ||h||^3的高阶无穷小,此时泰勒展开式又可以写成如下形式:
基于梯度下降法的置信域法和阻尼法
函数L(h)只是当h很小的时候对于F(x+h)的近似。对于h的确定先来介绍两种方法,一种是基于置信域,另一种是基于阻尼方法。
在置信域中,我们假设存在一个正数△,然后构建一个以x为圆心,△为半径的圆域,于是我们将||h||限定在整个圆域内,关于h的确定方法如下所示:
基于梯度下降法的置信域法和阻尼法
基于阻尼方法的h确定法如下:
基于梯度下降法的置信域法和阻尼法
阻尼系数μ≥0。而
基于梯度下降法的置信域法和阻尼法
是用来惩罚较大的步长h。然而下降法算法的核心就在于h的确定以及如何更新步长h,使得变量x能够快速准确地逼近最优解。在基于上述两种方法和下降条件的限制,有如下伪代码:
基于梯度下降法的置信域法和阻尼法
如果F(x+h)≥F(x),代码什么都不会做,除非已经逼近最优解。那么现在问题来了,我们该如何确定△或者μ呢?这里介绍两种方法,一种是马奎特在1963年提出的,另一种是尼尔森在1999年提出的方法。
首先我们引入增益比的概念,用增益比来确定什么情况下给△或者μ如何进行更新操作。
基于梯度下降法的置信域法和阻尼法
如果分子为负数,那么显然不满足下降条件,此时步长h并不是下降趋势,言外之意就是h过大了我们应该想办法减小h。在置信域中,我们通过圆域的半径长度△来限定步长h,下面的更新方法被广泛采用:
基于梯度下降法的置信域法和阻尼法
所以,如果ρ<1/4,我们决定缩小圆域的半径△,减小步长h;如果ρ>3/4,我们决定扩大圆域的半径△,增大步长h。然而置信域算法对于0.25-0.75之间的微小变化值并不怎么敏感。这就造成ρ在0.25的右邻域和0.75的左邻域突然变化时,会产生突变,产生振荡,从而减缓收敛速度。基于阻尼方法,马奎特提出了如下的算法模型:
基于梯度下降法的置信域法和阻尼法
μ是阻尼系数,当ρ<1/4时,我们通过增大阻尼系数来减小步长h;当ρ>3/4时,我们通过减小阻尼系数来增大步长h。但是通过上面的算法模型我们可以看出,马奎特算法模型依然存在第一种方法的弊端,即在0.25-0.75之间,μ值并不连续,这很可能会产生振荡减缓收敛速度。然而,尼尔森提出的算法模型胜过马奎特的算法模型。
基于梯度下降法的置信域法和阻尼法
基于梯度下降法的置信域法和阻尼法
上图中,虚线代表马奎特算法模型,实线代表尼尔森算法模型。
基于梯度下降法的置信域法和阻尼法
对于v和μ我们分别将其初始化为2和1,从上面的图中我们可以看出,尼尔森算法模型在ρ的整个定义域内都是连续的,这就很好地弥补了马奎特算法模型的缺点。