01 数学与统计基础入门本域第 2 篇
梯度与梯度下降
整个深度学习,归根到底只有一件事:沿着下坡的方向走一小步
定义
梯度是一个向量,指向函数值上升最快的方向;它的反方向就是下降最快的方向。梯度下降是一种迭代算法:计算当前参数处损失函数的梯度,然后让参数沿反方向移动一小段距离,重复直到损失不再明显下降。
直观理解
想象你在浓雾中的山坡上,看不见全局地形,只能摸到脚下哪边更陡。最省事的策略不是“一次跳到谷底”,而是朝着最陡的下坡方向走一小步,再重新摸一次。步子太大会直接跨过谷底甚至越走越高;步子太小则天黑也走不到。所谓的“学习率”,就是你每一步迈多大。
梯度下降的几何直觉:每一步都沿当前位置最陡的下坡方向前进,步长由学习率决定
学习率决定成败:三条曲线共用同一份数据与初始权重,只有步长不同(点击图例可开关曲线)
- 学习率过大(震荡发散)
- 学习率合适(稳健收敛)
- 学习率过小(几乎不动)
工作原理
- 01
前向:算出当前错得多离谱
把一批样本送进模型,得到预测值,再与真实值比较,算出一个标量损失。这个损失就是你要站在其上的那座“山”的高度。
- 02
反向:自动微分给出方向
反向传播沿计算图从输出往输入逐层应用链式法则,一次性得到损失对每一个参数的偏导。这就是现代框架最核心的那件事:让“求梯度”从数学苦役变成一次函数调用。
- 03
更新:迈出这一步
参数 ← 参数 − 学习率 × 梯度。一步看似微小,但几百万步之后,一个随机初始化的网络就长出了能识别语音、能写代码的内部结构。
- 04
动量与自适应:把“一步”变聪明
纯梯度下降在狭长山谷里会左右横跳。动量把历史方向累积起来抹平抖动,Adam 则给每个参数单独调整步长——这是今天所有大模型默认的优化配置。
关键公式
θ ← θ − η · ∇θ L(θ)三种优化器的典型性格:收敛速度、稳定性、对超参数的敏感度与内存开销
- SGD + 动量
- Adam
- RMSProp
应用场景
- 训练一切神经网络:从识别手写数字到千亿参数的语言模型
- 微调:在新任务上用很小的学习率继续下降,避免破坏已有能力
- 强化学习:把“策略表现”当作损失,梯度上升即策略改进
- 对抗样本:沿梯度方向微扰输入,就能让模型判断完全反转
常见误区
- 梯度只描述局部。它告诉你脚下哪里最陡,不保证这个方向通往全局最优。深度网络的损失曲面有无数局部谷与鞍点,但实践表明足够宽的网络里,“足够好”的局部解遍地都是。
- 学习率是最需要调的超参数。同一份数据,学习率差 10 倍就可能是“完美收敛”与“损失变成 NaN”的区别。
- 梯度消失与爆炸:链式法则连乘会让深层网络的梯度指数级缩小或放大,这也是残差连接、归一化与梯度裁剪存在的理由。
关键术语
- 学习率 η
- 每一步的步长
- 批量大小
- 一步里用多少样本估计梯度
- 随机梯度下降 SGD
- 用小批量近似全量梯度的做法
- 损失曲面
- 参数空间上损失值构成的高维地形