KL散度
Contents
KL散度用来做什么?
KL散度的用途
:比较两个概率分布的接近程度。
在统计应用中,我们经常需要用一个简单的,近似的概率分布f∗
来描述一个复杂的概率分布f。这个时候,我们需要一个量来衡量我们选择的近似分布 f∗相比原分布f究竟损失了多少信息量,这就是KL散度起作用的地方。
熵
为了更好的理解KL散度,在这里首先抛出熵的概念。在信息论这门学科中,一个很重要的目标就是量化描述数据中含有多少信息。 为此,提出了熵的概念,记作H,一个概率分布所对应的熵表达如下:
$$
H= −\sum_{i=1}^N=p(x_i)⋅\log (p(x_i))
$$
果我们使用 log2 作为底,熵可以被理解为:我们编码所有信息所需要的最小位数
。 需要注意的是:通过计算熵,我们可以知道信息编码需要的最小位数,却不能确定最佳的数据压缩策略。怎样选择最优数据压缩策略,使得数据存储位数与熵计算的位数相同,达到最优压缩,是另一个庞大的课题。
KL散度的计算
现在,我们能够量化数据中的信息量了,就可以来衡量近似分布带来的信息损失了。KL散度的计算公式其实是熵计算公式的简单变形,在原有概率分布 p 上,加入我们的近似概率分布 q,计算他们的每个取值对应对数的差: $$ D_{KL}(p||q)= ∑_{i=1}^Np(x_i)⋅(log(p(x_i))−log(q(x_i)))\
=∑_{i=1}^Np(x_i)⋅log \frac{p(x_i)}{q(x_i)}
$$
换句话说,KL散度计算的就是数据的原分布与近似分布的概率的对数差的期望值
。 在对数以2为底时,log2 ,可以理解为“我们损失了多少位的信息”
KL散度的连续定义: $$ D_{KL}(p||q)=\int p(x)⋅log \frac{p(x)}{q(x)}dx $$