1、什么是熵
Entropy来源于希腊语,原意:内向,即:一个系统不受外部干扰时往内部稳定状态发展的特性。定义的其实是一个热力学的系统变化的趋势。
1923年,德国科学家普朗克来中国讲学用到entropy这个词,胡刚复教授看到这个公式,创造了“熵”字,因为“火”和热量有关,定义式又是热量比温度,相当自洽。
信息论中,熵是接受的每条消息中包含的信息的平均值。又被称为信息熵、信源熵、平均自信息量。可以被理解为不确定性的度量,熵越大,信源的分布越随机。1948年,由克劳德·爱尔伍德·香农将热力学中的熵引入信息论,所以也叫做:香农熵。
在生态学中,熵表示生物多样性的指标。
广义的定义:熵是描述一个系统的无序程度的变量;同样的表述还有,熵是系统混乱度的度量,一切自发的不可逆过程都是从有序到无序的变化过程,向熵增的方向进行。
2、信息熵的定义
香农信息熵是对数据分布的不确定性进行度量:假设X是来自分布χ的随机样本,对每个样本的概率常见的标记有P(xi)=P(X=xi)=pxi,那么信息量I(X)为:
而信息熵的定义是其在概率上的期望,即:
对于信息熵的含义的两种解释由来如下:
(1)期望编码长度解释:基于信道编码理论,按概率分布对采样信息的二进制编码的计算期望;
(2)不确定性公理化解释:是满足不确定性公理的唯一数学形式。
3、基于熵的度量
3.1、交叉熵
在信息论中,交叉熵是表示两个概率分布P、Q,其中P表示真实分布,Q表示非真实分布,在相同的一组事件中,其中,用非真实分布Q来表示某个事件发生所需要的平均比特数。
交叉熵主要用于度量两个概率分布间的差异性信息。定义如下:
交叉熵可在神经网络(机器学习)中作为损失函数,P表示真实标记的分布,Q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量P与Q的相似性。交叉熵作为损失函数还有一个好处是使用Sigmoid函数在梯度下降时能避免均方误差损失函数学习速率降低的问题,因为学习速率可以被输出的误差所控制。
在特征工程中,可以用来衡量两个随机变量之间的相似度。
在语言模型中(NLP)中,由于真实的分布P是未知的,在语言模型中,模型是通过训练集得到的,交叉熵就是衡量这个模型在测试集上的正确率。
3.2、相对熵
在香农熵的基础上,可以很容易得到相对熵(Relative Entropy,RE)的定义:
可以这样理解:给定Q分布,想知道P分布情况,于是就用P的编码长度减去Q的编码长度在P的分布下的期望作为一种衡量。
相对熵可以衡量两个随机分布之间的距离,当两个随机分布相同时,它们的相对熵为零,当两个随机分布的差别增大时,它们的相对熵也会增大。所以相对熵可以用于比较文本的相似度,先统计出词的频率,然后计算相对熵。另外,在多指标系统评估中,指标权重分配是一个重点和难点,也通过相对熵可以处理。
3.3、KL散度
由于相对熵恒小于0,且散度定义要其必须为负,所以在相对熵的前面加一个负号就得到了需要的散度,即KL散度:
在机器学习中,我们需要评估label和predicts之间的差距,使用KL散度刚刚好,即DKL,由于KL散度中的前一部分−H(P(i))不变,故在优化过程中,只需要关注交叉熵就可以了。所以一般在机器学习中直接用用交叉熵做loss,评估模型。
给定Q分布,P分布于Q分布的KL散度即Q的编码长度于P的编码长度之差(中括号里面的部分)在P上面的期望。下图1可以看到编码长度之差可能有正有负,然后按P的概率密度积分就是编码长度之差的期望了。
P和Q的影响:
如果想要DKL小,
那么P大的地方,Q一定要大
那么P小的地方,Q对DKL的影响不大
如果想要DKL大
那么P大的地方,Q对DKL影响不大
那么P小的地方,Q一定要小
KL散度不对称导致的问题:
情况1:当P→0且Q→1时, Pxln(P/Q)→0 , 对DKL的贡献为0;
情况2:当P→1且Q→0时, Pxln(P/Q)→+∞ , 对DKL的贡献为+∞;进步一这里可以解释为什么我们通常选择正态分布而不是均匀分布;
均匀分布:只要两个均分分布不是完全相同,必然出现P≠0,Q=0的情况,导致DKL→+∞;
正态分布:所有概率密度都是非负的,所以不会出现上述情况;
换而言之, PQ之间的KL散度可能导致惩罚或者梯度差距极大。
3.4、JS散度
JS散度实际就是KL散度的一个扩展,被用来推导GAN:
需要注意:JS散度是对称的;JS散度有界,范围是 [0,log2]
KL散度和JS散度度量的时候有一个问题:如果两个分配P,Q离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为0。梯度消失了。