知识蒸馏 - 最小化KL散度与最小化交叉熵是完全等价的
知识蒸馏 - 最小化KL散度与最小化交叉熵是完全等价的
flyfish
KL散度与交叉熵的数学关系
对于两个概率分布 PPP(真实分布)和 QQQ(模型预测分布),KL散度的定义是:
DKL(P∥Q)=∑xP(x)log(P(x)Q(x)) D_{KL}(P \| Q) = \sum_{x} P(x) \log\left( \frac{P(x)}{Q(x)} \right) DKL(P∥Q)=x∑P(x)log(Q(x)P(x))
通过简单拆分,可以写成:
DKL(P∥Q)=∑xP(x)logP(x)−∑xP(x)logQ(x) D_{KL}(P \| Q) = \sum_{x} P(x) \log P(x) - \sum_{x} P(x) \log Q(x) DKL(P∥Q)=x∑P(x)logP(x)−x∑P(x)logQ(x)
其中:
第一项 −∑xP(x)logP(x)-\sum_{x} P(x) \log P(x)−∑xP(x)logP(x) 是真实分布 PPP 的熵(Entropy),记为 H(P)H(P)H(P);
第二项 −∑xP(x)logQ(x)-\sum_{x} P(x) \log Q(x)−∑xP(x)logQ(x) 是 PPP 和 QQQ 的交叉熵(Cross-Entropy),记为 H(P,Q)H(P, Q)H(P,Q)。
因此,KL散度与交叉熵的关系可以表示为:
DKL(P∥Q)=H(P,Q)−H(P) D_{KL}(P \| Q) = H(P, Q) - H(P) DKL(P∥Q)=H(P,Q)−H(P)
真实分布 PPP 的熵 H(P)H(P)H(P) 是固定不变的常数(甚至为0)
1. 真实分布 PPP 是“确定性的one-hot分布”,与模型无关
在分类任务中,“真实分布 PPP”本质上是样本真实标签的数学表达,它由数据本身的标签决定,与模型的预测(QQQ)无关。
例如:
- 对于“判断一张图片是猫/狗/鸟”的3类任务,若某样本的真实标签是“猫”,则 PPP 被定义为 [1,0,0][1, 0, 0][1,0,0](one-hot向量,只有“猫”对应的位置为1,其余为0);
- 若另一样本的真实标签是“狗”,则 PPP 被定义为 [0,1,0][0, 1, 0][0,1,0]。
这种“one-hot分布”的核心特点是:确定性——每个样本的真实类别是唯一且固定的,因此 PPP 的形式完全由样本标签决定,不会随模型参数、训练过程变化。
2. one-hot分布的熵必然为0,且不随样本变化
根据信息熵的定义:
H(P)=−∑xP(x)logP(x) H(P) = -\sum_{x} P(x) \log P(x) H(P)=−x∑P(x)logP(x)
对于one-hot分布,可以逐点计算求和项:
- 对于真实类别对应的 xxx:P(x)=1P(x) = 1P(x)=1,而 log1=0\log 1 = 0log1=0,因此该项为 1⋅log1=01 \cdot \log 1 = 01⋅log1=0;
- 对于非真实类别对应的 xxx:P(x)=0P(x) = 0P(x)=0,而 0⋅log00 \cdot \log 00⋅log0 在信息熵中被定义为0(因为“不可能发生的事件”对熵没有贡献);
因此,整个求和结果为 ∑xP(x)logP(x)=0\sum_{x} P(x) \log P(x) = 0∑xP(x)logP(x)=0,代入熵的公式得:
H(P)=−0=0 H(P) = -0 = 0 H(P)=−0=0
3. 为什么“固定不变”?
因为:
- 每个样本的真实标签是确定的(例如“这张图一定是猫”),因此其对应的one-hot分布 PPP 是固定的;
- 所有样本的真实分布 PPP 的熵 H(P)H(P)H(P) 都为0(如上述计算),且这个值不依赖于模型的预测分布 QQQ(模型怎么预测都不会改变样本的真实标签)。
因此,在整个训练过程中,真实分布 PPP 的熵 H(P)H(P)H(P) 始终是0(或固定的常数),不会随模型参数变化而改变。
真实分布 PPP 由样本的真实标签唯一确定(one-hot形式),其熵计算结果恒为0,且与模型无关,是固定不变的常数。
因此:优化交叉熵 ≡ 优化KL散度
在上述场景中(真实分布 PPP 固定,且 H(P)H(P)H(P) 为常数),KL散度的表达式简化为:
DKL(P∥Q)=H(P,Q)−常数 D_{KL}(P \| Q) = H(P, Q) - 常数 DKL(P∥Q)=H(P,Q)−常数
这意味着:最小化KL散度 DKL(P∥Q)D_{KL}(P \| Q)DKL(P∥Q) 与最小化交叉熵 H(P,Q)H(P, Q)H(P,Q) 是完全等价的(因为常数不影响优化方向)。