C_Meng PSNA

Never wait for the storm to pass, just dance in the rain.

0%

分布距离度量全家桶:从 KL 散度到 Wasserstein,以及它们为什么不能互相替代

一句话前提:这些度量不是同一件事的不同近似,而是对”两个分布有多不同”的六种不同定义。选错了不是精度问题,是问错了问题。

导语

在 ML 里,”两个分布的距离”出现在至少六个不同位置:训练损失(交叉熵、ELBO)、蒸馏与对齐(KL)、生成模型(JS、Wasserstein)、隐私(Rényi KL)、漂移检测(PSI、KS)、采样质量评估(MMD、Energy distance)。

这些位置上的度量都在算”分布差异”,但它们的数学性质完全不同:

  • KL 不对称,且可以是 $+\infty$;
  • JS 对称有界,但在分布不重叠时梯度消失;
  • Wasserstein 有良好的几何性质,但计算要解最优传输问题;
  • TV 有界,但在高维样本上几乎恒等于 1,失去分辨力。

选错度量的典型后果不是”效果差一点”,而是优化目标根本不是你想要的:

  • 用 KL 训练一个表达能力不足的模型 → 它会把概率摊到所有模式上(mean-seeking),生成模糊样本;
  • 用 JS 训练 GAN 且两分布不重叠 → 判别器完美分离,生成器梯度为 0,训练不动;
  • 用 TV 比较两组样本 → 只要样本点不重合,TV 恒为 1,完全无法区分”差一点”和”差很多”。

本文按”从基础到统一”的顺序拆解,每个概念给定义 + 符号解释 + 直觉 + 核心性质,最后给关系图谱、工程选择表和四个高频陷阱。

阅读约定:每个独立公式后紧跟一段”符号说明”,逐个解释该公式中出现的每个符号。若同一符号在不同章节含义不同,会在当处重新说明。所有数值示例均由本文实际计算得出,可复现。


1. 熵与交叉熵:先把”信息量”计量清楚

1.1 Shannon 熵

对离散随机变量 $X$,取值于有限集合 $\mathcal{X}$,概率质量函数为 $P$:

$$
H(P) ;=; -,\sum_{x \in \mathcal{X}} P(x),\log P(x)
$$

符号说明:

  • $X$ —— 随机变量;
  • $\mathcal{X}$ —— $X$ 的取值集合(字母表),$|\mathcal{X}|$ 是其元素个数;
  • $x$ —— 遍历 $\mathcal{X}$ 的具体取值;
  • $P(x)$ —— $X$ 取值为 $x$ 的概率,满足 $\sum_{x} P(x) = 1$、$P(x) \ge 0$;
  • $\log$ —— 本文统一取自然对数(底为 $e$),单位为 nat。若取底 2,单位为 bit,数值相差因子 $\log 2 \approx 0.693$。

直觉:$-\log P(x)$ 是”观察到 $x$ 时的惊讶程度”(概率越小越惊讶)。$H(P)$ 是这个惊讶度在 $P$ 下的期望,即”平均需要多少信息量才能确定 $X$ 的取值”。

核心性质(离散情形):

  1. 非负:$H(P) \ge 0$,当且仅当 $P$ 是某个确定事件的退化分布时取 0;
  2. 上界:$H(P) \le \log |\mathcal{X}|$,当且仅当 $P$ 在 $\mathcal{X}$ 上均匀分布时取等号;
  3. 凹性:$H$ 关于 $P$ 是凹函数。这一点很重要——它意味着”混合两个分布会增加熵”(不确定性变大)。

连续情形(微分熵):

$$
h(P) ;=; -!\int_{\mathcal{X}} p(x),\log p(x),\mathrm{d}x
$$

符号说明:

  • $p(x)$ —— 连续随机变量的概率密度函数(density),满足 $\int p(x)\mathrm{d}x = 1$;
  • $\mathcal{X}$ —— 支撑集(support),即 $p(x) > 0$ 的区域的闭包;
  • $\mathrm{d}x$ —— 积分微元。

注意:微分熵可以为负(例如方差极小的均匀分布),且不满足”非负性”。这是连续情形与离散情形的第一个本质差异,后面 KL 的性质差异也源于此。

1.2 交叉熵

$$
H(P, Q) ;=; -,\sum_{x \in \mathcal{X}} P(x),\log Q(x)
$$

符号说明:

  • $P$ —— 真实分布(数据分布),只出现在外面作为权重;
  • $Q$ —— 模型分布(预测分布),只出现在 $\log$ 里面;
  • $P(x)$ —— 真实分布给 $x$ 的概率;
  • $Q(x)$ —— 模型给 $x$ 的概率;
  • $\mathcal{X}$、$x$、$\log$ —— 同 1.1 节。

最关键的一点:交叉熵不是对称的,$H(P,Q) \ne H(Q,P)$。因为权重用 $P$、对数用 $Q$。这个不对称性直接遗传给了 KL(见 2.3)。

为什么训练时用交叉熵而不用熵:因为 $H(P)$ 不依赖模型参数($P$ 是固定的数据分布),对参数求梯度时为 0。所以最小化 $H(P,Q)$ 与最小化二者之差等价——而差值恰好就是 KL(见 1.3)。

1.3 交叉熵 = 熵 + KL

这是全文第一个关系式,也是理解”训练损失”的关键:

$$
\underbrace{H(P,Q)}{\text{交叉熵}} ;=; \underbrace{H(P)}{\text{数据熵}} ;+; \underbrace{D_{\mathrm{KL}}(P,|,Q)}_{\text{KL 散度}}
$$

符号说明:

  • $H(P,Q)$ —— 交叉熵,定义见 1.2;
  • $H(P)$ —— 真实分布 $P$ 的 Shannon 熵,定义见 1.1;
  • $D_{\mathrm{KL}}(P,|,Q)$ —— 从 $P$ 到 $Q$ 的 Kullback–Leibler 散度,定义见 2.1。

推导(一行):

$$
H(P,Q) = -\sum_x P(x)\log Q(x) = -\sum_x P(x)\log P(x) + \sum_x P(x)\log\frac{P(x)}{Q(x)} = H(P) + D_{\mathrm{KL}}(P|Q)
$$

中间那一步用了 $\log Q = \log P - \log\frac{P}{Q}$。

工程含义:因为 $H(P)$ 与模型无关,所以

最小化交叉熵(MLE)$\equiv$ 最小化 $D_{\mathrm{KL}}(P|Q)$。

这句话是理解深度学习损失的起点。也解释了为什么分类任务里”交叉熵损失”下降时,”KL”也在下降——它们是同一个量平移。


2. KL 散度:不是距离,是”方向性代价”

2.1 定义

离散情形:

$$
D_{\mathrm{KL}}(P,|,Q) ;=; \sum_{x \in \mathcal{X}} P(x),\log\frac{P(x)}{Q(x)}
$$

符号说明:

  • $D_{\mathrm{KL}}(P,|,Q)$ —— 从 $P$ 到 $Q$ 的 KL 散度,读作”$P$ 相对 $Q$ 的 KL”;
  • $P$ —— 参考分布(reference),权重项;
  • $Q$ —— 近似分布(approximation),对数项的分母;
  • $P(x)$、$Q(x)$ —— 两者在 $x$ 处的概率;
  • $\mathcal{X}$、$x$ —— 取值集合与其中元素。

连续情形:

$$
D_{\mathrm{KL}}(P,|,Q) ;=; \int_{\mathcal{X}} p(x),\log\frac{p(x)}{q(x)},\mathrm{d}x
$$

符号说明:

  • $p(x)$ —— 参考分布的密度;
  • $q(x)$ —— 近似分布的密度;
  • $\mathcal{X}$ —— 积分区域(两分布支撑集的交集,因为支撑集外的一侧会贡献 0 或 $+\infty$,见 2.4);
  • $\mathrm{d}x$ —— 积分微元。

约定(必须写进代码!):

  • $P(x) = 0$ 时,$0 \log\frac{0}{Q(x)} = 0$(极限意义下);
  • $P(x) > 0$ 且 $Q(x) = 0$ 时,$\log\frac{P(x)}{0} = +\infty$。

这个约定就是 KL 出现 $+\infty$ 的唯一来源,也是后面几个陷阱的根源。

2.2 核心性质:三条

性质 1(非负性,Gibbs 不等式)

$$
D_{\mathrm{KL}}(P,|,Q) ;\ge; 0, \qquad \text{等号成立} \iff P = Q \ \text{几乎处处}
$$

证明只用一步 $\log t \le t - 1$(对 $t>0$):

$$
-D_{\mathrm{KL}}(P|Q) = \sum_x P(x)\log\frac{Q(x)}{P(x)} \le \sum_x P(x)\left(\frac{Q(x)}{P(x)} - 1\right) = \sum_x Q(x) - \sum_x P(x) = 0
$$

符号说明:$t = Q(x)/P(x)$;”几乎处处”指除一个概率零集外处处相等。

性质 2(不对称)

$$
D_{\mathrm{KL}}(P,|,Q) ;\ne; D_{\mathrm{KL}}(Q,|,P) \quad \text{(一般情况下)}
$$

举例(Bernoulli 分布,本文实算):

$P$ $Q$ $D_{\mathrm{KL}}(P|Q)$ $D_{\mathrm{KL}}(Q|P)$
$\mathrm{Bern}(0.9)$ $\mathrm{Bern}(0.5)$ 0.3681 —
$\mathrm{Bern}(0.5)$ $\mathrm{Bern}(0.9)$ — 0.5108
$\mathrm{Bern}(0.5)$ $\mathrm{Bern}(0.25)$ 0.1438 0.1308

符号说明:$\mathrm{Bern}(p)$ 表示取 1 的概率为 $p$ 的伯努利分布;表中数值为 $p\log\frac{p}{q} + (1-p)\log\frac{1-p}{1-q}$ 的计算结果。

注意第一行与第二行是同一对分布交换顺序,值不同(0.3681 vs 0.5108)。

性质 3(不满足三角不等式)

KL 不是度量(metric)。它不满足三角不等式:

$$
D_{\mathrm{KL}}(P,|,R) ;\le; D_{\mathrm{KL}}(P,|,Q) + D_{\mathrm{KL}}(Q,|,R) \quad \text{(一般不成立)}
$$

符号说明:$P, Q, R$ 为三个分布。这条不成立意味着你不能把 KL 当作”距离”来做聚类、最近邻检索或任何依赖度量的算法。

2.3 一个容易被忽略的”局部二次性”

当 $P$ 与 $Q$ 很接近时,KL 近似二次型。对由参数 $\theta$ 索引的分布族 $p_\theta$,在 $\theta_0$ 附近展开:

$$
D_{\mathrm{KL}}\big(p_{\theta_0},|,p_{\theta_0 + \delta}\big) ;\approx; \tfrac{1}{2},\delta^{\top} I(\theta_0), \delta
$$

