一文说清楚你头疼不已的熵们:信息熵、联合熵、条件熵、互信息、交叉熵、相对熵(KL散度)
说起熵,相信看本文的你一定听过这个概念,我们以前高中的时候在化学里学过,我们有一种大致的概念就是:熵是描述系统混乱程度的一种物理量,而且我们知道世界是向着熵增的方向进行的。那么在信息论里面,熵又是一种什么样的存在呢,为什么要引入这样抽象的一个概念,香农大佬为啥要把人搞得迷迷糊糊的?而你搞机器学习的话,肯定会遇到什么联合熵,条件熵,交叉熵。这些熵,到底是什么关系,有什么用?本文将会尽量把信息熵之间的关系给阐述清楚,让你茅塞顿开,一泻千里。
1. 信息熵
我们说信息熵,当然就不再是化学中的熵的概念了,但是他们的内在精神十分相似,信息熵是描述一个随机变量的不确定性的,如X是一个随机变量,概率分布是,那么X的熵的定义为式子:
我们看到底数是2,因此熵的单位是比特,以后可以省略底数2。
你可以试图取两个分布,A是0.2,0.8;B是0.5,0.5,算算谁的熵更大呢?很容易可以算出后者的熵更大,这是什么意思呢?我们看A和B谁的不确定性更大?当然是B了,那么它的熵算出来更大,是不是也是更合理的呢?就是基于这样的一种思想,信息熵被创造了出来。你问我有啥用?单纯的一个熵确实发挥不出来威力,我们往后看。
2. 联合熵
简而言之,我们有两个变量的联合分布,为什不能有两个变量的联合熵呢?答案当然是可以的,那么我们如何定义的呢?
联合熵的含义也很简单,就是描述这样一对随机变量平均所需要的信息量。这个也很好理解。
3. 条件熵
有同学说,我知道,熵是
联合熵是
那条件熵肯定是
那你可是太棒了,错大了,很多同学想当然,容易在这里犯错误,但是这里的条件熵不是这样的,不信我们来推导一下。
给定随机变量X时,条件熵是:
是不是很神奇,前面的概率不是条件概率,是联合概率。下面可以推导联合熵和条件熵的关系!
有点东西!他们说多一公式少一个读者,不知道有没有属性恐惧症的同学,其实这里密密麻麻地一堆,翻来覆去的都是很基础的东西,真的不要怕这些公式。
4. 互信息
我们上面知道了,既然
当然是对称的,又有
相当于是一个这样的集合的关系
当然,互信息就是中间的交集部分咯,又来暴虐数学恐惧症了:
可以看出来,这个互信息还是很合理的,反映的就是知道了Y的值以后,X的不确定性的减少量。而就是知道了X的值以后,Y的不确定性减少量,他们是相等的。
平均互信息是非负的。自然语言处理中,通常可以通过互信息来判断两个对象之间的关系,如根据主题类别与词汇之间的互信息大小,来进行特征词抽取。
多一句嘴,大家还记得ID3决策树吗,每次分裂的节点是怎么得来的,里面是不是以信息增益作为指标来找分裂节点的?这里的信息增益,其实就是平均互信息。
5. 交叉熵
对于熟悉机器学习的同学来说,交叉熵这个词怕是听得太多次了,因为有个概念叫交叉熵损失,而交叉熵可以用来衡量估计模型与真实概率分布之间的差异情况,通俗来说还是衡量两个概率分布之间的距离嘛~~这样我们就知道,为什么交叉熵可以作为损失函数,也就是我们的优化目标存在了,因为它能衡量估计模型和真实分布之间的差异情况,而我们的目标就是估计模型和真实分布差异越小越好,因此它作为一种损失函数,是十分可行的!
假设X的分布是,是用于近似的分布,是相对熵,后面会讲。那么有:
还记得逻辑回归中怎么写的吗:
这里的是真实样本的分布,是我们的模型估计出来的分布,也就是用来近似真实分布的分布(好拗口)。
6. 相对熵(KL散度)
KL散度也是用来衡量两个分布之间的差异的,所以作用和交叉熵是差不多的。
定义为:
当两个随机分布的差别增加时,相对熵的期望值即增大。
7. 总结
好了,说了这么多,不知道你都搞清楚了吗,常见的一些熵,还头疼吗?头疼的话,我们再全局地看看他们之间的关系:
(注意这张图里面的表示的是交叉熵,其余符号与上文同)
好了,大概就这些内容了,其实是要写个最大熵模型,但要先把这个概念给讲清楚,欢迎关注后面的更新。看了本文应该是大概对这些熵能有基本的认识了,如果哪里还不明白,欢迎提出,我会及时修正~~