1. 定义
KL 散度(Kullback-Leibler Divergence)是用来衡量两个概率分布之间“相似度”的一个数学工具。它也被称为相对熵,表示两个分布之间的信息损失或差异。
公式
对于两个概率分布 P(x) 和 Q(x) ,KL 散度定义为:
离散情形:
DKL(P ∣∣ Q)=ΣxP(x)logQ(x)P(x)
连续情形:
DKL(P ∣∣ Q)=∫P(x)logQ(x)P(x)dx
KL 散度的意义:KL 散度衡量的是用 Q(x) 去近似 P(x) 时的“信息损失”。KL 散度越小,说明 Q(x) 越接近 P(x) 。
推导过程
KL 散度的定义来源于相对熵的概念,以下是推导的直观过程:
- 假设 P(x) 是目标分布,而我们用 Q(x) 去近似它。
- 如果 Q(x) 和 P(x) 在某些 x 上差异较大,则在这些 x 上,logQ(x)P(x) 的值也较大,导致 KL 散度更大。
- KL 散度表示的是,在 P(x) 的每个可能值上,模型 Q(x) 和 P(x) 的比值贡献了多少“额外信息”。
性质
(1)非负性
DKL(P ∣∣ Q)≥0
KL 散度始终是非负的,只有在 P(x)=Q(x) 时等于零。
(2)与交叉熵的关系
KL 散度可以分解为目标分布 P(x) 和 Q(x) 的交叉熵与熵之间的差值:
DKL(P ∣∣ Q)=H(P,Q)−H(P)
其中:
- H(P,Q):交叉熵,表示 Q 对 P的编码成本。
- H(P):熵,表示 P 的固有编码成本。
2. 直观理解
(1)零值特性
DKL(P ∣∣ Q)=0当且仅当 P(x)=Q(x)∀x
- 如果 P 和 Q 完全相同,那么 KL 散度为零。
(2)非对称性
- DKL(P ∣∣ Q)=DKL(Q ∣∣ P)
- KL 散度是非对称的,换句话说,DKL(P ∣∣ Q) 和 DKL(Q ∣∣ P) 是两个不同的值。
- 因此,KL 散度通常强调的是用 Q(x) 去近似 P(x) 的方向,而不是反过来。
(3)信息量差异
- KL 散度衡量的是分布 P(x) 和 Q(x) 在每个 x 上的信息量差异。
- 如果在某些 x 上,P(x) 和 Q(x)的值相差很大,则 KL 散度也会很大。
3. KL 散度的意义
KL 散度有许多实际应用,尤其在概率模型和机器学习中:
(1)在生成模型中的应用
在生成模型(如扩散模型、VAE)中,KL 散度用来衡量模型生成的分布 Q(x) 和目标真实分布 P(x) 之间的差距。目标是最小化 KL 散度,让模型生成的分布尽可能接近真实分布。
例如:
目标=θminDKL(q(xt−1 ∣ xt) ∣∣ pθ(xt−1 ∣ xt))
- q(xt−1∣xt):真实的后向分布。
- pθ(xt−1∣xt):由模型生成的近似分布。
通过最小化 KL 散度,可以优化模型参数 θ,让生成分布与真实分布更相似。如果 KL 散度小,表示 Q(x) 能很好地近似 P(x);KL 散度大,表示 Q(x) 和 P(x) 有较大的差异。
(2)信息论中的应用
KL 散度被用来衡量编码方案的效率。例如,如果我们用 Q(x) 来对数据进行编码,而真实分布是 P(x),那么 KL 散度表示因为编码分布不匹配而浪费的额外比特数。
(3)在贝叶斯学习中的应用
KL 散度用来衡量后验分布与先验分布之间的差异。在贝叶斯推断中,我们可以通过 KL 散度选择最优的后验分布。