返回文章列表
基础概念第 8 课

梯度下降

AI如何在黑暗中找到山底

2026年3月27日13 分钟阅读

1
蒙眼下山的游戏

想象这样一个游戏:

蒙眼下山
环境

🏔️

在山坡上

看不见路

目标

🎯

走到山底

最低点

  • 你在一个山坡上
  • 蒙着眼睛,看不见路
  • 目标是走到山底(最低点)
  • 你只能感受到脚下的坡度

你会怎么做?

每一步,都往最陡的下坡方向走。

下山的策略
第1步感受坡度 → 往最陡的下坡方向走一步
第2步再次感受坡度 → 往新的最陡下坡方向走
重复重复这个过程,直到到达山底

核心类比:梯度下降 = 蒙眼下山。AI不知道最优参数在哪里,但它能感受到「往哪个方向走会让损失变小」。

从下山到AI训练

这个看似简单的游戏,其实就是AI训练的核心机制。让我们把「下山」和「训练AI」做个对比:

类比对照表
蒙眼下山
  • 🏔️ 山坡地形
  • 👣 当前位置
  • 📉 脚下坡度
  • 🎯 山底最低点
AI训练
  • 📊 损失函数曲面
  • ⚙️ 当前参数值
  • 🔢 梯度(导数)
  • ✨ 最优参数

AI训练时,损失函数就像是一个多维的「山坡」。每个参数都是山坡上的一个维度,损失值就是山坡的高度。我们的目标就是找到这个山坡的最低点——损失最小的参数组合。

2
梯度是什么?

梯度(Gradient)就是坡度

梯度的含义
梯度大
📉📉

坡度很陡

应该大步走

梯度小
📉

坡度平缓

应该小步走

梯度为0
➡️

到达平地(最低点)

停止

在数学上,梯度是一个向量,指向函数增长最快的方向。所以我们要往梯度的反方向走(下降)。

梯度的数学本质

让我们用更数学的方式来理解梯度。假设损失函数 L 依赖于两个参数 w₁ 和 w₂,那么梯度就是一个二维向量:

梯度向量

∇L = [ ∂L/∂w₁ , ∂L/∂w₂ ]

梯度 = [对w₁的偏导数, 对w₂的偏导数]

每个偏导数告诉我们:如果单独改变这个参数,损失会如何变化。

偏导数的几何意义
w₁L当前位置梯度方向下降方向

梯度的计算

  • 📐 数学定义:函数对各个参数的偏导数组成的向量
  • 🔍 计算方法:使用反向传播算法自动计算
  • 🎯 梯度方向:函数增长最快的方向
  • ⬇️ 下降方向:梯度的反方向(函数下降最快的方向)

💡 为什么要沿梯度反方向?

梯度指向函数增长最快的方向,而我们想要损失减小,所以必须往相反方向走。就像下山时,坡度指向山顶,我们要往坡度的反方向(下坡)走。

3
学习率:步子迈多大?

梯度下降有一个重要参数:学习率(Learning Rate)

学习率决定了每一步迈多大:

学习率的影响
太大

🚀

步子太大

跨过最低点

甚至发散

刚好

步子适中

快速稳定

到达最低点

太小

🐢

步子太小

收敛太慢

训练时间长

学习率可视化对比

让我们用一个简单的例子来可视化不同学习率的效果。假设我们要找到函数的最小值:

学习率过大:震荡发散
参数 wL学习率太大 → 来回震荡,无法收敛
学习率适中:稳定收敛
参数 wL✓ 最优学习率适中 → 稳步接近最低点
学习率过小:收敛极慢
参数 wL...(还需要很多步)学习率太小 → 步数太多,训练缓慢

学习率的选择技巧

  • 🎯 初始学习率:通常从0.001、0.01等常见值开始
  • 📉 学习率衰减:训练过程中逐步降低学习率
  • 🔄 自适应学习率:使用Adam等优化器自动调整
  • 🔍 尝试多个值:通过实验找到最佳学习率

📚 学习率调度策略

实际训练中,学习率不是一成不变的。常见策略包括:Step Decay(每N轮降低一次)、Exponential Decay(指数衰减)、Cosine Annealing(余弦退火)。这些策略让模型在训练初期快速接近最优解,后期精细调整。

4
局部最优 vs 全局最优

现实世界的「山」通常很复杂,有很多坑:

优化地形
全局最优
🏆

真正的最低点

我们想要达到这里

局部最优
⚠️

看起来是最低点

但其实还有更低的地方

鞍点
🔀

某些方向是上坡

某些方向是下坡

复杂地形可视化

让我们用一个二维的可视化来理解这些概念。想象一个有两个谷地的地形:

局部最优陷阱
全局最优(真正的最低点)局部最优(陷阱!)鞍点起点A→ 陷入局部最优起点B→ 找到全局最优

从起点A出发,梯度下降会一路下滑,最终卡在左边的局部最低点。而从起点B出发,则能顺利到达真正的全局最优。

