本页扩展 03 KL 散度:统一的 $f$ 散度($f$-divergence)框架,以及 JS 散度、GAN 训练中的散度视角。
段末注释:$f$ 散度 $D_f(P | Q) = \mathbb{E}_Q\left[f\left(\frac{p(x)}{q(x)}\right)\right]$,$f$ 为凸函数且 $f(1)=0$;JS 散度(Jensen–Shannon divergence)为对称化的 KL 组合。
系列入口:00.系列规划 | 前置:03 交叉熵与 KL
1. $f$ 散度族(D2–D3)

$$
D_f(P | Q) = \int q(x) f\left(\frac{p(x)}{q(x)}\right) \mathrm{d}x = \mathbb{E}_{x \sim Q}\left[f\left(\frac{p(x)}{q(x)}\right)\right]
$$
常见成员:
| $f(t)$ | 名称 | 公式 |
|---|---|---|
| $t \log t$ | KL $D_{\mathrm{KL}}(P | Q)$ | $\mathbb{E}_P[\log\frac{p}{q}]$ |
| $-\log t$ | 反向 KL $D_{\mathrm{KL}}(Q | P)$ | $\mathbb{E}_Q[\log\frac{q}{p}]$ |
| $(t-1)^2$ | Pearson $\chi^2$ | $\mathbb{E}_Q[(\frac{p}{q}-1)^2]$ |
| $(\sqrt{t}-1)^2$ | Hellinger | 与 Bhattacharyya 相关 |
| $\frac12(t\log t - (t+1)\log\frac{t+1}{2})$ | 定义通过 $f$ | 见 JS below |
Jensen 不等式 → $D_f \ge 0$,$P=Q$ 时为 0。
2. JS 散度(D3)

$$
M = \frac{P + Q}{2}
$$
$$
D_{\mathrm{JS}}(P | Q) = \frac12 D_{\mathrm{KL}}(P | M) + \frac12 D_{\mathrm{KL}}(Q | M)
$$
| 性质 | KL | JS |
|---|---|---|
| 对称 | ✗ | ✓(常写 $D_{\mathrm{JS}}(P,Q)$) |
| 有界 | 无上界 | $0 \le D_{\mathrm{JS}} \le \log 2$(离散) |
| 平滑 | $q\to 0$ 时爆炸 | 更稳定 |
GAN 原始目标 与 JS 相关(有限样本下);实际 DCGAN 用非饱和 BCE 损失更稳。
3. 正向 vs 反向 KL(D6–D7)

| 优化 | 典型行为 | 场景 |
|---|---|---|
| $\min_Q D_{\mathrm{KL}}(P | Q)$ | mode-covering:$Q$ 覆盖 $P$ 所有模态 | MLE、前向 KL、变分推断 mean-field |
| $\min_Q D_{\mathrm{KL}}(Q | P)$ | mode-seeking:$Q$ 盯住 $P$ 一个模态 | EM、某些 GAN、反向 KL |
| VAE ELBO | $\mathbb{E}[-\log p(x | z)] + D_{\mathrm{KL}}(q(z |
| WGAN | Wasserstein 距离(非 $f$ 散度) | 改善训练稳定性 |
4. GAN 与散度(D7)
原始 minimax GAN:
$$
\min_G \max_D \mathbb{E}{x\sim P}[\log D(x)] + \mathbb{E}{z\sim p(z)}[\log(1-D(G(z)))]
$$
最优判别器 $D^*(x) = \frac{p(x)}{p(x)+q(x)}$ 时,目标与 JS$(P | Q)$ 相关。实践问题:饱和梯度 → 非饱和损失、WGAN-GP、LSGAN。
5. 局限(D8)

| 问题 | 说明 |
|---|---|
| 支撑不匹配 | $P,Q$ 支撑不交 → KL 无穷 |
| 有限 batch GAN | 散度估计高方差 |
| 选错方向 | 生成质量 mode collapse |
| $f$ 散度 vs Wasserstein | 后者对支撑更敏感、几何更好 |
6. NumPy 示例(D12)
1 | import numpy as np |
7. 小结
$f$ 散度 统一 KL、$\chi^2$、Hellinger;JS 对称有界;方向决定 mode-covering vs seeking。人类偏好对齐见 20 RLHF。