【数学基础】机器学习中的几个熵

2020 年 2 月 19 日 深度学习自然语言处理

点击上方,选择星标置顶,每天给你送干货

阅读大概需要7分钟

跟随小博主,每天进步一丢丢


来自:天宏NLP


信息量

事件发生的概率越小,信息量越大。
假设 是一个离散型随机变量,取值集合为 ,概率分布函数为
则定义事件 的信息量为:

信息熵

信息量的期望就是熵,假设事件 有n种可能,发生 的概率为 ,那么该事件的熵 为:
如果发生的事件只有两种可能性,那么熵的计算转化为下列式子:

相对熵(KL散度/KL divergence)

相对熵又叫KL散度,也叫做信息增益,如果我们对于同一个随机变量 ,有两个单独的概率分布 ,我们可以用KL散度来衡量这两个分布的差异。
在机器学习中,P分布往往用来表示样本的真实分布,即标签label,Q用来表示模型所预测的分布,那么KL散度就可以计算两个分布的差异,也就是计算损失值Loss。
可以看出,Q的分布越接近P(Q分布越拟合P),那么KL散度越小,即Loss越小,因为对数函数是凸函数,所以KL散度的值为非负数。下面给出KL散度非负的两种证明,对xi的求和变积分。
方法一:
上式用到了 ,代入 就可以得到,
方法二:
上式用到了Jensen不等式,对于一个凸函数 ,满足 ,又由于 为凸函数,所以可得。
KL散度有时被称为KL距离,但它不满足距离的性质:
  1. KL散度不对称,
  2. KL散度不满足三角不等式。

交叉熵

将KL散度公式变形:
等式的前半部分是P分布的熵的负数,等式后半部分,就是交叉熵。
在机器学习中,我们需要评估label和predicts之间的差距,使用KL散度刚刚好,由于KL散度中的前一部分 ,label的分布是已知且不变的常数,所以它的熵是个定值,故在计算Loss时,只需要计算交叉熵就可以了。所以一般在机器学习中直接用用交叉熵做Loss,来优化和评估模型。

几个熵之间的关系

信息熵:表示随机变量的不确定性。
条件熵:在一个条件下,随机变量的不确定性。
相对熵:信息熵 - 条件熵,当有新的条件(信息)增加进来后,信息熵的大小降至条件熵,差值即为新的条件带来的信息增益,因此相对熵也叫信息增益。

JS散度

JS散度度量了两个概率分布的相似度,是基于KL散度的变体,解决了KL散度非对称的问题。一般地,JS散度是对称的,其取值是0到1之间。定义如下:

Wasserstein距离

KL散度和JS散度度量的问题:
我们训练模型是通过最小化损失函数来最小化两个分布的距离,如果两个分布P,Q离得很远,完全没有重叠或重叠可忽略不计的情况,这个时候模型predicts的分布变化后,两者的KL散度都没有变化(等于0),损失函数不变的话就没有梯度了,没梯度模型自然学不动了,那么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散度可能无意义。考虑如下二维空间中的两个分布
可见KL散度和JS散度都在theta等于0处突变,而Wasserstein距离是一个平滑的,如果我们要用梯度下降法优化theta这个参数,前两者根本提供不了梯度,Wasserstein距离却可以。类似地,在高维空间中如果两个分布不重叠或者重叠部分可忽略,则KL和JS既反映不了远近,也提供不了梯度,但是Wasserstein却可以提供有意义的梯度

总结

目前分类损失函数为何多用交叉熵,而不是KL散度?

首先损失函数的功能是通过样本来计算模型分布与目标分布间的差异,在分布差异计算中,KL散度是最合适的。但在实际中,某一事件的标签label是已知不变的(例如我们设置猫的label为1,那么所有关于猫的样本都要标记为1),即目标分布的熵为常数。而根据上面KL公式可以看到,KL散度 - 目标分布熵 = 交叉熵(这里的“-”表示裁剪)。所以我们不用计算KL散度,只需要计算交叉熵就可以得到模型分布与目标分布的损失值。
从上面介绍,知道了模型分布与目标分布差异可用交叉熵代替KL散度的条件是目标分布为常数。如果目标分布是有变化的(如同为猫的样本,不同的样本,其值也会有差异,即不同的样本的分布不是定值,标签不固定,如果标签固定,即使是软分布,熵也是定值,不影响训练结果),那么就不能使用交叉熵,例如蒸馏模型的损失函数就是KL散度,因为蒸馏模型的目标分布也是一个模型,该模型针对同类别的不同样本,会给出不同的预测值(如两张猫的图片a和b,目标模型对a预测为猫的值是0.6,对b预测为猫的值是0.8)。
交叉熵:其用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小。这也是为什么在机器学习中的分类算法中,我们总是最小化交叉熵,因为交叉熵越低,就证明由算法所产生的策略最接近最优策略,也间接证明我们算法所算出的predicts分布越接近真实分布。
KL散度(相对熵):衡量不同策略之间的差异,所以我们使用KL散度来做模型分布的拟合损失。
点击阅读原文查看原文,本文有删改。


