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

阅读大概需要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在法律领域的相关研究工作


让更多的人知道你“在看”

【数学基础】机器学习中的几个熵相关推荐

  1. 机器学习中使用的交叉熵(cross entropy)透彻分析

    从字面分析交叉熵,1是交叉.2是熵(熵与信息量有关):首先交叉熵涉及信息论里面的东西,想要彻底理解交叉熵就要明白此概念跟信息量的关系以及里边的熵怎么理解. (1)信息量 衡量信息量可以用大小或者多少来 ...

  2. 一文总览机器学习中各种【熵】的含义及本质

    https://www.toutiao.com/a6681435530564993544/ 2019-04-19 11:02:15 机器学习领域有一个十分有魅力的词:熵.然而究竟什么是熵,相信多数人都 ...

  3. 机器学习中的损失函数(交叉熵损失、Hinge loss)

    损失函数 文章目录 损失函数 1 交叉熵损失 1.1 从最大似然估计到交叉熵损失 概率论中的MLE 机器学习中的MLE 交叉熵损失 1.2 多分类的交叉熵损失函数 1.3 比较 2. Hinge lo ...

  4. 一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉

    关于交叉熵在loss函数中使用的理解 交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距.以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用起 ...

  5. 免费教材丨第51期:数学基础课程----概率论教程、机器学习中的数学基础

    小编说 过去几个月里,有不少人联系我,向我表达他们对人工智能.数据科学.对利用机器学习技术探索统计规律性,开发数据驱动的产品的热情.但是,我发现他们中有些人实际上缺少为了获取有用结果的必要的数学直觉和 ...

  6. ​机器学习中必要的数学基础!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Benjamin Obi Tayo 来源:机器之心 作为一门基础性 ...

  7. 机器学习中的数学基础(2)——理解基、线性组合与向量空间

    https://www.toutiao.com/a6668922466275951118/ 这是<机器学习中的数学基础>系列的第2篇. 铺垫 在介绍各种"高大上"的名词 ...

  8. 机器学习中的数学基础(1)——向量和范数

    https://www.toutiao.com/i6668553958534939144/ 从今天开始,我将开设一个机器学习数学基础的系列.主要介绍机器学习中经常用到的那些数学知识,方便大家入门.一说 ...

  9. 一文了解机器学习中的交叉熵

    https://www.toutiao.com/a6654435108105224712/ 2019-02-05 16:46:49 熵 在介绍交叉熵之前首先介绍熵(entropy)的概念.熵是信息论中 ...

  10. 相对熵与交叉熵_详解机器学习中的熵、条件熵、相对熵、交叉熵

    目录 信息熵 条件熵 相对熵 交叉熵 总结 一  信息熵 (information entropy) 熵 (entropy) 这一词最初来源于热力学.1948年,克劳德·爱尔伍德·香农将热力学中的熵引 ...

最新文章

  1. PHP 开发环境和组织管理
  2. hdu4280(最大流)
  3. 打开CEPH内核DOUT日志输出
  4. 结合webpack配置_前端 Webpack 工程化的最佳实践
  5. 【计算机组成原理】存储器简述
  6. java嵌套类型 无法隐藏外层类型_java内部类深入详解 内部类的分类 特点 定义方式 使用...
  7. linux内核优化项,Linux内核优化配置
  8. PLSQL 连接不上64位ORACLE数据库解决办法
  9. MFC 通用对话框之“浏览“对话框
  10. 人力资源管理-输入、输出、工具和技术
  11. C虾仔笔记 - HorizontalScrollView水平滚动视图
  12. 这一次,彻底拿下操作系统!!!
  13. python h5py详解
  14. 摄像头拍照及解析QR二维码
  15. Python程序设计入门32道基础编程题目与参考代码
  16. CSS多行文本溢出隐藏,显示省略号
  17. 传奇M2server用到的文件一些txt或Ini文件解释说明(整理中……)
  18. USB-IF介绍及标准下载
  19. 独家 | 机器学习前沿:为什么上下文是一切(附链接)
  20. 2023秋招--腾讯天美--游戏客户端--一面面经

热门文章

  1. Android内核开发 Linux C编程调用内核模块设备驱动
  2. Linux 升级glibc-2.14 失败 我遇到的问题
  3. 何冲(为奥运冠军名字作诗)
  4. SaltStack 介绍和安装
  5. foreach写失效的问题
  6. zTree树形控件讲解
  7. .Net6种成员的可访问性
  8. LAMP 3.1 mysql的root密码重置
  9. 规范信息系统工程建设市场 促进信息化健康发展
  10. 使用HttpWebRequest自动更新客户端应用程序[转]