跳到正文
01 数学与统计基础入门本域第 2 篇

梯度与梯度下降

整个深度学习,归根到底只有一件事:沿着下坡的方向走一小步

定义

梯度是一个向量,指向函数值上升最快的方向;它的反方向就是下降最快的方向。梯度下降是一种迭代算法:计算当前参数处损失函数的梯度,然后让参数沿反方向移动一小段距离,重复直到损失不再明显下降。

直观理解

想象你在浓雾中的山坡上,看不见全局地形,只能摸到脚下哪边更陡。最省事的策略不是“一次跳到谷底”,而是朝着最陡的下坡方向走一小步,再重新摸一次。步子太大会直接跨过谷底甚至越走越高;步子太小则天黑也走不到。所谓的“学习率”,就是你每一步迈多大。

图 1

梯度下降的几何直觉:每一步都沿当前位置最陡的下坡方向前进,步长由学习率决定

图 2

学习率决定成败:三条曲线共用同一份数据与初始权重,只有步长不同(点击图例可开关曲线)

  • 学习率过大(震荡发散)
  • 学习率合适(稳健收敛)
  • 学习率过小(几乎不动)

工作原理

  1. 01

    前向:算出当前错得多离谱

    把一批样本送进模型,得到预测值,再与真实值比较,算出一个标量损失。这个损失就是你要站在其上的那座“山”的高度。

  2. 02

    反向:自动微分给出方向

    反向传播沿计算图从输出往输入逐层应用链式法则,一次性得到损失对每一个参数的偏导。这就是现代框架最核心的那件事:让“求梯度”从数学苦役变成一次函数调用。

  3. 03

    更新:迈出这一步

    参数 ← 参数 − 学习率 × 梯度。一步看似微小,但几百万步之后,一个随机初始化的网络就长出了能识别语音、能写代码的内部结构。

  4. 04

    动量与自适应:把“一步”变聪明

    纯梯度下降在狭长山谷里会左右横跳。动量把历史方向累积起来抹平抖动,Adam 则给每个参数单独调整步长——这是今天所有大模型默认的优化配置。

关键公式

θ ← θ − η · ∇θ L(θ)
θ 为参数,η 为学习率,∇θL 为损失对参数的梯度。全部深度学习训练循环的骨架。
图 4

三种优化器的典型性格:收敛速度、稳定性、对超参数的敏感度与内存开销

  • SGD + 动量
  • Adam
  • RMSProp

应用场景

  • 训练一切神经网络:从识别手写数字到千亿参数的语言模型
  • 微调:在新任务上用很小的学习率继续下降,避免破坏已有能力
  • 强化学习:把“策略表现”当作损失,梯度上升即策略改进
  • 对抗样本:沿梯度方向微扰输入,就能让模型判断完全反转

常见误区

  • 梯度只描述局部。它告诉你脚下哪里最陡,不保证这个方向通往全局最优。深度网络的损失曲面有无数局部谷与鞍点,但实践表明足够宽的网络里,“足够好”的局部解遍地都是。
  • 学习率是最需要调的超参数。同一份数据,学习率差 10 倍就可能是“完美收敛”与“损失变成 NaN”的区别。
  • 梯度消失与爆炸:链式法则连乘会让深层网络的梯度指数级缩小或放大,这也是残差连接、归一化与梯度裁剪存在的理由。

关键术语

学习率 η
每一步的步长
批量大小
一步里用多少样本估计梯度
随机梯度下降 SGD
用小批量近似全量梯度的做法
损失曲面
参数空间上损失值构成的高维地形

延伸阅读