码迷,mamicode.com
首页 > 其他好文 > 详细

信息熵,交叉熵,KL散度

时间:2017-10-15 21:22:47      阅读:383      评论:0      收藏:0      [点我收藏+]

标签:现象   es2017   reference   方式   get   是什么   而且   targe   部分   

0 前言

上课的时候老师讲到了信息论中的一些概念,看到交叉熵,这个概念经常用在机器学习中的损失函数中。

这部分知识算是机器学习的先备知识,所以查资料加深一下理解。

Reference:

信息熵是什么,韩迪的回答:https://www.zhihu.com/question/22178202

如何通俗的解释交叉熵于相对熵,匿名用户的回答和张一山的回答:https://www.zhihu.com/question/41252833

 

1 信息熵的抽象定义

熵的概念最早由统计热力学引入。

信息熵是由信息论之父香农提出来的,它用于随机变量的不确定性度量,先上信息熵的公式。

技术分享

信息是用来减少随机不确定性的东西(即不确定性的减少)。

我们可以用log ( 1/P )来衡量不确定性。P是一件事情发生的概率,概率越大,不确定性越小。

可以看到信息熵的公式,其实就是log ( 1/P )的期望,就是不确定性的期望,它代表了一个系统的不确定性,信息熵越大,不确定性越大。

注意这个公式有个默认前提,就是X分布下的随机变量x彼此之间相互独立。还有log的底默认为2,实际上底是多少都可以,但是在信息论中我们经常讨论的是二进制和比特,所以用2。

 

信息熵在联合概率分布的自然推广,就得到了联合熵

技术分享

当X, Y相互独立时,H(X, Y) = H(X) + H(Y)

当X和Y不独立时,可以用 I(X, Y) = H(X) + H(Y) - H(X, Y) 衡量两个分布的相关性,这个定义比较少用到。

  

2 信息熵的实例解释

举个例子说明信息熵的作用。

例子是知乎上看来的,我觉得讲的挺好的。

比如赌马比赛,有4匹马{ A, B, C, D},获胜概率分别为{ 1/2, 1/4, 1/8, 1/8 },将哪一匹马获胜视为随机变量X属于 { A, B, C, D } 。

假定我们需要用尽可能少的二元问题来确定随机变量 X 的取值。

例如,问题1:A获胜了吗? 问题2:B获胜了吗? 问题3:C获胜了吗?

最后我们可以通过最多3个二元问题,来确定取值。

如果X = A,那么需要问1次(问题1:是不是A?),概率为1/2 

如果X = B,那么需要问2次(问题1:是不是A?问题2:是不是B?),概率为1/4 

如果X = C,那么需要问3次(问题1,问题2,问题3),概率为1/8 

如果X = D,那么需要问3次(问题1,问题2,问题3),概率为1/8 

 

那么为确定X取值的二元问题的数量为

技术分享

 

回到信息熵的定义,会发现通过之前的信息熵公式,神奇地得到了:

技术分享 

在二进制计算机中,一个比特为0或1,其实就代表了一个二元问题的回答。也就是说,在计算机中,我们给哪一匹马夺冠这个事件进行编码,所需要的平均码长为1.75个比特。

很显然,为了尽可能减少码长,我们要给发生概率 技术分享 较大的事件,分配较短的码长 技术分享。这个问题深入讨论,可以得出霍夫曼编码的概念。

 

霍夫曼编码就是利用了这种大概率事件分配短码的思想,而且可以证明这种编码方式是最优的。我们可以证明上述现象:

  • 为了获得信息熵为 技术分享 的随机变量 技术分享 的一个样本,平均需要抛掷均匀硬币(或二元问题) 技术分享 次(参考猜赛马问题的案例)
  • 信息熵是数据压缩的一个临界值(参考码长部分的案例)

 所以,信息熵H(X)可以看做,对X中的样本进行编码所需要的编码长度的期望值。它代表了编码方案

 

3 交叉熵和KL散度

上一节说了信息熵H(X)可以看做,对X中的样本进行编码所需要的编码长度的期望值。

这里可以引申出交叉熵的理解,现在有两个分布,真实分布p和非真实分布q,我们的样本来自真实分布p。

按照真实分布p来编码样本所需的编码长度的期望为技术分享,这就是上面说的信息熵H( p )

按照不真实分布q来编码样本所需的编码长度的期望为技术分享,这就是所谓的交叉熵H( p,q )

这里引申出KL散度D(p||q) = H(p,q) - H(p) = 技术分享,也叫做相对熵,它表示两个分布的差异,差异越大,相对熵越大。

 

机器学习中,我们用非真实分布q去预测真实分布p,因为真实分布p是固定的,D(p||q) = H(p,q) - H(p) 中 H(p) 固定,也就是说交叉熵H(p,q)越大,相对熵D(p||q)越大,两个分布的差异越大。

所以交叉熵用来做损失函数就是这个道理,它衡量了真实分布和预测分布的差异性。 

信息熵,交叉熵,KL散度

标签:现象   es2017   reference   方式   get   是什么   而且   targe   部分   

原文地址:http://www.cnblogs.com/liaohuiqiang/p/7673681.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!