问题来源
在学习最优传输(Optimal Transport)时,接触到了 Sliced-Wasserstein Distance (SWD),顿时懵逼了,它是啥?是 Wasserstein Distance 的简化计算吗?先看看 Wikipedia 怎么说:
它是 WD 的一个替代距离,与 WD 有很多相似的性质。
SWD 出现的动机是什么呢?在 1-D 情况下,Wasserstein Distance 计算非常简单,不必进行复杂的求解,直接就有闭式解。关于这个,请参考我的博客 One-dimensional Wasserstein Distance。当然,这里已经给出了经验分布下 1-D WD 的计算,只不过有点难以理解。
大概意思是说,选取每一个方向
θ
\bm{\theta}
θ,先把测度
μ
,
ν
\mu, \nu
μ,ν 投影至该方向形成 1-D 概率分布
P
θ
#
μ
P_{\bm{\theta}\#}\mu
Pθ#μ 和
P
θ
#
ν
P_{\bm{\theta}\#}\nu
Pθ#ν,然后再计算
W
2
(
P
θ
#
μ
,
P
θ
#
ν
)
2
W_2(P_{\bm{\theta}\#}\mu, P_{\bm{\theta}\#}\nu)^2
W2(Pθ#μ,Pθ#ν)2,对所有方向积分,便得到
S
W
2
(
μ
,
ν
)
2
SW_2(\mu, \nu)^2
SW2(μ,ν)2。
啊!说起来简单,可我还是不懂 P θ # μ P_{\theta\#}\mu Pθ#μ 是啥意思,怎么个投影法?给个 P θ ( x ) = x ⋅ θ P_{\bm{\theta}}(\bm{x}) = \bm{x} \cdot \bm{\theta} Pθ(x)=x⋅θ 就把我打发了?完全不懂怎么回事!
先不管,继续往下看看:
SWD 满足所有度量公理,三角不等式继承自 WD,正定性和对称性也是产自 WD,这些都比较直观,不多说了。注意这里提到了 Radon Transforms。
这里再次说明了:SWD 是个新玩意儿,不是对 WD 的简化计算。我们这里记住 W 2 ( P θ # μ , P θ # ν ) ≤ S W 2 ( μ , ν ) W_2(P_{\bm{\theta}\#}\mu, P_{\bm{\theta}\#}\nu) \le SW_2(\mu, \nu) W2(Pθ#μ,Pθ#ν)≤SW2(μ,ν) 就行了,感觉上也是这样。那么自然就有 S W 2 ( μ , ν ) ≤ W 2 ( μ , ν ) SW_2(\mu, \nu) \le W_2(\mu, \nu) SW2(μ,ν)≤W2(μ,ν)。只是这里的 P θ # P_{\bm{\theta}\#} Pθ# is 1-Lipschitz 是啥意思?只记得在求 WD 的 Kantorovich-Rubinstein Duality 时见到过,但暂时跟这扯不到一块。
懂了 1-D WD 的计算原理后,自然就会懂得 This is especially so in the case of empirical measures of equally sized support.
以上就是 Wikipedia 对 Sliced-Wasserstein Distance 的所有介绍。主要不懂的地方就是 1-D 投影 P θ # μ P_{\theta\#}\mu Pθ#μ。即使你去看了 引用 [2] Computational Optimal Transport 中介绍的 10.4 Sliced Wasserstein Distance and Barycenters:
也不会得到关于 P θ # μ P_{\theta\#}\mu Pθ#μ 的更多信息,甚至更少。那就好好查阅资料,搞明白到底是如何投影为 1-D 分布的。
拉东变换
想要弄清楚 SWD,需要先搞懂啥是 Radon Transform,不过我觉得 Wikipedia 中讲的不好,符号都有点乱,这里推荐博文 The Radon Transform: First Steps,这里简单地说一下。
拉东变换是一种线积分变换,假设二维坐标系上定义着函数 f ( x ) = f ( x 1 , x 2 ) f(\bm{x}) = f(x_1, x_2) f(x)=f(x1,x2),如下图所示:
L s ( θ ) L_s(\theta) Ls(θ) 是二维平面上的一条直线,由参数 θ \theta θ 和 s s s 确定,用 ω = ( c o s θ , s i n θ ) \bm{\omega} = (cos\theta, sin\theta) ω=(cosθ,sinθ) 表示直线法向量,那么其方程可表示为 ω ⊺ x = s \bm{\omega}^\intercal\bm{x} = s ω⊺x=s,则沿 L s ( θ ) L_s(\theta) Ls(θ) 的线积分可表示为: R f ( s , θ ) = R f ( s , ω ) = ∫ f ( x ) δ ( s − ω ⊺ x ) d x Rf(s, \theta) = Rf(s, \omega) = \int f(\bm{x})\delta(s - \bm{\omega}^\intercal\bm{x})d\bm{x} Rf(s,θ)=Rf(s,ω)=∫f(x)δ(s−ω⊺x)dx 其中 δ ( ⋅ ) \delta(\cdot) δ(⋅) 是狄拉克函数。反正知道是沿直线的积分就行了,知道这么多就够了。
P θ # μ P_{\theta\#}\mu Pθ#μ 是对测度 μ \mu μ 的 Radon 变换(本质是边缘概率分布)
P θ ( x ) = x ⋅ θ P_{\bm{\theta}}(\bm{x}) = \bm{x} \cdot \bm{\theta} Pθ(x)=x⋅θ 是投影操作,把 x \bm{x} x 投到了方向为 θ \bm{\theta} θ 的直线上,就如同上图中 L s ( θ ) L_s(\theta) Ls(θ) 上的点都被投影到了 B B B 处。
现在,我们先考虑 f ( x ) = f ( x 1 , x 2 ) f(\bm{x}) = f(x_1, x_2) f(x)=f(x1,x2) 是一个概率密度函数的情况,当 θ = 0 \theta = 0 θ=0,则 Radon 变换为 R f ( s , 0 ) = ∫ f ( x 1 , x 2 ) δ ( s − [ 1 , 0 ] ⋅ [ x 1 , x 2 ] ) d x = ∫ f ( x 1 , x 2 ) δ ( s − x 1 ) d x = ∫ − ∞ ∞ f ( s , x 2 ) d x 2 \begin{aligned} Rf(s, 0) &= \int f(x_1, x_2)\delta(s - [1, 0] \cdot [x_1, x_2])d\bm{x} \\ &= \int f(x_1, x_2)\delta(s - x_1)d\bm{x} \\ &=\int_{-\infin}^\infin f(s, x_2)dx_2 \end{aligned} Rf(s,0)=∫f(x1,x2)δ(s−[1,0]⋅[x1,x2])dx=∫f(x1,x2)δ(s−x1)dx=∫−∞∞f(s,x2)dx2 哎!这不是边缘概率分布嘛!由此我们联想到,一个方向的拉东变换其实是在求边缘概率分布。
还有个问题:明明是对概率密度函数求 Radon 变换,为什么投影操作 P θ ( x ) = x ⋅ θ P_{\bm{\theta}}(\bm{x}) = \bm{x} \cdot \bm{\theta} Pθ(x)=x⋅θ 就完成了概率测度的投影?
假设上图中的点的密度代表概率密度,红线是投影方向,虚线对应不同的 s s s,即一个个要积分的线,此时线积分结果就是虚线所穿过的点数,即 s s s 处的概率密度。投影操作把点都投到红线上,则红线上各处得到的点密度不一样(概率密度不一样)。
这个过程可以完成概率测度的投影了吧!故 P θ # μ P_{\bm{\theta}\#}\mu Pθ#μ 表示沿 θ \bm{\theta} θ 方向的 1-D 分布。
【结尾】:要知道,Radon 变换本来就是要在某种密度分布下,进行线积分!