符号说明:

  • $\theta_0$ —— 参数空间中的一个点;
  • $\delta$ —— 参数空间中的小扰动向量;
  • $I(\theta_0)$ —— 在 $\theta_0$ 处的 Fisher 信息矩阵(Fisher information matrix),定义 $I(\theta_0) = \mathbb{E}{p{\theta_0}}!\left[\nabla_\theta \log p_\theta \nabla_\theta \log p_\theta^{\top}\right]$ 在 $\theta=\theta_0$ 取值;
  • $\top$ —— 转置。

这条的工程含义很大:

  • 它说明 KL 在局部等价于 Fisher 度量,这是自然梯度(natural gradient)的理论基础;
  • 它也说明 KL 对大偏差的惩罚远超二次——远离时 KL 会爆炸式增长,这正是它对”离群模式”极敏感的原因。

用 Bernoulli 系列验证局部二次性(本文实算):令 $P=\mathrm{Bern}(0.5+\varepsilon)$、$Q=\mathrm{Bern}(0.5)$,则 $\mathrm{TV}(P,Q) = \varepsilon$,而

$$
D_{\mathrm{KL}}(P|Q) ;\approx; 2,\varepsilon^2 ;=; 2,\mathrm{TV}^2
$$

符号说明:$\mathrm{TV}(P,Q)$ 为全变差距离,定义见 5.1;$\varepsilon$ 为偏离量。

$\varepsilon$ $D_{\mathrm{KL}}$ $2,\mathrm{TV}^2$ 比值
0.1 0.020136 0.020000 1.0068
0.01 0.00020001 0.00020000 1.0001
0.001 0.00000200 0.00000200 1.0000

比值趋近 1,验证成立。这张表同时给出了 Pinsker 不等式在局部是紧的(见 9.1)。

2.4 KL 什么时候是 $+\infty$

这是 KL 最实用的一个性质。由约定(2.1):只要存在某个 $x$ 使 $P(x)>0$ 而 $Q(x)=0$,就有 $D_{\mathrm{KL}}(P|Q)=+\infty$。

几何解释:$P$ 的支撑集必须是 $Q$ 的支撑集的子集,否则 KL 无限。

$$
\mathrm{supp}(P) \not\subseteq \mathrm{supp}(Q) ;\Longrightarrow; D_{\mathrm{KL}}(P|Q) = +\infty
$$

符号说明:$\mathrm{supp}(\cdot)$ 表示分布的支撑集,即密度严格大于 0 的点的闭包;$\subseteq$ 为包含于。

两个具体例子:

  1. 不同维度的分布:$P$ 是 $\mathbb{R}^2$ 上的分布,$Q$ 是 $\mathbb{R}^3$ 上某个分布。$P$ 相对三维 Lebesgue 测度没有密度,KL 无定义/无限。
  2. 两个高斯但协方差退化:$P=\mathcal{N}(0,1)$,$Q=\mathcal{N}(0,0)$(退化为点质量)。$P$ 在 $\mathbb{R}\setminus{0}$ 上有质量而 $Q$ 没有,KL 为 $+\infty$。

这一条直接决定了:KL 不适合用来比较”支撑集可能不重叠”的分布——例如 GAN 训练初期的生成分布与真实分布、或者两组有限样本的经验分布。这就是 Wasserstein 的动机(见 7.3)。

2.5 链式法则

$$
D_{\mathrm{KL}}\big(P_{XY},|,Q_{XY}\big) ;=; D_{\mathrm{KL}}\big(P_X,|,Q_X\big) ;+; \mathbb{E}{X \sim P_X}!\left[,D_{\mathrm{KL}}\big(P{Y|X},|,Q_{Y|X}\big)\right]
$$

符号说明:

  • $P_{XY}, Q_{XY}$ —— 两个联合分布(在 $\mathcal{X}\times\mathcal{Y}$ 上);
  • $P_X, Q_X$ —— 对应的 $X$ 边缘分布;
  • $P_{Y|X}, Q_{Y|X}$ —— 对应的条件分布;
  • $\mathbb{E}_{X\sim P_X}[\cdot]$ —— 对 $X$ 按 $P_X$ 取期望。

直觉:联合分布的 KL = 边缘的 KL + 条件分布的 KL 的期望。这与熵的链式法则同构。

用途:这是变分自编码器(VAE)里 ELBO 分解、以及扩散模型逐步 KL 累加的理论来源。

2.6 数据处理不等式(DPI)

对任意可测映射 $f$:

$$
D_{\mathrm{KL}}\big(P,|,Q\big) ;\ge; D_{\mathrm{KL}}\big(P \circ f^{-1},|,Q \circ f^{-1}\big)
$$

符号说明:

  • $f$ —— 从样本空间到某个可测空间的映射(例如一个神经网络的前几层、一个量化操作);
  • $P\circ f^{-1}$ —— $P$ 在 $f$ 下的推前分布(pushforward),即”把 $P$ 的样本过一遍 $f$ 之后得到的分布”;
  • 同理 $Q\circ f^{-1}$。

直觉:任何信息处理都不会增加两个分布的区分度。这解释了为什么”中间层特征分布对齐”(如某些域适应方法)不能完全消除输入层的分布差异——只能减小,不会增大。


3. 前向 KL 与反向 KL:两种”在乎”的方式

这是全文最重要的一节。KL 的不对称不是数学上的不便,而是两种截然不同的优化目标的体现。

3.1 两个方向的定义

给定目标分布 $P$(例如真实数据分布)与模型分布 $Q_\theta$(参数 $\theta$ 索引的分布族):

前向 KL(forward KL,也叫 $P$-projection 的变体):

$$
D_{\mathrm{KL}}\big(P,|,Q_\theta\big) ;=; \sum_{x} P(x),\log\frac{P(x)}{Q_\theta(x)}
$$

反向 KL(reverse KL):

$$
D_{\mathrm{KL}}\big(Q_\theta,|,P\big) ;=; \sum_{x} Q_\theta(x),\log\frac{Q_\theta(x)}{P(x)}
$$

符号说明(两式共用):

  • $P(x)$ —— 目标分布在该点的概率(固定,不随 $\theta$ 变);
  • $Q_\theta(x)$ —— 模型分布在该点的概率(随 $\theta$ 变);
  • $\theta$ —— 模型参数;
  • 求和遍历 $x$。

3.2 惩罚结构完全不同

把两式按”哪里会爆炸”重写:

前向 KL:$P(x)>0$ 而 $Q_\theta(x)\to 0$ 时,$\log\frac{P}{Q_\theta}\to+\infty$,且被 $P(x)>0$ 加权 → 爆炸。

结论:前向 KL 强制 $Q_\theta$ 在所有 $P$ 有质量的地方都有质量。
行为:mass-covering / zero-avoiding(覆盖型)。

反向 KL:$Q_\theta(x)>0$ 而 $P(x)\to 0$ 时,$\log\frac{Q_\theta}{P}\to+\infty$,且被 $Q_\theta(x)>0$ 加权 → 爆炸。

结论:反向 KL 强制 $Q_\theta$ 不要进入 $P$ 没有质量的地方。
行为:mode-seeking / zero-forcing(寻峰型)。

3.3 一个可复算的双峰例子

令目标分布为双峰高斯混合:

$$
P(x) ;=; \tfrac{1}{2},\mathcal{N}(x;,\mu_1, \sigma_1^2) ;+; \tfrac{1}{2},\mathcal{N}(x;,\mu_2, \sigma_2^2)
$$

符号说明:

  • $\mathcal{N}(x;\mu,\sigma^2)$ —— 均值为 $\mu$、方差为 $\sigma^2$ 的高斯密度在 $x$ 处的取值;
  • $\mu_1 = -2$,$\mu_2 = +2$ —— 两个峰的位置;
  • $\sigma_1 = \sigma_2 = 0.5$ —— 两个峰的标准差;
  • 系数 $\tfrac12$ —— 两个成分的混合权重。

令模型族为单峰高斯 $Q_\theta(x) = \mathcal{N}(x;,\mu, s^2)$($\mu$ 为均值、$s$ 为标准差),在两种 KL 下分别最优拟合(本文数值优化实算):

目标 最优 $\mu$ 最优 $s$ 说明
最小化 $D_{\mathrm{KL}}(P|Q_\theta)$ 0.000 2.063 覆盖两个峰,方差被拉大
最小化 $D_{\mathrm{KL}}(Q_\theta|P)$ $\pm$2.000 0.500 只贴住一个峰,另一个完全忽略

符号说明:$\mu$ 为拟合高斯的均值,$s$ 为其标准差($s^2$ 为方差)。

如何读这张表:

  • 前向 KL 的结果恰好是矩匹配(moment matching):$s^2 = \sigma_1^2 + \mu_1^2 = 0.25 + 4 = 4.25$,故 $s = \sqrt{4.25} = 2.062$。这是前向 KL 对指数族的一个已知性质:最优解匹配充分统计量的期望。
  • 反向 KL 的结果是”贴一个峰”**,且存在两个等价最优解**($\mu=+2$ 与 $\mu=-2$),说明该目标非凸、有多个局部最优。

这解释了三个真实工程现象:

  1. 用 MLE(前向 KL)训一个容量不足的模型 → 输出模糊:它把概率摊到所有模式上(方差过大);
  2. 变分推断用反向 KL → 低估不确定性:它锁死在一个模式内(方差过小);
  3. 反向 KL 多解 → 训练结果依赖初始化:不同的初始化收敛到不同模式,这在高阶多模态任务上表现为”每次训练结果不一样”。

3.4 在真实系统里,谁是前向谁是反向

这一步最容易搞错。判据很简单:看期望是对谁取的(分子是谁)。

场景 目标形式 方向 抽样来自 行为
最大似然训练(LM、分类) $\min_\theta D_{\mathrm{KL}}(P_{\text{data}}|Q_\theta)$ 前向 数据 覆盖型
变分推断 / VAE 的 ELBO $\min_\phi D_{\mathrm{KL}}(q_\phi(z)|p(z|x))$ 反向 近似后验 $q_\phi$ 寻峰型
知识蒸馏(标准做法) $\min_\theta D_{\mathrm{KL}}(p_{\text{teacher}}|q_\theta)$ 前向 教师分布 覆盖型
RLHF 的 KL 惩罚 $\beta, D_{\mathrm{KL}}(\pi_\theta|\pi_{\text{ref}})$ 反向 当前策略 $\pi_\theta$ 寻峰型
PPO 的信任域 估计 $D_{\mathrm{KL}}(\pi_{\text{old}}|\pi_\theta)$ 或反向 视实现 旧策略/新策略 —

符号说明:$P_{\text{data}}$ 为数据分布;$q_\phi(z)$ 为参数 $\phi$ 的近似后验;$p(z|x)$ 为真实后验;$\beta$ 为 KL 惩罚系数;$\pi_\theta$ 为当前策略,$\pi_{\text{ref}}$ 为参考策略,$\pi_{\text{old}}$ 为更新前策略。

