KL散度&互信息
Posted lvbaiyang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KL散度&互信息相关的知识,希望对你有一定的参考价值。
KL散度&互信息
KL散度(KL divergence)
假设我们是一组正在广袤无垠的太空中进行研究的科学家。我们发现了一些太空蠕虫,这些太空蠕虫的牙齿数量各不相同。现在我们需要将这些信息发回地球。但从太空向地球发送信息的成本很高,所以我们需要用尽量少的数据表达这些信息。我们有个好方法:我们不发送单个数值,而是绘制一张图表,其中 X 轴表示所观察到的不同牙齿数量(0,1,2…),Y 轴是看到的太空蠕虫具有 x 颗牙齿的概率(即具有 x 颗牙齿的蠕虫数量/蠕虫总数量)。这样,我们就将观察结果转换成了分布。
发送分布比发送每只蠕虫的信息更高效。但我们还能进一步压缩数据大小。我们可以用一个已知的分布来表示这个分布(比如均匀分布、二项分布、正态分布)。举个例子,假如我们用均匀分布来表示真实分布,我们只需要发送两段数据就能恢复真实数据;均匀概率和蠕虫数量。但我们怎样才能知道哪种分布能更好地解释真实分布呢?这就是 KL 散度的用武之地。
直观解释:KL 散度是一种衡量两个分布(比如两条线)之间的匹配程度的方法。
对于某个未知的分布(p(x)),我们用(q(x))进行建模并且传递信息,为了衡量这两个分布是否匹配,我们用附加信息量的期望表示。附加信息量在这里结尾处有介绍。
[
egin{align}
KL(p||q)&= -int p(x)ln q(x), dx-left (-int p(x)ln p(x),dx
ight)
onumber &= -int p(x)ln left(frac{q(x)}{p(x)}
ight)
onumber
end{align}
]
KL散度又称相对熵,表示用(q(x))去表示(p(x))时需要的附加信息量。
KL散度的性质
KL散度不是一个对称量,即:(KL(p||q) eq KL(q||p))。
并且(KL(p||q) geq 0),并且只在两个分布相同时值可以取0。证明:
对于凸函数(f(x)),有Jensen不等式:
[
f(sum_{i=1}^Mlambda_i x_i) leq sum_{i=1}^Mlambda_if(x_i), mathrm{ s.t.}lambda_i geq 0, and sum_ilambda_i =1
]
若把(lambda_i)看作取值(x_i)的概率,那么我们可以写成:
[
f(E(x)) leq E(f(x))
]
对于连续变量:
[
fleft(int xp(x), dx
ight)leq int f(x)p(x),dx
]
延伸一下:
[
f(E[xi(x)]) leq E[f(xi(x))]
]
那么由于(-ln x)是凸函数,(xi(x)=frac{q(x)}{p(x)}):
[
egin{align}
KL&=-int p(x)ln left(frac{q(x)}{p(x)}
ight)
onumber & geq -ln left( int xi(x) q(x),dx
ight)
onumber &=-ln left( int q(x),dx
ight) = 0
onumber
end{align}
]
并且由于(-ln x)是严格凸函数,只有在(q(x)=p(x))时等号成立。
数据压缩和密度估计有某种隐含的关系。对于某一分布(p(x)),如果我们知道真实的分布,那么我们可以给出最有效率的数据压缩并进行传输。若我们使用了其他的分布进行信息传输,那么一定会损失编码效率,传输效率降低,并且要额外传输的信息量至少为两者之间的KL散度。
在实际训练中,我们并不能得知真实的分布,所以只能用有限的数据加和得到其期望,此时KL散度近似为:
[
KL(p||q) simeq frac{1}{N} sum_{n=1}^N (-ln q(x_n| heta) +ln p(x_n))
]
公式右侧第二项与( heta)无关,第一项为其负对数似然函数。由此可见最小化KL散度就是最大化似然函数。
互信息(mutual information)
对于(p(x,y)),给出两个变量组成的数据集。若两变量相互独立,那么(p(x,y)=p(x)p(y))。若两变量不独立,那么我们要考察联合概率分布和边缘概率分布的KL散度,以判断两者是否接近独立。
我们称之为互信息:
[
egin{align}
I(x,y) &= KL[p(x,y)||p(x)p(y)]
onumber &= -iint p(x,y)frac{p(x)p(y)}{p(x,y)},dx,dy geq 0
onumber
end{align}
]
当两分布互相独立时等号成立。
根据条件熵的公式:
[
H(y|x) = -iint p(x,y)ln p(y|x),dy,dx
]
可以得到:
[
I(x,y)=H(x)-H(x|y)
]
即:互信息可以表示知道(y)后,(x)的不确定行的减小程度。也可以理解成为了表示(x),如果我们已经传输了(y),那么我们已经传输的信息量为(I(x,y))。
参考
以上是关于KL散度&互信息的主要内容,如果未能解决你的问题,请参考以下文章