总说
最近最优传输很火啊,而且用处很大。这里简单记录,到底讲了啥问题,以及解法和应用。
简单理解:其实就是把 A A A数据迁移到 B B B上,当然了。你可以理解成两堆土,从 A A A土铲到另外一个地方,最终堆成 B B B土。就像是以前初中学的线性规划一样的:我3个城市(A, B, C)有1, 0.5, 1.5吨煤,然后要运到2个其他城市,这两个城市(C, D)分别需要2,1吨煤。然后当然,不同城市到不同的费用不同,让你算最优运输方案和代价。
基本概念
Probability vector / Histogram (概率向量/ 直方图)定义:
a ∈ ∑ n : = { a ∈ R + n ∣ ∑ i = 1 n a i = 1 } a \in \sum_{n} := \{a \in \mathbb{R}^{n}_{+} | \sum^{n}_{i=1}a_i = 1\} a∈∑n:={
a∈R+n∣∑i=1nai=1}
另外,定义 离散测度:以 a a a为概率,且包含了不同的位置 x 1 , ⋅ , x n ∈ X x_1, \cdot, x_n \in \mathcal{X} x1,⋅,xn∈X
α = ∑ i = 1 n a i δ x i \alpha = \sum^{n}_{i=1} a_i\delta_{x_i} α=∑i=1naiδxi
其中 δ x \delta_{x} δx是Dirac函数。
Monge(蒙日)问题初阶:
对于两个离散测度:
α = ∑ i = 1 n a i δ x i , β = ∑ j = 1 m b i δ y j \alpha = \sum^{n}_{i=1} a_i\delta_{x_i}, \ \ \ \ \ \ \beta= \sum^{m}_{j=1} b_i\delta_{y_j} α=i=1∑naiδxi, β=j=1∑mbiδyj
找到一个 n n n维映射到 m m m维的一个映射 T : [ n ] → [ m ] T: [n] \to [m] T:[n]→[m],使得
∀ j ∈ [ m ] , b j = ∑ i : T ( x i ) = y j a i \forall j \in [m], \ \ \ \ b_j = \sum_{i: T(x_i) = y_j} a_i ∀j∈[m], bj=i:T(xi)=yj∑ai
上面可以简单记为:
T ♯ α = β T_{\sharp}\alpha = \beta T♯α=β
也就是说,你找到一个映射 T T T, 然后呢,所有 通过这个 T T T转移到 b j b_j bj的那些元素 a i a_i ai,那些 a i a_i ai的元素求和,肯定要刚好等于 b j b_j bj. 这个很好理解吧,比如,我城市转移煤,你咔咔设计了方案,起码保证 D, E 城市的需要收入的煤(\ie, b j b_j bj),恰好等于往该城市 转移的煤总和吧 (注意: 其实运煤问题是 Kantorovich Relaxation后的蒙日问题,因为每个城市的煤可以不全部运到另一个城市,可以拆分,运到多个城市。具体后面讲解)。
显然,蒙日问题,不一定有解。也不一定有唯一最优解。
Monge(蒙日)问题高阶
找到怎么运煤没啥意思啊,你总得考虑成本吧,这样会有意思些。显然,我们可以定义运输代价(transportation cost) c ( x , y ) c(x,y) c(x,y)
即满足上述条件下,并且运费最小。
min T = { ∑ i c ( x i , T ( x i ) ) ∣ T ♯ α = β } \min_{T} = \lbrace \sum_{i}c(x_i, T(x_i)) | T_{\sharp} \alpha = \beta \rbrace Tmin={
i∑c(xi,T(xi))∣T♯α=β}
蒙日问题缺点:
- 两堆点,要一样的size
- 非凸
Kantorovich Relaxation
即:我们可以对不质量点 x i x_i xi进行分拆,然后再运输。
此时:转移矩阵 T T T可以变成一个: T → T\to T→ P ∈ R + n × m P \in \mathbb{R}^{n\times m}_{+} P∈R+n×m,
且满足:
U ( a , b ) : = { P ∈ R + n × m ∣ P 1 m = a , P T 1 n = b } U(a, b) := \{ P\in \mathbb{R}^{n\times m}_{+} | P\mathbb{1}_m = a, P^{T}\mathbb{1}_n = b \} U(a,b):={