知识点深化 · 梯度下降
梯度下降:从导数到学习率与收敛
梯度下降是几乎所有机器学习模型的「训练引擎」。蒙着眼下山:用脚感受哪边是下坡,朝那个方向迈一步,重复到底。这一页讲清楚更新式、批量/随机/小批量三种变体、学习率怎么调,以及 Momentum/Adam 的直觉。
① 小白第一课怎么学(4 步走,约 60 分钟)
梯度下降是几乎所有深度学习模型的训练引擎。按这四步走:
1 看图建立直觉(10 分钟) 读第②③部分:看损失函数像山谷,站在坡上朝最陡方向一步步走到底。
2 记核心公式(15 分钟) 读第④部分:θ←θ−α∂J/∂θ、三种变体(BGD/SGD/Mini-batch)、Momentum/Adam 直觉。
3 手算例题(20 分钟) 精读第⑤部分,跟着走一步梯度下降。
4 刷题+纠错(15 分钟) 做第⑦⑩部分,错题回到第⑥部分高频错误里找原因。
本课小目标 学完你要能:① 说出梯度下降每一步在干嘛;② 区分批量/随机/小批量三种梯度下降;③ 解释学习率太大太小各会怎样;④ 说清楚 Momentum 和 Adam 的直觉。
② 一图看懂:梯度下降全地图
梯度下降
核心更新式
θ←θ−α·∂J/∂θ
三种变体
批量/随机/小批量
学习率 α
步长,太大发散太小慢
优化器升级
Momentum / Adam
应用:所有神经网络
模型训练的引擎
易错:学习率/局部最优
loss 震荡/不下降
读法:中心是"梯度下降",四大块——更新式、三种变体、学习率、优化器升级;下方是应用和易错。
③ 本质直觉:蒙着眼下山
想象你被蒙上眼站在一座山的山坡上,要走到山谷最低点(损失函数最小的地方)。你看不见路,但能用脚感受脚下哪边是下坡 。
脚感就是梯度: 梯度告诉你"往哪个方向上坡最陡"。那下坡就是反方向。
动作: 朝下坡方向迈一步。步长 = 学习率 α。然后再感受、再迈一步,直到踩到谷底走不动了。
关键比喻:
· 步长太大(α 太大): 一步跨过山谷,从这边山飞到那边山,越跳越高,永远到不了底(发散)。
· 步长太小(α 太小): 挪一小步挪半天,走到天黑还没下到山底(收敛慢)。
· 局部最优: 你走到一个小坑,四周都是上坡,以为到底了,其实远处还有更深的山谷。深度学习里高维空间局部最优没那么可怕(多数"坑"其实是鞍点)。
为什么要"减"梯度 梯度 ∂J/∂θ 指向损失增大的方向(上坡)。我们要减小损失,所以 θ 要朝反方向走:θ ← θ − α·梯度。这就是更新式里那个减号的来源。
④ 完整体系与公式表
核心更新式
梯度下降通用更新
θ ← θ − α · ∂J(θ)/∂θ
θ 是参数(权重),J 是损失函数,α 是学习率,∂J/∂θ 是梯度。
三种变体对比
变体 每次更新用多少数据 优点 缺点 适用
批量 BGD 全部 n 个样本 梯度准,收敛稳 大数据慢 小数据集
随机 SGD 1 个样本 快,能跳出局部最优 震荡大 在线学习
小批量 Mini-batch 32~256 个 兼顾速度和稳定 要调 batch size 深度学习默认
学习率 α 的影响
α 大小 表现 对策
太大 loss 震荡甚至发散(变成 NaN) 减半重试
太小 收敛极慢,可能卡在小坑 调大或加 Momentum
合适 loss 平滑下降到谷底 0.01~0.1 起步试
优化器升级(直觉)
Momentum(动量)
v ← β·v + α·梯度 ; θ ← θ − v
像球滚下山带着惯性,冲过小坑、加速下坡方向
Adam(最常用)
结合 Momentum(一阶矩)+ RMSprop(二阶矩),每个参数自适应学习率
默认 lr=0.001,深度学习开箱即用
Python 代码片段(PyTorch)
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
for epoch in range(10):
for x, y in dataloader: # mini-batch
loss = criterion(model(x), y)
loss.backward() # 算梯度
optimizer.step() # 更新参数
optimizer.zero_grad()
⑤ 用法场景与典型例题
例1(基础·一步更新)J(θ)=θ²,当前 θ=3,梯度 ∂J/∂θ=2θ=6,α=0.1,更新一次
套 θ←θ−α·梯度。
① θ ← 3 − 0.1×6 = 3 − 0.6 = 2.4 。
② 损失 J 从 9 降到 2.4²=5.76,确实下降了。
答案: θ=2.4。继续迭代会逼近 θ=0(最小点)。
例2(学习率太大发散)上题 α=1.1,更新一次会怎样?
步长太大跨过谷底。
① θ ← 3 − 1.1×6 = 3 − 6.6 = −3.6 。
② 损失从 9 变成 12.96,反而变大了!下一步梯度是 2×(−3.6)=−7.2,θ←−3.6−1.1×(−7.2)=4.32,越来越远。
答案: 发散。这就是学习率太大的典型表现——loss 不降反升。
例3(mini-batch 理解)数据集 10000 个样本,batch_size=32,一个 epoch 更新多少次?
样本数除以批大小。
① 10000/32 = 312.5,向上取整 313 次 更新(最后一批可能不满)。
② 这就是一个 epoch 内 mini-batch 梯度下降的步数。
答案: 每轮约 313 步。
局部最优 vs 鞍点 低维问题里局部最优是大坑;但深度学习参数动辄上百万维,真正的局部最优极少,大多数"坑"其实是鞍点 (一个方向上坡、另一个方向下坡)。SGD 的噪声反而容易把你推出鞍点,所以高维梯度下降通常能找到不错的解。
⑥ 高频错误诊断(4 条)
错误 1:学习率设成 1.0 或更大 最常见错误。loss 直接变 NaN 或震荡。对策: 从 0.01(Adam 用 0.001)开始,loss 不降就减半。
错误 2:忘记 zero_grad() PyTorch 里梯度默认累加,不手动清零,每步梯度会越堆越大。对策: optimizer.step() 后立刻 optimizer.zero_grad()。
错误 3:特征不标准化就梯度下降 和线性回归一样,不同量纲让损失函数扁长,梯度下降走得歪歪扭扭。务必先标准化(均值 0、方差 1)。
错误 4:训练 loss 降但测试 loss 升 过拟合。不是学习率问题,是模型记住了训练数据。加 dropout、正则、早停。
⑦ 考点真题演练(4 题)
考点分布
考法 出题形式 应对
更新式 给 θ、梯度、α 更新一步 θ←θ−α·梯度
三种变体 对比 BGD/SGD/Mini-batch 数据量、速度、稳定性
学习率 太大/太小表现 太大发散,太慢收敛慢
优化器 Momentum/Adam 直觉 动量冲坑,Adam 自适应
真题 基础 1. 梯度下降更新参数的公式是?
A. θ ← θ + α·梯度
B. θ ← θ − α·梯度
C. θ ← α·梯度
D. θ ← θ / α
真题 中档 2. 深度学习最常用的梯度下降变体是?
A. 批量梯度下降 BGD
B. 随机梯度下降 SGD(单样本)
C. 小批量 Mini-batch(32~256)
D. 都不用
真题 中档 3. 训练时 loss 震荡且越来越大,最可能是?
A. 学习率太小
B. 学习率太大
C. 数据太少
D. 模型太简单
真题 拔高 4. Adam 优化器结合了哪两个思想?
A. 批量 + 随机
B. Momentum(动量)+ RMSprop(自适应学习率)
C. 信息增益 + Gini
D. Bagging + Boosting
⑧ 必背公式卡
更新: θ ← θ − α·∂J/∂θ 沿下坡走一步
方向: 梯度指上坡,所以要减 负号是关键
BGD: 全样本,准但慢 小数据用
SGD: 单样本,快但抖 在线学习
Mini-batch: 32~256,深度学习默认 兼顾速度稳定
α: 太大发散,太小慢,0.01/0.001 起步 loss 不降就减半
Momentum: 带惯性滚下山,冲过坑 β≈0.9
Adam: 动量+自适应,lr=0.001 开箱即用 最常用
⑨ 应用输出:用梯度下降训练一个线性回归
建模场景:训练 y=wx+b 拟合房价数据
数据:1000 条 (面积, 房价)。用小批量梯度下降训练 w、b。
① 初始化: w=0, b=0,α=0.01,batch_size=32。
② 每个 batch: 算 32 个样本的平均梯度 ∂J/∂w、∂J/∂b。
③ 更新: w←w−α·∂J/∂w,b←b−α·∂J/∂b。
④ 循环: 一个 epoch 跑 1000/32≈32 个 batch,跑 50 个 epoch。
⑤ 监控: 画 loss 曲线,应平滑下降;如果震荡就把 α 减半。
⑥ 结果: loss 从 1000 降到 25,w≈0.8, b≈10,和正规方程解一致。
口述训练思路 合上课本说一遍:"先把参数初始化,每个 batch 算梯度,沿梯度反方向走一小步;学习率决定步长,太大发散太小慢;实际用 Adam 自适应学习率,让 loss 平滑下降到收敛。"
⑩ 分层练习 18 题(基础 6 + 中档 6 + 拔高 6)
▍基础 6 题
基础1 梯度下降往哪个方向走?
解析 梯度反方向 (下坡方向)。
基础3 BGD 每次更新用多少数据?
解析 全部训练样本 。
基础4 SGD 每次更新用多少数据?
解析 1 个样本 。
基础5 深度学习默认用哪种?
解析 Mini-batch (32~256)。
基础6 Adam 默认学习率大约多少?
解析 0.001 。
▍中档 6 题
中档7 J=θ²,θ=4,梯度=8,α=0.1,更新后 θ?
解析 θ←4−0.1×8=3.2 。
中档8 上题 α=1,更新后 θ?会怎样?
解析 θ←4−1×8=−4,loss 从 16 变成 16,下一步飞到 12,发散震荡 。
中档9 训练 loss 下降很慢,可能 α 怎样?
解析 α 太小 ,步长太短。可调大或加 Momentum。
中档10 Momentum 的 β 一般取多少?
解析 0.9 ,惯性权重。
中档11 为什么要先标准化特征?
解析 不同量纲让损失函数扁长,梯度下降走得慢且震荡;标准化后各向同性,收敛快。
中档12 一个 epoch 是什么意思?
解析 把全部训练数据完整过一遍 。
▍拔高 6 题
拔高13 60000 样本,batch_size=128,一个 epoch 更新几次?
解析 60000/128≈469 步 。
拔高14 训练 loss 降、验证 loss 升,怎么办?
解析 过拟合。早停、加 dropout/L2、增数据、减模型容量。
拔高15 为什么高维里局部最优不那么可怕?
解析 高维空间里真正的局部最优极少,多数"坑"是鞍点,SGD 噪声容易滑出去。
拔高16 Momentum 为什么能冲过局部最优?
解析 累积历史梯度形成惯性,像球滚下山靠速度冲过小坑,不会停在浅坑里。
拔高17 Adam 相对 SGD 的优势?
解析 每个参数自适应学习率、收敛快、对超参不敏感,开箱即用;缺点是可能泛化略逊于调好的 SGD。
拔高18 学习率衰减(lr decay)为什么有用?
解析 开始大步快走,接近谷底后小步精调,避免在最优点附近震荡。常见策略:按 epoch 衰减或 cosine。
⑪ 记忆口诀 + 7 天复习计划
三句口诀
① 梯度指上我往下,θ 减 α 乘梯度。
② 批量准、随机抖、小批量是默认;学习率太大就发散,太小就龟速。
③ Momentum 带惯性,Adam 自适应,lr=0.001 开箱用。
天 任务 自检
第 1 天 读②③④,手推 J=θ² 走 3 步 看到 loss 下降
第 2 天 背公式卡 + 做基础 1-6 基础全对
第 3 天 做中档 7-12,对比三种 GD 说出三者区别
第 4 天 做拔高 13-18,理解 Momentum/Adam 说出 Adam 两组成
第 5 天 做⑦真题 4 题 限时每题 2 分钟
第 6-7 天 合上书口述三句口诀,写更新式和 Adam 默认 lr 不看资料全默对
← 返回算法与AI总览