最后一行值得展开一句:RLHF 里的 KL 惩罚是 $D_{\mathrm{KL}}(\pi_\theta|\pi_{\text{ref}})$,即反向 KL(因为采样来自 $\pi_\theta$)。反向 KL 的寻峰性质意味着它鼓励策略集中在参考策略的高概率区域,而不是覆盖整个分布。

这是”RLHF 后模型输出多样性下降”的一个可解释的机制来源——不是玄学,是反向 KL 的几何性质。但要注意:这只是一个机制解释,实际多样性下降还叠加了奖励模型收窄分布、采样参数、SFT 数据分布等因素,不能把因果全部归给 KL 项。


4. JS 散度:把 KL 对称化,代价是饱和

4.1 定义

$$
\mathrm{JS}(P,|,Q) ;=; \frac{1}{2},D_{\mathrm{KL}}!\big(P,|,M\big) ;+; \frac{1}{2},D_{\mathrm{KL}}!\big(Q,|,M\big), \qquad M ;=; \frac{P + Q}{2}
$$

符号说明:

  • $\mathrm{JS}(P|Q)$ —— $P$、$Q$ 之间的 Jensen–Shannon 散度;
  • $M$ —— 两个分布的等权混合(mixture),在每点取 $M(x) = \frac{P(x)+Q(x)}{2}$;
  • $D_{\mathrm{KL}}(\cdot|\cdot)$ —— KL 散度,定义见 2.1;
  • 两个 $\frac12$ —— 混合权重。

注意:$M$ 是”两个分布的算术平均”,不是”两个分布的几何平均”,也不是”参数的中间值”。在实现时必须是逐点求平均。

4.2 三条核心性质

性质 1(对称):$\mathrm{JS}(P|Q) = \mathrm{JS}(Q|P)$。这是定义式的直接结果(两项交换)。

性质 2(有界):

$$
0 ;\le; \mathrm{JS}(P,|,Q) ;\le; \log 2
$$

符号说明:$\log 2 \approx 0.6931$(自然对数)。若 $\log$ 取底 2,则上界为 1 bit。

上界来源:$\mathrm{JS}$ 是”混合分布的熵减去各自熵的加权和”,即 $P,Q$ 之间的互信息型量,而两个等权成分的混合最多提供 $\log 2$ 的不确定性。

本文实算验证(Bernoulli):

$P$ $Q$ $\mathrm{JS}$
$\mathrm{Bern}(0.5)$ $\mathrm{Bern}(0.5)$ 0.00000000
$\mathrm{Bern}(0.99)$ $\mathrm{Bern}(0.01)$ 0.63714565
$\mathrm{Bern}(1-10^{-12})$ $\mathrm{Bern}(10^{-12})$ 0.69314718 $= \log 2$

性质 3($\sqrt{\mathrm{JS}}$ 是度量)

$\sqrt{\mathrm{JS}(P|Q)}$ 满足三角不等式,因此是一个真正的度量(Endres & Schindelin, 2003)。这使它可以被用于聚类、核方法等需要度量结构的场景。

但 $\mathrm{JS}$ 本身不是度量(不满足三角不等式),只有开方后才是。

4.3 饱和:JS 的致命弱点

由性质 2 和 4.2 节的表格可见:当分布完全不重叠时,JS 恒等于 $\log 2$,不再增长。

$$
\mathrm{supp}(P) \cap \mathrm{supp}(Q) = \varnothing ;\Longrightarrow; \mathrm{JS}(P|Q) = \log 2
$$

符号说明:$\cap$ 为集合交,$\varnothing$ 为空集。

这带来两个后果:

  1. 失去分辨力:所有”完全分开”的分布对,JS 都给出同一个值。你无法区分”稍微不重叠”和”相差十万八千里”。
  2. 梯度消失:在 $\mathrm{JS}=\log 2$ 的平台上,对生成器参数的梯度接近 0 —— 这是原始 GAN(Goodfellow et al., 2014)训练不稳的核心原因之一,在生成分布与真实分布支撑集不重叠时尤其严重。

WGAN(Arjovsky et al., 2017)的动机正是这条:他们指出当两分布支撑集不重叠时,JS 是常数,其梯度无意义,因此换用 Wasserstein 距离(见 7.3)。

4.4 JS 用在哪

用途 原因
GAN 的原始目标(判别器最优时等价于最小化 JS) 有界、对称、好优化(在分布重叠时)
分布漂移的粗粒度监控 有界,便于设阈值(如 > 0.1 告警)
蒸馏的对称化变体 训练早期学生分布远离教师时,前向 KL 会爆炸,JS 更稳
不推荐用于高维生成模型训练 饱和 + 梯度消失(见 4.3)

5. TV 与 Hellinger:两个有界度量

5.1 全变差距离(Total Variation, TV)

定义(三种等价形式):

$$
\mathrm{TV}(P, Q) ;=; \sup_{A \in \mathcal{F}} \big| P(A) - Q(A) \big| ;=; \frac{1}{2}\int_{\mathcal{X}} \big| p(x) - q(x) \big|,\mathrm{d}x ;=; \frac{1}{2},|p - q|_{1}
$$

符号说明:

  • $\mathrm{TV}(P,Q)$ —— $P$ 与 $Q$ 的全变差距离;
  • $\mathcal{F}$ —— 样本空间上的可测集族($\sigma$-代数);
  • $A$ —— $\mathcal{F}$ 中的任意可测集(”任意一个事件”);
  • $P(A)$、$Q(A)$ —— 事件 $A$ 在两个分布下的概率;
  • $\sup$ —— 上确界,即”取所有事件中差距最大的那个”;
  • $p(x), q(x)$ —— 两个分布的密度(连续情形);
  • $|p-q|_1 = \int|p-q|\mathrm{d}x$ —— $L^1$ 范数。

直觉:$\mathrm{TV}$ 回答的问题是”存在某个事件,它在两个分布下的概率最多能差多少“。等价地说,它是”两个分布对同一批样本给出的总概率差的一半”——这也解释了为什么有 $\frac12$ 这个因子(去掉它,总量会算两遍)。

三条核心性质:

  1. 有界:$0 \le \mathrm{TV}(P,Q) \le 1$;
  2. 是对称度量:满足非负、对称、三角不等式,且 $\mathrm{TV}=0 \iff P=Q$;
  3. 与 KL 的关系(Pinsker):见 9.1。

致命弱点(在高维样本上):

对两组有限样本的经验分布 $\hat P_n$、$\hat Q_m$(各 $n$、$m$ 个样本点,点互不重合):

$$
\mathrm{TV}(\hat P_n, \hat Q_m) ;=; 1 \quad \text{(只要样本点不重合)}
$$

符号说明:$\hat P_n = \frac{1}{n}\sum_{i=1}^{n}\delta_{x_i}$ 为 $n$ 个样本的经验分布,$\delta_{x_i}$ 是 $x_i$ 处的点质量(Dirac 测度)。

为什么:取 $A = {x_1,\dots,x_n}$($\hat P_n$ 的支撑集),则 $\hat P_n(A)=1$ 而 $\hat Q_m(A)=0$,故 $\sup_A|P(A)-Q(A)|=1$。

这意味着 TV 在”高维 + 有限样本”场景下完全无用——一张 256×256 的图,两组样本怎么可能有重合点?所以做生成质量评估时不能用 TV。这也顺带解释了为什么”用 TV 比较两个图像分布”和”用 TV 比较两个一维直方图”是两件完全不同的事。

5.2 Hellinger 距离

定义:

$$
H(P, Q) ;=; \sqrt{\frac{1}{2}\int_{\mathcal{X}}\Big(\sqrt{p(x)} - \sqrt{q(x)}\Big)^{2},\mathrm{d}x} ;=; \sqrt{1 - \int_{\mathcal{X}}\sqrt{p(x),q(x)},\mathrm{d}x}
$$

符号说明:

  • $H(P,Q)$ —— Hellinger 距离(注意:本文用 $H$ 表示它,与 1.1 节的 Shannon 熵 $H(P)$ 同名但不同义,请按参数个数区分:$H(P)$ 单参数是熵,$H(P,Q)$ 双参数是 Hellinger 距离);
  • $p(x), q(x)$ —— 两个分布的密度;
  • $\sqrt{p(x)}$ —— 密度的平方根,Hellinger 的核心操作;
  • $\int\sqrt{pq},\mathrm{d}x$ —— 两个”平方根密度”的内积,也叫 Bhattacharyya 系数;
  • 系数 $\frac12$ —— 归一化因子,使 $H \le 1$。

为什么用平方根:$\sqrt{p}$ 天然落在 $L^2$ 空间,于是 Hellinger 距离就是”平方根密度在 $L^2$ 中的欧氏距离(差一个常数因子)”。这个变换把”密度必须是概率”的约束(非负 + 积分 1)变成了 $L^2$ 球面上的几何问题,从而获得了良好的分析性质。

三条核心性质:

  1. 有界:$0 \le H(P,Q) \le 1$;
  2. 是对称度量:满足三角不等式(因此可用于聚类、核方法);
  3. 对支撑集重叠很敏感但不会爆炸:与 KL 不同,即使支撑集不重叠也只到 1,不会 $+\infty$。

5.3 TV 与 Hellinger 的定量关系

两个有界度量之间存在如下已知不等式:

$$
H^2(P,Q) ;\le; \mathrm{TV}(P,Q) ;\le; H(P,Q)\sqrt{,2 - H^2(P,Q),}
$$

符号说明:

  • $H(P,Q)$ —— Hellinger 距离(5.2 定义);
  • $H^2(P,Q)$ —— 其平方;
  • $\mathrm{TV}(P,Q)$ —— 全变差距离(5.1 定义);
  • $\sqrt{2-H^2}$ —— 右端因子。

如何读这条不等式:

  • 左半边说明:**Hellinger 比 TV”小”**,即 Hellinger 对分布差异更保守(数值更小)。
  • 右半边说明:TV 最多比 Hellinger 大一个 $O(H)$ 的因子。当 $H$ 很小时,$\sqrt{2-H^2}\approx\sqrt2$,故 $\mathrm{TV}\lesssim \sqrt2,H$。

本文实算验证(两个高斯 $\mathcal{N}(0,1)$ 与 $\mathcal{N}(0.3, 1.2^2)$ 的数值积分):

量 值
$H(P,Q)$ 0.1317
$H^2(P,Q)$ 0.0173
$\mathrm{TV}(P,Q)$ 0.1324
右端上界 $H\sqrt{2-H^2}$ 0.1854

验证:$0.0173 \le 0.1324 \le 0.1854$ ✓

