KL散度、JS散度、Wasserstein距离[通俗易懂]

KL散度、JS散度、Wasserstein距离[通俗易懂]1.KL散度KL散度又称为相对熵,信息散度,信息增益。KL散度是是两个概率分布P和Q差别的非对称性的度量。KL散度是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数。典型情况下,P表示数据的真实分布,Q表示数据的理论分布,模型分布,或P的近似分布。定义如下:DKL(P//Q)=−∑x∈XP(x)log1P(x)+∑x∈XP(x)log1Q(x)DKL(…

大家好,又见面了,我是你们的朋友全栈君。

1. KL散度

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

定义如下:

DKL(P//Q)=xXP(x)log1P(x)+xXP(x)log1Q(x) D K L ( P / / Q ) = − ∑ x ∈ X P ( x ) l o g 1 P ( x ) + ∑ x ∈ X P ( x ) l o g 1 Q ( x )



因为对数函数是凸函数,所以

KL K L
散度的值为非负数。

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

1. KL散度不是对称的: KL(A,B) K L ( A , B ) KL(B,A) K L ( B , A )

2. KL散度不满足三角不等式: KL(A,B) K L ( A , B ) > >
KL(A,C)+KL(C,B)

K L ( A , C ) + K L ( C , B )

2. JS散度(Jensen-Shannon)

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

这里写图片描述

KL K L 散度和 JS J S 散度度量的时候有一个问题:

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

3. Wasserstein距离

Wasserstein W a s s e r s t e i n 距离度量两个概率分布之间的距离,定义如下:
这里写图片描述
Π(P1,P2) Π ( P 1 , P 2 ) P1 P 1 P2 P 2 分布组合起来的所有可能的联合分布的集合。对于每一个可能的联合分布γ,可以从中采样 (x,y)γ ( x , y ) ∼ γ 得到一个样本x和y,并计算出这对样本的距离||x−y||,所以可以计算该联合分布 γ γ 下,样本对距离的期望值 E(x,y)γ[||xy||] E ( x , y ) ∼ γ [ | | x − y | | ] 。在所有可能的联合分布中能够对这个期望值取到的下界 infγ i n f γ Π(P1,P2) Π ( P 1 , P 2 ) E(x,y) γ[||xy||] ∼ γ [ | | x − y | | ] 就是Wasserstein距离。

直观上可以把 E(x,y)γ[||xy||] E ( x , y ) ∼ γ [ | | x − y | | ] 理解为在 γ γ 这个路径规划下把土堆P1挪到土堆P2所需要的消耗。而 Wasserstein W a s s e r s t e i n 距离就是在最优路径规划下的最小消耗。所以 Wesserstein W e s s e r s t e i n 距离又叫Earth-Mover距离。

Wessertein距离相比KL散度和JS散度的优势在于:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125006.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java二维数组初始化为0_怎样把java二维数组初始化为0

    java二维数组初始化为0_怎样把java二维数组初始化为0展开全部新new出来的二维数组就是已经初始为0了,或者利62616964757a686964616fe58685e5aeb931333337623462用循环依次赋值0;例如:publicclassMain{publicstaticvoidmain(String[]args){inta[][]=newint[5][5];for(inti=0;i<5;i++){for…

    2022年5月25日
    88
  • 震荡波病毒原代码(勒索病毒源代码)

    #include#include#include#include#include#defineNORM”/033[00;00m”#defineGREEN”/033[01;32m”#defineYELL”/033[01;33m”#defineRED”/033[01;31m”#defineBANNERGREEN”[%%]”YELL”mandrag

    2022年4月14日
    79
  • 模拟电子技术之运算放大器「建议收藏」

    模拟电子技术之运算放大器「建议收藏」上一篇文章对放大电路做了简单的介绍,相信大家对”放大”这个概念已经有了一定的了解,下面我们来看一下运算放大器运算放大器及其信号放大运算放大器的基本线性应用1.运算放大器及其信号放大集成运算放大器是一种应用极为广泛的模拟器件。用集成运算放大器可以非常方便地实现信号的放大、运算、变换等各种处理。常见的运放电路符号有矩形和三角形两种电路符号这里我们采用三角形符号端口意义运算放大器正常工作时,必须提供工作电源,通常正负电源的连接方式为:实际运放外部引脚实例来看一下实际的电子元器件:运

    2022年5月11日
    42
  • Drupal 安装过程「建议收藏」

    Drupal 安装过程「建议收藏」php.ini文件https://drupal.stackexchange.com/questions/164172/problem-installing-in-local-the-translation-server-is-offlinecurl.cainfo=”C:\wamp64\keys\cacert.pem”转载于:https://www.cnblogs.com/A…

    2022年7月20日
    15
  • TranslateMessage函数 (转)「建议收藏」

    TranslateMessage函数 (转)「建议收藏」TranslateMessage是用来把虚拟键消息转换为字符消息。由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息。TranslateMessage函数用于将虚…

    2025年11月6日
    3
  • Linux的SOCKET编程详解[通俗易懂]

    Linux的SOCKET编程详解

    2022年2月12日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号