1. KL散度

KL散度又称为相对熵,信息散度,信息增益。KL散度是是两个概率分布 $P$ 和 $Q$  之间差别的非对称性的度量。 KL散度是用来 度量使用基于 $Q$ 的编码来编码来自 $P$ 的样本平均所需的额外的位元数。 典型情况下,$P$ 表示数据的真实分布,$Q$ 表示数据的理论分布,模型分布,或 $P$ 的近似分布。

定义如下:

因为对数函数是凸函数,所以KL散度的值为非负数。

有时会将KL散度称为KL距离,但它并不满足距离的性质:

  1. KL散度不是对称的,即 $D_{KL} (P||Q) \neq D_{KL} (Q||P)$;
  2. KL散度不满足三角不等式。

2. JS散度(Jensen-Shannon)

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

KL散度和JS散度度量的时候有一个问题:

如果两个分配 $P, Q$ 离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为 $0$。梯度消失了。

3. Wasserstein距离

Wasserstein距离度量两个概率分布之间的距离,定义如下:

  $\Pi (P_1, P_2)$ 是 $P_1$ 和 $P_2$ 分布组合起来的所有可能的联合分布的集合。对于每一个可能的联合分布 $\gamma$,可以从中采样 $(x,y)∼ \gamma$ 得到一个样本 $x$ 和 $y$,并计算出这对样本的距离 $||x−y||$,所以可以计算该联合分布 $\gamma$ 下,样本对距离的期望值 $E _{(x, y) ∼ \gamma}[||x−y||]$。在所有可能的联合分布中能够对这个期望值取到的下界 $\inf_{\gamma ∼ \Pi(P_1, P_2)} E _{(x, y) ∼ \gamma}[||x−y||]$ 就是Wasserstein距离。

  直观上可以把 $E _{(x, y) ∼ \gamma}[||x−y||]$ 理解为在 $\gamma$ 这个路径规划下把土堆 $P_1$ 挪到土堆 $P_2$ 所需要的消耗。而Wasserstein距离就是在最优路径规划下的最小消耗。所以Wesserstein距离又叫Earth-Mover距离。

  Wessertein距离相比KL散度和JS散度的优势在于:即使两个分布的支撑集没有重叠或者重叠非常少,仍然能反映两个分布的远近。而JS散度在此情况下是常量,KL散度可能无意义。

转载自:KL散度、JS散度、Wasserstein距离

KL散度、JS散度、Wasserstein距离的更多相关文章

  1. 信息论相关概念:熵 交叉熵 KL散度 JS散度

    目录 机器学习基础--信息论相关概念总结以及理解 1. 信息量(熵) 2. KL散度 3. 交叉熵 4. JS散度 机器学习基础--信息论相关概念总结以及理解 摘要: 熵(entropy).KL 散度 ...

  2. KL与JS散度学习[转载]

    转自:https://www.jianshu.com/p/43318a3dc715?from=timeline&isappinstalled=0 https://blog.csdn.net/e ...

  3. KL散度与JS散度

    1.KL散度 KL散度( Kullback–Leibler divergence)是描述两个概率分布P和Q差异的一种测度.对于两个概率分布P.Q,二者越相似,KL散度越小. KL散度的性质:P表示真实 ...

  4. 【GAN与NLP】GAN的原理 —— 与VAE对比及JS散度出发

    0. introduction GAN模型最早由Ian Goodfellow et al于2014年提出,之后主要用于signal processing和natural document proces ...

  5. 【深度学习】K-L 散度,JS散度,Wasserstein距离

    度量两个分布之间的差异 (一)K-L 散度 K-L 散度在信息系统中称为相对熵,可以用来量化两种概率分布 P 和 Q 之间的差异,它是非对称性的度量.在概率学和统计学上,我们经常会使用一种更简单的.近 ...

  6. 【python深度学习】KS,KL,JS散度 衡量两组数据是否同分布

    目录 KS(不需要两组数据相同shape) JS散度(需要两组数据同shape) KS(不需要两组数据相同shape) 奇怪之处:有的地方也叫KL KS距离,相对熵,KS散度 当P(x)和Q(x)的相 ...

  7. PyTorch 实战:计算 Wasserstein 距离

    PyTorch 实战:计算 Wasserstein 距离 2019-09-23 18:42:56 This blog is copied from: https://mp.weixin.qq.com/ ...

  8. wasserstein 距离

    https://blog.csdn.net/nockinonheavensdoor/article/details/82055147 注明:直观理解而已,正儿八经的严谨证明看最下面的参考. Earth ...

  9. js获取滚动条距离浏览器顶部,底部的高度,兼容ie和firefox

    做web开发经常会碰到需要获取浏览器的滚动条与顶部和底部的距离,然后做相应的处理动作.下面作者就如何通过js来获取浏览器滚动条距离浏览器顶部和底部的高度做一下分享,这个是同时兼容ie和firefox的 ...

随机推荐

  1. June 30th. 2018, Week 26th. Saturday

    Curiosity is the wick in the candle of learning. 如果学习是一根蜡烛,那好奇心就是烛芯. From William Arthur Ward. Pleas ...

  2. Ambari:Provide ability to apply single patches on top of RU release

    https://issues.apache.org/jira/browse/AMBARI-12556 Provide ability to apply single patches on top of ...

  3. 微信小程序小结

    前几日抽空看了下小程序,发现挺好玩的,mvvm的结构,语法比vue要简单,内置了一系列的组件,很方便.然后开发者工具直接上传代码,提交审核,然后发布,感觉挺好.虽然不打算做个工具类的,但是做个介绍类小 ...

  4. Java Excel导入导出(实战)

    一.批量导入(将excel文件转成list) 1. 前台代码逻辑 1)首先在html页面加入下面的代码(可以忽略界面的样式) <label for="uploadFile" ...

  5. Android 音视频开发学习思路

    Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来. 初级入门篇: Android 音视频开发(一) ...

  6. JavaFX技术简要总结

    最近,做一个桌面应用程序的项目,需要考察相关技术,对于经常使用Java的我们来说,很自然的找Java的桌面程序开发技术,发现JavaFX是比较合适的,简单熟悉了一下,写出来给大家做个参考. 一 Jav ...

  7. 【机器学习篇】--SVD从初始到应用

    SVD一般应用场景--推荐系统,图像压缩. 1.直观感受. SVD其实就是将矩阵分界,直观感受如图.就是将A矩阵分界成U,S,V三个矩阵相乘.一般推荐系统中用的多.S是对角阵,里面的特征值是从大到小排 ...

  8. Python基础(解压序列)

    解压序列: a,b=(1,2) # a,b=[1,2] print(a,b) #输出结果:1 2 #获取第一个值和最后一个值 a,*_,c=(1,2,3,4,5,6,7,8,9) print(a) p ...

  9. WindowUtils【窗口工具类】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 判断当前界面是横屏还是竖屏: 获取当前界面方向. 效果图   代码分析 isLandscape(Context context): ...

  10. Android序列化

    1.序列化的目的 (1)永久的保存对象数据(将对象数据保存在文件当中,或者是磁盘中 (2)通过序列化对象在网络中传递对象 (3)通过序列化对象在进程间传递 (4)在Intent之间,基本的数据类型直接 ...