Wasserstein metric的通俗解释

​关注他

166 人赞同了该文章

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

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

一个简单的例子

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

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

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


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

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

  • 石头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有关系么?当然有。我们需要对上面的公式做一些抽象了。

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

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

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

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

升级版问题

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

这样就有:

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

……

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

……

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

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

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

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

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

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

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

s.t.

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

升级2.0的问题

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

要满足边缘分布的约束

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

编辑于 2017-11-22
「真诚赞赏,手留余香」

赞赏

还没有人赞赏,快来当第一个赞赏的人吧!

机器学习
深度学习(Deep Learning)
生成对抗网络(GAN)


http://www.taodudu.cc/news/show-1069942.html

相关文章:

  • 神经网络算法学习---mini-batch++++mini-batch和batch的区别
  • LS-GAN:把GAN建立在Lipschitz密度上
  • 从GAN到WGAN到LipschitzGA
  • 2019年招聘过程的种种酸甜苦辣历程
  • 微型计算机性能指标以及分类
  • 数据结构与算---重点复习知识
  • 常见数据结构与算法整理总结(下)
  • 程序设计语言基础-知识点
  • OSI七层模型详解-开放系统互联参考模型详解
  • 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二)
  • 腾讯2019秋招笔试真题
  • 2019字节跳动秋招笔试
  • Overleaf v2 评测
  • 1.1 字符串的旋转+1.2 字符串的包含
  • (C语言)链表的实现集合的相关操作
  • 1.3 字符串的全排列
  • 金融行业如何用大数据构建精准用户画像?
  • 干货 | 搞定用户画像只需5个步骤
  • 智能投顾全面解读
  • 金融时报:人工智能在银行中的应用—对全球30家大型银行的调查
  • LightGBM——提升机器算法(图解+理论+安装方法+python代码)
  • java教程-scala教程-带你从菜鸟入门
  • 随机森林RF、XGBoost、GBDT和LightGBM的原理和区别
  • SQL 数据分析常用语句
  • 递归」与「动态规划
  • 选择排序、插入排序、冒泡排序、希尔排序算法的总结 - 复杂度、实现和稳定性
  • DTW动态时间规整算法
  • 垃圾分类智能化-垃圾分类机器人
  • 数据结构中基本查找算法总结
  • 平衡二叉树、二叉排序树-数据结构

Wasserstein metric的通俗解释相关推荐

  1. 循环神经网络(RNN)原理通俗解释

    循环神经网络(RNN)原理通俗解释 1.RNN怎么来的? 2.RNN的网络结构及原理 3.RNN的改进1:双向RNN 4.RNN的改进2:深层双向RNN 4.1 Pyramidal RNN 5.RNN ...

  2. 协方差、相关系数---通俗解释

    一.协方差的意义 学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差.首先我们给你一个含有n个样本的集合,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧 ...

  3. Fleury (弗罗莱) 算法通俗解释

    Fleury (弗罗莱) 算法通俗解释 1.定义 2.举例说明 图2为连通图G,现利用Fleury算法求它的欧拉通路.(注意区分:欧拉通路.欧拉回路) 其中一种欧拉通路如下:4 5 8 7 6 8 9 ...

  4. 依赖注入通俗解释_我如何向团队解释依赖注入

    依赖注入通俗解释 最近,我们公司开始开发一个新的基于Java的Web应用程序,经过一些评估过程,我们决定使用Spring. 但是许多团队成员并不了解Spring和Dependency Injectio ...

  5. 关于性能测试的通俗解释

    关于性能测试的通俗解释: http://www.docin.com/p-645879730.html 转载于:https://www.cnblogs.com/preftest/archive/2013 ...

  6. 1.通俗解释分布式系统

    1.通俗解释分布式系统 分布式–无非就是将一个系统拆分为多个子系统并散布到不同设备的过程而已 本质而言(拆分和连接):实现一个分布式系统,最核心的部分无非就是两点: 如何拆分:可以有很多方式,核心依据 ...

  7. java web中Jdbc访问数据库步骤通俗解释(吃饭),与MVC的通俗解释(做饭)

    一.Jdbc访问数据库步骤通俗解释(吃饭) 1)加载驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServer"); 2) 与 ...

  8. 数据库设计的三大范式通俗解释

    一.三大范式通俗解释: (1)简单归纳: 第一范式(1NF):字段不可分: 第二范式(2NF):有主键,非主键字段依赖主键: 第三范式(3NF):非主键字段不能相互依赖. (2)解释: 1NF:原子性 ...

  9. 主成份(PCA)与奇异值分解(SVD)的通俗解释

    主成份(PCA)与奇异值分解(SVD)的通俗解释 1. 问题描述 在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量观测,收集大量数据以便进行分析,寻找规律.多变量大样本无疑会为研究和应用 ...

最新文章

  1. 深度|​揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活!
  2. openstack安装系列问题:window7 64位安装的virtualBox 只能选择32位的系统安装不能选择64位的系统安装...
  3. 供配电负荷计算方法详解
  4. ubuntu+idea intellij配置android开发环境
  5. ESP8266等模块
  6. FileStream功能被禁用
  7. docker tomcat启动无法进入欢迎页面
  8. Permission denied (publickey).
  9. linux 下root 口令破解(二) ——说一下grub的密码和安全模式
  10. 查oracle执行的sql,oracle查询正在执行的sql
  11. 【Pre-Training】关于 Transformer 那些的你不知道的事
  12. [Joomla] SQL加入Joomla用户
  13. java中递归算法_java中递归算法是什么怎么算的?
  14. PTA离散数学集合论自测(有答案)
  15. 94个比付费软件更好的免费软件(转载)
  16. Joyoshare Media Cutter for Mac(智能媒体剪辑软件)激活版
  17. 解决nginx emerg bind to 80 failed 98 Address alrea
  18. 微信内域名如何防封,微信域名防封跳转
  19. 超强整理:6大传感器原理
  20. 指针、函数、指针函数和函数指针

热门文章

  1. of_property_read_string 剖析~
  2. Linux C高级编程——网络编程之以太网(2)
  3. python loads_python dumps和loads区别详解
  4. java cellvalue_Java Cell.getErrorCellValue方法代码示例
  5. bp 神经网络 优点 不足_深度学习之BP神经网络--Stata和R同步实现(附Stata数据和代码)
  6. 计算机视觉概述:视觉任务+场景领域+发展历程+典型任务
  7. 计算机表示法是知识 表示法么,计算机三级考试关于IP地址知识点
  8. LeetCode 2166. 设计位集(Bitset)
  9. 天池 在线编程 矩阵还原(前缀和)
  10. LeetCode 170. 两数之和 III - 数据结构设计(哈希map)