Wasserstein距离笔记

Wasserstein距离笔记Wasserstein 距离 Wasserstein 距离也叫做推土机距离 EarthMover sdistance 这也是由于它的推导过程可以很形象的用挖土填土来解释 这也是因为该距离定义中由一个分布转变为另一个分布所需要的代价和挖土填土的过程十分相似 考虑两个离散的分布 P 和 Q 为了让两个分布相同 我们一个个变量地观察 为了让 P1 和 Q1 相同 我们需要 P1 把手头上的 3 分 2 到 P2 去 这样 P1 和 Q1 都等于 1 此时 P2 4 其他数保持不变 这个过程是不是十分像挖掉 P1 的土填到 P2 上 为了让 P2

Wasserstein距离

Wasserstein距离也叫做推土机距离(Earth Mover’s distance),简称EMD,用来表示两个分布的相似程度。EMD是2000年IJCV期刊文章《The Earth Mover’s Distance as a Metric for Image Retrieval》提出的一种直方图相似度量(作者在之前的会议论文中也已经提到,不过鉴于IJCV的权威性和完整性,建议参考这篇文章)。这也是由于它的推导过程可以很形象的用挖土填土来解释,这也是因为该距离定义中由一个分布转变为另一个分布所需要的代价和挖土填土的过程十分相似。

假设有两个工地P和Q,P工地上有m堆土,Q工地上有n个坑,现在要将P工地上的m堆土全部移动到Q工地上的n个坑中,所做的最小的功。

每堆土我们用一个二元组来表示(p,w),p表示土堆的中心,w表示土的数量。则这两个工地可表示为:

Wasserstein距离笔记

每个土堆中心pi到每个土坑中心qj都会有一个距离dij,则构成了一个m*n的距离矩阵。

Wasserstein距离笔记

那么问题就是我们希望找到一个流(flow),当然也是个矩阵[fij],每一项fij代表从pi到qj的流动数量,从而最小化整体的代价函数:

Wasserstein距离笔记

问题描述清楚了:就是把P中的m个坑的土,用最小的代价搬到Q中的n个坑中,pi到qj的两个坑的距离由dij来表示。fij是从pi搬到qj的土的量;dij是pi位置到qj位置的代价(距离)。要最小化WORK工作量。EMD是把这个工作量归一化以后的表达,即除以对fij的求和。

Wasserstein距离笔记

 

 EMD公式:

Wasserstein距离笔记

https://www.cnblogs.com/denny402/p/7054950.html

案例sample:考虑两个离散的分布P和Q

Wasserstein距离笔记

为了让两个分布相同,我们一个个变量地观察,

  • *为了让P1和Q1相同,我们需要P1把手头上的3分2到P2去,这样P1和Q1都等于1,此时P2=4,其他数保持不变,这个过程是不是十分像挖掉P1的土填到P2上~
  • 为了让P2和Q2相同,我们也要做类似的挖土填土工作,但注意,此时P2手头上由P1填的2,因此现在P2是4,但是Q2依然是2,因而P2也要挖2分土给P3,保持和Q2一样。
  • P3和Q3也是一样,但此时P3为3,Q3为4,因为我们只能先挖土再填土,因此要Q3挖1分土给Q4,这样P4和Q4也能够一样。

每一步的代价计算公式为\delta_i=\delta _{i-1}+P_i-Q_i ,第0步我们规定为0,故有

Wasserstein距离笔记

所以最终的总代价,也即Wasserstein距离则为W=\sum|\delta _i|=5

Wasserstein距离笔记

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

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

(0)
上一篇 2026年2月12日 上午8:01
下一篇 2026年2月12日 上午8:22


相关推荐

  • VS2013产品密钥

    VS2013产品密钥VS2013试用期结束需要提供产品密钥进行注册,下面将提供几个好用的产品密钥。首先打开VS->帮助->注册产品->输入产品密钥BWG7X-J98B3-W34RT-33B3R-JVYW9(亲测有效)下面几个VS版本楼主未使用过,大家可以使用一下试试。VisualStudioUltimate2013KEY(密钥):BWG7X-J98B3-W34RT-33B3…

    2022年5月20日
    114
  • WinSCP连接Ubuntu被拒绝

    WinSCP连接Ubuntu被拒绝(如果是为了向虚拟机传输文件就要将用户名改为root)打开终端并登录root1.首先确认是否输入正确的主机名:输入ifconfig得到主机名2.Ubuntu默认root是关闭的,最好重新设置一遍密码:passwdroot就能开启root3.关闭防火墙:ufwdisable4.安装openssh-server:apt-getinstallopenssh-server5.检查sshd是否启动:ps-e|grepssh看到sshd说明启动成功6.使root允

    2025年12月13日
    4
  • SQL注入语句大全

    SQL注入语句大全1 判断有无注入点 nbsp and1 1and1 22 猜表一般的表的名称无非是 adminadminus 等 nbsp and0 lt gt selectcount from nbsp and0 lt gt selectcount fromadmin 判断是否存在 admin 这张表 3 猜帐号数目如果遇到 0 lt 返回正确页

    2026年3月18日
    2
  • 关于Heap free block xxxxxxxx modified at xxxxxxxxx after is was freed

    关于Heap free block xxxxxxxx modified at xxxxxxxxx after is was freed程序崩溃了,日志中的提示是:Heapfreeblockxxxxxxxxmodifiedatxxxxxxxxxafteriswasfreed和百度快乐地玩耍了很久,得知造成这种错误的原因可能是野指针,即指针指向的内存位置不是你想要的东西,它很可能已经被删除或者移动了。事情是这样发生的:我在逻辑中使用了三个List(AllSpriteList,FriendList,Enemy

    2022年8月22日
    23
  • 详解List的toArray()方法和toArray(T[] a)方法

    详解List的toArray()方法和toArray(T[] a)方法这两个方法都是将列表List中的元素转导出为数组,不同的是,toArray()方法导出的是Object类型数组,而toArray[T[]a]方法导出的是指定类型的数组。下面是两个方法的申明及说明,摘自Java8的API文档。toArray()方法的分析Object[]toArray()Returnsanarraycontainingalloftheelementsinthislistinpropersequence(fromfirsttolastelem

    2022年5月14日
    48
  • 面试题:ArrayList扩容机制

    面试题:ArrayList扩容机制

    2026年3月17日
    2

发表回复

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

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