梯度、方向导数与等高线
层级:A|必学
1. 梯度把所有偏导装成一个方向
对标量函数 f:Rd→R,梯度是
∇f(x)=∂f/∂x1⋮∂f/∂xd.
它与输入向量同形状,指向函数在该点上升最快的局部方向;负梯度指向下降最快方向。几乎所有基于一阶信息的训练算法都围绕它展开。
2. 方向导数
沿单位向量 u 的方向导数:
Duf(x)=h→0limhf(x+hu)−f(x).
若 f 可微:
Duf(x)=∇f(x)Tu.
若 u 不是单位向量,结果还混入移动速度;讨论纯方向时应先单位化。
3. 为什么梯度是最陡上升方向
由 Cauchy–Schwarz:
∇fTu≤∥∇f∥2∥u∥2=∥∇f∥2
(u 为单位向量)。等号在
u=∥∇f∥∇f
时取得。因此最大方向导数等于梯度范数,方向为梯度;最小方向导数为其负值,方向为负梯度。
这里的“最陡”依赖 Euclidean 范数。换用不同的距离/几何,最陡方向也会改变,自然梯度和镜像下降就是这种推广。
4. 二维例子
f(x,y)=x2+4y2.
∇f=(2x,8y)T.
在 (1,1),梯度为 (2,8)T,函数对 y 方向更陡。沿单位方向 u=(1,0)T 的方向导数为 2;沿 v=(0,1)T 为 8。
负梯度一步为
(x,y)←(x,y)−η(2x,8y),
两个坐标使用同一学习率,但因曲率/尺度不同,移动幅度差异很大。
5. 等高线
等高集合
{x:f(x)=c}
由相同函数值的点组成。二维是等高线,高维是等值面。
沿等高线切向量 v 移动,函数一阶不变:
∇fTv=0.
所以梯度垂直于等高线。优化图中负梯度箭头横穿损失等高线,指向更低层。
6. 梯度为零意味着什么
∇f(x∗)=0
称驻点。它可能是:
例如 f(x,y)=x2−y2 在原点梯度为零,但沿 x 方向上升、沿 y 方向下降,是鞍点。需结合 Hessian、凸性或其他分析判断。
7. 梯度下降的一阶依据
一阶近似:
f(x+Δx)≈f(x)+∇f(x)TΔx.
取 Δx=−η∇f:
f(x−η∇f)≈f(x)−η∥∇f∥22.
当 η 足够小时,右侧降低。若步长过大,高阶项不可忽略,实际函数可能上升。
8. 梯度与尺度
把变量重新参数化会改变梯度数值。若 zj=cjxj,对 zj 的偏导与对 xj 的偏导相差尺度因子。因此:
- 特征标准化改善等高线形状;
- 每个参数组可能需要不同学习率;
- 梯度分量大不自动表示对应特征“重要”;
- 自适应优化器尝试按历史梯度缩放坐标。
9. 梯度范数与停止条件
常用
∥∇f(xt)∥<ε
作为近似驻点条件。但应结合:
- 损失变化;
- 参数变化;
- 验证集表现;
- 最大迭代数;
- 随机梯度噪声。
在饱和激活或平坦高损失区,梯度小不表示解好。
10. 梯度裁剪
全局范数裁剪常写为
g←g⋅min(1,∥g∥2c).
当梯度范数超过阈值 c 时缩放到长度 c,方向保持。逐元素裁剪则改变方向。裁剪缓解爆炸但不能修复错误损失、极端学习率或根本数值不稳定。
易错点
- 梯度只对标量输出定义为同形状向量;向量输出使用 Jacobian。
- 最陡方向依赖所选范数/内积。
- 梯度为零不是全局最优证明。
- 梯度方向是上升,最小化要取负号。
- 梯度大小受单位与参数化影响。
常见问答
Q1:为什么损失等高线细长时梯度下降会之字形?
梯度垂直于等高线,陡方向分量很大,更新容易在谷底两侧来回跨越,而沿平缓方向进展慢。缩放、动量和二阶预条件可改善。
Q2:随机梯度不是完整梯度,还能叫下降吗?
单步可能上升,但若是无偏或偏差受控估计,长期平均可朝有利方向前进。学习率需随噪声调整。
Q3:梯度能直接用于离散参数吗?
不能直接做无穷小连续变化,需松弛、策略梯度、直通估计或组合搜索。
练习
- 求 f(x,y)=x2+xy+2y2 的梯度。
- 在 (1,1) 求沿 u=(3,4)T/5 的方向导数。
- 说明该点最陡上升方向。
- 对 f(x,y)=x2−y2 判断原点类型。
- 写出范数阈值 5、原梯度 (6,8) 的裁剪结果。
答案与提示
- (2x+y,x+4y)T。
- 梯度 (3,5),方向导数 (3,5)⋅(3/5,4/5)=29/5。
- 梯度单位方向 (3,5)/34。
- 鞍点。
- 原范数 10,缩放一半得 (3,4)。