最优传输及其变种算法
说实话我对此理解的也不是太深刻,因为总感觉这个OT算法实在是有些抽象,所以欢迎各位看官多向我提问,我们互相交流以加深理解。
部分参考来源:
Subgraph Matching via Fused Gromov-Wasserstein Distance
Optimal Transport入门简述
一、 最优传输 Optimal Transport & Wasserstien Distance
下面讲讲我理解的内容:
有这么一个情景:我们有很多 n 堆沙子(即我们有一个一维向量 [n, ]), 每一堆沙子重 P ( i ) ∈ R n P^{(i)} \in \mathbb{R}^{n} P(i)∈Rn,有 m 个坑(即我们有一个一维向量 [m, ]),每个坑能装 Q ( i ) ∈ R m Q^{(i)}\in \mathbb{R}^{m} Q(i)∈Rm沙子,我们想将这些沙子移到这些坑里,每堆沙子怎么移动才能让代价最小(即解最优)?
我们先来定义一下我们移动沙子要付出的代价,这是一个代价矩阵 M ∈ R > = 0 n × m M \in \mathbb{R}^{n \times m}_{>=0} M∈R>=0n×m,shape为 n × m n \times m n×m, 描绘了 n 中任一沙堆向 m 个坑中任一坑搬运所要付出的代价,并且里面的数值必须是大于等于0的。
然后我们定义下我们的解矩阵,解矩阵长这样: T ∈ R > = 0 n × m T \in \mathbb{R}^{n \times m}_{>=0} T∈R>=0n×m,描述了从 每个沙堆向每个沙坑搬运多少质量(mass)沙子(所以你可以看出这有很多最优解(话说是局部解吗?))
然后定义将 T 和 M 逐元素相乘(注意不是矩阵点乘)表示总的运输成本,再将所有积求和计算总代价,公式如下:
W a s s e r s t i e n − d i s t a n c e = argmin ∑ i , j T i , j M i , j = m i n T ∈ τ ( p , q ) ⟨ T , M ⟩ F Wasserstien-distance = \text{argmin} \quad \sum_{i, j} T_{i, j} M_{i, j} = min_{T\in\tau(p, q)}\langle T, M \rangle _{F} Wasserstien−distance=argmini,j∑Ti,jMi,j=minT∈τ(p,q)⟨T,M⟩F
并且满足以下约束:
τ ( p , q ) = { T ∈ R + n × m ∣ T 1 m = P , T T 1 n = Q } ; T ≥ 0 \tau(p, q) = \{T\in \mathbb{R}^{n\times m}_{+}|T1_{m}=P, \quad T^{T}1_{n}=Q\}; \quad T \geq 0 τ(p,q)={T∈R+n×m∣T1m=P,TT1n=Q};T≥0
这里的 1 1 1 是一个全 1 的向量(矩阵),P和Q我们又称为分布,在实际计算中因为不易获得,我们一般直接设定为统一分布(uniform)
总的代价我们称为 Wasserstien-distance, 这个距离越小表示这两个数据越接近。 T 矩阵就是我们想求解的运输矩阵,它描述了任一沙堆向任一坑搬运多重的沙子是代价最小的(最优的)。
二、Gromov-Wasserstien Distance
上部分说的wasserstien距离有一个缺陷,那就是如果两个分布之间并没有直接关系(专业说法叫不在同一个空间),我们是很难获得两个分布之间的代价矩阵 M 的。上边这个例子是讲的搬运沙子,那么无论沙堆还是沙坑,直接的关系就是都使用沙子的重量来衡量,而如果两个分布间没有直接的关系,或者代价矩阵及其难求解,由此引出Gromov-Wasserstien Distance。
这个算法的思想是这样的:有这么两个不同空间 A ∈ R n A \in \mathbb{R^{n}} A∈Rn 和 B ∈ R m B \in \mathbb{R^{m}} B∈Rm, 我们计算从 A i A_{i} Ai 到 A j A_{j} Aj 之间的距离,即对于整个A空间的各个点,计算它到其他点的距离,我们就可以获得一个内部的代价矩阵 C A ∈ R n × n C^{A} \in \mathbb{R^{n \times n}} CA∈Rn×n, 对 B 同理可得 C B ∈ R m × m C^{B} \in \mathbb{R^{m \times m}} CB∈Rm×m, 既然我们不能直接在两个不同空间之间建立联系(无法轻易获得代价矩阵),那我们就比较两个空间中成对距离的差异(由此也可以看出GW算法只关注空间的图形结构而不关注空间内各点的属性)。
用 C i , i ′ A C^{A}_{i, i'} Ci,i′A 表示A空间从点 i 到 i‘ 的距离,那么我们就可以使用一个损失函数(Loss Function)来评估 C i , i ′ A C^{A}_{i, i'} Ci,i′A与 C j , j ′ B C^{B}_{j, j'} Cj,j′B 的不同,我们因此可以定义一个张量:
L i , i ′ , j , j ′ = L ( C i , i ′ A , C j , j ′ B ) ∈ R n × n × m × m L_{i, i', j, j'}=\mathcal{L}(C^{A}_{i, i'}, C^{B}_{j, j'}) \in \mathbb{R}^{n\times n \times m \times m} Li,i′,j,j′=L(Ci,i′A,Cj,j′B)∈Rn×n×m×m
然后我们定义传输矩阵 T i , j T_{i, j} Ti,j和 T i ′ , j ′ T_{i', j'} Ti′,j′ 表示从点 i 到 j 和 从 i’ 到 j’ 所要移动的质量(mass), 其中 (i, j) 是A空间的,(i‘, j’) 是B空间的。然后 μ A \mu_{A} μA 和 μ B \mu_{B} μB表示A、B空间的离散概率观测, p q表示其概率向量,通常也是用 uniform distribution.
最后我们就可以表示出 GW distance:
G W ( p , q , C A , C B ) = m i n T ∈ τ ( p , q ) ∑ L ( C i , i ′ A , C j , j ′ B ) T i , j T i ′ , j ′ GW(p, q, C^{A}, C^{B}) = min_{T\in\tau(p, q)}\sum\mathcal{L}(C^{A}_{i, i'}, C^{B}_{j, j'})T_{i, j}T_{i', j'} GW(p,q,CA,CB)=minT∈τ(p,q)∑L(Ci,i′A,Cj,j′B)Ti,jTi′,j′
三、Fused Gromov-Wasserstien Distance
最后就是介绍 Fused Gromov-Wasserstien(FGW) Distance,原理非常简单,就是结合了wasserstien距离和GW距离,感觉像是缝合怪哈哈
公式如下:
F G W ( p , q , M , C A , C B ) = m i n T ∈ τ ( p , q ) ( 1 − α ) ⟨ T , M ⟩ F + α L ( C i , k A , C j , l B ) T i , j T k , l FGW(p, q, M, C^{A}, C^{B}) = min_{T\in\tau(p, q)}(1-\alpha)\langle T, M\rangle_{F} + \alpha\mathcal{L}(C^{A}_{i, k}, C^{B}_{j, l})T_{i, j}T_{k, l} FGW(p,q,M,CA,CB)=minT∈τ(p,q)(1−α)⟨T,M⟩F+αL(Ci,kA,Cj,lB)Ti,jTk,l
可以通过调节 α \alpha α 来改变两个距离的占比,FGW的缺点和wasserstien类似,需要寻找 两个空间的代价矩阵 M。
四、三个距离的比较例子
有如下两个图:
各种代价矩阵如下:
计算出的三个算法的传输矩阵和转换结果:
虚线越深表示两个节点间的连接越深,上图深虚线表示 1/3的mass,浅的表示 1/6的mass
上图可以看出GW仅关注两个图的几何结构而不关心节点的属性,另外wasserstien仅考虑特征,FGW则可以同时考虑两者
铁铁们,求赞求收藏!