一个反直觉的现象:在这个例子里 $\mathrm{TV} \approx H$(0.1324 vs 0.1317),而 $H^2$ 远小于两者。这说明在小差异下,TV 和 Hellinger 的数量级接近,但 Hellinger 的平方是二阶小量。这与 2.3 节的 $D_{\mathrm{KL}}\approx 2,\mathrm{TV}^2$ 是同一族现象:二次型的量(KL、$H^2$)在小差异下比一次型的量(TV、$H$)小得多。


6. $\chi^2$ 散度:对”分母小”最敏感的一个

6.1 定义(Pearson 形式)

$$
\chi^2(P,|,Q) ;=; \int_{\mathcal{X}} \frac{\big(p(x) - q(x)\big)^{2}}{q(x)},\mathrm{d}x ;=; \sum_{x \in \mathcal{X}} \frac{\big(P(x) - Q(x)\big)^{2}}{Q(x)}
$$

符号说明:

  • $\chi^2(P|Q)$ —— 从 $P$ 到 $Q$ 的 Pearson $\chi^2$ 散度;
  • $p(x), q(x)$ —— 两个分布的密度(连续情形);$P(x), Q(x)$ 为对应的概率(离散情形);
  • $\big(p(x)-q(x)\big)^2$ —— 差值的平方;
  • 分母 $q(x)$ —— **注意分母是 $Q$,不是 $P$**。

6.2 为什么分母是 $Q$

这是 $\chi^2$ 最关键的设计:它按 $Q$ 的密度做加权,因此在 $Q(x)$ 很小的区域会剧烈放大差异。

直觉:$\chi^2$ 回答的问题是”用 $Q$ 作为基准测度,$P$ 偏离了多少(相对量)“。它在 $Q$ 小的地方极度敏感,在 $Q$ 大的地方不敏感。

这与 KL 的敏感区刚好相反:

  • KL 在 $Q(x)\to 0$ 且 $P(x)>0$ 时爆炸($+\infty$);
  • $\chi^2$ 在 $Q(x)\to 0$ 且 $P(x)>0$ 时爆炸($\to+\infty$),但在 $Q(x)\to 0$ 且 $P(x)\to 0$ 时也可能是有限值(取决于趋近速率)。

6.3 三条核心性质

  1. 非负:$\chi^2(P|Q) \ge 0$,等号当且仅当 $P=Q$;
  2. 不对称:$\chi^2(P|Q) \ne \chi^2(Q|P)$(分母换边,值完全不同);
  3. 无上界:可以趋于 $+\infty$。

6.4 与 TV 的定量关系(可手推)

$$
\mathrm{TV}(P,Q) ;\le; \frac{1}{2}\sqrt{\chi^2(P,|,Q)}
$$

符号说明:$\mathrm{TV}$ 见 5.1;$\chi^2$ 见 6.1。

推导(两步,Cauchy–Schwarz):

$$
\int|p-q| = \int \frac{|p-q|}{\sqrt{q}}\cdot\sqrt{q} ;\le; \sqrt{\int\frac{(p-q)^2}{q}}\cdot\sqrt{\int q} ;=; \sqrt{\chi^2(P|Q)}
$$

两边除以 2 即得。符号说明:第二式用了 Cauchy–Schwarz 不等式 $\int fg \le \sqrt{\int f^2}\sqrt{\int g^2}$,取 $f = |p-q|/\sqrt q$、$g=\sqrt q$;最后一式用了 $\int q = 1$。

本文实算验证(同 5.3 的两个高斯):$\chi^2 = 0.1017$,$\sqrt{\chi^2}/2 = 0.1595$,$\mathrm{TV}=0.1324$,满足 $0.1324 \le 0.1595$ ✓

6.5 $\chi^2$ 用在哪

用途 原因
拟合优度检验(卡方检验) 经典统计工具,有采样分布理论
隐私保护($\chi^2$-DP / hockey-stick 散度) 与 $(\varepsilon,\delta)$-DP 的关系最紧
特征分布漂移检测 对”新出现的值”敏感(与 KL 类似但可计算)
不推荐用于有小概率值的场景 分母小 → 数值爆炸

7. Wasserstein 距离:把”距离”还给几何

7.1 定义($p$-Wasserstein)

对度量空间 $(\mathcal{X}, d)$ 上的两个概率测度 $P$、$Q$:

$$
W_p(P, Q) ;=; \left( \inf_{\gamma \in \Gamma(P,Q)} \int_{\mathcal{X}\times\mathcal{X}} d(x, y)^{p},\mathrm{d}\gamma(x, y) \right)^{1/p}, \qquad p \ge 1
$$

符号说明:

  • $W_p(P,Q)$ —— $p$ 阶 Wasserstein 距离(也叫最优传输距离、推土机距离);
  • $\mathcal{X}$ —— 底层的样本空间(例如 $\mathbb{R}^d$);
  • $d(x,y)$ —— $\mathcal{X}$ 上的ground metric(基础度量),例如欧氏距离 $|x-y|_2$;
  • $\Gamma(P,Q)$ —— 所有以 $P$ 为第一边缘、以 $Q$ 为第二边缘的耦合(coupling)/ 传输方案的集合,即 $\gamma$ 满足 $\int \gamma(x,y)\mathrm{d}y = P(x)$ 与 $\int\gamma(x,y)\mathrm{d}x = Q(y)$;
  • $\gamma(x,y)$ —— 一个具体的传输方案,”从位置 $x$ 搬多少质量到位置 $y$”;
  • $\inf$ —— 下确界,即”在所有传输方案中找总代价最小的”;
  • $d(x,y)^p$ —— 把质量为 1 的单位从 $x$ 搬到 $y$ 的代价(的 $p$ 次方);
  • $p$ —— 阶数,常用 $p=1$(线性代价)或 $p=2$(平方代价)。

直觉(推土机 / 搬土):$P$ 是一堆土,$Q$ 是一个坑。$W_1$ 就是”用最优方案把土搬过去,每单位质量每单位距离花 1 块钱,最少要花多少钱”。

7.2 一维情形的闭式解(工程上最有用)

当 $\mathcal{X}=\mathbb{R}$、$p=1$ 时,有闭式解:

$$
W_1(P, Q) ;=; \int_{\mathbb{R}} \big| F_P(t) - F_Q(t) \big| ,\mathrm{d}t
$$

符号说明:

  • $F_P(t) = P\big((-\infty, t]\big)$ —— 分布 $P$ 的累积分布函数(CDF)在 $t$ 处的值;
  • $F_Q(t)$ —— 同理;
  • $\mathrm{d}t$ —— 积分微元。

这个式子的工程价值极大:一维 Wasserstein 距离 = 两条 CDF 曲线之间的面积。不需要解最优传输,只需排序后逐点相减再积分。复杂度 $O(n\log n)$(排序)+ $O(n)$(积分)。

等价形式(分位数形式):

$$
W_1(P,Q) ;=; \int_0^1 \big| F_P^{-1}(u) - F_Q^{-1}(u) \big| ,\mathrm{d}u
$$

符号说明:$F_P^{-1}(u) = \inf{t : F_P(t) \ge u}$ 为 $P$ 的分位数函数(quantile function),$u\in[0,1]$ 为分位水平。

这个形式直接给出算法:把两组样本各自排序,然后逐点相减取绝对值再平均——**这就是”排序后做 $L^1$”**。

实现细节(容易出错):上式在两组样本数相等(均为 $n$)时,离散形式恰好是

$$
\hat W_1 ;=; \frac{1}{n}\sum_{i=1}^{n}\big| p_{(i)} - q_{(i)} \big|
$$

符号说明:

  • $\hat W_1$ —— 由样本估计的 $W_1$;
  • $p_{(i)}$ —— 第一组样本升序排序后的第 $i$ 个值(顺序统计量);
  • $q_{(i)}$ —— 第二组样本升序排序后的第 $i$ 个值;
  • $n$ —— 每组样本数(相等)。

当两组样本数不同($n \ne m$)时,不能直接逐点相减——必须先在分位网格上插值到同一刻度再相减。这是最常见的实现 bug:直接 zip 两组不同长度的排序数组,会静默截断或错位。

7.3 高斯情形:与 KL 的对比

两个一维高斯 $P=\mathcal{N}(\mu_1,\sigma_1^2)$、$Q=\mathcal{N}(\mu_2,\sigma_2^2)$:

$$
W_2^2(P,Q) ;=; (\mu_1 - \mu_2)^2 ;+; (\sigma_1 - \sigma_2)^2
$$

符号说明:

  • $W_2^2$ —— 二阶 Wasserstein 距离的平方;
  • $\mu_1,\mu_2$ —— 两个高斯的均值(位置);
  • $\sigma_1,\sigma_2$ —— 两个高斯的标准差(尺度)。

$$
D_{\mathrm{KL}}(P,|,Q) ;=; \log\frac{\sigma_2}{\sigma_1} ;+; \frac{\sigma_1^2 + (\mu_1-\mu_2)^2}{2\sigma_2^2} ;-; \frac{1}{2}
$$

符号说明:同 2.1 的连续 KL,此处代入高斯密度后积分得到闭式;$\log$ 为自然对数。

两者的行为差异(本文实算):

设置 $D_{\mathrm{KL}}(P|Q)$ $W_2(P,Q)$
$\sigma_1=1.0,\ \sigma_2=1$(同分布) 0.0000 0.0000
$\sigma_1=0.5,\ \sigma_2=1$ 0.3181 0.5000
$\sigma_1=0.1,\ \sigma_2=1$ 1.8076 0.9000
$\sigma_1=0.01,\ \sigma_2=1$ 4.1052 0.9900
$\mu_1=0,\ \mu_2=1$(同方差) 0.5000 1.0000
$\mu_1=0,\ \mu_2=2$(同方差) 2.0000 2.0000

符号说明:均值和标准差如列名;$P$ 为第一行参数对应的高斯,$Q=\mathcal{N}(0,1)$。

如何读:

  1. 对尺度差异,KL 爆炸式增长,$W_2$ 有界。$\sigma_1$ 从 1 降到 0.01,KL 从 0 涨到 4.1(还会继续涨到 $+\infty$),而 $W_2$ 只从 0 涨到 0.99(上界 1)。
  2. 对位置差异,两者都是二次的。$\mu$ 差 2 时,KL $=2.0$、$W_2=2.0$,此时恰好相等(因为 KL 的二次项是 $\frac{(\mu_1-\mu_2)^2}{2\sigma_2^2} = \frac{4}{2}=2$,而 $W_2 = |\mu_1-\mu_2| = 2$)。

第 1 条是 Wasserstein 在生成模型里受欢迎的直接原因:它给”尺度错了”一个有限的、平滑的惩罚信号,而 KL 给的是爆炸的惩罚。

