学习更多机器学习深度学习内容见 望江智库 yuanxiaosc.github.io/git
自信息:符合分布 P 的某一事件 x 出现,传达这条信息所需的最小信息长度为自信息,表达式为:github
熵:从分布 P 中随机抽选一个事件,传达这条信息所需的最优平均信息长度为香农熵,表达式为:算法
交叉熵:用分布 P 的最佳信息传递方式来传递分布 Q 中随机抽选的一个事件,所需的平均信息长度为交叉熵,表达式为:网络
KL 散度,用分布 P 的最佳信息传递方式来传达分布 Q,比用分布 Q 本身的最佳信息传递方式来传达分布 Q,平均多耗费的信息长度为 KL 散度,表达为 或
,KL 散度衡量了两个分布之间的差别。app
或
涉及两个分布:机器学习
由 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) $$
相对熵,又称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散度度量了两个几率分布的类似度,基于KL散度的变体,解决了KL散度非对称的问题。通常地,JS散度是对称的,其取值是0到1之间。定义以下:
KL散度和JS散度度量的时候有一个问题:若是两个分配P,Q离得很远,彻底没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为0。梯度消失了。
[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.