学习更多机器学习深度学习内容见 望江智库 yuanxiaosc.github.io/
概念
自信息:符合分布 P 的某一事件 x 出现,传达这条信息所需的最小信息长度为自信息,表达式为:
熵:从分布 P 中随机抽选一个事件,传达这条信息所需的最优平均信息长度为香农熵,表达式为:
交叉熵:用分布 P 的最佳信息传递方式来传递分布 Q 中随机抽选的一个事件,所需的平均信息长度为交叉熵,表达式为:
KL 散度,用分布 P 的最佳信息传递方式来传达分布 Q,比用分布 Q 自己的最佳信息传递方式来传达分布 Q,平均多耗费的信息长度为 KL 散度,表达为 或 ,KL 散度衡量了两个分布之间的差异。
或 涉及两个分布:
- 要传达的信息来自哪个分布,答案是 Q
- 信息传递的方式由哪个分布决定,答案是 P
KL 散度概念解读
由 KL 散度的公式可知,分布 Q 里可能性越大的事件,对 影响力越大。如果想让 尽量小,就要优先关注分布 Q 里的常见事件(假设为 x),确保它们在分布 P 里不是特别罕见。
因为一旦事件 x 在分布 P 里罕见,意味着在设计分布 P 的信息传递方式时,没有着重优化传递 x 的成本,传达事件 x 所需的成本,log(1/P(x)) 会特别大。所以,当这一套传递方式被用于传达分布 Q 的时候,我们会发现,传达常见事件需要的成本特别大,整体成本也就特别大。
类似地,想让 特别小,就要优先考虑分布 P 里那些常见的事件们了。这时,分布 Q 里的常见事件,就不再是我们的关注重点。
信息熵
熵是传输一个随机变量状态值所需的比特位的下界。
信息论之父 C. E. Shannon 在 1948 年发表的论文“通信的数学理论( A Mathematical Theory of Communication )”中, Shannon 指出,任何信息都存在冗余,冗余大小与信息中每个符号(数字、字母或单词)的出现概率或者说不确定性有关。 Shannon 借鉴了热力学的概念,把信息中排除了冗余后的平均信息量称为“信息熵”,并给出了计算信息熵的数学表达式。
信息熵基本内容
通常,一个信源发送出什么符号是不确定的,衡量它可以根据其出现的概率来度量。概率大,出现机会多,不确定性小;反之就大。 不确定性函数 f 是概率 P 的单调递降函数;两个独立符号所产生的不确定性应等于各自不确定性之和,即f(P1,P2)=f(P1)+ f(P2),这称为可加性。同时满足这两个条件的函数f是对数函数,即 。
在信源中,考虑的不是某一单个符号发生的不确定性,而是要考虑这个信源所有可能发生情况的平均不确定性。若信源符号有n种取值:U1…Ui…Un,对应概率为:P1…Pi…Pn,且各种符号的出现彼此独立。这时,信源的平均不确定性应当为单个符号不确定性-logPi的统计平均值(E),可称为信息熵,即 ,式中对数一般取2为底,单位为比特。
当所有的 值都相等,且值为 时,熵取得最大值。。
交叉熵
交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。语言模型的性能通常用交叉熵和复杂度(perplexity)来衡量。交叉熵的意义是用该模型对文本识别的难度,或者从压缩的角度来看,每个词平均要用几个位来编码。复杂度的意义是用该模型表示这一文本平均的分支数,其倒数可视为每个词的平均概率。
交叉熵的介绍
在信息论中,交叉熵是表示两个概率分布p,q,其中p表示真实分布,q表示非真实分布,在相同的一组事件中,其中,用非真实分布q来表示某个事件发生所需要的平均比特数。从这个定义中,我们很难理解交叉熵的定义。下面举个例子来描述一下: 假设现在有一个样本集中两个概率分布p,q,其中p为真实分布,q为非真实分布。假如,按照真实分布p来衡量识别一个样本所需要的编码长度的期望为:
但是,如果采用错误的分布q来表示来自真实分布p的平均编码长度,则应该是:
此时就将H(p,q)称之为交叉熵。交叉熵的计算方式如下:
对于离散变量采用以下的方式计算:
对于连续变量采用以下的方式计算:
注意:$$E_{x\sim p(x)}[f(x)]=\int{f(x)p(x)}dx \approx \dfrac{1}{n}\sum_{i=1}^nf(x_i), x_i \sim p(x) $$
交叉熵的应用
- 交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性。交叉熵作为损失函数还有一个好处是使用sigmoid函数在梯度下降时能避免均方误差损失函数学习速率降低的问题,因为学习速率可以被输出的误差所控制。
- 在特征工程中,可以用来衡量两个随机变量之间的相似度。
- 在语言模型中(NLP)中,由于真实的分布p是未知的,在语言模型中,模型是通过训练集得到的,交叉熵就是衡量这个模型在测试集上的正确率。
相对熵
相对熵,又称KL散度( Kullback–Leibler divergence),是描述两个概率分布P和Q差异的一种方法。它是非对称的,这意味着D(P||Q) ≠ D(Q||P)。特别的,在信息论中,D(P||Q)表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布。 有人将KL散度称为KL距离,但事实上,KL散度并不满足距离的概念,因为:(1)KL散度不是对称的;(2)KL散度不满足三角不等式。
相对熵的定义
对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information divergence)。 设 和 是两个取值的两个离散概率分布,则 对 的相对熵为:
对于连续的随机变量,定义为:
相对熵是两个概率分布 和 差别的非对称性的度量。
相对熵物理意义
相对熵是用来度量使用基于 的编码来编码来自 的样本平均所需的额外的比特个数。 典型情况下, 表示数据的真实分布, 表示数据的理论分布,模型分布,或 的近似分布。 根据shannon的信息论,给定一个字符集的概率分布,我们可以设计一种编码,使得表示该字符集组成的字符串平均需要的比特数最少。假设这个字符集是 ,对 ,其出现概率为 ,那么其最优编码平均需要的比特数等于这个字符集的熵:
在同样的字符集上,假设存在另一个概率分布 ,如果用概率分布 的最优编码(即字符 的编码长度等于 ),来为符合分布 的字符编码,那么表示这些字符就会比理想情况多用一些比特数。相对熵就是用来衡量这种情况下平均每个字符多用的比特数,因此可以用来衡量两个分布的距离,即:
相对熵的性质
相对熵(KL散度)有两个主要的性质,如下: (1)不对称性 尽管KL散度从直观上是个度量或距离函数,但它并不是一个真正的度量或者距离,因为它不具有对称性,即 (2)非负性 相对熵的值为非负值,即 ,证明可用吉布斯不等式。
吉布斯不等式 若 ,且 ,则有: ,等号当且仅当
相对熵的应用
相对熵可以衡量两个随机分布之间的距离,当两个随机分布相同时,它们的相对熵为零,当两个随机分布的差别增大时,它们的相对熵也会增大。所以相对熵(KL散度)可以用于比较文本的相似度,先统计出词的频率,然后计算相对熵。另外,在多指标系统评估中,指标权重分配 [2] 是一个重点和难点,也通过相对熵可以处理。
JS散度(Jensen–Shannon divergence)
JS散度度量了两个概率分布的相似度,基于KL散度的变体,解决了KL散度非对称的问题。一般地,JS散度是对称的,其取值是0到1之间。定义如下:
KL散度和JS散度度量的时候有一个问题:如果两个分配P,Q离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为0。梯度消失了。
Wasserstein距离
参考文献
[1] ajiao_nihao. 交叉熵[DB/OL]. baike.baidu.com/item/交叉熵/89…, 2018-08-28.
[2] 蒙牛纯爷们. 相对熵[DB/OL]. baike.baidu.com/item/相对熵, 2018-08-28.
[3] miaoweijun. 信息熵[DB/OL]. baike.baidu.com/item/信息熵, 2018-08-28.
[4] 维基百科. Jensen–Shannon divergence[DB/OL]. en.wikipedia.org/wiki/Jensen…, 2018-08-28.
[5] CodeTutor. 概率论——Wasserstein距离[DB/OL]. blog.csdn.net/victoriaw/a…, 2018-08-28.
[6] 邱陆陆. 如何理解KL散度的不对称性[DB/OL]. www.jiqizhixin.com/articles/02…, 2018-11-21.