Wasserstein metric的通俗解释

Wasserstein metric的通俗解释

关注他
166 人赞同了该文章

本文收录在无痛的机器学习第二季目录。

Wasserstein GAN可以算是GAN界的一大突破了,有关它的介绍和使用心得的文章也已经满天飞了,感兴趣的童鞋随便一搜就能好多,今天就不说太多大家说过的内容,我们从一个十分通俗的角度来看看这个目标函数究竟做了些什么。

一个简单的例子

如果直接去看Wasserstein metric的定义,相信对实变函数、泛函分析、测度论等数学学科不熟悉的人来说简直是云里雾里:

W(\mu, \upsilon)=\inf_{\gamma \in \Gamma (\mu, \upsilon)} \int_{M \times M}d(x,y) d \gamma(x,y)

这公式都说了些什么,看到就头疼,看看旁边的解释,稍微明白一点,但还是晕晕乎乎的。下面我们就从一个简单的例子开始说起,然后慢慢过渡到这个公式上来。

我们使用最优运输里面的一个小例子,假设我国的某市要修建立交桥,修高速公路需要石头,现在已经查明城市附近有几个山头有石头,我们希望把石头采集来并运输到立交桥的几个建造地点,如图所示:


我们假设其他的工作都没有花费,只有运输这一步花费,那么从这些石头产生地把石头运到建桥处,怎么最省钱呢?

为了计算方便,我们需要再做一些设定:

  • 石头a处有100单位石头
  • 石头b处有50单位石头
  • 石头c处有100单位石头
  • 桥A处需要100单位石头
  • 桥B处需要50单位石头
  • 桥C处需要100单位石头


各个点的距离如下所示:

d(a,A)=10, d(a,B)=20, d(a,C)=30
d(b,A)=25, d(b,B)=25, d(b,C)=25
d(c,A)=20, d(c,B)=30, d(c,C)=10

我们假设每搬运1单位石头行走1单位距离,我们要花费1块钱,那么最优的搬运路径是什么,怎么最省钱?

这个问题其实也不算很复杂,我们令x[s][t]表示把s石头处运往t桥处的石头数量,那么就有下面的公式:

min 10*x[a][A]+20*x[a][B]+30*x[a][C]+25*x[b][A]+25*x[b][B]+25*x[b][C]+20*x[c][A]+30*x[c][B]+10*x[c][C]
s.t.
# 石头的约束
x[a][A]+x[a][B]+x[a][C]=100
x[b][A]+x[b][B]+x[b][C]=50
x[c][A]+x[c][B]+x[c][C]=100
# 桥的约束
x[a][A]+x[b][A]+x[c][A]=100
x[a][B]+x[b][B]+x[c][B]=50
x[a][C]+x[b][C]+x[c][C]=100

那么这个问题能不能求出最优解呢?当然可以,这道线性规划的问题就交给感兴趣的童鞋自行研究答案了。总之我们列出了公式,并给明了对应的约束条件,大家对这个问题应该已经十分清晰了。

不过话说回来,这个问题和Wasserstein有关系么?当然有。我们需要对上面的公式做一些抽象了。

首先是最小化的函数,我们用d(s,t)表示石头到桥的距离,用m(s,t)表示运输石头的数量,这样目标函数就变成了:

min \sum_{\pi(s,t)}d(s,t)*m(s,t)

其中的\pi表示了s,t的所有组合形式,这个问题下,我们有9种组合形式。

然后就是下面的约束内容了,我们再定义s(x)表示石头处拥有石头的数量,t(x)表示桥需要的石头数量,那么就有

\sum_t m(s,t)=s(s), \forall s

\sum_s m(s,t)=t(t),\forall t

怎么样,和上面的公式是不是靠近了不少?

升级版问题

下面我们要把问题升级一下,前面的数字都是几百几百的,和我们想要的公式不太一样,我们能不能把它们归一化一下,也就是说,把每个数字都除以它们的总和?

这样就有:

  • 石头a有0.4的石头(100/250)
  • 石头b有0.2的石头


……

  • 桥A需要0.4的石头(100/250)


……

这样带来一个好处,我们发现它从数值上和概率值很像了:

  1. 首先这些值非0
  2. 其次它们的加和为1
  3. 当然还满足一些我们一般不关注的性质(次可数可加性)


嗯,专业来说这个就可以想象成概率测度函数了,我们完成了一个关键的变化,此时我们需要变换一下符号:

s(s)变成\mu(s),表示对所有石头的“概率测度”,它的空间是a,b,c三处的石头

t(t)变成\upsilon(t),表示对所头桥的“概率测度”,它的空间是A,B,C三处的桥

那么m(s,t)呢?看上去和我们学过的联合概率很像嘛,当然这里我们学术一点,管它叫积空间\Gamma,积空间上的“概率测度”函数就是之前的m(s,t),我们现在管它叫\gamma(s,t)