7.4 四条核心性质

  1. 是度量:满足非负、对称、三角不等式($p\ge1$ 且 $d$ 是度量时);
  2. 弱收敛性:在紧度量空间上,$W_p(P_n,P)\to 0 \iff P_n$ 弱收敛到 $P$。KL 和 TV 都没有这个性质(例如 $P_n = \delta_{1/n}$,弱收敛到 $\delta_0$,但 $\mathrm{TV}(\delta_{1/n},\delta_0)=1$ 恒成立);
  3. 对支撑集不重叠仍有限:这是它相对 KL 的最大优势(见 7.3 表);
  4. 依赖 ground metric $d$**:换一个 $d$,$W_p$ 就变。这既是优点(可以注入领域知识,如”半音距离”用于音乐、编辑距离用于文本),也是缺点(不具参数化不变性)**。

重要提醒(第 4 条的推论):

KL 对可逆的变量变换不变(因为密度变换时分子分母同乘 Jacobian 行列式,比值不变)。
Wasserstein 不具备这个不变性——它对坐标的缩放极其敏感。

所以:**”在原始像素空间算 $W_2$”和”在归一化后的特征空间算 $W_2$”是两个不同的量**。做实验时必须固定 ground metric 并写清。

7.5 计算复杂度

情形 方法 复杂度
一维 排序 + 积分(7.2) $O(n\log n)$
高维、精确 网络单纯形 / 内点法 一般 $O(n^3\log n)$ 级,实际不可用
高维、近似 Sinkhorn(熵正则化 OT) $O(n^2/\varepsilon^2)$ 级,可 GPU
高维、样本 $W_1$ 的对偶形式(Kantorovich–Rubinstein)→ 用 1-Lipschitz 网络估计(WGAN) 一次前向

Kantorovich–Rubinstein 对偶(这是 WGAN 的理论基础):

$$
W_1(P,Q) ;=; \sup_{|f|{L}\le 1}\ \Big( \mathbb{E}{x\sim P}[f(x)] - \mathbb{E}_{y\sim Q}[f(y)] \Big)
$$

符号说明:

  • $f$ —— 一个实值函数(在 WGAN 里就是判别器/critic 网络);
  • $|f|_L \le 1$ —— $f$ 是 1-Lipschitz 的,即对任意 $x,y$ 有 $|f(x)-f(y)| \le d(x,y)$;
  • $\mathbb{E}_{x\sim P}[f(x)]$ —— $f$ 在分布 $P$ 下的期望(用样本均值估计);
  • $\sup$ —— 上确界,即”在所有 1-Lipschitz 函数中取最大值”。

**这条对偶把”解最优传输”变成了”训练一个受约束的网络”**——只需保证 $f$ 是 1-Lipschitz(用权重裁剪、梯度惩罚或谱归一化实现),就能用梯度上升估计 $W_1$。这解释了 WGAN 为什么能在高维图像上工作。


8. f-divergence:一个框架装下前六个

8.1 定义

给定凸函数 $f: (0,\infty)\to\mathbb{R}$ 且 $f(1)=0$,定义:

$$
D_f(P,|,Q) ;=; \int_{\mathcal{X}} q(x), f!\left(\frac{p(x)}{q(x)}\right) \mathrm{d}x
$$

符号说明:

  • $D_f(P|Q)$ —— 由 $f$ 生成的 $f$-divergence($f$ 散度);
  • $f$ —— 一个凸函数,定义在正实数上,且满足 $f(1)=0$(保证 $P=Q$ 时为 0);
  • $p(x), q(x)$ —— 两个分布的密度;
  • $p(x)/q(x)$ —— 似然比(likelihood ratio),这是整个框架的核心变量;
  • $q(x)$ —— 外层权重(这个权重很关键:它使 $D_f$ 在 $P=Q$ 时自动为 0,因为 $f(1)=0$ 且 $\int q = 1$)。

这个框架的洞察:

所有这些散度,本质上都是”对似然比 $r(x) = p(x)/q(x)$ 做某个加权平均”,区别只在于用什么函数 $f$ 去度量”$r$ 偏离 1 有多远”。

8.2 各度量的 $f$(对照表)

散度 $f(t)$ 代入后的值 是否对称 是否有界
KL:$D_{\mathrm{KL}}(P|Q)$ $t\log t$ $\int p\log\frac{p}{q}$ ❌ ❌(可 $+\infty$)
反向 KL:$D_{\mathrm{KL}}(Q|P)$ $-\log t$ $\int q\log\frac{q}{p}$ ❌ ❌
$\mathrm{TV}$ $\tfrac12|t-1|$ $\tfrac12\int|p-q|$ ✅ ✅($\le 1$)
$\chi^2$(Pearson) $(t-1)^2$ $\int\frac{(p-q)^2}{q}$ ❌ ❌
Hellinger$^2$ $\tfrac12(\sqrt t-1)^2$ $\tfrac12\int(\sqrt p-\sqrt q)^2$ ✅ ✅($\le 1$)
$\mathrm{JS}$ $\tfrac{t}{2}\log\tfrac{2t}{1+t} + \tfrac12\log\tfrac{2}{1+t}$ 见 4.1 ✅ ✅($\le\log2$)
Squared Hellinger $(\sqrt t-1)^2$ $2H^2$ ✅ ✅

符号说明:

  • $t$ —— 似然比 $p(x)/q(x)$ 的占位符,$t>0$;
  • 表中每一行的 $f$ 都满足 $f(1)=0$ 且凸;
  • “是否对称”指 $D_f(P|Q) = D_f(Q|P)$ 是否普遍成立。

如何读这张表:

  1. KL 与反向 KL 的 $f$ 互为”共轭”关系($t\log t$ 与 $-\log t$)。它们都是 $f$-divergence,只是 $f$ 不同。**所以”前向/反向”在框架内表现为选哪个 $f$**。
  2. $\chi^2$ 是无界的(因为 $(t-1)^2$ 在 $t\to\infty$ 时增长快),这与 6.3 一致。
  3. JS 确实是一个 $f$-divergence,但它的 $f$ 形式复杂(是两个分布的混合效应导致的),所以很多人误以为 JS 不在框架内。

8.3 框架给出的三条通用性质

性质 1(非负):对任意凸 $f$ 且 $f(1)=0$,

$$
D_f(P,|,Q) ;\ge; 0, \qquad \text{等号} \iff P = Q\ \text{(在 $f$ 严格凸于 1 处时)}
$$

证明:Jensen 不等式。设 $r(x) = p(x)/q(x)$,

$$
D_f(P|Q) = \mathbb{E}_{q}\big[f(r)\big] ;\ge; f\big(\mathbb{E}_q[r]\big) = f(1) = 0
$$

符号说明:$\mathbb{E}_q[\cdot]$ 表示按密度 $q$ 取期望;$\mathbb{E}_q[r] = \int q\cdot\frac{p}{q} = \int p = 1$。

性质 2(联合凸性):$D_f(P|Q)$ 关于 $(P,Q)$ 是联合凸的。这保证了优化问题的良好性(局部最优即全局最优)。

性质 3(数据处理不等式):对任意可测映射 $T$,

$$
D_f(P,|,Q) ;\ge; D_f\big(P\circ T^{-1},|,Q\circ T^{-1}\big)
$$

符号说明:$T$ 为任意可测映射;$P\circ T^{-1}$ 为推前分布(同 2.6)。

这条是 $f$-divergence 共有的,也是 2.6 节 KL 的 DPI 的推广。

8.4 框架的边界:Wasserstein 不在里面

必须强调:Wasserstein 距离不是 $f$-divergence。

理由(两条,都可验证):

  1. Wasserstein 依赖 ground metric $d$,$f$-divergence 不依赖。$f$-divergence 只通过似然比 $p/q$ 逐点比较,完全不看”点的位置”;Wasserstein 的核心恰恰是”点与点之间的距离”。
  2. 行为不同(7.5 节的弱收敛性与支撑集性质)。

这就是”两大流派”的分野:

1
2
3
4
5
6
7
8
9
10
11
12
13
              分布差异的度量
│
┌─────────────┴─────────────┐
│ │
f-divergence 族 最优传输族
(逐点比似然比) (比较几何搬运代价)
│ │
KL / reverse KL / Wasserstein-p
JS / TV / χ² / │
Hellinger └── 需 ground metric d
│
共同性质:非负、联合凸、DPI
不共享:弱收敛性、支撑集鲁棒性

这张图是全文最重要的一张。它说明了为什么”用 KL 训练的东西”和”用 W 评估的东西”会出现不一致——它们测的根本不是同一个几何。


9. 关系图谱:五条把全家桶串起来的等式与不等式

这一节把前面散落的关系集中起来。五条关系里,前三条是等式(精确分解),后两条是不等式(界)。

9.1 关系一:交叉熵分解(等式)

$$
H(P, Q) ;=; H(P) ;+; D_{\mathrm{KL}}(P,|,Q)
$$

符号说明(重复出现,重新说明):

  • $H(P,Q)$ —— 交叉熵:$- \sum_x P(x)\log Q(x)$,权重是 $P$、对数里是 $Q$;
  • $H(P)$ —— Shannon 熵:$-\sum_x P(x)\log P(x)$;
  • $D_{\mathrm{KL}}(P|Q)$ —— KL 散度:$\sum_x P(x)\log\frac{P(x)}{Q(x)}$。

推论(这是工程上最常用的一句):当 $P$ 是固定的数据分布时,

$$
\arg\min_{\theta} H(P, Q_\theta) ;=; \arg\min_{\theta} D_{\mathrm{KL}}(P,|,Q_\theta)
$$

符号说明:$Q_\theta$ 为参数 $\theta$ 索引的模型分布;$\arg\min_\theta$ 表示”使目标最小的参数值”。

注意:这两个 $\arg\min$ 都是前向 KL(因为权重是 $P$)。所以标准 MLE 训练 = 最小化前向 KL = 覆盖型行为(见 3.3)。

9.2 关系二:互信息是 KL(等式)

$$
I(X; Y) ;=; D_{\mathrm{KL}}\big(P_{XY},|,P_X \otimes P_Y\big)
$$

符号说明:

  • $I(X;Y)$ —— 随机变量 $X$ 与 $Y$ 之间的互信息;
  • $P_{XY}$ —— $(X,Y)$ 的联合分布,定义在 $\mathcal{X}\times\mathcal{Y}$ 上;
  • $P_X$ —— $X$ 的边缘分布,$P_X(x) = \sum_y P_{XY}(x,y)$;
  • $P_Y$ —— $Y$ 的边缘分布,$P_Y(y) = \sum_x P_{XY}(x,y)$;
  • $P_X \otimes P_Y$ —— 乘积分布(即”假设 $X$ 与 $Y$ 独立”时的联合分布),定义为 $(P_X\otimes P_Y)(x,y) = P_X(x)P_Y(y)$;
  • $D_{\mathrm{KL}}(\cdot|\cdot)$ —— KL 散度。

展开形式(便于理解):

$$
I(X;Y) ;=; \sum_{x,y} P_{XY}(x,y),\log\frac{P_{XY}(x,y)}{P_X(x),P_Y(y)}
$$

