理解MSE损失梯度推导 + 离群点梯度爆炸完整示例
MSE损失梯度推导 + 离群点梯度爆炸完整示例
重点关注:梯度(损失函数的导数) MSE的梯度dLdW=e⋅x\frac{dL}{dW}=e \cdot xdWdL=e⋅x相比于MAE多了e误差,所以误差变小时梯度也会随之变小
一、统一符号与基础公式(和MAE保持完全一致)
1. 变量定义
| 符号 | 含义 |
|---|---|
| xxx | 模型输入特征 |
| WWW | 网络权重 |
| y^\hat{y}y^ | 模型预测值 |
| yyy | 真实标签 |
| eee | 误差,e=y^−ye=\hat{y}-ye=y^−y |
| LLL | MSE损失,L=12e2L=\frac{1}{2}e^2L=21e2(加1/2方便求导消系数) |
| η\etaη | 学习率 |
2. 核心公式
- 线性预测(简化无偏置b=0b=0b=0):
y^=W⋅x\hat{y}=W \cdot xy^=W⋅x - 链式梯度求导:
dLdW=dLde⋅dedy^⋅dy^dW\frac{dL}{dW}=\frac{dL}{de} \cdot \frac{de}{d\hat{y}} \cdot \frac{d\hat{y}}{dW}dWdL=dedL⋅dy^de⋅dWdy^
- dLde=e\displaystyle \frac{dL}{de}=ededL=e
- dedy^=1\displaystyle \frac{de}{d\hat{y}}=1dy^de=1
- dy^dW=x\displaystyle \frac{d\hat{y}}{dW}=xdWdy^=x
合并梯度:
dLdW=e⋅x\frac{dL}{dW}=e \cdot xdWdL=e⋅x
- 权重更新规则:
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=5.2−5=0.2 \begin{align} \hat{y}_{old} &= W_{old} \cdot x = 5.2 \times 1 = 5.2 \\ e_{old} &= 5.2 - 5 = 0.2 \end{align}y^oldeold=Wold⋅x=5.2×1=5.2=5.2−5=0.2
步骤2:计算梯度
dLdW=e⋅x=0.2×1=0.2 \frac{dL}{dW}=e \cdot x = 0.2 \times 1 = 0.2dWdL=e⋅x=0.2×1=0.2
步骤3:更新权重
Wnew=5.2−0.1×0.2=5.18 W_{new}=5.2 - 0.1 \times 0.2 = 5.18Wnew=5.2−0.1×0.2=5.18
步骤4:新误差
y^new=5.18,enew=5.18−5=0.18 \hat{y}_{new}=5.18,\quad e_{new}=5.18-5=0.18y^new=5.18,enew=5.18−5=0.18
特点:误差变小,梯度同步变小,更新幅度越来越轻,平稳向0靠近,无震荡。
三、案例2:存在离群点,误差极大 → 梯度爆炸(核心演示)
场景说明
正常样本真实值集中在y=5y=5y=5,出现一个离群点,真实标签y=20y=20y=20,输入x=1x=1x=1,学习率η=0.1\eta=0.1η=0.1,设当前权重Wold=5W_{old}=5Wold=5
步骤1:计算预测与超大误差
y^old=5×1=5eold=5−20=−15 \begin{align} \hat{y}_{old} &= 5 \times 1 = 5 \\ e_{old} &= 5 - 20 = -15 \end{align}y^oldeold=5×1=5=5−20=−15
误差绝对值达到15,属于极端离群误差。
步骤2:计算梯度
dLdW=e⋅x=−15×1=−15 \frac{dL}{dW}=e \cdot x = -15 \times 1 = -15dWdL=e⋅x=−15×1=−15
步骤3:单次权重更新幅度
Wnew=Wold−η⋅dLdW=5−0.1×(−15)=5+1.5=6.5 W_{new}=W_{old} - \eta \cdot \frac{dL}{dW} = 5 - 0.1 \times (-15) = 5 + 1.5 = 6.5Wnew=Wold−η⋅dWdL=5−0.1×(−15)=5+1.5=6.5
现象1:更新步长巨大
正常误差0.2时仅调整0.02;离群点一次直接调整1.5,参数剧烈跳动。
步骤4:更新后误差依旧巨大,梯度持续爆炸
y^new=6.5,enew=6.5−20=−13.5 \hat{y}_{new}=6.5,\quad e_{new}=6.5-20=-13.5y^new=6.5,enew=6.5−20=−13.5
新梯度:
dLdW=−13.5×1=−13.5 \frac{dL}{dW}=-13.5 \times 1=-13.5dWdL=−13.5×1=−13.5
下一轮继续大幅更新:
Wnext=6.5−0.1×(−13.5)=7.85 W_{next}=6.5 - 0.1 \times (-13.5)=7.85Wnext=6.5−0.1×(−13.5)=7.85
误差只会缓慢缩小,每一步都超大步长,模型剧烈震荡、难以收敛,严重时直接发散。
四、对比MAE同一离群场景,凸显MAE对异常值鲁棒
同样离群点:e=−15, x=1e=-15,\ x=1e=−15,x=1
MAE梯度:
dLdW=−1×1=−1 \frac{dL}{dW}=-1 \times 1=-1dWdL=−1×1=−1
单次权重更新:
Wnew=5−0.1×(−1)=5.1 W_{new}=5 - 0.1 \times (-1)=5.1Wnew=5−0.1×(−1)=5.1
无论误差是-15还是-0.2,MAE梯度永远固定±1,更新幅度恒定,不会出现大步长爆炸。
核心总结
- MSE梯度和误差eee成正比,误差越大,梯度线性放大;
- 数据里存在离群点时,会产生巨大梯度,单次更新权重幅度极大,造成梯度爆炸、模型震荡发散;
- MSE优点:误差接近0时梯度极小,微调精准光滑;
- MAE优点:梯度恒定,不怕离群点;缺点:0点不可导,小误差区间容易震荡;
- Smooth L1取长补短:误差小时用MSE光滑收敛,误差大时切换MAE限制梯度,规避两者缺陷。
