当前位置: 首页 > news >正文

最优传输问题和Sinkhorn

最优传输问题

假设有M堆土,每堆土的大小是ama_mam,有N个坑,每个坑的大小是bnb_nbn,把单位土从土堆m运送到坑n的代价是c(m,n)c(m,n)c(m,n),如何找到一种运输方法填满坑,并且代价最小,这就是最优传输问题(optimal transport (OT) problem)。

假设有两个概率分布,类似上面的情况,如何以最小的成本将一种概率分布转换为另一种概率分布,这也是最优传输问题。这个最小的成本可以作为度量两个概率分布的距离,被称为Wasserstein距离,或者推土机距离(Earth Mover’s Distance(EMD))。

在离散的情况下,假设r,c\mathbf r, \mathbf cr,c是两个概率向量,也就是所有元素求和为1的向量。1d\mathbf 1_d1d是维度为ddd所有元素为1的向量。
运输多面体(transport polytope )U(r,c)U(\mathbf r,\mathbf c)U(r,c)被定义为:
U(r,c):={P∈R+d×d∣P1d=r,P⊤1d=c}U(\mathbf r,\mathbf c) := \{ \mathbf P \in \mathbb R^{d \times d}_+ | \mathbf P \mathbf 1_d = \mathbf r, \mathbf P^\top \mathbf 1_d = \mathbf c\} U(r,c):={PR+d×dP1d=r,P1d=c}
给定一个费用矩阵M∈Rd×d\mathbf M \in \mathbb R^{d \times d}MRd×dr\mathbf rrc\mathbf cc的最优传输距离被定义为:
dM(r,c):=min⁡P∈U(r,c)<P,M>=∑i=1d∑j=1dPijMijd_{\mathbf M}(\mathbf r, \mathbf c) := \min_{\mathbf P \in U(\mathbf r,\mathbf c)}<\mathbf P, \mathbf M> = \sum_{i=1}^d \sum_{j=1}^d \mathbf{P}_{ij} \mathbf{M}_{ij} dM(r,c):=PU(r,c)min<P,M>=i=1dj=1dPijMij对于一般的矩阵M\mathbf MM,目前提出的最佳算法在最坏情况下的复杂度是 O(d3log⁡d)O(d^3 \log d)O(d3logd)。在实践中复杂度也被证明是超立方的。

Sinkhorn距离

为上面的最优传输问题加上熵正则化:
dMλ(r,c)=min⁡P∈U(r,c)∑i,jPijMij−1λh(P)h(P)=−∑i,jPijlog⁡Pijd_\mathbf{M}^\lambda(\mathbf{r}, \mathbf{c}) = \min_{\mathbf P\in U(\mathbf{r}, \mathbf{c})}\, \sum_{i,j} \mathbf P_{ij} \mathbf M_{ij} - \frac{1}{\lambda}h(\mathbf P)\\ h(\mathbf P) = -\sum_{i,j}\mathbf P_{ij}\log \mathbf P_{ij} dMλ(r,c)=PU(r,c)mini,jPijMijλ1h(P)h(P)=i,jPijlogPij dMλ(r,c)d_\mathbf{M}^\lambda(\mathbf{r}, \mathbf{c})dMλ(r,c)被称为dual-Sinkhorn divergence,h(P)h(\mathbf P)h(P)是香浓熵(Shannon entropy)。
λ→0\lambda\rightarrow0λ0时,上面问题的解是Pij=ricj\mathbf P_{ij}=\mathbf r_i \mathbf c_jPij=ricj;当λ→∞\lambda\rightarrow\inftyλ时,回到了原始的最优输运问题。
香浓熵要求分配更加均匀, 参数λ\lambdaλ权衡了按花费分配和平分。

加上熵正则的最优传输问题变得更好计算了,因为解变得平滑。
Sinkhorn定理被用来寻找熵正则化最优输运问题的解。

参考资料

Wiki Sinkhorn’s theorem
Notes on Optimal Transport
http://alexhwilliams.info/itsneuronalblog/2020/10/09/optimal-transport/
https://zipjiang.github.io/2020/11/23/sinkhorn’s-theorem-,-sinkhorn-algorithm-and-applications.html

http://www.lryc.cn/news/24038.html

相关文章:

  • Netty核心组件EventLoop源码解析
  • 排障命令-汇总
  • python+pytest接口自动化(4)-requests发送get请求
  • 开源电子书工具Calibre 6.3 发布
  • C++ STL:适配器 Adapter
  • 防抖和节流
  • vue3 微信扫码登录及获取个人信息实现的三种方法
  • Java8 新特性强大的Stream API
  • day22_IO
  • 第三十八章 linux-并发解决方法二(信号量)
  • 数据结构-考研难点代码突破(C++实现树型查找 - B树插入与遍历,B+树基本概念)
  • Python可视化界面编程入门
  • 基于Java+SpringBoot+Vue前后端分离书店购书系统设计与实现
  • Android:截屏/视频截图
  • leecode-C语言实现-28. 找出字符串中第一个匹配项的下标
  • 使用 Postman 实现 API 自动化测试
  • k8s环境jenkins发布vue项目指定nodejs版本
  • 我应该把毕业设计做到什么程度才能过关?
  • 力扣-合作过至少三次的演员和导演
  • 【 PMU】信号生成、采样、分割、估计器应用和误差计算(Matlab代码实现)
  • 电子技术——AB类输出阶的偏置
  • 元宇宙营业厅,数字技术融合,赋能实体经济
  • MySql面试精选—分库分表
  • Spring上下文生命周期
  • GitHub 标星 15w,如何用 Python 实现所有算法?
  • LeetCode 700. 二叉搜索树中的搜索
  • 【数据结构】树与二叉树
  • Stress压力工具的部署及使用
  • [蓝桥杯 2020 省 AB3] 乘法表
  • Python基础知识