优化算法中的梯度下降法与"擦玻璃"之间的联想
考虑简单的无约束二次优化问题
其中 是对称的正定矩阵。我们设 是 在迭代点 处的梯度。由于这是一个严格凸的优化问题,其极值点就是全局最优点,记为 。
为了求解上述问题
牛顿法的迭代格式:
其中 是 在迭代点 处的 Hessian 矩阵。针对上述优化问题,牛顿法可以实现一步寻优。但是一般函数的 Hessian 难以得到。
梯度法的迭代格式:
其中 称为步长, 为下降方向。
观察牛顿法与梯度法的形式,我们知道在一个好的梯度方法中,其标量 应该具备反映(或逼近) 的能力,也就是说 应该具有拟牛顿的性质。
最速下降方法:
反映当前梯度 关于 的瑞丽商, 逼近 的某一特征值,具有拟牛顿的性质。但是 会使迭代点走"之字"步(zigzag),( 与 相互正交),造成最速下降法的收敛速度变慢,尤其受 的条件数的影响。为了避免这种 "zigzag" 现象的发生,Barzilai-Borwein (BB) 采用下面的方法。
BB方法:
这两者分别是下面最小二乘问题的解
其中 , ,且有 。值得注意的是:最速下降法是单调的,而BB方法是非单调的。我们可以看到在最小二乘意义下, 也具有拟牛顿的性质。(梯度之差与位置之差的比,这就是在反映二阶信息!) 对比最速下降法与BB方法,BB1步长相当于最速下降步的向后一步延迟。(学长把学妹,一般比较好?) 在实践中,相比最速下降法,BB的数值表现非常卓越。并且由于其简单的操作,其受到了优化界的广泛关注。
下面集中考察 BB 方法。首先观察下面的一系列不等式(由柯西-施瓦茨不等式得到):
前两个不等式等价于
由此,我们可以看到在众多的拟牛顿(BB类)步长中, 是最小的那个。数值实验也验证了这一点,小的 产生大的步长。如果待优化的问题的条件比较良好,这种大步长会使迭代点快速收敛到最优解 。对应地, 的收敛速度可能相对慢些。如果待优化的问题的条件比较差, 对应的大步长可能影响算法的收敛速度(在坏条件下,大步长可能会产生更加剧烈的非单调现象),下面我们进行简单地分析这种现象。
在梯度法中,我们的目标是消去梯度的元素,直到达到最优性条件
在 BB 方法中,由迭代格式,我们知道
从上面的关系可以看到,如果 逼近 的最大特征值,那么梯度长度就会下降;如果 逼近 的最小特征值,那么梯度长度可能会上升。
考察 的大小与梯度长度下降和上升的关系,重要的前提是梯度的分量都在同一个数量级(*)。
由于 是对称正定的,所以一定可以对角化,不妨设
其中 。则 。结合 , 我们可以知道 是一直单调下降的,但是 , 可能在某些时候是非单调的。如果 在上一次迭代靠近 ( 的第 个分量以及其附近分量的元素下降),而在当前迭代一下子远离了 (向 靠近),由 ,我们知道:这种情况极有可能会使得 的第 个分量以及其附近分量的元素又重新变大,也就是说如果 在连续迭代中的变化幅度很大(从大突然变到一个不合理的小),就会使得前后的效果相互抵消。由于 总是倾向于产生较小的值,所以刚刚描述的现象,在 中极有可能发生。
注意:这里不是不允许 靠近 ,而是希望连续的迭代中 最好不要跳跃太大。
如何避免这种现象的发生呢?
我的答案是:控制连续迭代中, 的变化幅度。如果 在上一次迭代靠近 ( 的第 个分量以及其附近分量的元素下降),那么在当前迭代,我们应该尽量控制 仍然在 附近,直到 的第 个分量以及其附近分量的元素消失殆尽,可以忽略了,这一局部任务可以认为完成了。(此时,这些分量的元素与 前面分量元素的数量级就不在同一个数量级)。下一步的局部任务是消去 的剩余分量。仍然采用这种局部打法。(彻底打扫完一处战场,才能转移到下一处战场进行打扫。) 我想这就是 方法显著优于 BB 方法的通俗解释。 方法的形式如下:
其中 ,, 是参数。该策略表示,当阈值条件满足时,在当前代 以及其往前数 代中,选出最大的 。公式 中的阈值 的情形就是表示,要把 的当前分量元素彻底消完(局部任务干完、干好);当阈值条件不满足了,说明当前分量元素已经消完(局部任务干好了),可以转移到其他任务--消灭 的剩余分量元素。由于 倾向于逼近 (朝 方向跑,这也是转移阵地的动力来源吧!) 当 跑到一个新位置后,局部地消灭对应的 的分量元素,也就是 (2) 中 的策略。直到最后, 只剩下 分量附近的元素还未消失,当 再次逼近 时,采用局部消去策略,很快就把剩余的梯度分量消除了。达到最优性条件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具