熵是用来度量信息量的,也是用来度量不确定性程度的,在信息论中,其实信息量的多少等价于随机事件的不确定性程度,事件不确定性程度越高,则该事件蕴含的信息量也就越多。比如当我们知道明天下雨的可能性是 99%,那么当这件事情发生的时候,我们获取不到很多的信息;而如果明天下雨的可能性是 1%,而恰巧明天却又下雨了,那是不是就说明下雨这件事情发生之后,蕴含了很丰富的信息量。

Entropy 熵

信息熵,也就是最简单的熵,度量某一概率分布的不确定性(信息量)。
假定有一概率分布 Entropy 各种熵 - 图1Entropy 各种熵 - 图2 代表在该概率分布中第 Entropy 各种熵 - 图3 的随机事件发生的概率,则有熵:

Entropy 各种熵 - 图4

Entropy 各种熵 - 图5Entropy 各种熵 - 图6 的底数为2时,信息量的单位是 bit。

当概率分布越均匀的时候,熵的值也就越大,代表事件的不确定性程度越高,那么事件发生所蕴含的信息量越大。 设想两个个二元分布 Entropy 各种熵 - 图7 以及 Entropy 各种熵 - 图8,肯定是概率分布 Entropy 各种熵 - 图9 所蕴含的事件不确定性更高。而熵这个函数就有这个性质,概率分布越均匀,熵的值也就越大。这一点也可以通过求该函数的极大值来确认。
同时,Entropy 各种熵 - 图10 也可以看作编码这个概率分布所需要使用的信息量,例如 Entropy 各种熵 - 图11,那么这件事情需要 0 bit 就可以进行编码,即完全不需要编码;而 Entropy 各种熵 - 图12,即对于 Entropy 各种熵 - 图13 中两个发生概率相同的事件,我们需要用 1 bit ( 0-1 ) 来完成编码。

进一步将 Entropy 各种熵 - 图14 进行变形,得到

Entropy 各种熵 - 图15

Entropy 各种熵 - 图16Entropy 各种熵 - 图17 的期望,而这个玩意也有一个名字,叫做自信息

Entropy 各种熵 - 图18

还是那个观念,一个事件发生的概率越小,那么它蕴含的信息量就越大,当然,这就不包含不确定性这个事情了,因为不确定性是相对于一堆事件,也就是一个概率分布而言的。

所以熵就是自信息的期望,也就是平均自信息,是一堆自信息的平均值,也就可以度量一个概率分布的平均不确定性了。

Cross Entropy 交叉熵

机器学习和深度学习中的交叉熵损失函数(CE Loss),有非常多优良的函数性质以便进行优化,同时交叉熵也是信息论中比较重要的概念。
假设现在有观察分布(标记样本分布)Entropy 各种熵 - 图19 和近似分布(预测分布)Entropy 各种熵 - 图20,则交叉熵为:

Entropy 各种熵 - 图21

因为在信息论中,Entropy 各种熵 - 图22 被认为是理论上的平均最小编码长度(上式交叉熵中的概率项由观察分布 Entropy 各种熵 - 图23 提供;自信息项由概率分布 Entropy 各种熵 - 图24 提供),所以交叉熵可以看作是,Entropy 各种熵 - 图25 分布的最佳编码方式来编码 Entropy 各种熵 - 图26 分布的消息的平均编码长度。因为 Entropy 各种熵 - 图27 已经就是最佳编码使用的信息量了,所以有一个性质(两式相减大于等于 0 可以验证):

Entropy 各种熵 - 图28

即近似分布 Entropy 各种熵 - 图29 来编码观察分布 Entropy 各种熵 - 图30 的消息所使用的信息量,一定大于等于用 Entropy 各种熵 - 图31 的最佳编码方式进行编码所使用的信息量。

在把交叉熵作为机器学习中的分类损失函数时,其实就是使用了这样的性质,交叉熵越小,则说明模型输出的概率分布越接近标记(label)的分布。同时在机器学习的优化中 Entropy 各种熵 - 图32 分布相当于是一个常量,交叉熵 Entropy 各种熵 - 图33 对于 Entropy 各种熵 - 图34 都是一个凸函数,所以使用交叉熵作为损失函数对整体模型函数的凸性是一件好事。

KL Divergence KL 散度

KL 散度,全称 Kullback-Leibler Divengence,用来度量两个概率分布之间的差异。它的记法有很多,下面使用最常用的两种:

Entropy 各种熵 - 图35

前一种记号是一般的记法,而后一种则是信息论中常用的“熵”的记法。KL 散度可以使用交叉熵减去信息熵来计算。

正如上面写交叉熵所讨论的,Entropy 各种熵 - 图36,如果我们用交叉熵和信息熵做一个差,不就可以度量使用 Entropy 各种熵 - 图37 分布来编码 Entropy 各种熵 - 图38 分布所使用的信息量了么,同时我们也可以知道 Entropy 各种熵 - 图39 是大于等于 0 的。这样 KL 散度,其实就可以用来度量两个分布之间的差异了。当然你可以认为这是一种两个分布之间的“距离”,但它并不是严格意义上的距离,因为它不满足距离的三个要求。

一个函数Entropy 各种熵 - 图40 是一个范数(某种距离的度量),当且仅当它满足一下三个性质:

  1. Entropy 各种熵 - 图41 —— 非负性
  2. Entropy 各种熵 - 图42 —— 非负齐次性
  3. Entropy 各种熵 - 图43 —— 三角不等式(两边之和大于第三边)

那么问题来了,为什么机器学习中,使用交叉熵作为损失函数,而不是使用 KL 散度作作为损失函数呢,KL 散度看起来更直观一点,毕竟是度量两个概率分布的差异大小。这是因为在机器学习的优化过程中,Entropy 各种熵 - 图44 可以看作是一个常数。

Reference

  1. https://zhuanlan.zhihu.com/p/115277553
  2. https://zhuanlan.zhihu.com/p/149186719
  3. https://zhuanlan.zhihu.com/p/100676922