直觉:互信息 = “真实联合分布”与”独立假设下的联合分布”之间的 KL。所以互信息衡量的是”$X$ 与 $Y$ 偏离独立有多远”。

三条值得记住的推论:

  1. **$I(X;Y)\ge 0$**(因为 KL 非负),等号当且仅当 $X \perp Y$(独立);
  2. **$I(X;Y) = I(Y;X)$**(对称,虽然 KL 不对称——因为联合分布与乘积分布的 KL 在两个方向上恰好互为镜像);
  3. **$I(X;Y) = H(X) - H(X|Y) = H(Y) - H(Y|X)$**,其中 $H(X|Y)$ 为条件熵。

工程用途:特征选择(选互信息高的特征)、表示学习(InfoNCE 是互信息的变分下界)、信息瓶颈($\min I(X;Z) - \beta I(Z;Y)$)。

9.3 关系三:Pinsker 不等式(不等式)

$$
\mathrm{TV}(P, Q) ;\le; \sqrt{\tfrac{1}{2}, D_{\mathrm{KL}}(P,|,Q)}
$$

符号说明:

  • $\mathrm{TV}(P,Q)$ —— 全变差距离:$\frac12\int|p-q|$(定义见 5.1);
  • $D_{\mathrm{KL}}(P|Q)$ —— KL 散度;
  • $\sqrt{\tfrac12(\cdot)}$ —— 右端。

这条不等式的三重意义:

意义 1:KL 控制 TV。 KL 小 ⟹ TV 小。所以”KL 收敛”是比”TV 收敛”更强的结论。

意义 2:反过来不成立。 TV 小 ⟹ KL 不一定小。反例:$P = \mathrm{Bern}(0.5)$、$Q=\mathrm{Bern}(0.5+\varepsilon)$,则 $\mathrm{TV}=\varepsilon \to 0$,而 $D_{\mathrm{KL}} \approx 2\varepsilon^2 \to 0$——这个例子看起来还行,但换成”$P$ 与 $Q$ 只在一个极小概率区间上不同”的例子,可以做到 $\mathrm{TV}$ 很小而 KL 很大。

意义 3:局部是紧的。 由 2.3 节实算,$\mathrm{Bern}(0.5+\varepsilon)$ vs $\mathrm{Bern}(0.5)$ 有 $D_{\mathrm{KL}}\approx 2\varepsilon^2 = 2,\mathrm{TV}^2$,恰好使 Pinsker 取等号。所以在”分布很接近”时,Pinsker 是紧的;在”分布差距大”时,它是松的。

工程含义:Pinsker 给你一个”用 KL 的平方根去上界 TV”的工具。当你想论证”KL 小 ⟹ 行为差异小”(如隐私、鲁棒性)时,Pinsker 是标准桥梁。

9.4 关系四:有界度量之间的夹逼(不等式)

四条已验证的不等式(本文在 5000 组随机分布上检验,零违例):

$$
H^2(P,Q) ;\le; \mathrm{TV}(P,Q) ;\le; \min\left{ \sqrt{\tfrac{1}{2}D_{\mathrm{KL}}(P|Q)},\ \tfrac{1}{2}\sqrt{\chi^2(P|Q)},\ \sqrt{2,\mathrm{JS}(P|Q)},\ H(P,Q)\sqrt{2-H^2(P,Q)} \right}
$$

符号说明:

  • $H(P,Q)$ —— Hellinger 距离(5.2);$H^2(P,Q)$ —— 其平方;
  • $\mathrm{TV}(P,Q)$ —— 全变差距离(5.1);
  • $D_{\mathrm{KL}}(P|Q)$ —— KL 散度(2.1);
  • $\chi^2(P|Q)$ —— Pearson $\chi^2$ 散度(6.1);
  • $\mathrm{JS}(P|Q)$ —— Jensen–Shannon 散度(4.1);
  • $\min{\cdot}$ —— 取括号内各项的最小值(每条都是合法上界,取最紧的)。

如何读:

  • 左半边:Hellinger 的平方是 TV 的下界 → $H^2$ 永远”小于”TV,所以 Hellinger 距离(未平方)在数值上接近或大于 TV。
  • 右半边:四个上界各有适用场景。当 KL 可算且不大时,$\sqrt{KL/2}$ 通常最紧;当 $\chi^2$ 可算时,$\frac12\sqrt{\chi^2}$ 次之;JS 上界 $\sqrt{2JS}$ 在实测中相当紧(本文实测最大比值 0.9999)。

这条夹逼的实用价值:如果你的系统里只方便算其中一个量,可以用不等式推另一个量的界。例如你只能算 JS(它不需要 $q=0$ 的假设,比 KL 稳),可以用 $\mathrm{TV}\le\sqrt{2,\mathrm{JS}}$ 反推 TV 的上界。

9.5 关系五:JS 与 TV 的双向夹逼

$$
2,\mathrm{TV}(P,Q)^2 ;\le; \mathrm{JS}(P,|,Q) ;\le; \log 2
$$

符号说明:$\mathrm{TV}$ 见 5.1,$\mathrm{JS}$ 见 4.1,$\log 2 \approx 0.6931$。

左半边的推导(四步):

第 1 步:把 Pinsker 不等式(9.3)写成”KL 下界 TV”的形式。对任意两个分布 $A$、$B$,由 $\mathrm{TV}(A,B)\le\sqrt{\frac12 D_{\mathrm{KL}}(A|B)}$ 两边平方并整理得

$$
D_{\mathrm{KL}}(A,|,B) ;\ge; 2,\mathrm{TV}(A,B)^{2}
$$

符号说明:$A$、$B$ —— 任意两个概率分布;$\mathrm{TV}(A,B)$、$D_{\mathrm{KL}}(A|B)$ 同前述定义。这一步是 Pinsker 的等价变形,不是新的定理。

第 2 步:取 $A=P$、$B=M$ 与 $A=Q$、$B=M$,其中 $M=\frac{P+Q}{2}$(即 JS 定义中的中点分布),得

$$
D_{\mathrm{KL}}(P|M) ;\ge; 2,\mathrm{TV}(P,M)^{2}, \qquad D_{\mathrm{KL}}(Q|M) ;\ge; 2,\mathrm{TV}(Q,M)^{2}
$$

符号说明:$M$ —— 等权混合 $M(x)=\frac{P(x)+Q(x)}{2}$;其余符号同前。

第 3 步:利用中点性质。对全变差距离,有

$$
\mathrm{TV}(P,M) ;=; \mathrm{TV}(Q,M) ;=; \tfrac{1}{2},\mathrm{TV}(P,Q)
$$

符号说明:$\mathrm{TV}(P,M)$ —— $P$ 与中点 $M$ 的 TV;这条等式成立是因为 $\mathrm{TV}$ 满足 $\mathrm{TV}(P,\frac{P+Q}{2}) = \frac12\int|p-\frac{p+q}{2}| = \frac14\int|p-q| = \frac12\mathrm{TV}(P,Q)$,同理对 $Q$。

第 4 步:代回 JS 的定义并合并:

$$
\mathrm{JS}(P|Q) ;=; \tfrac{1}{2}D_{\mathrm{KL}}(P|M) ;+; \tfrac{1}{2}D_{\mathrm{KL}}(Q|M) ;\ge; \tfrac{1}{2}\cdot 2\Big(\tfrac{\mathrm{TV}}{2}\Big)^{2} ;+; \tfrac{1}{2}\cdot 2\Big(\tfrac{\mathrm{TV}}{2}\Big)^{2} ;=; \tfrac{1}{4}\mathrm{TV}^{2}\cdot 2 ;=; \tfrac{1}{2}\mathrm{TV}^{2}
$$

符号说明:$\mathrm{TV}$ 是 $\mathrm{TV}(P,Q)$ 的简写;两个 $\tfrac12$ 来自 JS 定义中的等权混合。

两边乘 2 即得 $2,\mathrm{TV}(P,Q)^2 \le \mathrm{JS}(P|Q)$。

右半边 $\mathrm{JS}\le\log 2$ 是 4.2 节的性质 2。

含义:把两边开方,得到

$$
\mathrm{TV}(P,Q) ;\le; \sqrt{2,\mathrm{JS}(P,|,Q)}
$$

符号说明:同前。

这条在实测中几乎是紧的:本文在 5000 组随机分布上计算 $\mathrm{TV}/\sqrt{2,\mathrm{JS}}$ 的最大值,得到 0.9999。所以”JS 上界 TV”这个方向上,$\sqrt{2,\mathrm{JS}}$ 是一个高效实用的界。

实用价值:如果只方便算 JS(它比 KL 稳,不需要 $q>0$ 的假设),可以用这条推 TV 的上界;反之亦然。

9.6 一张总图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
                    ┌─────────────────────────────┐
│ Shannon 熵 H(P) │
│ 非负(离散)、凹、≤ log|X| │
└───────────┬─────────────────┘
│
┌─────────────────────┼──────────────────────┐
│ H(P,Q)=H(P)+KL │ I(X;Y)=KL(P_XY‖P_X⊗P_Y)
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 交叉熵 H(P,Q) │ │ 互信息 I(X;Y) │ │ 条件熵/联合熵 │
└──────────────────┘ └──────────────────┘ └──────────────────┘

═══════════════════════ f-divergence 族 ═══════════════════════
║ 统一形式:D_f(P‖Q) = ∫ q(x) f(p(x)/q(x)) dx ║
║ 共同性质:非负、联合凸、数据处理不等式(DPI) ║
═══════════════════════════════════════════════════════════════

KL(P‖Q) Reverse KL(Q‖P) JS(P‖Q)
f=t·log t f=-log t f=复合(见8.2)
不对称/无界 不对称/无界 对称/≤log2
│ │ │ √JS 是度量
│ Pinsker │ │
▼ ▼ ▼
┌──────────────────────────────────────────────────────┐
│ TV(P,Q) = ½∫|p-q| 0 ≤ TV ≤ 1 │
│ 对称,是度量 │
└──────────────────────────────────────────────────────┘
▲ ▲
│ H² ≤ TV │ TV ≤ ½√χ²
│ │
┌────────┴────────┐ ┌────────┴─────────┐
│ Hellinger H(P,Q)│ │ χ²(P‖Q) │
│ 对称,是度量 │ │ 不对称,无界 │
│ 0 ≤ H ≤ 1 │ │ (t-1)² │
└─────────────────┘ └──────────────────┘

═══════════════════ 不在上面的族里 ═══════════════════
┌──────────────────────────────────────────────────┐
│ Wasserstein W_p(P,Q) │
│ · 依赖 ground metric d(f-divergence 不依赖) │
│ · 满足弱收敛性(f-divergence 不满足) │
│ · 支撑集不重叠时仍有限(KL 会 +∞) │
│ · 1维闭式:W_1 = ∫|F_P - F_Q| dt │
└──────────────────────────────────────────────────┘

