目录
老饼讲解:一步一步上手学习

【介绍】一篇入门之-KL散度是什么

作者 : 老饼 发表日期 : 2025-12-17 00:42:08 更新日期 : 2026-05-11 21:22:05
老饼讲解-简单易懂,干货满满,爽过嗦螺!


学机器学习时,可能还没有接触那么多KL散度(Kullback-Leibler Divergence),但接触到深度学习,就会发现到处都是KL散度,KL散度,KL散度,特别是图片生成,KL散度几乎无处不在,本来它是个很简单的东西,偏偏有些文章写得非常复杂,那这里就来说说KL散度到底是个什么东西。

一、KL散度是什么

KL散度(Kullback-Leibler divergence)也称为KL距离,它用于计算两个分布的距离(差异):

KL散度的作用

我们先来看看KL散度的公式,然后再来说说KL散度背后的意义,以及它的公式推导。

1.1. KL散度公式

分布 Q(X)与 P(X) 的KL散度计算公式为:

 

 当x为连续变量时,则KL散度可以写为:

 

其中,P一般称为真实分布,Q则指认知分布,KL用于度量Q与P的距离。

比较值得注意的是,KL虽然有距离之称,但它是不对称的,即Q与P的KL散度不等于P与Q的KL散度。

1.2. KL散度计算例子

真实分布P和认知分布Q如下所示:

样本数据

下面我们来计算一下Q与P的KL散度,也就是Q与P的KL距离。

其实是很简单的,只需要根据KL散度公式,就可以计算得到:


二、KL散度公式推导

如果知道交叉熵,就很容易理解KL散度是怎么搞出来的了,它其实只是交叉熵的零值化,让我们细细道来。

2.1. 交叉熵-简单回顾

先回顾一下交叉熵,交叉熵就是在不知道真实分布、仅有猜测的概率时,我们知道真相时所获得的信息量期望。设,它的真实分布为 ,而我们认为X的分布为时,则,交叉熵的计算公式为:

交叉熵一般用来评估我们认知概率的准确性,在认知概率与真实概率一致,即时,交叉熵是最小的而随着我们的认知概率分布Q(x)与真实概率分布P(x)出现的偏差越来越大,交叉熵也越来越大。

2.1. KL散度-公式推导

从上面可以知道,交叉熵可以当成,认知分布Q(x)和真实分布P(x)的差异的一种度量。

而KL呢,则是在交叉熵的基础上,让这种度量的最小值为0,也就是把交叉熵减去它的最小值:

上面的公式是容易理解的,是Q与P的交叉熵,而当Q取为P时,交叉熵取得最小值,也就得到了KL散度了,所以KL散度,其实就是对交叉熵进行零值化,以此来作为距离。

总结

总的来说,由于交叉熵可以用来度量认知分布与真实分布的差异,所以KL进一步将它零值化,以此来作为距离,这就是KL散度了,多简单的一点改动。本质地认识KL散度和交叉熵,就会明白,交叉熵就可以用来评估分布的差异了,而KL散度只是零值化,所以不需要零值化时,就用交叉熵就可以了,这样简单一些。



图标 评论
添加评论