熵 (entropy) 这一词最初来源于热力学。1948年,克劳德·爱尔伍德·香农将热力学中的熵引入信息论,所以也被称为香农熵 (Shannon entropy),信息熵 (information entropy)。本文只讨论信息熵。首先,我们先来理解一下信息这个概念。信息是一个很抽象的概念,百度百科将它定义为:指音讯、消息、通讯系统传输和处理的对象,泛指人类社会传播的一切内容。那信息可以被量化么?可以的!香农提出的“信息熵”概念解决了这一问题。
一条信息的信息量大小和它的不确定性有直接的关系。我们需要搞清楚一件非常非常不确定的事,或者是我们一无所知的事,就需要了解大量的信息。相反,如果我们对某件事已经有了较多的了解,我们就不需要太多的信息就能把它搞清楚。所以,从这个角度,我们可以认为,信息量的度量就等于不确定性的多少。比如,有人说广东下雪了。对于这句话,我们是十分不确定的。因为广东几十年来下雪的次数寥寥无几。为了搞清楚,我们就要去看天气预报,新闻,询问在广东的朋友,而这就需要大量的信息,信息熵很高。再比如,中国男足进军2022年卡塔尔世界杯决赛圈。对于这句话,因为确定性很高,几乎不需要引入信息,信息熵很低。
考虑一个离散的随机变量,由上面两个例子可知,信息的量度应该依赖于概率分布,因此我们想要寻找一个函数,它是概率的单调函数,表达了信息的内容。怎么寻找呢?如果我们有两个不相关的事件和,那么观察两个事件同时发生时获得的信息量应该等于观察到事件各自发生时获得的信息之和,即: 。
因为两个事件是独立不相关的,因此。根据这两个关系,很容易看出一定与 的对数有关 (因为对数的运算法则是。因此,我们有
其中负号是用来保证信息量是正数或者零。而 log函数基的选择是任意的(信息论中基常常选择为2,因此信息的单位为比特bits;而机器学习中基常常选择为自然常数,因此单位常常被称为奈特nats)。也被称为随机变量的自信息 (self-information),描述的是随机变量的某个事件发生所带来的信息量。图像如图:
最后,我们正式引出信息熵。 现在假设一个发送者想传送一个随机变量的值给接收者。那么在这个过程中,他们传输的平均信息量可以通过求关于概率分布的期望得到,即:
就被称为随机变量的熵,它是表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望。
从公式可得,随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大。当随机分布为均匀分布时,熵最大,且 。稍后证明。将一维随机变量分布推广到多维随机变量分布,则其联合熵 (Joint entropy) 为:
注意点:
1、熵只依赖于随机变量的分布,与随机变量取值无关,所以也可以将的熵记作 H(p)H(p)。
2、令0log0=0(因为某个取值概率可能为0)。
那么这些定义有着什么样的性质呢?考虑一个随机变量。这个随机变量有4种可能的状态, 每个状态都是等可能的。为了把的值传给接收者,我们需要传输2比特的消息。
现在考虑一个具有4种可能的状态的随机变量,每个状态各自的概率为。
这种情形下的熵为:
我们可以看到,非均匀分布比均匀分布的熵要小。现在让我们考虑如何把变量状态的类别传递给接收者。与之前一样,我们可以使用一个2比特的数字来完成这件事情。然而,我们可以利用非均匀分布这个特点,使用更短的编码来描述更可能的事件,使用更长的编码来描述不太可能的事件。我们希望这样做能够得到一个更短的平均编码长度。我们可以使用下面的编码串(哈夫曼编码):0、10、110、111来表示状态。传输的编码的平均长度就是:
这个值与上方的随机变量的熵相等。熵和最短编码长度的这种关系是一种普遍的情形。Shannon 编码定理表明熵是传输一个随机变量状态值所需的比特位下界(最短平均编码长度)。因此,信息熵可以应用在数据压缩方面。这里这篇文章讲的很详细了,我就不赘述了。
证明
利用拉格朗日乘子法证明:
因为
所以有
目标函数:
约束条件:
1、定义拉格朗日函数:
2、分别对求偏导数,令偏导数为 0:
…………
3、求出的值:
代入中得到目标函数的极值为:
由此可证为最大值。
条件熵表示在已知随机变量的条件下随机变量的不确定性。条件熵定义为给定条件下的条件概率分布的熵对的数学期望:
,证明如下:
举个例子,比如环境温度是低还是高,和我穿短袖还是外套这两个事件可以组成联合概率分布,因为两个事件加起来的信息量肯定是大于单一事件的信息量的。假设对应着今天环境温度的信息量,由于今天环境温度和今天我穿什么衣服这两个事件并不是独立分布的,所以在已知今天环境温度的情况下,我穿什么衣服的信息量或者说不确定性是被减少了。当已知这个信息量的时候,剩下的信息量就是条件熵:
因此,可以这样理解,描述和所需的信息是描述自己所需的信息,加上给定的条件下具体化所需的额外信息。关于条件熵的例子可以看这篇文章,讲得很详细。
设、是 离散随机变量中取值的两个概率分布,则对的相对熵是:
性质:
1、如果和两个分布相同,那么相对熵等于0
2、,相对熵具有不对称性。大家可以举个简单例子算一下。
3、证明如下(利用Jensen不等式):
因为:
所以:
总结:相对熵可以用来衡量两个概率分布之间的差异,上面公式的意义就是求与之间的对数差在上的期望值。
现在有关于样本集的两个概率分布和,其中为真实分布, 非真实分布。如果用真实分布来衡量识别一个样本所需要编码长度的期望(平均编码长度)为:
如果使用非真实分布来表示来自真实分布的平均编码长度,则是:
此时就将称之为交叉熵。
举个例子。考虑一个随机变量,真实分布,非真实分布,则(最短平均码长),交叉熵。由此可以看出根据非真实分布得到的平均码长大于根据真实分布得到的平均码长。
我们再化简一下相对熵的公式:
有没有发现什么?
所以有:
(当用非真实分布得到的平均码长比真实分布得到的平均码长多出的比特数就是相对熵)
又因为
所以 (当 时取等号,此时交叉熵等于信息熵)
并且当为常量时(注:在机器学习中,训练数据分布是固定的),最小化相对熵等价于最小化交叉熵也等价于最大化似然估计(具体参考Deep Learning 5.5)。
在机器学习中,我们希望在训练数据上模型学到的分布和真实数据的分布越接近越好,所以我们可以使其相对熵最小。但是我们没有真实数据的分布,所以只能希望模型学到的分布和训练数据的分布尽量相同。假设训练数据是从总体中独立同分布采样的,那么我们可以通过最小化训练数据的经验误差来降低模型的泛化误差。即:
根据之前的描述,最小化训练数据上的分布与最小化模型分布的差异等价于最小化相对熵,即。此时,就是中的,即真实分布,就是。又因为训练数据的分布是给定的,所以求等价于求。得证,交叉熵可以用来计算学习模型分布与训练分布之间的差异。交叉熵广泛用于逻辑回归的Sigmoid和Softmax函数中作为损失函数使用。这篇文章先不说了。
或者: