最优传输问题

本文探讨了TransportPolytope的概念,它表示联合概率的集合,并定义了在概率向量之间的最优传输问题。通过Frobenius点积,计算从一个分布到另一个分布的最优传输成本,涉及d×d矩阵的非负传输矩阵。该问题与随机变量的联合概率分布相关,且在给定代价矩阵时可以求解。最优传输问题在计算复杂度上具有挑战性,但有算法可以在O(d³logd)时间内找到解。此外,当代价矩阵是度量矩阵时,最优传输距离是概率分布之间的距离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Transport Polytope、可解释为联合概率的集合

使用 ⟨ ⋅ , ⋅ ⟩ \lang \cdot , \cdot \rang ,代表Frobenius点积。对于 ∑ d : = { x ∈ R + d : x T 1 d = 1 } \sum_d:=\{x\in\R^d_+:x^T1_d=1\} d:={xR+d:xT1d=1}中的两个概率向量 r r r c c c,将 U ( r , c ) U(r,c) U(r,c)记为 r r r c c c的transport polytope,称为 d × d d\times d d×d矩阵的polyhedral集合, 1 d 1_d 1d为值全为1的d维向量
U ( r , c ) : = { P ∈ R + d × d ∣ P 1 d = r , P T 1 d = c } U(r,c):=\{P\in \R^{d\times d}_+|P1_d=r,P^T1_d=c\} U(r,c):={PR+d×dP1d=r,PT1d=c}.
U ( r , c ) U(r,c) U(r,c)包含所有 d × d d\times d d×d的行和列的和分别 r r r c c c的非负矩阵。 U ( r , c ) U(r,c) U(r,c)的概率解释为:对于X和Y这两个取值为 { 1 , . . . , d } \{1,...,d\} {1,...,d}的多项随机变量,其分布分别为 r r r c c c,集合 U ( r , c ) U(r,c) U(r,c)包含 ( X , Y ) (X,Y) (X,Y)的所有可能的联合概率。实际上,任意矩阵 P ∈ U ( r , c ) P\in U(r,c) PU(r,c) ( X , Y ) (X,Y) (X,Y)的联合概率等价, p ( X = i , Y = j ) = p i j p(X=i,Y=j)=p_{ij} p(X=i,Y=j)=pij。将熵 h h h P , Q ∈ U ( r , c ) P,Q\in U(r,c) P,QU(r,c)的Kullback-Leibler散度和边缘参数 r ∈ ∑ d r\in \sum_d rd记为
在这里插入图片描述

r r r c c c之间的最优传输

给定 d × d d\times d d×d的代价矩阵 M M M,从 r r r映射到 c c c的代价可以用传输矩阵(transport matrix)(或联合概率)量化为 ⟨ P , M ⟩ \lang P, M\rang P,M
d M ( r , c ) : = min ⁡ P ∈ U ( r , c ) ⟨ P , M ⟩ \boxed{d_M(r,c):=\min_{P\in U(r,c)}\lang P,M\rang} dM(r,c):=PU(r,c)minP,M(1)
等式(1)称作给定代价矩阵 M M M时, r r r c c c的最优传输(OT)问题。除其他方法外,使用network simplex(Ahuja et al., 1993, §9)可以得到该问题的最优表 P ∗ P^* P。当M是度量矩阵时,该问题的最优解 d M ( r , c ) d_M(r,c) dM(r,c) r r r c c c的距离(Villani, 2009, §6.1),称为M属于距离矩阵的锥。(Avis, 1980; Brickell et al., 2008)
在这里插入图片描述
在近期提出的算法之中,对于一般的矩阵 M M M,最优解的计算复杂度在最差情况下,范围在 O ( d 3 log ⁡ d ) O(d^3\log d) O(d3logd)之间,实际上也是超立方(Pele and Werman, 2009, §2.1)

### 最优传输问题概述 最优传输问题是研究如何以最小成本将一组资源重新分配到另一组目标位置上的数学框架。该问题最早由法国数学家蒙日于1781年提出,在现代被广泛应用于机器学习、计算机视觉等领域。 具体来说,给定两个概率分布 \(\mu\) 和 \(\nu\) ,以及一个度量空间中的代价函数 \(c(x, y)\),表示从源点 \(x\) 到终点 \(y\) 的运输费用,则最优传输问题旨在找到一个映射方案使得总运输成本最低[^1]。 ### Sinkhorn算法简介 对于离散形式的最优传输问题,可以将其表述为线性规划问题求解。然而当样本数量较大时,传统方法计算复杂度过高难以实际应用。为此引入了熵正则化项来简化优化过程,并由此产生了著名的Sinkhorn迭代法。 通过向原始的目标函数加入一个小参数乘以相对熵作为惩罚因子,不仅能够保持原问题的主要性质不变,而且大大降低了数值求解难度。经过适当调整后的模型允许采用矩阵缩放技术快速逼近最优解,即所谓的Sinkhorn-Knopp平衡算法。 ### Python实现示例 下面给出一段简单的Python代码用于演示如何利用NumPy库实现基本版本的Sinkhorn算法: ```python import numpy as np def sinkhorn(a, b, C, reg, numItermax=1000, stopThr=1e-9): """ a : ndarray (dim_a,) Source distribution vector. b : ndarray (dim_b,) Target distribution vector. C : ndarray (dim_a, dim_b) Cost matrix between source and target samples reg : float Regularization parameter Returns : P : ndarray (dim_a,dim_b), Optimal transport plan """ K = np.exp(-C / reg) u = np.ones(len(a)) / len(a) v = np.ones(len(b)) / len(b) err = 1 cnt = 0 while(err > stopThr and cnt < numItermax): uprev = u vprev = v v = np.divide(b,(K.T @ u)) u = np.divide(a,(K @ v)) rel_err_u = abs(u - uprev).mean() / max(abs(uprev).mean(), 1.) rel_err_v = abs(v - vprev).mean() / max(abs(vprev).mean(), 1.) err = 0.5 * (rel_err_u + rel_err_v) cnt += 1 return np.diag(u) @ K @ np.diag(v) if __name__ == "__main__": n_samples = 100 mu_s = np.array([0., 0]) cov_s = np.array([[1., 0], [0., 1]]) xs = ot.datasets.make_2D_gauss(n_samples, mu_s, cov_s) mu_t = np.array([4., 4]) cov_t = np.array([[1., -.8], [-.8, 1.]]) xt = ot.datasets.make_2D_gauss(n_samples, mu_t, cov_t) M = ot.dist(xs, xt) M /= M.max() w_s = np.ones((n_samples,)) / n_samples w_t = np.ones((n_samples,)) / n_samples Gs = sinkhorn(w_s, w_t, M, 1.) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值