信息量、信息熵、KL散度、交叉熵以及最大似然估计

目录

信息量

信息熵

KL散度和交叉熵

交叉熵和最大似然估计的关系


信息量

       信息量最初由香农提出,是通信理论中的一个概念。一个概率事件X的信息量定义如下:

I(X) = -log(P(X)), P(X)表示事件X发生的概率。

       信息量最初提出来是用来衡量编码一个信号状态需要的比特数(当以2为底数时),在这个信息量定义下,可以得到在一个多信源系统中,为了无损传输,对于多个信源的一次传输的信号的编码所需要的比特数的理论下界。

       这是因为,在推导信息量的时候,对于信号的编码方式有三个基本原则,基于这三个基本原则,香农就从数学上直接推导出了信息量的上述表达式。 

       对于一个信号系统来说,不同信号出现的频率是不同的,信号的出现是一个随机性的概率事件,那么第一个基本原则就是,我们希望对于出现概率越高的信号,将其编码越靠前,即使用越少的比特数去编码;概率越低的信号,尽量靠后编码,即使用越多的比特数去编码;这样可以让我们在更多的时间使用更少的比特数编码信号。从信号损失的角度看,假如比特数不够,这样编码方式还可以让我们尽量降低信息的损失。因此,这一个原则使得信息量应该是关于信号概率的减函数。

       第二个原则就是对于独立的信号,信息量可加。所谓独立信号,即若信源1的信号A的概率为P(A),信源2的信号B的概率为P(B),那么信号AB同时出现的概率为P(A)P(B)。当两个独立信源同时传输时,假设单独传输A的信息量为I(A),单独传输B的信息量为I(B),那么我们认为同时传输两个独立信源的信息量应该为I(A)+I(B),I(AB)=I(A)+I(B),即信息量的可加性。这一点应该是比较直观的。

       第三个原则就是,为了满足数学上的操作性,信息量的定义应该是连续函数。

       基于上述三个原则,香农推出I(X)=-Log(P(X)),这就是信息量的由来。

       为了更好的理解,可以类比我们生活中的语言交流,语言实际上就是一种对于想法的编码,交流就是把想法在不同的个体之间进行传输。经过这么多年语言进化,语言编码会朝着一种最优化的方向演进,即我们往往会把生活中最常见的一些想法或现象用更加简炼的语言来表示,但不会造成交流困难(即信息损失);使用的越频繁的表达往往越简单,而使用越少的表达往往比较复杂。举个极端的例子,假如我们说,太阳从东边升起,人们听到这句话会感觉很正常,仅仅描述了一个日常的现象而已,人们不会再追问,因为背后的物理常识已经在大家心里形成共识,无需多解释;但是如果我们说,太阳从西边升起来了,这个从来没见过,现象背后的可能性太多了,人们不免会追问一句:怎么回事?因此,单纯一句“太阳从西边升起来了”是不会达到信息有效传输的,必须带着完整的现象解释才能保证信息的有效传输,这样就必须要用一大串的语言来编码这个事。所以,概率越小的事件,需要用越多的信息量来编码,小信息量的编码槽位,我们都留给更常见的事情了,这是最优的编码方式。这也解释了,为什么我们说,当一件小概率事件发生事,意味着信息量很大,这里的信息量其实就是需要用更多的语言来准确的解释和描述这个小概率事件,从而才能达到信息无损传输的目的。

信息熵

       信息熵是针对一个信源系统来讲的,而不是单个的信号;信息熵就是期望信息量,即对于一个信源系统来说,对于每次的信号,我们在平均意义上为了编码这个信号所需要使用的信息量。对于单个信源来讲,平均意义上的信息量,也就是信息熵似乎没有多大的现实意义,但是在多信源系统下,通过大数定律,我们可以得到,多个信源的信息熵之和就是每次信号编码传输需要的信息量的理论下界,这个下界在多信源系统下,在大数定律的保障下,就有了极为重要的现实意义,因为现实中,每次的信号传输,不会只传输单个信源系统的信号,一根网线,往往兼具着多个信源信号传输的任务。

       形式上,信息熵表示的是一个系统的期望信息量,那么如何在形式的基础上做一个更好的理解呢?首先,期望信息量越大并不代表信源系统中小概率的信号越多,因为即使小概率事件的信息量大,但是信息量乘以概率本身之后的期望便不一定大,事实上,在一个信号数为N的系统中,信息熵最大的时候是当每个信号的概率相等的时候,这个很容易根据信息熵的定义证明得到。

       在热力学中,一个封闭系统的熵越大,代表这个系统更加的混乱无序;那么在一个信号系统中,同样也可以做类似的理解。秩序代表规律,规律的作用就是可以用简单的语言来涵盖一类或者一系列的现象,而不是每个具体现象都有个性的描述。因此,如果一个信号系统,越有秩序越有规律,那么我们编码这个系统所需要的信息量就越少,如果这个系统越没有秩序和规律,那么我们就需要越多的信息量来编码;从这个角度看,信息熵可以用来衡量一个信号系统的无序性,或者说不确定性。那么什么情况下一个系统的信息熵是最大的呢?也就是说什么情况下一个信号系统是最无序,最不确定的呢?在信号数一定的情况下,当每个信号的出现概率一样大的时候,这时候,每个信号之间各种地位属性平等,我们无法通过其他任何的捷径或者说规律来简化编码,只能每一个信号平等对待,同样的编码,这时候,该信号系统的不确定性是最大的,因为没有任何的秩序。

       关于信息量和信息熵更多的理解,还可以参考博主另一篇博文《信息量和信息熵的理解》