这张图最重要的一条信息(在图的最下方):Wasserstein 被单独画在框外,不是排版问题,是数学上的必须——它不属于 $f$-divergence 族(理由见 8.4)。


10. 工程选择指南

10.1 主表(场景 → 度量 → 原因)

场景 推荐度量 原因 不要用什么
语言模型 / 分类训练 交叉熵 $H(P,Q)$ 等价于前向 KL;数值稳定(log-softmax);梯度性质好 TV(无梯度)、Wasserstein(太慢)
变分推断 / VAE / 扩散 ELBO 里的 $\mathrm{KL}(q|p)$,即反向 KL 可解析(高斯间有闭式);寻峰行为匹配”找一个解释” 前向 KL(期望对真实后验取,不可算)
知识蒸馏 前向 $\mathrm{KL}(p_{\text{teacher}}|q_\theta)$,常用温度 $\tau$ 软化 覆盖型:学生需覆盖教师所有模式;$\tau$ 让软标签梯度更大 反向 KL(会丢掉教师的模式)
GAN 训练 Wasserstein(WGAN/WGAN-GP)或 hinge loss JS 在不重叠时饱和、梯度消失;W 提供平滑梯度 原始 JS(4.3 节)
采样质量评估(高维) MMD / Energy distance / FID(特征空间) TV 在高维样本上恒为 1(5.1);KL 估不准 TV、KL(直接从样本估)
采样质量评估(一维) $W_1$(= CDF 面积) 有闭式、$O(n\log n)$、对尺度敏感且不爆炸 TV(对离散点太粗)
分布漂移监控 PSI(≈ Jeffreys/对称 KL)、KS 检验、$W_1$ 有界、可设阈值、可解释 直接 KL(值为 $+\infty$ 时无法告警)
隐私(DP) Rényi KL / hockey-stick($\chi^2$ 型 $f$-div) 与 $(\varepsilon,\delta)$-DP 的组合性质最匹配 TV(组合性差)
策略约束(RLHF/PPO) 反向 $\mathrm{KL}(\pi_\theta|\pi_{\text{ref}})$ 采样来自 $\pi_\theta$,只能估这个方向 前向 KL(需对 $\pi_{\text{ref}}$ 采样,但你的数据来自 $\pi_\theta$)
特征对齐 / 域适应 MMD、CORAL、或 $\mathrm{KL}$ MMD 无分布假设、可用核技巧 TV(估不准)
最近邻 / 聚类 / 检索 Hellinger、$\sqrt{\mathrm{JS}}$、Wasserstein 必须用度量(KL、JS、$\chi^2$ 都不是度量) KL、JS、$\chi^2$(无三角不等式)
两分布支撑集可能不重叠 Wasserstein、Hellinger、TV KL/$\chi^2$ 会 $+\infty$;Hellinger/TV 有界 KL、$\chi^2$
要求严格的”一个数”报告 $\sqrt{\mathrm{JS}}$ 或 $W_1$ 前者是度量、有界;后者几何直观 KL(不对称,报告值必须注明方向)

10.2 一张决策树

1
2
3
4
5
6
7
8
9
10
11
12
13
14
你要比较两个分布。先问三个问题:

Q1: 支撑集可能不重叠吗?(例如生成初期、不同维度、有限样本)
├── 是 → 排除 KL 和 χ²(会 +∞)
│ → 用 Wasserstein / Hellinger / TV / JS
└── 否 → 继续

Q2: 需要"度量结构"吗?(聚类、最近邻、三角不等式)
├── 是 → 只能用 Hellinger / √JS / Wasserstein
└── 否 → 继续

Q3: 数据是高维图像/文本样本,还是低维/有模型密度?
├── 模型密度可算(有 p(x)、q(x)) → KL / JS / χ² 都可
└── 只有样本 → 用样本友好的:Wasserstein(1D) / MMD / Energy / FID

10.3 一个常被忽略的选择依据:优化上的性质

性质 谁有 工程意义
梯度处处存在 Wasserstein(在对偶形式下) 分布不重叠时仍能训练(WGAN)
梯度有界 TV、Hellinger、JS(有界 ⟹ 梯度有界但可能为 0) 训练稳定,但可能学不动
梯度会饱和 JS(4.3) 分布远时学不动
可解析计算 高斯间 KL、一维 $W_1$ 快,适合当正则项
可无偏估计 KL(用重要性采样)、MMD(U-statistic) 适合 SGD
有偏估计 KL 的 plug-in 估计(从有限样本) 会低估/高估,需注意

最后一行值得展开:从有限样本估计 KL 是有偏的,且在连续分布 + 非参数估计下,plug-in KL 估计的上界常常是 $+\infty$**(因为经验分布与模型分布的支撑集不同)。这就是为什么实践中”用 KL 评估两个样本集”经常得到荒谬的大数——不是代码错了,是方法错了**。


11. 四个高频陷阱

11.1 陷阱一:不对称——“KL 是多少”这句话本身不完整

现象:报告里写”KL 散度为 0.14”,无法判断是 $D_{\mathrm{KL}}(P|Q)$ 还是 $D_{\mathrm{KL}}(Q|P)$。

严重性:两者的值可以差一个数量级,且优化行为完全不同(3.2 节:覆盖型 vs 寻峰型)。

真实案例(本文实算):$\mathrm{Bern}(0.5)$ 与 $\mathrm{Bern}(0.9)$:

$$
D_{\mathrm{KL}}\big(\mathrm{Bern}(0.5),|,\mathrm{Bern}(0.9)\big) = 0.5108, \qquad D_{\mathrm{KL}}\big(\mathrm{Bern}(0.9),|,\mathrm{Bern}(0.5)\big) = 0.3681
$$

差 39%。

修法(三条):

  1. 永远写清方向:用 $D_{\mathrm{KL}}(P|Q)$ 记号,并在文字里说明”$P$ 是什么、$Q$ 是什么”;
  2. 代码里把方向写进函数名:kl_forward(p_data, q_model) 而不是 kl(p, q);
  3. 需要对称时,明确用对称版本:JS(4.1),或 Jeffreys 散度 $D_{\mathrm{KL}}(P|Q) + D_{\mathrm{KL}}(Q|P)$。

注意:Jeffreys 散度不是 JS。前者是两个 KL 之和(无界),后者是两个 KL 对中点的平均(有界)。两者常被混用。

11.2 陷阱二:无限值——$+\infty$ 不是 bug,是定义

四个来源:

来源 例子 是否”真”无限
支撑集不包含 $P=\mathcal{N}(0,1)$,$Q$ 是 ${0}$ 上的点质量 是(数学上确实 $+\infty$)
数值下溢 $Q(x)$ 在 fp32 下算成 0(实际是 $10^{-50}$) 否(实现问题)
有限样本的经验分布 用 $\hat P_n$ vs $\hat Q_m$ 算 KL,两者支撑集不相交 是(方法误用)
维度不匹配 批量里某条样本的序列长度不同,padding 位置的概率为 0 否(需 mask)

修法(按正确性排序):

  1. 最正确:换度量。如果支撑集可能不重叠,用 Wasserstein 或 Hellinger;
  2. 次正确:加平滑/正则。$D_{\mathrm{KL}}(P|Q_\epsilon)$,其中 $Q_\epsilon = (1-\epsilon)Q + \epsilon U$($U$ 为均匀分布,$\epsilon$ 是很小的混合系数)。这改变了目标函数,要意识到;
  3. 工程折中:截断。$Q(x)\leftarrow\max(Q(x),\ \epsilon)$,$\epsilon$ 如 $10^{-12}$。这引入了偏差,且偏差量级不可控;
  4. 最不推荐:丢弃 $Q(x)=0$ 的项。这等价于在”交集”上算 KL,会系统性低估差异。

判定”真无限还是假无限”的方法:

1
2
3
# 检查有多少比例的 x 满足 q(x) == 0 而 p(x) > 0
mask = (q == 0) & (p > 0)
print(mask.mean()) # 若 > 0,先查是不是下溢/未 mask

**如果真实比例接近 0 但报 $+\infty$**,几乎一定是下溢或 padding 问题,不是数学问题。

11.3 陷阱三:数值稳定性——五个具体写法

问题 1:直接算 $\log P - \log Q$ 会溢出/下溢

1
2
3
4
5
# ❌ 危险:p 或 q 很小时,np.log(q) 可能是 -inf
kl = np.sum(p * (np.log(p) - np.log(q)))

# ✅ 安全:用 log 空间的输入(logits),避免先 exp 再 log
kl = np.sum(np.exp(logp) * (logp - logq)) # logp, logq 是 log-probabilities

符号说明:logp、logq 为对数概率(log-probabilities),数值上是负数;用对数输入可以避免 $\log(0)$。

问题 2:softmax 后取 log 会丢精度

1
2
3
4
5
# ❌ 两次精度损失:softmax → log
log_q = torch.log(torch.softmax(logits, dim=-1))

# ✅ 一次到位
log_q = torch.log_softmax(logits, dim=-1)

符号说明:logits 为未归一化的打分向量;log_softmax 内部用 log-sum-exp 技巧,避免先归一化再取对数。

问题 3:$0\log 0$ 必须按 0 处理

1
2
3
4
5
# ✅ 用 mask,或用 xlogy
kl = torch.sum(torch.xlogy(p, p / q)) # xlogy(0, y) = 0
# 或
mask = p > 0
kl = torch.sum(p[mask] * torch.log(p[mask] / q[mask]))

符号说明:xlogy(a, b) 计算 $a\log b$,且在 $a=0$ 时返回 0。

问题 4:大词表求和要用 log-sum-exp 而不是逐项累加

在语言模型里,$\mathcal{X}$ 是 5 万–20 万维的词表。逐项计算再累加会累积 float32 的舍入误差。做法:用 float64 累加,或用分块 + Kahan 求和。

符号说明:词表大小 $|\mathcal{X}|$ 为类别数;float32 的有效位数约 7 位十进制,累加 10 万项会累积明显误差。

问题 5:JS 用 $\log$ 直接算会得到 nan

1
2
3
4
5
6
7
8
# ❌ p 和 q 都接近 0 时,(p+q)/2 也可能是 0
m = (p + q) / 2
js = 0.5 * kl(p, m) + 0.5 * kl(q, m) # m=0 处会 nan

# ✅ 在 log 空间做混合
log_m = torch.logaddexp(logp, logq) - np.log(2)
js = 0.5 * torch.sum(torch.exp(logp) * (logp - log_m)) \
+ 0.5 * torch.sum(torch.exp(logq) * (logq - log_m))

符号说明:logaddexp(a,b) 计算 $\log(e^a + e^b)$,在 log 空间安全地做加法;减 $\log 2$ 是除以 2 取对数。

11.4 陷阱四:用错几何——TV 在高维样本上失效

现象:用 TV 比较两组图像样本,得到 1.0;用 TV 比较一维直方图,得到 0.03。同一个度量,一个有用一个无用。

