AI 如何学习:通过午夜烟雾弥漫的 Jollof 冒险解释梯度下降
Source: Dev.to
现代世界的许多方面由人工智能驱动
人工智能(AI)如今推动着我们生活的无数层面,显著加速了人类文明的发展。
- 更快的疾病检测
- 自动化决策
- 医学影像的突破
- AI 在律所和司法系统中的悄然快速采用
- 重塑农业的未来
尽管取得了巨大的进步,仍有许多人不明白 AI 的卓越来源。AI 能够识别错误并迭代改进的能力的确令人惊叹。
本文将温柔地手把手为您解释 AI 与机器学习背后的真正超级力量:一种名为 梯度下降 的简单数学算法。
什么是梯度下降?
梯度下降是一种通用的数学算法,能够为非常广泛的问题找到最佳解。在机器学习中,它通过快速更新参数来迅速最小化损失(或代价)函数。
用非常简单的话来说,梯度下降帮助 AI 确定 它有多错误 以及 如何变得更少错误。
为了理解梯度下降、它的复杂性以及它的目的,让我们“深入内部”,像 AI 模型一样推理。
午夜烟熏乔洛夫冒险
想象一下,你正参加感恩节晚餐。你的妈妈做了一道特别的、让味蕾愉悦的尼日利亚乔洛夫饭。夜晚很完美,你与兄弟姐妹重新联络感情,然后大家都上床睡觉。
深夜时分,你的大脑和舌头仍然渴望更多。那烟熏的乔洛夫饭如此诱人,以至于你在几英尺之外都能闻到它的味道。
你努力克制,但最终还是起身前往厨房——全黑的状态下。你不想被抓住,也不想绊倒任何东西。
将房子映射为图
把房子地板想象成坐标纸:
| 轴 | 含义 |
|---|---|
| X‑轴 | 左右位置 |
| Y‑轴 | 前后位置 |
你的所在位置是坐标 ((x, y))。
你从点 ((1, 1)) 开始。
损失函数
我们需要一种方法来衡量我们离乔洛夫米饭(厨房)有多近。
设厨房位于 ((3, 4))。
一个简单的距离公式是
[ \text{Distance} = \sqrt{(x-3)^2 + (y-4)^2} ]
为方便起见,我们使用 平方距离 作为我们的损失:
[ \boxed{L(x, y) = (x-3)^2 + (y-4)^2} ]
损失告诉我们有多“错误”:损失越高,离厨房就越远。我们的目标是 尽可能降低损失。
初始损失
在 ((1, 1)):
[ L(1,1) = (1-3)^2 + (1-4)^2 = (-2)^2 + (-3)^2 = 4 + 9 = 13 ]
我们离厨房相当远。
测试方向(手动微调)
| 新位置 | 新损失 | 变化 |
|---|---|---|
| ((1.001, 1)) | ((1.001-3)^2 + (1-4)^2 = 3.996 + 9 = 12.996) | (-0.004) |
| ((1, 1.001)) | ((1-3)^2 + (1.001-4)^2 = 4 + 8.994 = 12.994) | (-0.006) |
两个微小的移动都降低了损失,表明我们正朝着正确的方向前进。
数学捷径(导数)
与其测试每一个方向,我们计算 梯度——偏导数的向量。
对于
[ L(x, y) = (x-3)^2 + (y-4)^2 ]
的偏导数为:
[ \frac{\partial L}{\partial x} = 2(x-3) \qquad \frac{\partial L}{\partial y} = 2(y-4) ]
在 ((x, y) = (1, 1)) 处
[ \frac{\partial L}{\partial x}\bigg|{(1,1)} = 2(1-3) = -4 \ \frac{\partial L}{\partial y}\bigg|{(1,1)} = 2(1-4) = -6 ]
解释
- 对于每一个微小的 向右 步伐((+\Delta x)),损失大约会减少 (4\Delta x)。
- 对于每一个微小的 向前 步伐((+\Delta y)),损失大约会减少 (6\Delta y)。
梯度向量
[ \mathbf{g} = \begin{bmatrix} -4 \ -6 \end{bmatrix} ]
学习率
我们需要一个 学习率 (\eta) 来控制步长。取 (\eta = 0.1)(既不太小,也不太大)。
更新规则
[ \mathbf{p}{\text{new}} = \mathbf{p}{\text{old}} - \eta , \mathbf{g} ]
代入计算:
[ \begin{aligned} x_{\text{new}} &= 1 - 0.1(-4) = 1 + 0.4 = 1.4 \ y_{\text{new}} &= 1 - 0.1(-6) = 1 + 0.6 = 1.6 \end{aligned} ]
因此我们从 ((1, 1)) 移动到 ((1.4, 1.6))。
新的损失
[ L(1.4, 1.6) = (1.4-3)^2 + (1.6-4)^2 = (-1.6)^2 + (-2.4)^2 = 2.56 + 5.76 = 8.32 ]
损失从 13 → 8.32 降低——取得了显著的改进!
下一次迭代
第二次更新
在 ((1.4, 1.6)):
[ \frac{\partial L}{\partial x}=2(1.4-3) = -3.2 \ \frac{\partial L}{\partial y}=2(1.6-4) = -4.8 ]
梯度 (\mathbf{g}= \begin{bmatrix} -3.2 \ -4.8 \end{bmatrix})
[ \begin{aligned} x_{\text{new}} &= 1.4 - 0.1(-3.2) = 1.4 + 0.32 = 1.72 \ y_{\text{new}} &= 1.6 - 0.1(-4.8) = 1.6 + 0.48 = 2.08 \end{aligned} ]
在 ((1.72, 2.08)) 处的损失:
[ L = (-1.28)^2 + (-1.92)^2 = 1.6384 + 3.6864 \approx 5.3248 ]
损失从 8.32 → 5.32 下降。你现在已经到达厨房门口!
由于损失函数是 凸 的,反复的梯度下降步骤必然收敛到全局最优(即最低可能的损失)。当梯度变为零时,你已经到达了 临界点——在本例中即为最小值。
在真实机器学习中
- 参数: 现代模型拥有 数百万甚至数十亿 的权重,而不仅仅是两个。
- 损失函数: 常见的选择包括 交叉熵、均方误差 等等,而不是简单的平方距离。
- 优化: 梯度下降(或其众多变体)是更新所有参数以最小化所选损失的主力引擎。
本质上,梯度下降衡量误差函数相对于参数向量 (\theta) 的局部梯度,并沿最陡下降方向前进。当梯度为零时,意味着已达到一个临界点——理想情况下是最小值。
现在,你已经对 AI 背后的“超级力量”有了清晰直观的认识:这是一种谦逊的数学算法,逐步引导庞大的模型朝着更好的性能前进。
# Gradient Descent and Its Variants
Navigate a complex, multi‑dimensional *loss landscape* with hills, valleys, and plateaus.
But the core algorithm—the relentless optimization engine—remains **Gradient Descent** and its smarter variants (Adam, RMSProp).
This is exactly how gradient descent works and how artificial intelligence can learn patterns and improve its predictions.
梯度下降的类型
批量梯度下降
使用所有训练样本来计算梯度,然后进行一次更新。
[ \theta_{\text{new}} = \theta_{\text{old}} - \eta \cdot \frac{1}{m}\sum_{i=1}^{m}\nabla L(\theta, x_i, y_i) ]
- (m) = 训练样本总数
- (\eta) = 学习率
- (\nabla L) = 给定样本的损失函数梯度
随机梯度下降 (SGD)
不使用整个数据集,而是在每一步从训练集 随机挑选一个实例,仅基于该实例计算梯度。这使得算法速度更快,但噪声也更大。随机噪声可以帮助跳出局部最小值,然而在学习率保持不变的情况下,算法往往在最小值附近振荡,而不是精确收敛。
对每个随机样本 (i):
[ \theta = \theta - \eta , \nabla L(\theta, x_i, y_i) ]
小批量梯度下降
使用一个小批量(例如 16 或 32 个样本)来计算梯度,然后进行更新。这在批量梯度下降的稳定性和 SGD 的速度之间取得了平衡。
对每个大小为 (b) 的批量 (B):
[ \nabla L_{\text{batch}} = \frac{1}{b}\sum_{i \in B}\nabla L(\theta, x_i, y_i) ]
[ \theta = \theta - \eta , \nabla L_{\text{batch}} ]
结论
理解梯度下降的工作原理是深刻的。它表明,人工智能——以及学习本身——并不是从一开始就要完美;而是拥有一种可靠的方法,能够快速且准确地变得更少错误。
这与人类学习相呼应:心理学家常建议进行反思或冥想的时间,以思考错误并制定修正方案。梯度下降因此充当了人工智能与人类思维之间的概念桥梁。