Wasserstein 距离(Wasserstein distance),中文也叫推土机距离(Earth Mover's Distance,EMD),衡量的是:把一个概率分布「搬」成另一个概率分布,最少要出多少力。
搬沙子的比方
地上有两堆沙子,形状分别对应两个分布。想把 A 堆改造成 B 堆的样子,就得搬沙子。每搬一捧,成本 = 沙量 × 搬运距离——从近处挪一步便宜,搬到远处贵。把所有可能的搬运方案都算一遍,取「沙量加权总距离」最小的那个方案,它的成本就是两堆沙之间的 Wasserstein 距离。
形式化地说,要遍历所有「把 A 的沙分配给 B」的配对方案(coupling,耦合),取期望搬运距离的下确界。它本质上是最优传输(optimal transport)问题的一个数值答案。
和 KL、JS 散度差在哪
这才是它的杀手锏。
| 度量 | 两分布完全不重叠时 | 对称 | 对优化的意义 |
|---|---|---|---|
| KL 散度 | 可能趋于无穷或无定义 | 否 | 分母为零处难处理 |
| JS 散度 | 退化成一个常数 | 是 | 梯度消失 |
| Wasserstein | 仍随位置连续变化 | 是 | 通常有可用梯度 |
看个极端例子:真实分布是 x=0 处的一个点,模型分布是 x=θ 处的一个点。只要 θ≠0,两者毫无重叠。此时 JS 散度无论 θ 是 0.1 还是 100 都给出同一个常数,梯度为零,模型收不到「该往哪走」的信号;而 Wasserstein 距离恰好等于 |θ|,θ 越远值越大,梯度明确指向正确方向。这就是「不重叠也能比远近」的含义。
WGAN 为什么用它
原始 GAN 的判别器基于 JS 散度。在生成样本与真实样本几乎不重叠的训练早期,生成器梯度很容易消失,训练剧烈震荡、模式崩溃频发。Wasserstein GAN(WGAN)把目标换成 Wasserstein 距离,训练信号变得平滑连续,对生成器和判别器的强弱失衡也宽容得多。
代价是原始定义要解最优传输问题,计算昂贵。WGAN 实际用的是它的 Kantorovich–Rubinstein 对偶形式,用一个神经网络(改称 critic,评论家)来估计,并要求该网络满足 1-Lipschitz 连续性。最初靠权重裁剪实现,后来出现的 WGAN-GP 改用梯度惩罚,训练更稳。
对从业者和普通人的意义
从业者:只要任务涉及「让两个分布靠近」,Wasserstein 就值得放进工具箱——生成模型、域适应、分布对齐、扩散模型的最优传输视角、单细胞数据配准等都用得上。工程实现与近似算法(如熵正则化的 Sinkhorn 迭代)的细节,以官方文档和论文源码为准。
普通人:它提供的直觉很朴素——两个东西完全没有交集时,「差多远」依然可衡量,而且这个远近带方向感。比较用户画像、文本风格、推荐结果的分布差异时,这种「搬运成本」的思路往往比单纯的「像不像」更好用。
