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

在神经网络中,训练函数是重要组成部分,也是较为复杂的概念。对于什么问题,什么样的数据模型,该用什么样的训练函数对训练后的结果起着至关重要的作用。常用的训练函数有: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,从上面的图中我们可以看出,尼尔森算法模型在ρ的整个定义域内都是连续的,这就很好地弥补了马奎特算法模型的缺点。
这里简单讨论一下基于阻尼法的步长h的求法。
通过上文我们已知
在这里插入图片描述
将数学公式转换成数学语言,即求函数L(h)+1/2μhTh取得最小值时h的取值。由高等数学的知识我们可以通过对函数求一阶导数来实现问题的求解。首先,我们令
在这里插入图片描述
所以h就是下列函数的解:
在这里插入图片描述
这里对h的求导用到了矩阵分析的相关概念和公式,这里不再展开讲解。
由于
在这里插入图片描述
我们再对F(x+h)求一阶导数,带入到ψu’的表达式中,得到,
在这里插入图片描述
由于我们要求L(h)取得最小值时所对应的h,所以这里海塞矩阵H=F’’(x)是正定的对阵矩阵,从而H+μI也是正定的对阵矩阵,这里I是单位矩阵。对于海塞矩阵H=F’’(x)为什么是正定矩阵,这里给出简单的证明:
F(x+h)的泰勒展开式如下:
在这里插入图片描述
我们假设H是正定的,故存在变量δ>0使得下式成立:
在这里插入图片描述
从上式我们可以看出,||h||非常小,以至于F(x+h)的泰勒展开式等式右边第三项完全取决于第二项。所以,当H正定的时候,求解得到的h一定是L(h)取得最小值时所对应的点。我们将g=F’(x),H=F’’(x)带入下式,
在这里插入图片描述
得到关于h的方程:
在这里插入图片描述
求解以上方程得到步长h。
当μ值较大时,我们又可以得到关于h的近似解:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值