好了,到这里,我们可以再看看我们对问题的描述了:

min_{\gamma(s,t)} \sum_{(s,t) \in \Gamma} \gamma(s,t) * d(s,t)

s.t.

\sum_t\gamma(s,t)=\mu(s),\forall s

\sum_s \gamma(s,t)=\upsilon(t),\forall t

嗯,感觉离最终想要的目标不远了。我们还发现了一个现象,如果把\gamma想象成一个联合分布,那么它的两个边缘分布分别就是\mu(s)\upsilon(t),这样两个约束条件也可以用一句话来描述了。

升级2.0的问题

下面完成问题解释的最后一步,前面看到的问题都是离散问题,我们能不能把它表示成连续的问题?我们有一片石头上,每一处都有若干的石头,我们有一片区域都要建桥,每个点上都可能需要石头,于是前面提到的\mu(s)\upsilon(t)\gamma(s,t)全部变成了连续分布,于是问题又变成了:

min_{\gamma(s,t)} \int_{\Gamma}d(s,t)d\gamma(s,t)

s.t. \gamma(s,t)要满足边缘分布的约束

嗯,到目前为止,两边的形状可以说是几乎一样了。但是似乎还差一点,剩下的那点实际上就是“高级数学”的抽象与归纳了。关于剩下的问题,我们下次再说。

编辑于 2017-11-22
「真诚赞赏,手留余香」
赞赏
还没有人赞赏,快来当第一个赞赏的人吧!
机器学习
深度学习(Deep Learning)
生成对抗网络(GAN)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

肖仰华 | 领域知识图谱落地实践中的问题与对策

本文转载自公众号:知识工场。肖仰华教授2万字长文为您深度剖析领域知识图谱,对领域知识图谱技术与落地应用中的一系列关键问题做了系统的梳理与解答。肖仰华博士,复旦大学计算机科学与技术学院教授,博士生导师,知识工场…

数据结构--链表--约瑟夫环问题(单向循环链表)

