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。梯度消失了。
3.5、α-散度
当α→0或1时,可以得到KL散度或者reverse KL散度.
只有当α=0.5的时候对称.
3.6、F-散度
散度是用来衡量两个概率密度P,Q区别的函数,即:两个分布的相似程度.
这里的f需要满足2个条件:f是凸函数且f(1)=0.
可以证明:因为f是凸函数,由Jensen不等式可知E[f(x)]≥f(E[x])
如果f(X)=XlogX,那就是KL散度;如果是f(X)=-logX,那就表示reverse KL散度。甚至,当取某些函数时,它还可以表达α-散度。具体的,下面的表格给出了F-散度的一些特例.
3.7、互信息
互信息(Mutual Information)是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。
互信息定义如下:
假设X与Y相互独立,那么p(x,y)=p(x)p(y),于是互信息的直观意义就是X、Y在假设独立情况下和真实的非独立情况下的编码长度之差在X和Y联合分布上的期望。
对上式继续进行化解,有:
因此互信息也可以看成条件分布p(x|y)到分布p(x)的KL散度在Y上的期望。
此外互信息还和条件熵有着极大关系——互信息可以看成熵和条件熵的差:
互信息的性质:
(1) 对称性:I(xi ;yj) = I(xi ;yj);
(2) X与Y独立时:I(xi ;yj)= 0;
(3) I(xi ;yj)非负:平均互信息量不是从两个具体消息出发, 而是从随机变量X和Y的整体角度出发, 并在平均意义上观察问题, 所以平均互信息量不会出现负值。或者说从一个事件提取关于另一个事件的信息, 最坏的情况是0, 不会由于知道了一个事件,反而使另一个事件的不确定度增加。
互信息是计算语言学模型分析的常用方法,它度量两个对象之间的相互性。
在过滤问题中用于度量特征对于主题的区分度。互信息的定义与交叉熵近似。
互信息本来是信息论中的一个概念,用于表示信息之间的关系, 是两个随机变量统计相关性的测度,使用互信息理论进行特征抽取是基于如下假设:在某个特定类别出现频率高,但在其他类别出现频率比较低的词条与该类的互信息比较大。
通常用互信息作为特征词和类别之间的测度,如果特征词属于该类的话,它们的互信息量最大。由于该方法不需要对特征词和类别之间关系的性质作任何假设,因此非常适合于文本分类的特征和类别的配准工作
3.8、Wasserstein距离
KL散度和JS散度度量的问题:如果两个分配P,Q离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为0。梯度消失了。
Wasserstein距离度量两个概率分布之间的距离,定义如下:
Π(P1,P2)是P1和P2分布组合起来的所有可能的联合分布的集合。对于每一个可能的联合分布γ,可以从中采样(x,y)~γ得到一个样本x和y,并计算出这对样本的距离||x−y||,所以可以计算该联合分布γ下,样本对距离的期望值E(x,y)~γ[||x−y||]。在所有可能的联合分布中能够对这个期望值取到的下界infγ~Π(P1,P2)E(x,y)~γ[||x−y||]就是Wasserstein距离。
直观上可以把E(x,y)~γ[||x−y||]理解为在γ这个路径规划下把土堆P1挪到土堆P2所需要的消耗。而Wasserstein距离就是在最优路径规划下的最小消耗。所以Wesserstein距离又叫Earth-Mover距离。
Wasserstein距离相比KL散度、JS散度的优越性在于,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近;而JS散度在此情况下是常量,KL散度可能无意义。WGAN本作通过简单的例子展示了这一点。考虑如下二维空间中的两个分布P1和P2,P1在线段AB上均匀分布,P2在线段CD上均匀分布,通过控制参数θ可以控制着两个分布的距离远近。
此时容易得到:
KL散度和JS散度是突变的,要么最大要么最小,Wasserstein距离却是平滑的,如果我们要用梯度下降法优化θ这个参数,前两者根本提供不了梯度,Wasserstein距离却可以。类似地,在高维空间中如果两个分布不重叠或者重叠部分可忽略,则KL和JS既反映不了远近,也提供不了梯度,但是Wasserstein却可以提供有意义的梯度。
使用 Wasserstein distance 来刻画分布之间的不同是必要的:右边的那个gene expression的分布,看上去十分像是把左边那个分布往上挤了之后的结果。所以如果要刻画这种“原因”导致的区别,用Wasserstein distance比其他要更合理。
3.9、Bregman散度
上述,F散度已经可以表达我们提到的所有散度,目前为止它是最通用的散度形式。但很多paper种也会出现另一种叫做Bregman的散度,它和F散度不太一样,是另一大类散度。
Bregman散度定义如下:设函数f是一个定义在凸函数Ω∈Rd上的可导且严格凸的函数,F定义域上的任意两点x,y∈Ω,则在F函数上的Bregman散度为:
对上式在y点进行泰勒展开:
由上式可以得到,Bregman散度就是函数f(x)在y点进行一阶泰勒展开的余项Rn(x),即函数f(x)与其自身的线性近似(一阶泰勒展开)之间的“距离”,如下图所示:
和F散度类似,Bregman散度也是一大类散度的通用表达形式,具体的,根据f取不同的函数,它可以表示不同的散度,其中KL散度就是它的一个特例。下图给出了一些特例。
推荐阅读:
【机器学习算法】6、K-Means流程结束要不要多问几个为什么呢?
【机器学习算法】9、EM算法与K-Means算法的收敛性证明
【机器学习算法】12、隐马尔科夫模型+股票预测项目实战+中文分词项目实战
公众号回复【Entropy 】即可获取该文章的PDF文件
参考:
《机器学习算法背后的理论与优化》
https://kexue.fm/archives/6280
https://en.wikipedia.org/wiki/Jensen%E2%80%93Shannon\_divergence
https://zhuanlan.zhihu.com/p/93853664
https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler\_divergence
声明:转载请说明出处
下方为小生公众号,还望包容接纳和关注,非常期待与您的美好相遇,让我们以梦为马,砥砺前行。
希望技术与灵魂可以一路同行
长按识别二维码关注一下
更多精彩内容可回复关键词
每篇文章的主题即可