1. 概述
在本文中,我们将对比两种经典的函数最小值求解方法:
- 梯度下降(Gradient Descent),广泛应用于机器学习领域;
- 牛顿法(Newton's Method),更多出现在数值分析领域。
通过本文,你将了解在什么场景下更适合使用其中某一种方法进行优化。
2. 梯度下降
2.1 逐步逼近最小值
梯度下降是一种迭代优化算法,用于寻找函数的局部最小值。我们从一个连续、可导且凸函数开始,并选择一个离最小值足够近的初始点 :
然后,通过不断沿着梯度的反方向更新参数,逐步逼近局部最小值。
2.2 使用前提
要使用梯度下降,需满足以下条件:
✅ 函数连续、可导
✅ 函数为凸函数
✅ 梯度满足 Lipschitz 连续(即存在常数 ,使得
)
满足条件后,我们就可以使用如下更新公式:
$$ \theta_{n+1} = \theta_n - \alpha \nabla f(\theta_n) $$
其中:
是学习率
是当前点的梯度
✅ 学习率选择得当,迭代过程可以逼近任意精度的最小值
❌ 学习率过大可能导致不收敛
⚠️ 梯度为 0 时会陷入局部最优或鞍点
3. 牛顿法
3.1 原理简述
牛顿法与梯度下降不同,它本质上是求解函数根的方法,而不是直接求极值。因此,我们通常对目标函数的导数使用牛顿法来寻找极值点。
也就是说,我们不是求 ,而是求:
$$ f'(x) = 0 $$
这就意味着我们要求目标函数是二阶可导的。
3.2 数学定义
设 为成本函数,我们定义:
:一阶导数
:二阶导数
若初始点 足够接近最小值,则下一步更新公式为:
$$ x_{n+1} = x_n - \frac{f'(x_n)}{f''(x_n)} $$
这个公式本质上是在用线性近似 来逼近零点。
4. 核心区别对比
对比维度 | 梯度下降 | 牛顿法 |
---|---|---|
是否依赖超参数 | ✅ 需要学习率 |
❌ 不依赖学习率 |
对函数可导性要求 | ✅ 一阶可导即可 | ✅ 需要二阶可导 |
收敛速度 | ⚠️ 通常较慢(线性) | ✅ 快速收敛(二阶) |
对初始点敏感度 | ⚠️ 对初始点不敏感 | ✅ 对初始点敏感 |
遇到驻点时表现 | ⚠️ 停止更新但不报错 | ❌ 可能除零错误导致程序崩溃 |
✅ 牛顿法收敛更快,但适用条件更苛刻
❌ 梯度下降更通用,但容易陷入局部最优
5. 总结
本文我们对比了两种常见的优化方法——梯度下降和牛顿法:
- 梯度下降依赖学习率,适用于一阶可导函数,收敛速度较慢但稳定
- 牛顿法无需学习率,要求二阶可导,收敛速度快但对函数和初始点要求高
选择建议:
- 如果函数简单、可二阶导且初始点接近最优解,优先使用牛顿法
- 如果是高维、非凸或黑盒函数,推荐使用梯度下降或其变体(如 Adam、RMSProp)
选择合适的优化算法,往往能显著提升模型训练效率和最终性能。