梯度下降法 (Gradient Descent)的数学原理。
1. 背景:优化问题
在机器学习和统计建模中,我们常常需要找到一个模型的参数,使得 损失函数 (Loss Function) 最小。
比如线性回归的损失函数(均方误差 MSE):
\[J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2
\]
其中:
- \(\theta\):参数(如权重 \(w\)、偏置 \(b\))
- \(h_\theta(x^{(i)})\):预测值 \(\hat{y}^{(i)}\)
- \(y^{(i)}\):真实值
- \(m\):样本数量
目标:
\[\min_\theta J(\theta)
\]
2. 梯度的含义
在多元函数中,梯度(gradient) 是偏导数组成的向量:
\[\nabla J(\theta) = \left( \frac{\partial J}{\partial \theta_1}, \frac{\partial J}{\partial \theta_2}, \cdots, \frac{\partial J}{\partial \theta_n} \right)
\]
直观理解:
- 梯度的方向 = 函数上升最快的方向。
- 负梯度的方向 = 函数下降最快的方向。
所以,我们要最小化函数,就朝 负梯度 方向走。
3. 梯度下降的迭代公式
基本更新规则:
\[\theta := \theta - \alpha \nabla J(\theta)
\]
其中:
- \(\theta\):参数向量
- \(\alpha\):学习率(step size),控制每一步走多远
- \(\nabla J(\theta)\):损失函数对参数的梯度
4. 一维情况直观理解
假设函数只有一个参数 \(\theta\),更新公式就是:
\[\theta := \theta - \alpha \frac{dJ}{d\theta}
\]
- 如果 \(\frac{dJ}{d\theta} > 0\),说明函数在该点是上升趋势,要往左走(减小 \(\theta\))。
- 如果 \(\frac{dJ}{d\theta} < 0\),说明函数在该点是下降趋势,要往右走(增大 \(\theta\))。
这样逐步迭代,就会逼近函数的最小值。
5. 梯度下降的几种形式
-
批量梯度下降 (Batch GD)
每次使用所有样本来计算梯度。稳定但计算量大。 -
随机梯度下降 (SGD)
每次只用一个样本来更新参数。速度快,但震荡大。 -
小批量梯度下降 (Mini-batch GD)
每次使用一小批样本更新。结合了批量和随机的优点,是最常用的方法。
6. 学习率 \(\alpha\) 的影响
- \(\alpha\) 太小:收敛慢。
- \(\alpha\) 太大:可能震荡甚至发散。
- 现代优化常用 自适应学习率算法(如 Adam、RMSProp)来调节。
7. 收敛与局部极小值
- 在凸函数(如线性回归的 MSE)中,梯度下降一定会收敛到全局最小值。
- 在非凸函数(如深度神经网络)中,可能收敛到局部最小值或鞍点,但实践中仍然效果很好。
✅ 总结
梯度下降法的核心思想:
- 计算目标函数对参数的梯度;
- 沿着负梯度方向更新参数;
- 不断迭代,直到损失函数收敛或达到迭代上限。
公式核心:
\[\theta := \theta - \alpha \nabla J(\theta)
\]

浙公网安备 33010602011771号