← 学习中心

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² 缩放的常见动机。

本节小结

下一节讨论硬/软标签如何权衡。

KL 散度与蒸馏损失 - 生命科学与前沿科技学习平台 | 必学必会