当前位置: 首页 > news >正文

知识蒸馏 - 最小化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(PQ)=xP(x)log(Q(x)P(x))

通过简单拆分,可以写成:
DKL(P∥Q)=∑xP(x)log⁡P(x)−∑xP(x)log⁡Q(x) D_{KL}(P \| Q) = \sum_{x} P(x) \log P(x) - \sum_{x} P(x) \log Q(x) DKL(PQ)=xP(x)logP(x)xP(x)logQ(x)

其中:
第一项 −∑xP(x)log⁡P(x)-\sum_{x} P(x) \log P(x)xP(x)logP(x) 是真实分布 PPP熵(Entropy),记为 H(P)H(P)H(P)
第二项 −∑xP(x)log⁡Q(x)-\sum_{x} P(x) \log Q(x)xP(x)logQ(x)PPPQQQ交叉熵(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(PQ)=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)log⁡P(x) H(P) = -\sum_{x} P(x) \log P(x) H(P)=xP(x)logP(x)

对于one-hot分布,可以逐点计算求和项:

  • 对于真实类别对应的 xxxP(x)=1P(x) = 1P(x)=1,而 log⁡1=0\log 1 = 0log1=0,因此该项为 1⋅log⁡1=01 \cdot \log 1 = 01log1=0
  • 对于非真实类别对应的 xxxP(x)=0P(x) = 0P(x)=0,而 0⋅log⁡00 \cdot \log 00log0 在信息熵中被定义为0(因为“不可能发生的事件”对熵没有贡献);

因此,整个求和结果为 ∑xP(x)log⁡P(x)=0\sum_{x} P(x) \log P(x) = 0xP(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(PQ)=H(P,Q)常数

这意味着:最小化KL散度 DKL(P∥Q)D_{KL}(P \| Q)DKL(PQ) 与最小化交叉熵 H(P,Q)H(P, Q)H(P,Q) 是完全等价的(因为常数不影响优化方向)。

http://www.dtcms.com/a/311738.html

相关文章:

  • stm32103如果不用32k晶振,那引脚是悬空还是接地
  • C++入门基础(三):const引用、指针和引用的关系、inline(修饰内联函数)替代宏、nullptr代替null
  • 使用docker运行vite项目
  • C++ vector底层实现与迭代器失效问题
  • 深入 Go 底层原理(十五):cgo 的工作机制与性能开销
  • 【深度学习】【三维重建】windows11环境配置PyTorch3d详细教程
  • Flutter开发 初识目录结构
  • 自动布局视图来实现聊天室的界面
  • 【iOS】KVO
  • 20250802让飞凌OK3576-C开发板在飞凌的Android14下【rk3576_u选项】适配NXP的WIFIBT模块88W8987A的蓝牙
  • OTC焊接机器人节能技巧
  • Java内存模型(Java Memory Model,JMM)
  • 关于鸦片战争的历史
  • Dify 上次文件大小突破15MB,解决办法?
  • Store / Slice / Reducer
  • 麦肯锡咨询公司PEI经典面试题目汇总
  • Python编程基础与实践:Python循环结构基础
  • 洛谷 P3870 [TJOI2009] 开关-普及+/提高
  • 音视频学习(四十四):音频处理流程
  • 第三章 用户和权限
  • 线程池的实现
  • SQL Server从入门到项目实践(超值版)读书笔记 22
  • 内网穿透系列十:高性能内网穿透工具 rathole,支持Docker一键部署
  • 什么是DOM和BOM?
  • 机器学习-KNN
  • springboot大学生成绩管理系统设计与实现
  • Git 的基本使用指南(1)
  • 人类学家与建筑师:区分UX研究和项目管理的需求分析
  • TFS-2022《A Novel Data-Driven Approach to Autonomous Fuzzy Clustering》
  • LVGL代码框架简介