问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

机器学习中的局部最小值与鞍点:Hessian矩阵与动量法详解

创作时间:
作者:
@小白创作中心

机器学习中的局部最小值与鞍点:Hessian矩阵与动量法详解

引用
1
来源
1.
https://xn--8mr985eba830aiye.vip/p/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%9D%8E%E5%AE%8F%E6%AF%85%E7%AC%94%E8%AE%B0-4%E5%B1%80%E9%83%A8%E6%9C%80%E5%B0%8F%E5%80%BC%E4%B8%8E%E9%9E%8D%E7%82%B9/

在机器学习的优化过程中,局部最小值和鞍点是常见的挑战。本文将详细介绍如何通过Hessian矩阵和动量法来逃离鞍点,帮助读者深入理解这些优化技术的核心原理和具体应用。

Critical Point情况

  1. 局部最小值(local minima)。如果是卡在local minima,那可能就没有路可以走了,因为四周都比较高,你现在所在的位置已经是最低的点,loss最低的点了,往四周走 loss都会比较高,你会不知道怎么走到其他地方去。
  2. 鞍点(saddle point)。(如图可看出,左右是比红点高,前后比红点低,红点既不是local minima,也不是local maxima的地方)如果是卡在saddle point,saddle point旁边还是有其他路可以让你的loss更低的,你只要逃离saddle point,你就有可能让你的loss更低。

确定Critical Point类型

使用泰勒级数近似
$$ L(\theta)\approx L(\theta ^{’})+L(\theta - \theta^{’})g+\frac{1}{2}(\theta-\theta^{’})^{T}H(\theta-\theta ^{’}) $$

计算Hessian矩阵的特征值

  • 正定(所有特征值 > 0)→局部极小值
  • 负定(所有特征值 < 0)→局部极大值
  • 不定(特征值有正有负)→鞍点
  • 半正定/半负定(存在零特征值)→需更高阶分析(如退化临界点)

具体例子

  1. 案例1:正定Hessian → 局部极小值
    $$ H=\begin{bmatrix} 2 & 1 \ 1 & 2 \end{bmatrix} $$
  • 特征值:3和1(均 > 0)→ 正定
  • 结论:局部极小值
  1. 案例2:负定Hessian → 局部极大值
    $$ H=\begin{bmatrix} -2 & 0 \ 0 & -2 \end{bmatrix} $$
  • 特征值:-2 和 -2(均 < 0)→ 负定
  • 结论:局部极大值。
  1. 案例3:不定Hessian → 鞍点
    $$ H = \begin{bmatrix} 2 & 0 \ 0 & -2 \end{bmatrix} $$
  • 特征值:2 和 -2(有正有负)→ 不定
  • 结论:鞍点

逃离Saddle Point

利用Hessian矩阵逃离鞍点(Saddle Point)

核心思想:通过Hessian矩阵的负特征值对应的特征向量方向更新参数,使优化方向逃离鞍点。

具体步骤

  • 1. 检测鞍点

  • 计算梯度$\nabla f$,若$||\nabla f|| \approx 0$,则可能为临界点

  • 计算Hessian矩阵$H$,并分析其特征值

  • 若存在负特征值,则为鞍点。

  • 2. 找到负曲率方向

  • 对Hessian矩阵进行特征分解,找到最小特征值$\lambda_{\min} < 0$及其对应的特征向量$v_{\min}$。

  • 3. 沿负曲率方向更新参数

  • 选择步长$\eta$(通常与学习率相关),沿$v_{min}$方向更新参数:$\theta_{new}=\theta_{old}+\eta v_{min}$

  • 验证方向:通过计算$\theta_{new}=\theta_{old}+\eta v_{min}$和$\theta_{new}=\theta_{old}-\eta v_{min}$,选择使函数值下降的方向

  • 4. 迭代直至逃离

  • 重复步骤1-3,直到梯度不再接近0或Hessian矩阵变为正定(局部最小值)

利用momentum逃离鞍点

动量法的基本原理

动量法(Momentum)是梯度下降的改进版本,通过积累历史梯度方向加速收敛并抑制振荡。其更新公式为:
$$ v_t = \beta v_{t-1} + (1-\beta) \nabla f(\theta_t) $$
$$ \theta{t+1} = \theta_t - \eta v_t $$

  • 动量系数:$$\beta \in [0, 1)$$,通常取0.9或0.99。
  • 核心思想:梯度方向被赋予“惯性”,在平坦区域(如鞍点)积累动量,帮助逃离。

