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散度的数学概念

PRML书中公式(1.118)KL散度恒大于等于 0的推导

以上是关于KL散度&互信息的主要内容,如果未能解决你的问题,请参考以下文章

最大化互信息

最大化互信息

最大化互信息

熵与互信息

信息论:熵与互信息

机器学习特征筛选:互信息法(mutual information)