问题:一群人站成一个圆圈,从一个人开始报数,1, 2 ,。。。m,报到m的拉出去砍了,求被砍的顺序和最后一个活下来的。 利用单向循环链表实现 C代码如下:(参考书籍&#xff…

献给新一代人工智能后浪——《后丹》

一只小狐狸带你解锁炼丹术&NLP秘籍视频来源:AIZOO《后丹》那些口口声声,掉包调参侠的人,应该看着你们像我一样,我看着你们,满怀羡慕。人类积攒了几十年的科技,所有的模型、数据、框架和显卡&#xff0c…

神经网络算法学习---mini-batch++++mini-batch和batch的区别

Batch_Size(批尺寸)是机器学习中一个重要参数,涉及诸多矛盾,下面逐一展开。 首先,为什么需要有 Batch_Size 这个参数? Batch 的选择,首先决定的是下降的方向。如果数据集比较小,完全…

进阶阿里架构师:算法、编程语言、数据库、架构设计!书单推荐!

阿里架构师必读书单 数据结构与算法:算法、算法导论等。 编程语言:java编程思想、java核心技术等 模式与设计:设计模式、代码重构、深入理解java虚拟机 数据库:mysql优化、oracle、redis实战、mongodb权威指南等。 架构设计&a…

刘知远 | 语义表示学习

本文转载自公众号:人工智能图灵。刘知远,清华大学计算机系副教授、博士生导师。主要研究方向为表示学习、知识图谱和社会计算。2011年获得清华大学博士学位,已在ACL、IJCAI、AAAI等人工智能领域的著名国际期刊和会议发表相关论文60余篇&#…

数据结构--链表--LRU缓存

LRU&#xff08;Least Recently Used&#xff09;缓存策略&#xff1a; 通俗的讲就是&#xff0c;最近使用的放在最前面&#xff0c;不经常使用的放后面&#xff0c;满了就删除 C代码实现 //用单链表实现LRU策略 2019.3.17 #include <iostream> #include <string…

透过现象看机器学习:奥卡姆剃刀,没有免费的午餐,丑小鸭定理等

一只小狐狸带你解锁炼丹术&NLP 秘籍本文对PAC学习理论、没有免费的午餐定理、丑小鸭定理、奥卡姆剃刀原理等机器学习中有名的理论或定理进行了详细的梳理。在机器学习中&#xff0c;有一些非常有名的理论或定理&#xff0c;这些理论不仅有助于我们从本质理解机器学习特性&a…

NAACL 2019最佳论文:量子概率驱动的神经网络

今天要介绍的文章与当前大火的 BERT 同获最佳论文&#xff0c;摘得 NAACL 2019 最佳可解释NLP论文&#xff08;Best Explainable NLP Paper&#xff09;。NAACL 与 ACL 和 EMNLP 并称之为 NLP 三大顶会&#xff0c;去年 ELMO 获得 outstanding paper&#xff0c;今年一共有五篇…

互联网优秀架构师必读书单V2.0

一篇文章搞懂高级程序员、架构师、技术经理、技术总监、CTO&#xff0c;从薪资到技能要领的区别&#xff0c;我提到了架构师的准确定义和所需工作年限&#xff0c;以及最重要的架构师的职责等。 从程序员进阶到架构师&#xff0c;6大核心技能详解&#xff0c;提到了从程序员进…

领域应用 | NLP 和知识图谱:金融科技领域的“双子星”

本文转载自公众号&#xff1a;恒生技术之眼。自然语言处理&#xff08;Natural Language Processing, NLP&#xff0c;语义计算&#xff09;和知识图谱&#xff08;Knowledge Graph, KG&#xff0c;知识计算&#xff09;作为认知智能的关键技术&#xff0c;正成为智能金融浪潮中…

数据结构--单链表single linked list(无表头哨兵)重写

针对上次写的单链表中不足的地方进行修改&#xff1a; 1.构造函数需要让用户输入&#xff08;bad&#xff09; 2.函数功能不单一&#xff0c;既操作链表&#xff0c;还打印输出&#xff08;bad&#xff09; 代码链接&#xff08;包含无头\有头单链表、循环单链表、双链表、循…

别再蒸馏3层BERT了!变矮又能变瘦的DynaBERT了解一下

一只小狐狸带你解锁炼丹术&NLP秘籍神经网络模型除了部署在远程服务器之外&#xff0c;也会部署在手机、音响等智能硬件上。比如在自动驾驶的场景下&#xff0c;大部分模型都得放在车上的终端里&#xff0c;不然荒山野岭没有网的时候就尴尬了。对于BERT这类大模型来说&#…

LS-GAN:把GAN建立在Lipschitz密度上

最近很多关心深度学习最新进展&#xff0c;特别是生成对抗网络的朋友可能注意到了一种新的GAN-- Wasserstein GAN。其实在WGAN推出的同时&#xff0c;一种新的LS-GAN (Loss Sensitive GAN&#xff0c;损失敏感GAN)也发表在预印本 [1701.06264] Loss-Sensitive Generative Adver…

java程序员必看经典书单,以及各个阶段学习建议

最近&#xff0c;部分读者一直希望我给大家推荐java程序员必读书籍&#xff0c;以及java程序员每个阶段的学习建议。 今天&#xff0c;先给大家推荐1.0版本&#xff0c;后面再不断完善程序员必读书籍2.0版本。 希望&#xff0c;你早日成为牛逼的程序员。 程序员进阶之路 上图是…

数据结构--链表--单链表归并排序mergesort

思路&#xff1a; 1.将链表的中点找到&#xff0c;对其切分成2条 2.继续步骤1&#xff0c;切成4条&#xff0c;8条。。。,直至每段链表只有1个元素 3.归并操作&#xff0c;对两两链表进行合并排序&#xff0c;并返回回并后的链表的头结点&#xff0c;依次向上递归回去 C代码…

我们的实践:事理图谱,下一代知识图谱

原文链接&#xff1a;https://mp.weixin.qq.com/s/iLfXeVeWE5CCs_sM_NAOSw 一、人工智能与认知智能 当前人工智能时代下&#xff0c;机器与人类之间的博弈一直在进行着。如图1所示&#xff0c;从1956年达特茅斯会议的召开标志人工智能诞生到深度学习模型在若干人工智能领域大规…

领域应用 | 偷偷告诉你,那些二次元萌妹都有个叫知识图谱的爸爸

本文转载自公众号&#xff1a;AI 时间。《AI108将》是AI时间全新的AI行业人物专访栏目。艾伦麦席森图灵说&#xff1a;有时&#xff0c;那些人们对他们并不抱有期望的人&#xff0c;却能做到人们不敢期望的事情。Sometimes Its very people who no one imagines angthing of wh…

白话生成对抗网络 GAN,50 行代码玩转 GAN 模型!【附源码】

今天&#xff0c;带大家一起来了解一下如今非常火热的深度学习模型&#xff1a;生成对抗网络&#xff08;Generate Adversarial Network&#xff0c;GAN&#xff09;。GAN 非常有趣&#xff0c;我就以最直白的语言来讲解它&#xff0c;最后实现一个简单的 GAN 程序来帮助大家加…

java架构师进阶之独孤九剑(一)-算法思想与经典算法

“ 这是整个架构师连载系列&#xff0c;分为9大步骤&#xff0c;我们现在还在第一个步骤&#xff1a;程序设计和开发->数据结构与算法。 我们今天讲解重点讲解算法。 算法思想 1 贪心思想 顾名思义&#xff0c;贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并…