梯度下降(Gradient Descent)原理与推导笔记
1. 什么是梯度下降?
梯度下降(Gradient Descent)是一种通过不断迭代来寻找函数最小值的优化方法。
它利用梯度(导数)表示的上升方向,通过沿梯度反方向移动参数,逐步逼近损失函数的最小处。
核心思想:
梯度指向上升最快方向,反方向就是下降最快方向。
2. 数学原理
目标是最小化损失函数:
J(\theta)
梯度下降的更新公式:
\theta := \theta - \alpha \cdot \frac{\partial J(\theta)}{\partial \theta}
其中:
- \alpha:学习率
- \frac{\partial J}{\partial \theta}:梯度
3. 梯度(Gradient)
对于二维函数:
J(\theta_1, \theta_2)
梯度向量为:
\nabla J =
\begin{bmatrix}
\frac{\partial J}{\partial \theta_1} \\
\frac{\partial J}{\partial \theta_2}
\end{bmatrix}
4. 推导实例:线性回归的梯度下降
4.1 模型
一元线性回归:
h_\theta(x) = \theta_0 + \theta_1 x
4.2 损失函数(均方误差 MSE)
J(\theta_0,\theta_1)
=
\frac{1}{2m}
\sum_{i=1}^{m}
(h_\theta(x^{(i)}) - y^{(i)})^2
4.3 求梯度
对 \theta_0 求偏导:
\frac{\partial J}{\partial \theta_0}
=
\frac{1}{m}
\sum_{i=1}^m
(h_\theta(x^{(i)}) - y^{(i)})
对 \theta_1 求偏导:
\frac{\partial J}{\partial \theta_1}
=
\frac{1}{m}
\sum_{i=1}^m
(h_\theta(x^{(i)}) - y^{(i)}) x^{(i)}
4.4 更新公式
\theta_0 := \theta_0 - \alpha \cdot
\frac{1}{m}
\sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})
\theta_1 := \theta_1 - \alpha \cdot
\frac{1}{m}
\sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)}) x^{(i)}
5. 梯度下降的三种常见形式
5.1 批量梯度下降(Batch GD)
每次迭代使用全部样本。
优点:稳定
缺点:大数据慢
5.2 随机梯度下降(SGD)
每次迭代只使用一个样本:
\theta := \theta - \alpha \cdot \nabla J(\theta; x^{(i)}, y^{(i)})
优点:快
缺点:波动大
5.3 小批量梯度下降(Mini-batch GD)
每次使用一小批样本(如 32、64)。
深度学习最常用的方法。
6. 梯度下降的使用场景
几乎所有需要最小化损失函数的模型都用梯度下降,包括:
- 线性回归
- 逻辑回归
- 神经网络(BP 反向传播)
- SVM
- 推荐系统矩阵分解
- k-means(更新中心点)
总之:只要是训练模型、找最优参数,梯度下降几乎都能用。
7. 简单示例(年龄 → 身高)
数据:
| 年龄 x | 身高 y |
|---|---|
| 10 | 140 |
| 12 | 150 |
| 15 | 165 |
假设初始参数为:
\theta_0 = 0\\
\theta_1 = 1\\
\alpha = 0.01
通过不断梯度下降,最终可能收敛到:
h(x) = 95 + 4.5x
8. 梯度下降的直观理解
- 梯度告诉你“上坡”方向
- 我们沿反方向“下坡”
- 学习率决定每次迈多大一步
- 多次迭代最终到达谷底(最小值)
9. 总结
梯度下降本质就是不断按如下方式更新参数:
\theta := \theta - \alpha \cdot \nabla J(\theta)
它是机器学习与深度学习中最核心的优化方法之一。