MAE损失梯度震荡完整示例

重点关注:求导公式,几乎只依赖x,误差e只有在大于0和小于0时会变成±1, 梯度大小恒定,不随误差缩小。

一、统一符号与基础公式

1. 变量定义

符号 含义
xxx 模型输入特征
WWW 网络权重
y^\hat{y}y^ 模型预测值
yyy 真实标签
eee 误差,e=y^−ye=\hat{y}-ye=y^y
LLL MAE损失,$L=
η\etaη 学习率

2. 核心公式

  1. 线性预测(简化无偏置 b=0b=0b=0):
    y^=W⋅x\hat{y}=W \cdot xy^=Wx
  2. 链式梯度求导:
    dLdW=dLde⋅dedy^⋅dy^dW\frac{dL}{dW}=\frac{dL}{de} \cdot \frac{de}{d\hat{y}} \cdot \frac{d\hat{y}}{dW}dWdL=dedLdy^dedWdy^
  • dedy^=1\displaystyle \frac{de}{d\hat{y}}=1dy^de=1
  • dy^dW=x\displaystyle \frac{d\hat{y}}{dW}=xdWdy^=x
  • e>0e>0e>0dLde=1\displaystyle \frac{dL}{de}=1dedL=1e<0e<0e<0dLde=−1\displaystyle \frac{dL}{de}=-1dedL=1
  1. 权重更新规则:
    Wnew=Wold−η⋅dLdWW_{new}=W_{old} - \eta \cdot \frac{dL}{dW}Wnew=WoldηdWdL

二、案例1:输入x=1x=1x=1,学习率η=0.1\eta=0.1η=0.1(不会跨过零点)

固定已知参数

真实标签 y=5y=5y=5,初始权重 Wold=5.2W_{old}=5.2Wold=5.2

步骤1:计算初始预测值与初始误差

y^old=Wold⋅x=5.2×1=5.2eold=y^old−y=5.2−5=0.2 \begin{align} \hat{y}_{old} &= W_{old} \cdot x = 5.2 \times 1 = 5.2 \\ e_{old} &= \hat{y}_{old} - y = 5.2 - 5 = 0.2 \end{align} y^oldeold=Woldx=5.2×1=5.2=y^oldy=5.25=0.2
eold=0.2>0e_{old}=0.2>0eold=0.2>0

步骤2:计算梯度

dLdW=1×1×1=1 \frac{dL}{dW} = 1 \times 1 \times 1 = 1 dWdL=1×1×1=1

步骤3:更新权重

Wnew=Wold−η⋅dLdW=5.2−0.1×1=5.1 W_{new} = W_{old} - \eta \cdot \frac{dL}{dW} = 5.2 - 0.1 \times 1 = 5.1 Wnew=WoldηdWdL=5.20.1×1=5.1

步骤4:计算更新后的预测值与新误差

y^new=Wnew⋅x=5.1×1=5.1enew=5.1−5=0.1 \begin{align} \hat{y}_{new} &= W_{new} \cdot x = 5.1 \times 1 = 5.1 \\ e_{new} &= 5.1 - 5 = 0.1 \end{align} y^newenew=Wnewx=5.1×1=5.1=5.15=0.1
误差由 0.20.20.2 缩小至 0.10.10.1,向0靠近,未跨零点。

再迭代一轮

e=0.1>0e=0.1>0e=0.1>0,梯度仍为1
W=5.1−0.1=5.0,e=5.0−5=0 W = 5.1 - 0.1 = 5.0,\quad e=5.0-5=0 W=5.10.1=5.0,e=5.05=0
刚好到达最优误差0。


三、案例2:输入x=3x=3x=3,学习率η=0.1\eta=0.1η=0.1(一步跨过零点,产生震荡)

固定已知参数

真实标签 y=5y=5y=5,初始权重 Wold=1.7333W_{old}=1.7333Wold=1.7333

步骤1:初始预测、初始误差

y^old=Wold⋅x=1.7333×3=5.2eold=5.2−5=0.2>0 \begin{align} \hat{y}_{old} &= W_{old} \cdot x = 1.7333 \times 3 = 5.2 \\ e_{old} &= 5.2 - 5 = 0.2>0 \end{align} y^oldeold=Woldx=1.7333×3=5.2=5.25=0.2>0

步骤2:计算梯度

dLdW=1×1×3=3 \frac{dL}{dW}=1 \times 1 \times 3 = 3 dWdL=1×1×3=3

步骤3:更新权重

Wnew=Wold−η⋅dLdW=1.7333−0.1×3=1.4333 W_{new}=W_{old} - \eta \cdot \frac{dL}{dW}=1.7333 - 0.1 \times 3 = 1.4333 Wnew=WoldηdWdL=1.73330.1×3=1.4333

步骤4:计算新预测、新误差

y^new=1.4333×3=4.3enew=4.3−5=−0.1 \begin{align} \hat{y}_{new} &= 1.4333 \times 3 = 4.3 \\ e_{new} &= 4.3 - 5 = -0.1 \end{align} y^newenew=1.4333×3=4.3=4.35=0.1
现象:误差从正数 0.20.20.2 直接变为负数 −0.1-0.10.1,跨过最优零点。

下一轮迭代(梯度符号反转,反向拉回)

当前 e=−0.1<0e=-0.1<0e=0.1<0dLde=−1\dfrac{dL}{de}=-1dedL=1
dLdW=−1×1×3=−3 \frac{dL}{dW}=-1 \times 1 \times 3=-3 dWdL=1×1×3=3
Wnext=1.4333−0.1×(−3)=1.7333 W_{next}=1.4333 - 0.1 \times (-3)=1.7333 Wnext=1.43330.1×(3)=1.7333
权重回到初始值,误差变回 0.20.20.2,形成来回横跳、损失持续震荡。


核心总结

  1. MAE梯度大小由输入特征 xxx 固定,不会随误差变小自动缩小;
  2. 输入特征数值较大时,单次更新修正幅度超过当前误差,会直接冲过误差=0的最优零点;
  3. 跨过零点后梯度符号翻转,下一轮反向更新,误差在0两侧反复跳动,无法稳定精准拟合;
  4. MSE无此问题:梯度随误差同步缩小,越靠近最优值更新步长越平缓,收敛稳定。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