信息熵、交叉熵、相对熵

1 信息熵

信息熵代表的是随机变量或整个系统的不确定性,熵越大,随机变量或系统的不确定性就越大。

1.1 举例

题目1:爸爸拿来一个箱子,跟小明说:里面有橙、紫、蓝及青四种颜色的小球任意个,各颜色小球的占比不清楚,现在我从中拿出一个小球,你猜我手中的小球是什么颜色?

小明思路:在这种情况下,小明什么信息都不知道,只能认为四种颜色的小球出现的概率是一样的。所以,根据策略1,1/4概率是橙色球,小明需要猜两次,1/4是紫色球,小明需要猜两次,其余的小球类似,所以小明预期的猜球次数为:
H = 1/4 * 2 + 1/4 * 2 + 1/4 * 2 + 1/4 * 2 = 2

题目2:爸爸还是拿来一个箱子,跟小明说:箱子里面有小球任意个,但其中1/2是橙色球,1/4是紫色球,1/8是蓝色球及1/8是青色球。我从中拿出一个球,你猜我手中的球是什么颜色的?

小明思路:在这种情况下,小明知道了每种颜色小球的比例,比如橙色占比二分之一,如果我猜橙色,很有可能第一次就猜中了。所以,根据策略2,1/2的概率是橙色球,小明需要猜一次,1/4的概率是紫色球,小明需要猜两次,1/8的概率是蓝色球,小明需要猜三次,1/8的概率是青色球,小明需要猜三次,所以小明预期的猜题次数为:
H = 1/2 * 1 + 1/4 * 2 + 1/8 * 3 + 1/8 * 3= 1.75

题目3:跟小明说:里面的球都是橙色,现在我从中拿出一个,你猜我手中的球是什么颜色?

小明思路:肯定是橙色,小明需要猜0次。

上面三个题目表现出这样一种现象:针对特定概率为p的小球,需要猜球的次数为:

,例如题目2中,1/4是紫色球, log4(以2为底) = 2 次,1/8是蓝色球, log8 = 3次。那么,针对整个整体,预期的猜题次数为:

上式就是信息熵,上面三个题目的预期猜球次数都是由这个公式计算而来,第一题的信息熵为2,第二题的信息熵为1.75,最三题的信息熵为1 * log1 = 0 。

1.2 分析

上述例子中,信息熵的概念应该有所感受,也就是说,一个系统所反馈回来的已知条件或有用信息越多,则这个系统的信息熵越小,换句话说,也就是题目已经告诉你了很多限制,仅剩的消息挖掘导致自己发挥空间有限,因此就可以称之为信息熵小。
将系统中的诸多已知条件转化为概率论的知识,也就是每个系统的概率分布不尽相同,也称之为该系统的真实分布。题目一中的真实分布为(1/4,1/4,1/4,1/4),题目二为(1/2,1/4,1/8,1/8),而信息熵的大小就代表了该题目(该系统)的不确定性大小,反之,为了消除系统的不确定性大小所承担的最小代价也就是我们看到的信息熵的大小。这种思想有点类似于启发式的方法,寻找到一个最优值并不断去逼近它。

2 交叉熵

然而,有些时候,每个人并不能一眼就判断出一个系统中的真实分布,也就是没有得到真实的信息熵,因此在消除系统不确定性的时候,就有可能走了弯路,花费了更大的代价。
例如题目二,小明若没有分析正确爸爸给的先验条件,而是认为系统的真实分布为(1/4,1/4,1/4,1/4),此时小明的猜中任何一种颜色的次数由1.75上升到2。显然,这样的认知或是这样的真实分布是假的,那么这个时候,我们该如何去衡量消除不确定性要花费的最小成本呢?
下面有请交叉熵出场!!

交叉熵用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小。

更官方一些:对一随机事件,其真实概率分布为p(i)p(i),从数据中得到的概率分布为q(i)q(i),则我们定义,交叉熵为:

其中p(i)表示为系统的真实分布也就是题目二的(1/2,1/4,1/8,1/8),q(i)表示非真实分布,相当于题目二的(1/4,1/4,1/4,1/4),那么将非真实分布用于计算题目二要花费的代价就是交叉熵,其值为:



计算结果可以看出,该值比真实值大,也就是代价变大。

那么我们可以得到,最优策略莫过于使用真实分布去消除系统不确定性,也就是交叉熵越低越好,尽量使得所使用的分布接近甚至等于真实分布,这个时候交叉熵=信息熵。这也是为什么在机器学习中的分类算法中,我们总是最小化交叉熵,因为交叉熵越低,就证明由算法所产生的策略最接近最优策略,也间接证明我们算法所算出的非真实分布越接近真实分布。

3 相对熵

那么如何来衡量不同策略的差异呢,也就是说我们使用的分布与真实分布差距多大。
引入相对熵的概念:

用来衡量两个取值为正的函数或概率分布之间的差异或相似性,又叫KL散度(Kullback-Leibler Divergence),即:

从式子中很容易证明:
1、当真实分布=使用分布时,KL=0,也就是此时策略最优。
2、KL越大,策略越差
3、相对熵=交叉熵-信息熵,即:



对于题目2,相对熵=2-1.75=0.25。

4 总结

熵的概念经常出现在机器学习以及神经网络中,利用其针对具体问题进行代价函数的修改可以使得模型有更好的预测效果。

你可能感兴趣的:(信息熵、交叉熵、相对熵)