信息熵
来源:互联网 发布:精密减速机 知乎 编辑:程序博客网 时间:2024/05/22 13:13
信息编码
我所知道的信息量是来源于信息编码,例如,我们有一篇英文文章,我要对这篇文章尽进行二进制编码,以达到压缩文章的效果,我该如何编码。我们知道,ASIIC编码都是使用相同长度的二进制来编码的(8位长),例如,
可是我们也知道文章中有的字符出现的次数比较多,有些字符出现的很少,如果我们将出现次数多的字符用短的二进制编码,出现少的字符用稍微长的字符编码,这样好像更合理。例如一篇文章有800个字符,a有400个,b有200个,c有100个,d有100个。如果使用自然编码,这篇文章有800*2=1600bit。
如果使用变长编码,编码长度为400*1+200*2+100*3+100*3=1400bit。
平均编码
实际上我们一般获得的都是字符的统计特性,我们可以使用平均编码来度量编码的好坏。例如上面的例子写成分布
所以期望长度就是0.5*2+0.25*2+0.125*2+0.125*2=2,另一种变长编码
期望长度就是0.5*1+0.25*2+0.125*3+0.125*3=1.75。这样很明显变长编码要比自然编码短。那该如何寻找更好的编码方式呢?
自信息
自信息是指,一个随机产生的事件所包含的自信息数量,只与事件发生的概率相关。公式为
我们根据自信息得到的信息量,就是这个字符所需要的最少编码。也就是说我们没有任何冗余的表达了这个字符的信息量。
信息熵
我们可以得到某个事件X的期望,也就是
交叉熵与相对熵
有时候我们需要对一篇文章编码,但是文章太长了,我们只能拿到一部分进行统计,然后进行编码(局部最优编码),对其余部分我们就直接使用第一部分得到的最优编码来编码。这样得到的平均编码长度(也就是信息熵)很可能不是全局最优的编码长度。我们用局部的分布q(x)得到的编码
因为没有得到全局的概率分布,所以我们使用局部概率分布得到编码比最优编码要长,具体就是
这就是使用局部分布计算的信息量与真实分布信息量的差值,我们称之为相对熵。我们可以对应到机器学习算法上,机器学习算法训练过程中会得到一个分布q,我们用这个分布来近似真实的的分布p,我们希望q越接近p越好,这说明我们训练的模型越接近真实的模型,所以相对熵越小模型越好。相对熵也可以看作是一种距离,但是这个距离不是对称的,即
交叉熵
如何通俗的解释交叉熵与相对熵?