题目重点:先定义P/Q和支持集,解释非对称与蒸馏,不把KL一概称更好或更对称的损失。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 题目泛问KL loss优点,任务未给;训练离散分布P为目标、Q为模型,概率均归一化。
- P>0处Q须>0才有限,P=0项按0处理;具体蒸馏/生成应用需再定方向。
解题路线
- KL(P||Q)=ΣPlog(P/Q)=cross-entropy(P,Q)−entropy(P)。当P固定时,优化forward KL与对P的CE只差常数,并不是自动更优的另一任务。
- KL非负且P=Q时0,但不对称、一般不满足三角不等式,不是普通距离。调换方向会改变期望权重与支持集惩罚。
- forward方向在P有质量而Q极小处强罚,鼓励覆盖目标;reverse方向按Q加权,对某些多峰受限模型可能择模式。这个直观依分布/模型限制,不是所有问题无条件定理。
- 软标签蒸馏可传类别间相似性,温度和KL方向需明确;教师不可靠也可能传错,不能因为用KL就保证泛化或校准提升。
- 数值上用log概率,避免Q先下溢为0;epsilon平滑改变目标,应公开规则。归约按batch或所有元素平均会改变梯度尺度,库接口可能期待logQ而非Q。
- 验证相同分布为0、不同方向一般不同、支持不重合发散,以及训练梯度。若P也依赖参数,entropy(P)不再常数,不能简单把KL与CE当同一个优化。
手动走一遍
P=[1,0],Q=[0.5,0.5],forward KL=log2;反向因Q第二项对应P=0而无穷。P=Q时0。这个差别来自方向和支持,不是实现bug。
规模与取舍
C类计算O(C),batch O(NC),log概率缓存按实现;大词表分布可能主导存储,采样近似另有偏差。
易错点与追问
容易失分的边界
- KL是对称距离。
- 目标也训练仍把entropy当常数。
- log-prob接口输入普通概率。
继续深挖
- 温度蒸馏为何要调梯度尺度?
- forward/reverse在多峰有何差别?
- 零概率如何处理并声明目标变化?
