1. 概述

在本文中,我们将对比两种经典的函数最小值求解方法:

  • 梯度下降(Gradient Descent),广泛应用于机器学习领域;
  • 牛顿法(Newton's Method),更多出现在数值分析领域。

通过本文,你将了解在什么场景下更适合使用其中某一种方法进行优化。

2. 梯度下降

2.1 逐步逼近最小值

梯度下降是一种迭代优化算法,用于寻找函数的局部最小值。我们从一个连续、可导且凸函数开始,并选择一个离最小值足够近的初始点 \theta_0

函数图像,显示初始点和梯度方向

然后,通过不断沿着梯度的反方向更新参数,逐步逼近局部最小值。

2.2 使用前提

要使用梯度下降,需满足以下条件:

✅ 函数连续、可导
✅ 函数为凸函数
✅ 梯度满足 Lipschitz 连续(即存在常数 k,使得 |f'(x)| < k)

满足条件后,我们就可以使用如下更新公式:

$$ \theta_{n+1} = \theta_n - \alpha \nabla f(\theta_n) $$

其中:

  • \alpha 是学习率
  • \nabla f(\theta_n) 是当前点的梯度

✅ 学习率选择得当,迭代过程可以逼近任意精度的最小值
❌ 学习率过大可能导致不收敛
⚠️ 梯度为 0 时会陷入局部最优或鞍点

3. 牛顿法

3.1 原理简述

牛顿法与梯度下降不同,它本质上是求解函数根的方法,而不是直接求极值。因此,我们通常对目标函数的导数使用牛顿法来寻找极值点。

也就是说,我们不是求 f(x) = 0,而是求:

$$ f'(x) = 0 $$

这就意味着我们要求目标函数是二阶可导的。

3.2 数学定义

f(x) 为成本函数,我们定义:

  • f'(x):一阶导数
  • f''(x):二阶导数

若初始点 x_n 足够接近最小值,则下一步更新公式为:

$$ x_{n+1} = x_n - \frac{f'(x_n)}{f''(x_n)} $$

这个公式本质上是在用线性近似 f'(x) 来逼近零点。

4. 核心区别对比

对比维度 梯度下降 牛顿法
是否依赖超参数 ✅ 需要学习率 \alpha ❌ 不依赖学习率
对函数可导性要求 ✅ 一阶可导即可 ✅ 需要二阶可导
收敛速度 ⚠️ 通常较慢(线性) ✅ 快速收敛(二阶)
对初始点敏感度 ⚠️ 对初始点不敏感 ✅ 对初始点敏感
遇到驻点时表现 ⚠️ 停止更新但不报错 ❌ 可能除零错误导致程序崩溃

牛顿法收敛更快,但适用条件更苛刻
梯度下降更通用,但容易陷入局部最优

5. 总结

本文我们对比了两种常见的优化方法——梯度下降和牛顿法:

  • 梯度下降依赖学习率,适用于一阶可导函数,收敛速度较慢但稳定
  • 牛顿法无需学习率,要求二阶可导,收敛速度快但对函数和初始点要求高

选择建议

  • 如果函数简单、可二阶导且初始点接近最优解,优先使用牛顿法
  • 如果是高维、非凸或黑盒函数,推荐使用梯度下降或其变体(如 Adam、RMSProp)

选择合适的优化算法,往往能显著提升模型训练效率和最终性能。


原始标题:Gradient Descent vs. Newton's Gradient Descent