正向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[p∣∣q]还是用 K L [ q ∣ ∣ p ] KL[q||p] KL[q∣∣p]?
下面就来分析这两种情况:
正向KL散度: K L [ p ∣ ∣ q ] KL[p||q] KL[p∣∣q]
K
L
[
p
∣
∣
q
]
KL[p||q]
KL[p∣∣q]被称为正向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^=argminq∫xp(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[q∣∣p]
K
L
[
q
∣
∣
p
]
KL[q||p]
KL[q∣∣p]被称为反向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^=argminq∫xq(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散度来说,
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散度来说,
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