动量如何帮助逃离鞍点?

鞍点的特征:梯度$$\nabla f \approx 0$$,但Hessian矩阵存在负曲率方向

  • 梯度下降的缺陷:在鞍点附近,梯度接近零,参数更新停滞。
  • 动量的优势
  1. 历史梯度累积:即使当前梯度为零,动量项$$v_t$$仍可能保留之前方向的惯性。
  2. 噪声放大:随机梯度(如SGD的小批量噪声)会被动量放大,打破对称性。
  3. 负曲率方向探索:动量推动参数沿历史梯度方向移动,可能进入负曲率区域。

动量逃离鞍点的数学解释

假设在鞍点附近,梯度方向存在随机扰动$$\epsilon_t$$(如小批量噪声):
$$ \nabla f(\theta_t) = \epsilon_t \quad (\mathbb{E}[\epsilon_t] = 0, \text{Var}(\epsilon_t) = \sigma^2) $$
动量更新公式变为:
$$ v_t = \beta v_{t-1} + (1-\beta) \epsilon_t $$

  • 动量积累:经过$$k$$步后,动量近似为:
    $$ v_t \approx (1-\beta) \sum_{i=0}^{k} \beta^{k-i} \epsilon_i $$
  • 逃离机制:噪声的加权和可能指向负曲率方向,使参数突破鞍点。

具体步骤与算法

步骤1:初始化动量

设置初始动量$$v_0 = 0$$,选择动量系数$\beta$和学习率$\eta$。

步骤2:迭代更新

对每次迭代$t$:

  1. 计算当前梯度$\nabla f(\theta_t)$(可含噪声,如SGD)。
  2. 更新动量:
    $$ v_t = \beta v_{t-1} + (1-\beta) \nabla f(\theta_t) $$
  3. 更新参数:
    $$ \theta_{t+1} = \theta_t - \eta v_t $$

步骤3:逃离鞍点的动态

  • 鞍点附近:梯度$\nabla f \approx 0$,但动量$v_t$可能因历史梯度或噪声不为零。
  • 持续更新:动量推动参数离开平坦区域,进入梯度较大的区域。

实验案例:动量法逃离二元鞍点

目标函数
$$ f(x, y) = x^2 - y^2 $$

  • 鞍点:$(0, 0)$,Hessian矩阵特征值为$2$和$-2$。

参数设置

  • 初始点:$(0.1, 0.1)$,学习率$\eta = 0.1$,动量系数$\beta = 0.9$。

迭代过程

  1. 第1步:梯度$\nabla f = (0.2, -0.2)$,动量$v_1 = 0.1 \times (0.2, -0.2)$,更新后点$(0.08, 0.12)$。
  2. 第2步:梯度$\nabla f = (0.16, -0.24)$,动量$v_2 = 0.9v_1 + 0.1 \times (0.16, -0.24)$,更新后点$(0.064, 0.144)$。
  3. 持续迭代:动量在$y$方向逐渐积累,推动逃离鞍点区域。

动量法的理论支持

  • 收敛性证明:在凸函数中,动量法可加速收敛(Nesterov加速)。
  • 逃离鞍点能力
  • 随机梯度(SGD):噪声+动量可概率性逃离鞍点(Ge et al., 2015)。
  • 确定性梯度:动量法需依赖Hessian的负曲率方向隐含在历史梯度中。

与其他方法的对比

方法
逃离鞍点机制
计算成本
适用场景
动量法
历史梯度惯性 + 噪声放大
低(一阶)
高维、随机优化(如深度学习)
Hessian矩阵法
显式利用负曲率方向
高(二阶)
低维、确定性优化
SGD + 扰动
纯随机噪声探索
低(一阶)
大规模非凸优化

实际应用技巧

  • 动量系数选择:$\beta$越大,惯性越强,但可能“冲过头”。常用$\beta=0.9$。
  • 与自适应方法结合:如Adam(动量+RMSProp),平衡方向与步长。
  • 学习率调整:在鞍点附近可短暂增大学习率以加速逃离。

优缺点分析

优点
缺点
低计算成本,适合高维问题。
无显式二阶信息,依赖噪声或历史梯度。
天然抗噪声,适合随机优化。
对某些鞍点(如高阶退化点)可能失效。
易与其他优化器结合(如Adam)。
需调参($\beta$, $\eta$)。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号