KL 散度与蒸馏损失
软损失 + 硬损失的组合
本节你将能
写出经典蒸馏损失:α·CE(硬) + (1-α)·T²·KL(软)。
直觉模型
KL 是「用学生分布编码教师分布时多花的码字」——越小越像老师。
核心要点
- KL(teacher || student) 或反之:实现时注意方向与 log_softmax
- 硬损失锚定任务标签;软损失迁移暗知识
- α 控制两者权衡,需按验证集调
loss_hard = F.cross_entropy(student_logits, y)
loss_soft = F.kl_div(
F.log_softmax(student_logits / T, dim=-1),
F.softmax(teacher_logits / T, dim=-1),
reduction='batchmean')
loss = α * loss_hard + (1 - α) * (T * T) * loss_soft
常见误区
KL 参数顺序反了仍「能跑」——但优化目标变了,务必对照文档。
动手
在玩具 batch 上打印 hard/soft 两项数量级。
互动
测验:T² 缩放的常见动机。
本节小结
下一节讨论硬/软标签如何权衡。