KL散度和交叉熵

       我们前面已经说过,信息熵是编码一个信号系统平均意义上的下界值,这个前提是我们对信号系统的概率分布有一个正确的知识;假如我们对信号系统的概率分布有错误的知识,那么自然的,基于这个错误知识得到的信息熵会更大,即会用更多的期望信息量去编码这个信号系统。既然信息熵会更大,那么大多少,怎么去衡量这个多出来的误差呢?很自然的,我们会想到如下方式去衡量这个误差:

error=\sum -P(X_{i})log\hat{P(X_{i})}-(-P(X_{i})logP(X_{i}))=\sum P(X_{i})(logP(X_{i})-log(\hat{P(X_{i})}))

error就是在估计的概率分布的信息熵跟真实信息熵的差值,这个error就是KL散度。

       KL散度是非负的,只有当估计分布和真实分布完全相等时,才会等于0.目前为止,我们对于KL散度的非负性,只有一个直观上的解释和理解,从数学上,我们也可以很简单的证明这个事情。实际上,只需要简单变形一下,再利用琴生不等式即可得到,如下:

KL Divergence=\sum P(X_{i})(logP(X_{i})-log(\hat{P(X_{i})}))=-E(log\frac{\hat{P(X_{i})}}{P(X_{i})})\geqslant -log(E(\frac{\hat{P(X_{i})}}{P(X_{i})})=-log\sum \hat{P(X_{i})}=-log1=0

       自然地,如果KL散度越小,说明估计的分布越接近真实分布,即估计越好,因此我们可以用KL散度来衡量估计的好坏,即KL散度可以拿来作为估计的损失函数。KL散度什么时候适合拿来作为损失函数呢?通过上面的陈述,很明显的,当我们的估计变量是一个概率分布的时候,那么KL散度就很适合拿来作为损失函数,恰好对于机器学习中的分类任务,其估计的变量就是归属不同类别的概率分布,因此,分类任务就很适合使用KL散度作为损失函数。

       但是我们在机器学习中,对于分类任务,看到的损失函数常常都是cross entropy,即交叉熵,而不是KL散度,这是为何呢?实际上,我们只要简单的看下如下的交叉熵的定义,就会发现,KL散度就等于交叉熵减去真实分布的信息熵,而真实分布的信息熵是先验的,即和样本,和需要估计的参数没有任何的关系,因此,最小化KL散度就等价于最小化交叉熵,而且交叉熵的形式又更简单,直接就省略了先验分布的信息熵,因此实际中交叉熵才会拿来作为损失函数。

cross\_entropy=-\sum P(X_{i})log\hat{P(X_{i})}

KL\_Divergence=cross\_entropy-(-\sum P(X_{i})logP(X_{i}) )=cross\_entropy-entropy

交叉熵和最大似然估计的关系

       上面说到,当预测的变量是一个概率分布的时候,交叉熵是一个很合适的损失函数;这时我们会联想到,当预测变量可以表达为概率的时候,我们通常也可以用最大似然估计的方式来估计参数,那么,交叉熵和最大似然估计之间有什么关系吗?实际上,只要我们把交叉熵损失函数写出来,就可以发现,最小化交叉熵就等价于最大化对数似然函数。

       假设有N个样本,分类任务中共有k个类别,c_j表示第j类,y_i表示第i个样本的真实类别标签。那么交叉熵损失函数为:

cross\_entropy\_loss=\sum_{i}^{N}-\sum_{j}^{k}P(c_{j})log\hat{P(c_{j})}=-\sum_{i}^{N}log\hat{​{P(c_{j})}},where\ y_{i}=c_{j}

       可以看到,交叉熵损失函数就等于对数似然函数的相反数,因此,最小化交叉熵损失函数就等价于最大化对数似然函数。

 

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值