核心要点

  • 信息熵 H(p)=-Σ p log p:分布 p 自身的平均不确定性,也是用最优编码描述 p 所需的期望比特数。

  • 交叉熵 H(p,q)=-Σ p log q:用分布 q 的编码来描述真实分布 p 的平均代价。

  • KL 散度 KL(p||q)=Σ p log(p/q)=H(p,q)-H(p)≥0:交叉熵相对熵的“多付出的代价”,衡量 q 偏离 p 的程度。

  • 分类训练中 p 是 one-hot 标签(H(p)=0),所以最小化交叉熵等价于最小化 KL 散度。

标准回答

三者定义

信息熵 (H(p)=-\sum_x p(x)\log p(x)),刻画分布 p 自身的不确定性,越均匀越大。

交叉熵 (H(p,q)=-\sum_x p(x)\log q(x)),表示用 q 设计的编码去描述真实分布 p 的平均比特数。

KL 散度 (KL(p|q)=\sum_x p(x)\log\dfrac{p(x)}{q(x)}),度量 q 相对 p 的差异。

核心恒等式

三者由一条等式串联:

(H(p,q)=H(p)+KL(p|q))

即交叉熵 = 真实分布的熵 + KL 散度。因此 KL 是交叉熵中“因为用了错的分布 q 而多付的代价”。

重要性质

  • 非负性:(KL(p|q)\ge 0),等号当且仅当 (p=q)(由 Jensen 不等式得出)。
  • 非对称:(KL(p|q)\ne KL(q|p)),所以它不是距离度量。

在分类任务里标签 p 是 one-hot,(H(p)=0),于是最小化交叉熵就等于最小化 KL 散度。

常见误区

⚠️ 常见踩坑

KL 散度不是对称的、也不满足三角不等式,因此不是真正的“距离”;混用 KL(p||q) 与 KL(q||p) 会导致优化目标含义完全不同(前者覆盖、后者寻模)。

追问

追问 1为什么训练分类模型常用交叉熵而不是直接用 KL 散度?

因为标签分布 p 固定,其熵 (H(p)) 是与模型参数无关的常数(one-hot 时还恒为 0)。由 (H(p,q)=H(p)+KL(p|q)),对参数求导时 (H(p)) 项消失,最小化交叉熵与最小化 KL 散度完全等价,而交叉熵形式更简单、数值上直接对接 softmax 输出,故工程上直接用交叉熵。

追问 2KL(p||q) 与 KL(q||p) 在实践中有什么不同效果?

(KL(p|q))(前向/矩匹配)惩罚 q 在 p 有质量处取 0,倾向让 q “覆盖”p 的所有模式,结果偏宽;(KL(q|p))(反向/寻模)惩罚 q 在 p 几乎为 0 处放质量,倾向让 q 聚到 p 的某一个高概率模式上,结果偏窄。变分推断常用反向 KL,因此 VI 容易出现 mode-seeking、低估方差。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。