鞍点的特殊挑战
鞍点:一个方向是山谷,另一个方向是山峰上坡 ↗↖ 上坡下坡 ↓下坡 ↑鞍点梯度为0,但既不是最小值也不是最大值

鞍点比局部最优更常见,尤其是在高维空间中。在深度学习中,参数可能有数百万个,鞍点的数量远多于局部最优。好消息是,随机梯度下降的噪声通常能帮助模型逃离鞍点。

简单的梯度下降可能会卡在局部最优。为了解决这个问题,研究人员发明了很多改进方法。

跳出局部最优的技巧

  • 🎯 随机初始化:多次训练,选最好的结果
  • 🏃 动量法:积累之前的梯度,增加惯性
  • 🔄 随机梯度下降:每次用小批量数据,增加随机性
  • Adam优化器:自适应调整学习率,效果好

5
梯度下降的变体

基本的梯度下降有几种变体,各有优缺点:

梯度下降变体对比
批量梯度下降(BGD)

每次用全部数据计算梯度

✓ 稳定,但慢

✗ 内存需求大

随机梯度下降(SGD)

每次用一条数据计算梯度

✓ 快,但波动大

✓ 容易跳出局部最优

小批量梯度下降(MBGD)

每次用一批数据(32-256)计算梯度

✓ 速度和稳定性的平衡

✓ 最常用的方法

三种方法的收敛路径对比

让我们用可视化来理解这三种方法的区别:

BGD:平滑但缓慢
起点最优BGD:路径平滑,每一步都朝着正确的方向
SGD:噪声大但可能逃离局部最优
起点局部最优全局最优SGD:噪声帮助跳出局部最优,找到更好的解
MBGD:平衡的选择
起点最优MBGD:既有SGD的效率,又有BGD的稳定性

现代优化器

  • 🏃 SGD + 动量:积累梯度,加速收敛
  • 🎯 AdaGrad:自适应学习率,稀疏数据效果好
  • RMSprop:解决AdaGrad学习率下降过快的问题
  • 🌟 Adam:结合动量和自适应,最流行

💡 Batch Size的选择

小批量的大小(Batch Size)通常在32-256之间。较小的batch size(如32)通常能获得更好的泛化性能,但训练更慢;较大的batch size(如256+)训练更快,但可能需要调整学习率。现代GPU内存越来越大,但研究表明较小的batch size往往效果更好。

6
梯度下降的完整流程

让我们把梯度下降的整个过程串起来,看看AI是如何一步步找到最优参数的:

梯度下降完整流程
Step 1: 初始化
🎲

随机初始化参数

w = 随机值,b = 随机值

Step 2: 前向传播

用当前参数计算预测值

ŷ = f(x; w, b)

Step 3: 计算损失
📊

计算预测与真实的差距

L = loss(ŷ, y)

Step 4: 反向传播
🔙

计算梯度

∂L/∂w, ∂L/∂b

Step 5: 参数更新
🔄

沿梯度反方向更新参数

w = w - α·∂L/∂w

Step 6: 重复
🔁

重复2-5步,直到收敛

损失不再明显下降时停止

一个具体的数值例子

让我们用一个简单的线性回归例子来演示梯度下降:

例子:预测房价

问题:根据房屋面积预测价格

模型:价格 = w × 面积 + b

初始值:w = 0.5, b = 0

学习率:α = 0.01

第1轮迭代:

  • • 预测:0.5 × 100㎡ = 50万(实际80万)
  • • 损失:(50-80)² = 900
  • • 梯度:∂L/∂w = -60, ∂L/∂b = -0.6
  • • 更新:w = 0.5 - 0.01×(-60) = 1.1
  • • 更新:b = 0 - 0.01×(-0.6) = 0.006

第2轮迭代:

  • • 预测:1.1 × 100 + 0.006 = 110万
  • • 损失:(110-80)² = 900 → 还是900,但方向变了
  • • 继续迭代,w和b会逐渐接近最优值...

经过数百甚至数千轮迭代后,w和b会收敛到使损失最小的值。这就是梯度下降的神奇之处——通过反复试错,AI能自动找到最优参数。

7
总结

核心要点

  • ✅ 梯度下降 = 往损失减小的方向调整参数
  • ✅ 梯度告诉我们「往哪边走」
  • ✅ 学习率决定「步子迈多大」
  • ✅ 要小心局部最优和鞍点的问题
  • ✅ 小批量梯度下降是最常用的方法
  • ✅ Adam等现代优化器效果更好

📖 梯度下降的历史

梯度下降的概念可以追溯到1847年柯西(Cauchy)提出的最速下降法。但直到20世纪后半叶,随着计算机的发展,它才真正应用于机器学习。今天,几乎所有深度学习模型都在使用梯度下降或其变体进行训练。

第一阶段完成!你已经掌握了AI的基础概念。接下来我们将进入「神经网络基础」阶段,学习神经元、前向传播、反向传播等核心知识。