调香师的两种配方——KL散度的故事
寓言
建安城内有一家百年香铺,招牌上只写两个字:真与诚。
掌柜姓柳,是城里公认的调香第一人。他的铺子有一样规矩坚持了六十年:每调一炉香,必同时写下两份配方。一份藏在琥珀色的琉璃瓶里,瓶身刻"本"字,是为根本方;另一份抄在桑皮纸上,瓶身刻"传"字,是为传承方——待客人带走后,留给后人参考。
"根本方是天地,传承方是人情。"柳掌柜常对徒弟这样说。
徒弟阿灼跟了三年,只学会了一点皮毛。但他心中始终有一个疑惑:为何两份配方明明写着同样的香料,分量也几乎一样,调出来的气味却总有微妙差别?他尝不出来,师父却说那差别"明明白白"。
某日,城中张员外嫁女,来铺子定制一款"百年好合"喜香。柳掌柜病了,便让阿灼独自调制。阿灼战战兢兢,凭记忆调了一炉,倒入琉璃瓶中。他看了看根本方,又看了看传承方,发现自己的做法与根本方八九不离十,只是有几味药的用量略有调整——他按传承方的记录,觉得有些分量"取整"了更好记。
张员外闻了香,眉头微皱,说:"这香好,却不是我想要的那种好。"
阿灼回来,惴惴不安。柳掌柜听完后,取出两瓶墨水,一瓶朱红,一瓶漆黑。
"你来看,"掌柜说,"这两瓶墨水颜色不同。你觉得它们有多不同?"
阿灼仔细端详:"朱红偏暖,漆黑偏暗……若要量化,大概差了三成?"
柳掌柜摇头:"从朱红看漆黑,和从漆黑看朱红,是不一样的。"
阿灼不解。柳掌柜取来两张宣纸,各滴三滴墨——第一张,先滴朱红,后滴漆黑;第二张,先滴漆黑,后滴朱红。两次滴墨的位置不同,但总量相同。
"你看出没有?"掌柜问,"从朱红出发,去量漆黑,要走的路长;从漆黑出发,去量朱红,走的路短。差距是有方向的。"
阿灼若有所悟。柳掌柜继续说:
"根本方是你应该走的那条路——它精确记录了每味香料在天地间的本来比例。传承方是你实际走的那条路——人记东西,总会取整、简化、近似。两者之间的差距,就是你那炉香不够完美的原因。"
"我该怎么做才能没有差距?"
柳掌柜笑了笑:"差距永远在。你唯一能做的,是让它尽可能小。而且记住——从传承方去修正根本方,和从根本方去逼近传承方,是两件不同的事,付出的代价也不同。这就是为什么,差距是有方向的。"
阿灼低头沉思。良久,他抬起头:
"我懂了。若把'应该'的概率分布记作 P,把'实际'的概率分布记作 Q,那么从 P 到 Q 的差距是……"
他拾起笔,在纸上写下一个式子:
$$D_{\text{KL}}(P \| Q) = \sum_{x} P(x) \ln \frac{P(x)}{Q(x)}$$
"这是以 P 为标准,去量 Q 的距离。反过来,$D_{\text{KL}}(Q \| P)$ 是以 Q 为标准,去量 P 的距离。它们不相等。"
柳掌柜拈须而笑,从袖中取出一本泛黄的小册子,封面上三个字:
KL散度。
"这本书,本是留给你的下一个三年。"
概念解释
KL散度(Kullback-Leibler Divergence),又称相对熵(Relative Entropy),是衡量两个概率分布 P 和 Q 之间差异的一种度量。在信息论中,它可以理解为:用基于分布 Q 的编码方案来编码服从分布 P 的样本时,所需的额外平均比特数。
KL散度是机器学习中最核心的概念之一,广泛应用于:
- 变分自编码器(VAE):作为重构损失的一部分,衡量生成分布与真实分布的差距
- EM算法:在M步中最大化Q函数,本质上是最小化KL散度
- GAN网络:原始GAN的损失函数本质上是对称JS散度(与KL散度相关)
- 变分推断:用简单的近似分布 Q 逼近真实后验分布 P
寓言 ↔ 概念对照表
| 寓言元素 | 概念对应 | |
|---|---|---|
| 根本方(本)与传承方(传) | 真实分布 P 与近似分布 Q | |
| 从根本方走到传承方的偏差 | $D_{\text{KL}}(P \ | Q)$ |
| 从传承方回看根本方的偏差 | $D_{\text{KL}}(Q \ | P)$ |
| 偏差永远存在,只求尽可能小 | $D_{\text{KL}}(P \ | Q) \geq 0$,等号仅在 P=Q 时成立 |
| 偏差具有方向性,两种量法不等 | KL散度的非对称性 | |
| 取整、简化、近似导致偏差 | 人为近似引入的信息损失 | |
| 两瓶墨水滴在不同位置,总量相同 | 不同分布可以有相同的均值/方差,但KL散度不同 |
核心公式
离散型KL散度:
$$D_{\text{KL}}(P \| Q) = -\sum_{x} P(x) \ln \frac{Q(x)}{P(x)} = \sum_{x} P(x) \ln \frac{P(x)}{Q(x)}$$
连续型KL散度:
$$D_{\text{KL}}(P \| Q) = \int_{-\infty}^{\infty} p(x) \ln \frac{p(x)}{q(x)} \, dx$$
KL散度的链式法则(在变分推断中非常重要):
$$D_{\text{KL}}(P(X,Y) \| Q(X,Y)) = D_{\text{KL}}(P(X) \| Q(X)) + \mathbb{E}_{x \sim P(X)}[D_{\text{KL}}(P(Y|X) \| Q(Y|X))]$$
与交叉熵的关系:
$$H(P, Q) = H(P) + D_{\text{KL}}(P \| Q)$$
其中 $H(P)$ 是信息熵,$H(P, Q)$ 是交叉熵。
关键要点
- 非负性:$D_{\text{KL}}(P \| Q) \geq 0$,当且仅当 $P = Q$ 时等于零
- 非对称性:$D_{\text{KL}}(P \| Q) \neq D_{\text{KL}}(Q \| P)$,这与欧氏距离不同
- 方向性:KL散度衡量的是"以 Q 为近似时,P 承受的额外代价"
- 连续性:要求 Q(x) 在 P(x) > 0 的地方也不能为零($Q(x) = 0$ 且 $P(x) > 0 \Rightarrow D_{\text{KL}} = \infty$)
- 不可作为度量:由于非对称性,KL散度不是真正的"距离"度量(更像一种"有向散度")
- 机器学习视角:我们通常用简单的 Q 逼近复杂的 P,最小化 $D_{\text{KL}}(P \| Q)$ 就是让 Q 尽可能保留 P 的信息
参考文献
- Kullback, S., & Leibler, R. A. (1951). On Information and Sufficiency. The Annals of Mathematical Statistics, 22(1), 79–86.
- Cover, T. M., & Thomas, J. A. (2006). Elements of Information Theory (2nd ed.). Wiley-Interscience.
- Kingma, D. P., & Welling, M. (2014). Auto-Encoding Variational Bayes. Proceedings of the International Conference on Learning Representations (ICLR).
- Goodfellow, I., et al. (2014). Generative Adversarial Networks. Advances in Neural Information Processing Systems (NeurIPS), 27.