方便交流学习,备注: 昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多: 机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等
记得备注呦


推荐阅读:
【ACL 2019】腾讯AI Lab解读三大前沿方向及20篇入选论文
【一分钟论文】IJCAI2019 | Self-attentive Biaffine Dependency  Parsing
【一分钟论文】 NAACL2019-使用感知句法词表示的句法增强神经机器翻译
【一分钟论文】Semi-supervised Sequence Learning半监督序列学习
【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing
详解Transition-based Dependency parser基于转移的依存句法解析器
经验 | 初入NLP领域的一些小建议
学术 | 如何写一篇合格的NLP论文
干货 | 那些高产的学者都是怎样工作的?
一个简单有效的联合模型
近年来NLP在法律领域的相关研究工作




让更多的人知道你“在看”
登录查看更多
0

相关内容

在数学统计中,Kullback-Leibler散度(也称为相对熵)是衡量一个概率分布与第二个参考概率分布有何不同的一种度量。应用包括表征信息系统中的相对(香农)熵,连续时间序列中的随机性以及比较推论的统计模型时的信息增益。在简单的情况下,Kullback-Leibler散度为0表示所讨论的两个分布是相同的。 简而言之,它具有各种应用,例如应用统计,流体力学,神经科学和机器学习。
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
338+阅读 · 2020年3月17日
机器学习速查手册,135页pdf
专知会员服务
338+阅读 · 2020年3月15日
【机器学习课程】Google机器学习速成课程
专知会员服务
164+阅读 · 2019年12月2日
从信息论的角度来理解损失函数
深度学习每日摘要
17+阅读 · 2019年4月7日
博客 | 机器学习中的数学基础(凸优化)
AI研习社
14+阅读 · 2018年12月16日
第二章 机器学习中的数学基础
Datartisan数据工匠
12+阅读 · 2018年4月5日
机器学习(26)之K-Means实战与调优详解
机器学习算法与Python学习
4+阅读 · 2017年11月19日
机器学习(23)之GBDT详解
机器学习算法与Python学习
12+阅读 · 2017年10月25日
机器学习(19)之支持向量回归机
机器学习算法与Python学习
12+阅读 · 2017年10月3日
机器学习(16)之支持向量机原理(二)软间隔最大化
机器学习算法与Python学习
6+阅读 · 2017年9月8日
机器学习(13)之最大熵模型详解
机器学习算法与Python学习
7+阅读 · 2017年8月24日
Bivariate Beta LSTM
Arxiv
5+阅读 · 2019年10月7日
Learning to Weight for Text Classification
Arxiv
8+阅读 · 2019年3月28日
A General and Adaptive Robust Loss Function
Arxiv
8+阅读 · 2018年11月5日
Arxiv
3+阅读 · 2018年10月11日
Arxiv
11+阅读 · 2018年5月13日
VIP会员
相关资讯
从信息论的角度来理解损失函数
深度学习每日摘要
17+阅读 · 2019年4月7日
博客 | 机器学习中的数学基础(凸优化)
AI研习社
14+阅读 · 2018年12月16日
第二章 机器学习中的数学基础
Datartisan数据工匠
12+阅读 · 2018年4月5日
机器学习(26)之K-Means实战与调优详解
机器学习算法与Python学习
4+阅读 · 2017年11月19日
机器学习(23)之GBDT详解
机器学习算法与Python学习
12+阅读 · 2017年10月25日
机器学习(19)之支持向量回归机
机器学习算法与Python学习
12+阅读 · 2017年10月3日
机器学习(16)之支持向量机原理(二)软间隔最大化
机器学习算法与Python学习
6+阅读 · 2017年9月8日
机器学习(13)之最大熵模型详解
机器学习算法与Python学习
7+阅读 · 2017年8月24日
相关论文
Bivariate Beta LSTM
Arxiv
5+阅读 · 2019年10月7日
Learning to Weight for Text Classification
Arxiv
8+阅读 · 2019年3月28日
A General and Adaptive Robust Loss Function
Arxiv
8+阅读 · 2018年11月5日
Arxiv
3+阅读 · 2018年10月11日
Arxiv
11+阅读 · 2018年5月13日
Top
微信扫码咨询专知VIP会员