启程即是少年
Published on 2025-12-07 / 9 Visits
0
0

「机器学习二」梯度下降

梯度下降(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)

它是机器学习与深度学习中最核心的优化方法之一。


Comment