KL散度的公式是
假设真实分布为,我们想用分布去近似,我们很容易想到用最小化KL散度来求,但由于KL散度是不对称的,所以并不是真正意义上的距离,那么我们是应该用还是用?
下面就来分析这两种情况:
正向KL散度:
被称为正向KL散度,其形式为:
仔细观察(1)式,是已知的真实分布,要求使上式最小的。
考虑当时,这时取任何值都可以,因为这一项对整体的KL散度没有影响。当时,这一项对整体的KL散度就会产生影响,为了使(1)式最小,又处于中分母的位置,所以尽量大一些才好。
总体而言,对于正向 KL 散度,在大的地方,想让 KL 散度小,就需要 的值也尽量大;在小的地方,对整体 KL 影响并不大(因为 log 项本身分子很小,又乘了一个非常小的 p(x))。换一种说法,要想使正向 KL 散度最小,则要求在 不为 0 的地方, 也尽量不为 0,所以正向 KL 散度被称为是 zero avoiding。此时得到的分布
反向KL散度:
被称为反向KL散度,其形式为:
仔细观察(2)式,是已知的真实分布,要求使上式最小的。
考虑当时,这时为了使(2)式变小,取0值才可以,否则(2)式就会变成无穷大。当时,为了使(2)式变小,必须在小的地方,也小。在大的地方可以适当忽略。换一种说法,要想使反向 KL 散度最小,则要求在 为 0 的地方, 也尽量为 0,所以反向 KL 散度被称为是 zero forcing。此时得到分布
一个例子
假如是两个高斯分布的混合,是单个高斯,用去近似,两种KL散度该如何选择?
对于正向KL散度来说,的分布图像更符合第二行,正向KL散度更在意中的常见事件,也就是首先要保证峰值附近的,在中的概率密度值不能为0。当 具有多个峰时, 选择将这些峰模糊到一起,以便将高概率质量放到所有峰上。
对于反向KL散度来说,的分布图像更符合第二行。反向KL散度更在意中的罕见事件,也就是首先要保证低谷附件的,在中的概率密度值也较小。当 具有多个峰并且这些峰间隔很宽时,如该图所示,最小化 KL 散度会选择单个峰,以避免将概率密度放置在的多个峰之间的低概率区域中。
在机器学习的变分推理中使用的是反向。
参考:https://lumingdong.cn/various-entropies-in-machine-learning.html