第 1 题:交叉熵损失的梯度推导,为什么在类别不平衡时会导致模型偏向多数类?
题目
交叉熵损失的梯度推导,为什么在类别不平衡时会导致模型偏向多数类?
完整讲解
一、二分类交叉熵与 softmax 交叉熵
二分类:设标签 $y \in {0,1}$,模型输出概率 $p = \sigma(z)$(sigmoid),交叉熵损失为
\(\mathcal{L} = -y \ln p - (1-y)\ln(1-p).\)
对 logit $z$ 求导:$\frac{\partial p}{\partial z} = p(1-p)$,链式法则得
\(\frac{\partial \mathcal{L}}{\partial z} = p - y.\)
即梯度 = 预测概率 − 真实标签;预测越准,梯度越小。
多分类:设 $C$ 类,标签 one-hot 为 $\boldsymbol{y}$,softmax 输出 $\boldsymbol{p}$,则
\(\mathcal{L} = -\sum_c y_c \ln p_c = -\ln p_{y^*},\quad \frac{\partial \mathcal{L}}{\partial z_i} = p_i - y_i.\)
同样有「梯度 = 预测 − 标签」的形式;对正确类 $y^$,$\frac{\partial \mathcal{L}}{\partial z_{y^}} = p_{y^*} - 1$。
二、为什么类别不平衡会导致偏向多数类?
设正类样本数 $N_+ \ll N_-$(负类多)。总损失 = 所有样本损失之和,梯度 = 所有样本梯度之和。
- 每个样本对梯度的贡献形式相同($p-y$),但负类样本数量多,所以负类样本贡献的梯度总和在数值上占优。
- 为降低总损失,优化器会优先「把负类判对」(因为负类样本多,判对一点就能降很多损失),导致决策边界向正类一侧移动,正类更容易被判成负类,即模型偏向多数类(负类)。
- 从梯度更新角度:负类样本产生的梯度方向占主导,参数更新会朝「更好拟合负类」的方向走,正类学得不足。
三、常见缓解手段
- 类别权重 / 损失加权:对正类样本的损失乘以 $w_+ > 1$(如 $N_-/N_+$),使正负类在总梯度中的贡献更平衡。
- 重采样:过采样正类或欠采样负类,使每轮看到的正负比例更均衡(等价于在期望意义下给样本加权)。
- Focal Loss:对易分样本降权,让难分样本(多为少数类)主导梯度。
- 阈值移动:训练后降低正类判定阈值,提高召回,缓解「预测概率整体偏小」的问题。
面试要点
- 能写出二分类 / 多分类交叉熵对 logit 的梯度:$\frac{\partial \mathcal{L}}{\partial z} = p - y$(或 $p_i - y_i$)。
- 能说清「多数类样本数多 → 总梯度被多数类主导 → 为降总损失模型更倾向判多数类 → 少数类被压制」。
- 能列举 2~3 种缓解方法:加权、重采样、Focal Loss、阈值移动,并说明加权/重采样在梯度层面的等价性(期望梯度一致)。
记忆要点
- 交叉熵对 logit 梯度:$\partial \mathcal{L}/\partial z = p - y$;预测越准梯度越小。
- 类别不平衡时:多数类样本数多 → 总梯度以多数类为主 → 模型为降损失偏向多数类,少数类召回差。
- 缓解:损失加权 / 重采样、Focal Loss、阈值移动;加权与重采样在期望梯度上可等价。