Kullback-Leibler 散度
1. 定义
KL 散度(Kullback-Leibler Divergence)是用来衡量两个概率分布之间“相似度”的一个数学工具。它也被称为相对熵,表示两个分布之间的信息损失或差异。
公式
对于两个概率分布 \(P(x)\) 和 \(Q(x)\) ,KL 散度定义为:
离散情形:
\[ D_{KL}(P\ ||\ Q) = \Sigma_xP(x)log\frac{P(x)}{Q(x)} \]
连续情形:
\[ D_{KL}(P\ ||\ Q) = \int P(x)log\frac{P(x)}{Q(x)}dx \]
\(P(x)\):表示真实分布或目标分布(我们想要的分布)。
\(Q(x)\):表示模型分布或近似分布(我们生成的分布)。
KL 散度的意义:KL 散度衡量的是用 \(Q(x)\) 去近似 \(P(x)\) 时的“信息损失”。KL 散度越小,说明 \(Q(x)\) 越接近 \(P(x)\) 。
推导过程
KL 散度的定义来源于相对熵的概念,以下是推导的直观过程:
- 假设 \(P(x)\) 是目标分布,而我们用 \(Q(x)\) 去近似它。
- 如果 \(Q(x)\) 和 \(P(x)\) 在某些 \(x\) 上差异较大,则在这些 \(x\) 上,\(\log \frac{P(x)}{Q(x)}\) 的值也较大,导致 KL 散度更大。
- KL 散度表示的是,在 \(P(x)\) 的每个可能值上,模型 \(Q(x)\) 和 \(P(x)\) 的比值贡献了多少“额外信息”。
性质
(1)非负性
\[ D_{\text{KL}}(P\ ||\ Q) \geq 0 \]
KL 散度始终是非负的,只有在 \(P(x) = Q(x)\) 时等于零。
(2)与交叉熵的关系
KL 散度可以分解为目标分布 \(P(x)\) 和 \(Q(x)\) 的交叉熵与熵之间的差值: \[ D_{\text{KL}}(P\ ||\ Q) = H(P, Q) - H(P) \] 其中:
- \(H(P, Q)\):交叉熵,表示 \(Q\) 对 \(P\)的编码成本。
- \(H(P)\):熵,表示 \(P\) 的固有编码成本。
2. 直观理解
(1)零值特性
\[ D_{\text{KL}}(P\ ||\ Q) = 0 \quad \text{当且仅当 } P(x) = Q(x) \quad \forall x \]
- 如果 \(P\) 和 \(Q\) 完全相同,那么 KL 散度为零。
(2)非对称性
- \(D_{\text{KL}}(P\ ||\ Q) \neq D_{\text{KL}}(Q\ ||\ P)\)
- KL 散度是非对称的,换句话说,\(D_{\text{KL}}(P\ ||\ Q)\) 和 \(D_{\text{KL}}(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 散度,让模型生成的分布尽可能接近真实分布。
例如: \[ \text{目标} = \min_\theta D_{\text{KL}}(q(x_{t-1}\ |\ x_t)\ ||\ p_\theta(x_{t-1}\ |\ x_t)) \]
- \(q(x_{t-1} | x_t)\):真实的后向分布。
- \(p_\theta(x_{t-1} | x_t)\):由模型生成的近似分布。
通过最小化 KL 散度,可以优化模型参数 \(\theta\),让生成分布与真实分布更相似。如果 KL 散度小,表示 \(Q(x)\) 能很好地近似 \(P(x)\);KL 散度大,表示 \(Q(x)\) 和 \(P(x)\) 有较大的差异。
(2)信息论中的应用
KL 散度被用来衡量编码方案的效率。例如,如果我们用 \(Q(x)\) 来对数据进行编码,而真实分布是 \(P(x)\),那么 KL 散度表示因为编码分布不匹配而浪费的额外比特数。
(3)在贝叶斯学习中的应用
KL 散度用来衡量后验分布与先验分布之间的差异。在贝叶斯推断中,我们可以通过 KL 散度选择最优的后验分布。