正向KL散度与反向KL散度

KL散度的公式是
K L [ p ( x ) ∣ ∣ q ( x ) ] = ∫ x p ( x ) l o g p ( x ) q ( x ) d x KL[p(x)||q(x)] = \int_{x}p(x)log{p(x) \over q(x)}dx KL[p(x)q(x)]=xp(x)logq(x)p(x)dx

假设真实分布为 p ( x ) p(x) p(x),我们想用分布 q ( x ) q(x) q(x)去近似 p ( x ) p(x) p(x),我们很容易想到用最小化KL散度来求,但由于KL散度是不对称的,所以并不是真正意义上的距离,那么我们是应该用 K L [ p ∣ ∣ q ] KL[p||q] KL[pq]还是用 K L [ q ∣ ∣ p ] KL[q||p] KL[qp]?

下面就来分析这两种情况:

正向KL散度: K L [ p ∣ ∣ q ] KL[p||q] KL[pq]

K L [ p ∣ ∣ q ] KL[p||q] KL[pq]被称为正向KL散度,其形式为:
q ^ = a r g m i n q ∫ x p ( x ) l o g p ( x ) q ( x ) d x (1) \tag{1} \hat{q} = argmin_{q} \int_{x}p(x)log{p(x) \over q(x)}dx q^=argminqxp(x)logq(x)p(x)dx(1)
仔细观察(1)式, p ( x ) p(x) p(x)是已知的真实分布,要求使上式最小的 q ( x ) q(x) q(x)

考虑当 p ( x ) = 0 p(x)=0 p(x)=0时,这时 q ( x ) q(x) q(x)取任何值都可以,因为 l o g p ( x ) q ( x ) log{p(x) \over q(x)} logq(x)p(x)这一项对整体的KL散度没有影响。当 p ( x ) > 0 p(x)>0 p(x)>0时, l o g p ( x ) q ( x ) log{p(x) \over q(x)} logq(x)p(x)这一项对整体的KL散度就会产生影响,为了使(1)式最小, q ( x ) q(x) q(x)又处于 l o g p ( x ) q ( x ) log{p(x) \over q(x)} logq(x)p(x)中分母的位置,所以 q ( x ) q(x) q(x)尽量大一些才好。

总体而言,对于正向 KL 散度,在 p ( x ) p(x) p(x)大的地方,想让 KL 散度小,就需要 q ( x ) q(x) q(x) 的值也尽量大;在 p ( x ) p(x) p(x)小的地方, q ( x ) q(x) q(x)对整体 KL 影响并不大(因为 log 项本身分子很小,又乘了一个非常小的 p(x))。换一种说法,要想使正向 KL 散度最小,则要求在 p p p 不为 0 的地方, q q q 也尽量不为 0,所以正向 KL 散度被称为是 zero avoiding。此时得到的分布 q q q 是一个比较 “宽” 的分布。

反向KL散度: K L [ q ∣ ∣ p ] KL[q||p] KL[qp]

K L [ q ∣ ∣ p ] KL[q||p] KL[qp]被称为反向KL散度,其形式为:
q ^ = a r g m i n q ∫ x q ( x ) l o g q ( x ) p ( x ) d x (2) \tag{2} \hat{q} = argmin_{q} \int_{x}q(x)log{q(x) \over p(x)}dx q^=argminqxq(x)logp(x)q(x)dx(2)
仔细观察(2)式, p ( x ) p(x) p(x)是已知的真实分布,要求使上式最小的 q ( x ) q(x) q(x)

考虑当 p ( x ) = 0 p(x)=0 p(x)=0时,这时为了使(2)式变小, q ( x ) q(x) q(x)取0值才可以,否则(2)式就会变成无穷大。当 p ( x ) > 0 p(x)>0 p(x)>0时,为了使(2)式变小,必须在 p ( x ) p(x) p(x)小的地方, q ( x ) q(x) q(x)也小。在 p ( x ) p(x) p(x)大的地方可以适当忽略。换一种说法,要想使反向 KL 散度最小,则要求在 p p p 为 0 的地方, q q q 也尽量为 0,所以反向 KL 散度被称为是 zero forcing。此时得到分布 q q q 是一个比较 “窄” 的分布。

一个例子

假如 p ( x ) p(x) p(x)是两个高斯分布的混合, q ( x ) q(x) q(x)是单个高斯,用 q ( x ) q(x) q(x)去近似 p ( x ) p(x) p(x),两种KL散度该如何选择?
正向KL散度与反向KL散度
对于正向KL散度来说, q ( x ) q(x) q(x)的分布图像更符合第二行,正向KL散度更在意 p ( x ) p(x) p(x)中的常见事件,也就是首先要保证 p ( x ) p(x) p(x)峰值附近的 x x x,在 q ( x ) q(x) q(x)中的概率密度值不能为0。当 p p p 具有多个峰时, q q q 选择将这些峰模糊到一起,以便将高概率质量放到所有峰上。
正向KL散度与反向KL散度
对于反向KL散度来说, q ( x ) q(x) q(x)的分布图像更符合第二行。反向KL散度更在意 p ( x ) p(x) p(x)中的罕见事件,也就是首先要保证 p ( x ) p(x) p(x)低谷附件的 x x x,在 q ( x ) q(x) q(x)中的概率密度值也较小。当 p p p 具有多个峰并且这些峰间隔很宽时,如该图所示,最小化 KL 散度会选择单个峰,以避免将概率密度放置在 p p p的多个峰之间的低概率区域中。

在机器学习的变分推理中使用的是反向 K L KL KL

参考:https://lumingdong.cn/various-entropies-in-machine-learning.html