原因(5.1 节已推导):经验分布的 TV 只在”样本点重合”时才小于 1,而高维连续空间中样本点几乎必然不重合。

更一般的规律:

$$
\text{让 } \mathrm{TV}(\hat P_n, \hat Q_m) \to 0 \text{ 所需样本量} ;\asymp; \text{支撑集的”有效体积”}
$$

符号说明:$\hat P_n, \hat Q_m$ 为 $n$、$m$ 个样本的经验分布;”有效体积”在高维下指数增长。

这被称为维度灾难在分布度量上的表现。推论:任何基于”逐点比较密度”的度量(TV、KL、$\chi^2$、Hellinger)在高维有限样本下都会失效,因为密度估不准。

解法:

方案 机制
在低维特征空间比较 FID 的做法:先过 Inception 网络降到 2048 维再比
用积分概率度量(IPM) MMD(核方法)、Energy distance——只依赖样本,不估密度
用一维投影 Sliced Wasserstein:随机投影到一维,$W_1$ 有闭式
用最优传输 高维 $W_2$ 用 Sinkhorn 近似

这张表解释了为什么生成模型的评估都用 FID/MMD 而不用 KL/TV——不是偏好,是低维密度估计在高维失效。

11.5 补充陷阱(两条短但常见)

陷阱五:把 KL 当距离做检索

$$
\nexists\ \text{三角不等式} \implies \text{不能用 KD-tree / LSH / 任何依赖度量的索引}
$$

符号说明:$\nexists$ 表示”不存在”;KD-tree 与 LSH 是依赖度量性质的空间索引结构。

如果非要用 KL 做”相似度”,用 $\sqrt{\mathrm{JS}}$(4.2 性质 3)或 Hellinger(5.2)。

陷阱六:忽略参数化不变性

$$
\text{KL 对可逆变换不变}, \qquad \text{Wasserstein 对坐标缩放敏感}
$$

符号说明:”可逆变换”指 $y=g(x)$ 且 $g$ 为双射。

后果:如果你在”标准化后的特征空间”算 $W_2$,得到的数依赖于标准化的方式(除以标准差 vs 除以四分位距),不同实现之间不可比。而 KL 不受影响(因为 Jacobian 在分子分母里约掉了)。

实践建议:报告 Wasserstein 时必须写清 ground metric(”欧氏距离,特征已 z-score 标准化”),否则数字无意义。


12. 小结

  1. 这些度量不是同一件事的近似,而是”两个分布有多不同”的六种定义。 选错不是精度问题,是问错了问题。核心分野是 $f$-divergence 族(逐点比似然比) 与 最优传输族(比几何搬运代价)。
  2. 交叉熵 = 熵 + KL,且熵与参数无关。所以 MLE $\equiv$ 最小化前向 KL。这是所有训练损失的起点。
  3. KL 不是距离:不对称、无三角不等式、可 $+\infty$。它的不对称不是缺陷,而是两种不同优化哲学的体现。
  4. 前向 KL 是覆盖型(mass-covering):$Q$ 必须在 $P$ 有质量处都有质量,故倾向摊大方差。反向 KL 是寻峰型(mode-seeking):$Q$ 不能进入 $P$ 无质量处,故倾向锁死单峰。本文的双峰实算验证了两者分别给出 $s=2.063$(覆盖)与 $s=0.5$(贴峰)。
  5. RLHF 的 KL 惩罚是反向 KL,这为”输出多样性下降”提供了一个可解释的机制(寻峰)。但这不是唯一原因,不能把因果全归给它。
  6. JS 对称有界($\le \log 2$),但会饱和。分布不重叠时 JS 恒为 $\log 2$、梯度为 0——这是 WGAN 的直接动机。**$\sqrt{\mathrm{JS}}$ 才是度量,JS 本身不是。**
  7. TV 有界、是度量,但在高维有限样本上恒等于 1。所以它只适合一维/低维直方图,绝不能用来比较高维样本。
  8. Hellinger 用平方根密度,从而把问题变成 $L^2$ 几何。它是有界度量,且满足 $H^2 \le \mathrm{TV} \le H\sqrt{2-H^2}$(本文数值验证)。
  9. $\chi^2$ 按 $Q$ 加权,对”分母小”极度敏感,无界、不对称。它在隐私(hockey-stick)与拟合优度检验里不可替代。
  10. Wasserstein 的最大优势是”支撑集不重叠仍有限”且”弱收敛”**,这解决 KL 的两个根本缺陷。代价是依赖 ground metric**、计算复杂、对坐标缩放敏感。
  11. 一维 $W_1$ = 两条 CDF 曲线间的面积($O(n\log n)$ 可算),这是工程上最实用的一条闭式解。
  12. Pinsker($\mathrm{TV}\le\sqrt{\mathrm{KL}/2}$)在局部是紧的:分布接近时 $D_{\mathrm{KL}}\approx 2\mathrm{TV}^2$(本文实算比值 1.0000)。所以”KL 小 ⟹ TV 小”,但反向不成立。
  13. 关系图谱的五条:交叉熵分解(等式)、互信息=KL(等式)、Pinsker(不等式)、有界度量的夹逼(不等式)、$2\mathrm{TV}^2\le\mathrm{JS}\le\log2$(不等式)。前两条把”训练损失”与”信息论量”连起来,后三条把”有界度量”与”无界散度”连起来。
  14. 四大陷阱:① 不对称(必须注明方向);② $+\infty$(先判断是数学还是数值);③ 数值稳定性(用 log_softmax/xlogy/logaddexp);④ 用错几何(TV 在高维失效)。
  15. 报告时必须写清四件事:度量的名字与方向、数值精度(float32/float64)、支撑集假设(是否加平滑)、以及(对 Wasserstein)ground metric 的定义。

如果只留一句:KL 回答”用 $Q$ 编码来自 $P$ 的数据要多付多少代价”,Wasserstein 回答”把 $P$ 搬成 $Q$ 要花多少运费”——前者是信息论问题,后者是几何问题,它们在数学上分属两个族,在实践中不能互相替代。


参考来源

信息论基础

  • Cover & Thomas, Elements of Information Theory, 2nd ed.(熵、KL、互信息、Pinsker 不等式的标准教材;第 2 章与第 11 章)
  • Csiszár, Information-Type Measures of Difference of Probability Distributions and Indirect Observations, Studia Sci. Math. Hungar. 1967($f$-divergence 的原始提出)
  • Ali & Silvey, A General Class of Coefficients of Divergence of One Distribution from Another, JRSS-B 1966($\phi$-divergence,与 $f$-divergence 同族)
  • Pinsker, Information and Information Stability of Random Variables and Processes, 1964(Pinsker 不等式原始出处;常数 $1/2$ 的紧性讨论见后续文献)

$f$-divergence 与统一框架

  • Liese & Vajda, On Divergences and Informations in Statistics and Information Theory, IEEE Trans. IT 2006($f$-divergence 性质的系统整理,含 DPI 与联合凸性)
  • Sason & Verdú, $f$-Divergence Inequalities, IEEE Trans. IT 2016(本文 9.4 节多条不等式的权威来源,含 Hellinger–TV、$\chi^2$–TV 的关系)
  • Polyanskiy & Wu, Information Theory: From Coding to Learning, 2022(现代教材,$f$-divergence 与强数据处理不等式的整理)

KL 的几何与变分

  • Kullback & Leibler, On Information and Suites of Sufficiency, Annals of Mathematical Statistics 1951(KL 原始)
  • Amari, Information Geometry and Its Applications, 2016(KL 的局部二次性与 Fisher 度量的系统论述)
  • Blei, Kucukelbir, McAuliffe, Variational Inference: A Review for Statisticians, JASA 2017(前向/反向 KL 在变分推断中的行为差异的标准参考)
  • Bishop, Pattern Recognition and Machine Learning, 2006, §10.1(反向 KL 的 mode-seeking 性质的经典图示)

JS 与 GAN

  • Lin, Divergence Measures Based on the Shannon Entropy, IEEE Trans. IT 1991(JS 散度原始)
  • Endres & Schindelin, A New Metric for Probability Distributions, IEEE Trans. IT 2003(**$\sqrt{\mathrm{JS}}$ 是度量的证明**)
  • Goodfellow et al., Generative Adversarial Nets, NeurIPS 2014(GAN 与 JS 的等价关系)
  • Arjovsky & Bottou, Towards Principled Methods for Training Generative Adversarial Networks, ICLR 2017(两分布支撑集不重叠时 JS 梯度消失的分析)
  • Arjovsky, Chintala, Bottou, Wasserstein GAN, 2017(WGAN 与 Kantorovich–Rubinstein 对偶)

Wasserstein / 最优传输

  • Villani, Optimal Transport: Old and New, 2009(最优传输的标准参考)
  • Peyré & Cuturi, Computational Optimal Transport, Foundations and Trends in ML 2019(Sinkhorn、一维闭式、复杂度分析的工程向综述)
  • Kantorovich, On the Translocation of Masses, 1942(对偶形式的原始)
  • Kolouri et al., Optimal Mass Transport: Signal Processing and Machine-Learning Applications, IEEE Signal Processing Magazine 2017(工程应用综述)

扩散模型与 KL

  • Ho, Jain, Abbeel, Denoising Diffusion Probabilistic Models, NeurIPS 2020(逐步 KL 的累加结构)
  • Song et al., Score-Based Generative Modeling through Stochastic Differential Equations, ICLR 2021(连续时间的 KL/散度视角)

RLHF 与策略 KL

  • Stiennon et al., Learning to Summarize from Human Feedback, NeurIPS 2020(KL 惩罚的早期形式)
  • Ouyang et al., Training Language Models to Follow Instructions with Human Feedback(InstructGPT), NeurIPS 2022($\beta,\mathrm{KL}(\pi_\theta|\pi_{\text{ref}})$ 的设定)
  • Schulman et al., Proximal Policy Optimization Algorithms, 2017(PPO 的 KL 估计实践)

漂移检测与评估

  • Rabanser, Günnemann, Lipton, Failing Loudly: An Empirical Study of Methods for Detecting Dataset Shift, NeurIPS 2019(PSI、KS、MMD、分类器检验的实证对比)
  • Gretton et al., A Kernel Two-Sample Test(MMD), JMLR 2012
  • Heusel et al., GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium(FID), NeurIPS 2017

说明:本文所有数值表格均由 Python/NumPy 实际计算得出(Bernoulli 的 KL/JS、高斯的 KL 与 $W_2$、双峰拟合的前向/反向 KL 最优解、四条不等式的随机检验),代码逻辑在正文中已给出关键片段,可按 2.1、4.1、5.2、6.1、7.2 的定义复现。9.1–9.5 的五条关系均为已发表的定理或恒等式,出处见上;其中 9.4 节的四条形如式与 9.5 节的双向夹逼,本文额外做了 5000 组随机分布的数值验证(零违例),但这只是佐证,不构成证明。