老程在城郊做了二十年园丁,最拿手的本事是“挪土”。客户常提出这样的要求:“把前院那堆土,堆成后院小山坡的造型。”老程站在两堆土之间,心里开始盘算:这活儿怎么干最省力?他年轻时总拿卷尺在每个位置量两堆土的高度差,琢磨着差不多就行——可一旦两堆土隔得老远,尺子根本够不着,读数要么变成无穷大,要么干脆纹丝不动,完全无法用来定价。后来他悟出一个道理:真正该算的不是“同一位置差多少”,而是“把土一锹一锹搬过去,土的分量乘上搬运距离,总共是多少工作量”。而且聪明的搬法一定存在一个最小值,这个最小工作量,就是现代 AI 里大名鼎鼎的 Wasserstein 距离(也叫推土机距离)。它让生成对抗网络(GAN)从“三天两头训练崩溃”进化到“稳稳当当逼近目标”,正是 GAN 从实验室走向工业界的关键一步。

岗位关联

掌握 Wasserstein 距离,你就能一眼看懂 WGAN 的核心改进:为什么它用“搬运账本”替代 KL/JS 散度、为什么梯度不再消失,以及权重裁剪在它的框架里扮演什么角色。这是生成模型工程师、AI 算法研究者的必备数学直觉。

目录
  1. 可视化演示
  2. 分布距离基础:尺子量土堆
  3. 推土机直觉:最省力的搬运方案
  4. 数学定义:从土堆到公式
  5. 对比KL与JS:为什么其他距离失灵
  6. WGAN原理:请一位诚实的监工
  7. 权重裁剪:给监工定规矩
  8. GAN进化应用:从理论到工程
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示推土机距离的最优传输过程、KL/JS/W距离在分布不重叠时的梯度差异以及WGAN权重裁剪训练的核心机制。

本节配有交互动效(进入视口后自动加载,约 3KB)。

推土机距离最优传输 源分布 目标分布 W=inf E[|x-y|] 最小传输代价即Wasserstein距离衡量两分布差异

分布距离基础:尺子量土堆

老程最初判断两堆土像不像,方法很简单:拿一把卷尺,站在每个横坐标位置,分别量两堆土的高度,然后算一个总差异。这种方法对应数学里的 KL 散度(Kullback-Leibler divergence)。它把“土堆”抽象成概率分布 P 和 Q,然后逐个位置比较二者的“高度”。

KL 散度有个致命毛病:它不满足对称性,KL(P‖Q) 与 KL(Q‖P) 通常不相等。老程量“前院高度差”和量“后院高度差”得到的读数不一样,客户会觉得莫名其妙。于是人们设计了 JS 散度(Jensen-Shannon divergence),用两个分布的“中间人”作为对称参照。

可老程很快发现:当两堆土完全不相连时,KL 直接爆表(无穷大),JS 则读数永远停在固定的 $\log 2$,完全不反映“隔了多远”。尺子量高度的方法,在土堆分离时彻底失灵了。

DKL(P∥Q)=∑x∈XP(x)log⁡P(x)Q(x)\displaystyle D_{KL}(P\parallel Q)=\sum_{x\in\mathcal{X}} P(x)\log\frac{P(x)}{Q(x)}
  1. 构造中间分布$\frac{P+Q}{2}$ 取两个分布的算术平均,相当于在 P 和 Q 之间画一条中线,摆一个“参考土堆”。
  2. 两侧对齐比较分别计算 P 到中线、Q 到中线的 KL 散度,即让两堆土都先和中线比一遍。
  3. 各取一半分量两个 KL 各乘 $\frac12$ 再相加,保证了对称性,也把结果限制在 $[0,\log 2]$ 的范围内。

推土机直觉:最省力的搬运方案

老程丢下卷尺,换了个思路:我不关心同一位置高度差多少,只关心“把这些土变成那个形状,最省力要花多少钱”。假设前院土堆被切成 m 个小土块,每个土块有对应的土量;后院目标形状被切成 n 个坑位。老程的决策变量是“从第 i 块土搬到第 j 个坑位多少土”,记为 $c_{ij}$。

当然,搬运方案不能乱来,必须满足两个守恒约束:

老程拿着这个账本跟客户报价,报出的就是“最低工程费”——这正是推土机距离的直觉内核:两个分布之间的差异,等于把一堆概率质量搬运成另一堆概率质量的最小代价。

W(P,Q)=min⁡cij ∑i=1m∑j=1ncij⋅d(i,j)\displaystyle W(P,Q)=\min_{c_{ij}}\ \sum_{i=1}^{m}\sum_{j=1}^{n} c_{ij}\cdot d(i,j)
  1. 出发量守恒$\sum_{j}c_{ij}=P(x_i)$ 表示第 i 堆土块运出的总量必须等于它原本的土量,不能多搬也不能少搬,更不能凭空变出土来。
  2. 到达量守恒$\sum_{i}c_{ij}=Q(y_j)$ 表示所有运到 j 坑位的土加起来,必须刚好等于目标形状在那里需要的高度。
  3. 非负约束$c_{ij}\ge 0$ 保证土只能正向搬运,不允许“倒着运土”这种荒谬操作。

数学定义:从土堆到公式

把老程的离散土块推广成连续分布,就得到 Wasserstein 距离的严格定义。设 $\mu$ 和 $\nu$ 是定义在度量空间 $\mathcal{X}$ 上的两个分布,$\Gamma(\mu,\nu)$ 是所有以 $\mu,\nu$ 为边缘分布的联合分布集合。每个联合分布 $\gamma$ 就是一套“搬运方案”。

在机器学习里最常用的是 $p=1$ 的情形。好消息是:当分布是一维时,$W_1$ 有惊人的简单闭式解——它等于两个累积分布函数(CDF)之间夹的面积。

有了闭式解,计算一维 Wasserstein 距离就变得极其简单:排序、配对、求平均差。这个性质后面 Python 演示里会直接用到。

Wp(μ,ν)=(inf⁡γ∈Γ(μ,ν)∫X×Yd(x,y)p dγ(x,y))1/p\displaystyle W_p(\mu,\nu)=\left(\inf_{\gamma\in\Gamma(\mu,\nu)}\int_{\mathcal{X}\times\mathcal{Y}} d(x,y)^p\, d\gamma(x,y)\right)^{1/p}
  1. 累积分布差$F_\mu(t)-F_\nu(t)$ 是“到 t 为止累计土量”的差,比逐点比较高度更本质。
  2. 取绝对值$\big|\cdot\big|$ 保证每段差值都以正数计入面积,不会正负相消。
  3. 沿轴积分$\int_{-\infty}^{+\infty}dt$ 把所有 t 上的差距沿横轴累起来,得到两块 CDF 曲线之间夹的阴影面积,这就是搬土总工作量。

对比KL与JS:为什么其他距离失灵

老程接了个极端活儿:前院土堆在左边,后院目标在右边,中间隔着一条河,两堆土完全不重叠。这时候尺子(KL)彻底失控——某个位置 P 有土而 Q 没有,对数里除以零,读数直接是无穷大;JS 倒是不会爆,但它在两堆土完全不重叠时恒等于 $\log 2$,无论隔 1 米还是隔 100 米,读数纹丝不动。

而 Wasserstein 距离在同样情况下依然给出平滑的信号:若两个等方差的高斯分布均值分别为 $\mu_1,\mu_2$,则 $W_1=|\mu_1-\mu_2|$。这个值是连续的、可导的、随着距离增加线性增长。老程感慨:尺子和中线都会失效,但推土机的账单永远有效——因为它衡量的从来不是“同一位置的差异”,而是“重新摆放这些土真正需要付出的代价”。

lim⁡supp(P)∩supp(Q)=∅DJS(P∥Q)=log⁡2\displaystyle \lim_{\text{supp}(P)\cap\text{supp}(Q)=\varnothing} D_{JS}(P\parallel Q)=\log 2
  1. 不重叠条件$\text{supp}(P)\cap\text{supp}(Q)=\varnothing$ 表示两个分布的支持集不相交,就像两堆土完全分离。
  2. 极限行为$\lim$ 表示在这个条件下 JS 散度趋近于 $\log 2$,一个与距离无关的固定常数。
  3. 常数意味着零梯度生成器不管怎么调参数,JS 的导数都是 0,它完全不知道自己该往哪个方向搬土。

WGAN原理:请一位诚实的监工

老程悟到推土机距离的好处后,决定把它写进自己的施工流程。在 GAN 的世界里,生成器是“施工队”,想把随机噪声折腾成逼真的假图;判别器(在 WGAN 里改名“批评者”)则是“监工”。只不过监工不再二选一地喊“真/假”,而是给每堆土打一个分数,分数差距越大越好。

监工必须诚实,不能“睁眼说瞎话”。如果监工对两个几乎一样的土堆给出天差地别的分数,梯度就会爆炸;如果它对任何土堆都打同样分数,梯度又会消失。于是 WGAN 要求批评者函数满足 Lipschitz 约束(利普希茨连续性):输出变化不能超过输入变化的 K 倍。

有了 Lipschitz 约束,老程的监工打分既灵敏又稳健——这正是 WGAN 训练稳定性的基石。

min⁡G max⁡D∈D Ex∼Pr[D(x)]−Ex~∼Pg[D(x~)]\displaystyle \min_{G}\ \max_{D\in\mathcal{D}}\ \mathbb{E}_{x\sim P_r}[D(x)]-\mathbb{E}_{\tilde{x}\sim P_g}[D(\tilde{x})]
  1. 输出差值$\big|D(x_1)-D(x_2)\big|$ 是监工对两个输入样本打分之差的绝对值,代表“评价的波动幅度”。
  2. 输入变化量$\|x_1-x_2\|$ 是两个样本本身的距离,代表“土堆外观的变化幅度”。
  3. 斜率上界$K$ 限制了评价曲线的陡峭程度,保证监工评分的“坡度”有上限,从而让梯度信号稳定可靠、不会爆炸。

权重裁剪:给监工定规矩

那怎么保证批评者满足 Lipschitz 约束呢?WGAN 论文给出一个简单粗暴的办法:权重裁剪。每更新完一次网络参数,就把所有权重“夹”回一个固定区间 $[-c,c]$ 内。

但权重裁剪像“一刀切”的土办法:窗口太大,约束形同虚设,批评者照样能“疯跑”;窗口太小,批评者的表达能力被严重限制,打分变得粗糙。后来 WGAN-GP(梯度惩罚)改用软性约束——在优化目标里加入一项梯度范数的惩罚,等价于“每走一步,超过规定坡度就罚款”。这就像老程不再硬性规定监工每一步不能迈多大,而是走快了就扣钱,让监工自觉控制步伐。梯度惩罚比权重裁剪更精细,训练也更稳定,成为后续 WGAN 变体最常用的配置。

w←clip(w, −c, c)\displaystyle w\leftarrow \mathrm{clip}(w,\,-c,\,c)
  1. 裁剪操作$\mathrm{clip}(w,-c,c)$ 把参数 w 强制拉回区间 $[-c,c]$,越界的部分直接截断,像把伸出去的树枝剪回篱笆内。
  2. 窗口上界$c$ 是裁剪窗口半径,论文里通常取 $c=0.01$。窗口越小,参数可活动的范围越窄,Lipschitz 约束越强。
  3. 参数更新后执行箭头 $\leftarrow$ 表示每次梯度更新后立刻做这一步,保证批评者任何时候都“戴着镣铐跳舞”。

GAN进化应用:从理论到工程

原始 GAN 像一位没有账本的包工头:判别器学得太好时,JS 散度饱和为常数,生成器拿不到梯度,工人们原地发呆、什么都学不到;判别器学得太差时,梯度又充满噪声,施工队东一锹西一锹,生成质量低下,甚至模式坍缩——不管客户要多少种花园造型,工人们永远只会堆同一种土堆。

WGAN 的进化正是用 Wasserstein 距离替换了 JS 散度。因为推土机距离哪怕在两个分布完全不重叠时也连续可导、处处有梯度,生成器永远知道“该往哪个方向搬土”。用老程的话说:以前是“尺子够不着就罢工”,现在是“推土机的账单实时更新,每挪一锹都有反馈”。WGAN 还带来一个意外之喜:它的损失值直接近似 Wasserstein 距离,可以当训练收敛指标——数值越小,生成分布越接近真实分布,不再需要人眼盯着一堆生成的图猜训练好坏。

如今,从高保真图像生成、语音合成到异常检测,Wasserstein 距离已经成了生成模型工程师手里最顺手的度量工具,也是理解 GAN 后续各种稳定化改进(谱归一化、梯度惩罚、一致优化)的第一块基石。

AI 应用场景

人脸图像生成

阶段:模型训练与优化

解决的问题:原始 GAN 训练人脸生成器时极易崩溃——判别器一强,JS 散度梯度消失,生成器只能输出千篇一律的“一张脸”(模式坍缩)。WGAN 用 Wasserstein 距离提供稳定的连续梯度,让生成器在每一轮迭代都能朝“更接近真实人脸分布”的方向挪动。

具体案例:某团队训练 256×256 人脸生成器时,用 WGAN-GP 替代原始 GAN,训练 5 万步后 FID 从 82 降到 31;同时监控 W 距离曲线,当它在验证集上停止下降时果断早停,省了约 30% 的 GPU 时长。

数据分布漂移监控

阶段:模型监控与评估

解决的问题:线上推荐模型的输入特征分布会随时间漂移,传统的统计检验对高维数据不敏感。用 Wasserstein 距离量化“线上实时分布”与“训练分布”的差异,即使两个分布不重叠也能平滑度量,漂移预警更灵敏。

具体案例:某金融风控团队每天计算特征向量的 W 距离,并设定阈值 0.15 告警;一次版本上线后 W 距离突然跳到 0.42,团队及时回滚,避免了坏账率上升。

罕见病医学影像生成

阶段:数据增强与预处理

解决的问题:罕见病灶影像样本极少,分类模型过拟合严重。用 WGAN 生成“额外的”罕见病灶图像,用推土机距离作为训练稳定器,让生成的样本不塌缩成同一种病灶。

具体案例:某医院团队用 WGAN 为视网膜 OCT 图像扩充数据,将罕见黄斑水肿的检出率从 71% 提升到 89%,且生成样本经眼科医生盲评,有 78% 被认为可以用于辅助教学。

Python 演示

python37 行
import numpy as np  def w_dist_1d(x, y):    """一维经验分布的 Wasserstein-1 距离:    排序后按顺序配对,取平均绝对差。"""    x = np.sort(x)    y = np.sort(y)    return np.mean(np.abs(x - y))  def js_from_histogram(x, y, bins=30):    """用直方图近似 JS 散度,观察它在分布不重叠时的饱和现象。"""    lo = min(x.min(), y.min())    hi = max(x.max(), y.max())    hx, _ = np.histogram(x, bins=bins, range=(lo, hi))    hy, _ = np.histogram(y, bins=bins, range=(lo, hi))    p = (hx + 1e-8) / hx.sum()    q = (hy + 1e-8) / hy.sum()    m = 0.5 * (p + q)    return 0.5 * ((p * np.log(p / m)).sum() + (q * np.log(q / m)).sum())  def simulate_shift():    """真实分布固定在 0,生成分布逐步远离,对比 W 距离与 JSD。"""    np.random.seed(42)    real = np.random.randn(2000) * 0.05    print(f"{'生成分布均值':>10} {'推土机距离':>10} {'JS散度':>10}")    for mu in (0.0, 0.2, 0.5, 1.0, 2.0):        fake = np.random.randn(2000) * 0.05 + mu        w = w_dist_1d(real, fake)        js = js_from_histogram(real, fake)        print(f"{mu:>10.2f} {w:>10.4f} {js:>10.4f}")  if __name__ == "__main__":    simulate_shift()
目的:用数值实验直观展示 Wagner 距离与 JS 散度的关键差异——当生成分布逐渐远离真实分布时,推土机距离(Wasserstein)持续增大,而 JS 散度在分布不再重叠后饱和为常数 $\log 2$。
  1. np.sort(x)` 与 `np.sort(y)把两个样本排序,一维最优运输问题等价于“顺序配对”,排序后配成对的就是最优搬运方案。
  2. np.mean(np.abs(x - y))配对后求平均绝对差,即每个“土粒”平均搬运距离的总和,这就是 W 距离。
  3. np.histogram(x, bins=bins, range=(lo, hi))用直方图把连续样本离散化成概率分布,作为计算 JS 散度的“土堆高度表”。
  4. p * np.log(p / m)对每个桶计算“当前分布到中间分布”的 KL 贡献,然后求和。
  5. simulate_shift()主入口:从均值 0 移到 2.0,输出对比表,读者能直观看到 JSD 在 0.5 附近封顶、而 W 距离一直线性增长。

常见误区

误区我之前以为 Wasserstein 距离不就是两堆数据的平均值差多少吗?反正一维高斯算出来就是均值差。

正解那只在极特殊情形下成立——两个分布都是一维高斯且方差相等时,最优搬运方案恰好是“整体平移”,此时 W 距离等于均值差。一般情形下,分布的形状、方差、多峰结构都会影响搬运方案和代价。就像老程搬土,如果两堆土一个薄而广、一个厚而尖,光看“重心位置”根本估不出工作量。

为何常见:因为很多人最早接触的例子恰好就是均值不同的高斯分布,公式又好记,很容易把特例当成定义。

误区听说 WGAN 解决了原始 GAN 不稳定的问题,那我直接换 WGAN 就万事大吉,学习率、裁剪窗口都不用管。

正解WGAN 确实解决了 JS 散度的梯度消失,但引入了新的超参数——权重裁剪窗口 c。c 选太大会让 Lipschitz 约束失效,选太小会限制批评者表达能力,仍可能训练不好。后续的 WGAN-GP 用梯度惩罚替代权重裁剪,才进一步放宽了对超参的敏感性。老程请的监工再靠谱,也得给人家配一把合适的尺子。

为何常见:论文标题和博客宣传时容易给人“一键解决”的印象,但实际工程里每个组件都有适用边界。

误区既然权重裁剪是为了让参数有活动空间,那把 c 设大一点,批评者能拟合更复杂的函数,效果应该更好吧?

正解c 越大,参数能跑的范围越大,Lipschitz 常数 K 就越难被束缚,批评者可能变成“疯狗”,打分剧烈震荡,生成器的梯度随之爆炸。c 太小又会让批评者只能在非常小的参数区间内表达,打分能力不足,梯度信号像蚊子一样弱。老程的比喻是:步子迈太大容易扯着,迈太小走不到目的地,要找一个刚好能稳定前进的步幅。

为何常见:直觉上“约束越少越灵活”在普通优化里成立,但 WGAN 的稳定性恰恰依赖那个约束本身,二者矛盾容易让人误判。

误区KL 散度也叫 KL 距离吧?反正都是衡量两个分布差多少,用哪个当距离都差不多。

正解真正的距离(度量)必须满足三条公理:非负、对称、三角不等式。KL 散度虽然非负,但不满足对称性(KL(P‖Q)≠KL(Q‖P)),也不满足三角不等式,所以只能叫“散度”而非“距离”。老程的尺子可以正着量也可以反着量——数值应该一样,但 KL 这把“尺子”正反读数不一样,不算合格的尺子。

为何常见:中文里“散度”和“距离”经常混用,加上很多教程用它衡量分布差异,久而久之就被误当成距离。

面试题

Q1. Wasserstein 距离的另一个广为人知的名字是?

单选题 · easy

  • A.推土机距离← 正确答案
  • B.欧氏距离
  • C.曼哈顿距离
  • D.余弦相似度

答案:A。Wasserstein 距离的直观解释是“把一堆土搬成另一堆土的最小工作量”,因此也叫推土机距离(Earth Mover's Distance)。欧氏距离、曼哈顿距离和余弦相似度都是衡量向量或点之间差异的度量,与分布之间的搬运代价无关。

Q2. 两个一维分布之间的 Wasserstein-1 距离可以表示为?

单选题 · mid

  • A.两个概率密度曲线之差的积分
  • B.两个累积分布函数夹出的面积← 正确答案
  • C.两个分布的方差之差的绝对值
  • D.两个分布的样本数量之差

答案:B。一维 Wasserstein-1 距离等于 $\int|F(t)-G(t)|dt$,即两个 CDF 夹出的面积。选项 A 描述的是总变差距离,C 和 D 与搬运代价无关。老程的账本对应的是“累计土量差”沿横轴的积分,而不是逐点的密度差。

Q3. 当两个分布完全不重叠时,JS 散度的值趋向于?

单选题 · easy

  • A.0,表示完全一致
  • B.log 2,约等于 0.693← 正确答案
  • C.1,表示最大差异
  • D.无穷大,无法比较

答案:B。在两个分布支持集不相交时,JS 散度恒为 $\log 2$ 这个常数。这意味着无论分布隔多远,JS 都对“距离”毫无感知,梯度为零。这正是原始 GAN 训练不稳定的根本原因之一,而 Wasserstein 距离在这种情形下仍能给出平滑可导的数值。

Q4. 关于 KL 散度,以下说法正确的是?

多选题 · mid

  • A.KL 散度满足对称性
  • B.KL 散度不满足对称性← 正确答案
  • C.两个分布完全相同时 KL 等于 0← 正确答案
  • D.分布不重叠时 KL 趋向无穷大← 正确答案

答案:BCD。KL 散度一般不对称,KL(P‖Q)≠KL(Q‖P),所以 A 错 B 对;当 P=Q 时对数比值为 1,log1=0,所以 C 对;若 P 在某个位置非零而 Q 为零,除法出现分母为零,KL 趋向无穷大,D 对。用老程的话说,KL 这把“尺子”正着量反着量读数不一样,而且遇到够不着的地方直接爆表。

Q5. 在 WGAN 中,判别器改名为“批评者”,核心原因是?

单选题 · mid

  • A.输出评分而非概率← 正确答案
  • B.不再需要训练神经网络
  • C.参数量大幅减少
  • D.只在训练后期生效

答案:A。WGAN 的批评者输出的是一个实数值“评分”,而不是原始 GAN 中经过 sigmoid 的“真/假概率”。评分之间的差值用来近似 Wasserstein 距离,所以它的角色是打分者(批评者)而不是分类器(判别者)。老程的监工从不喊“真或假”,只会说“这堆土离目标还差几分”。

Q6. WGAN 的权重裁剪中,参数每步更新后被强制限制在哪个范围?

单选题 · mid

  • A.[-c, c],c 通常取 0.01← 正确答案
  • B.完全放开,不做任何限制
  • C.归一到 0 和 1 之间
  • D.裁剪到梯度范数等于 1

答案:A。权重裁剪在每次参数更新后把所有权重 clip 到 $[-c,c]$,论文中 c 通常取 0.01,用这种硬性手段保证批评者满足 Lipschitz 约束。B 是没约束,C 是把输出当概率,D 描述的是梯度惩罚(WGAN-GP)的做法,不是权重裁剪本身。

Q7. 为什么 Wasserstein 距离能为 GAN 提供“连续可导”的梯度信号?

单选题 · mid

  • A.因为它的值永远是 0
  • B.因为分布不重叠时它仍然平滑反映距离← 正确答案
  • C.因为它使用矩阵乘法加速运算
  • D.因为它对任何输入的导数恒为 1

答案:B。Wasserstein 距离衡量的是“搬运土方的最小代价”,即使两个分布支持集不相交,这个代价也会随分布移动而连续变化,因此梯度始终有意义。A、C 显然错误,D 的“导数恒为 1”更是无稽之谈——生成器正是要靠这个导数来调整自己的参数。

Q8. 原始 GAN 训练不稳定的原因包括?

多选题 · hard

  • A.JS 散度在分布不重叠时梯度消失← 正确答案
  • B.判别器训练太强时生成器梯度被磨平← 正确答案
  • C.真实分布与生成分布在高维空间中几乎不重叠← 正确答案
  • D.生成器输出的数值过大导致计算溢出

答案:ABC。原始 GAN 的损失函数基于 JS 散度。真实分布与生成分布在高维空间中几乎必然不重叠(C 对),此时 JS 散度饱和为常数、梯度消失(A 对);判别器越强,这种饱和出现得越快,生成器越没有学习信号(B 对)。D 中的数值溢出不是本质原因,且不普遍存在。

Q9. 在 WGAN 的目标函数中,生成器希望 Wasserstein 距离如何变化?

单选题 · easy

  • A.最大化距离
  • B.最小化距离← 正确答案
  • C.保持不变
  • D.先增大后减小

答案:B。生成器的目标是让生成分布尽量接近真实分布,所以它要最小化二者之间的 Wasserstein 距离。批评者才是在反方向努力,尽量拉开真实与生成样本的评分差距,两者博弈的结果就是生成分布不断逼近真实分布。

Q10. WGAN-GP 相比权重裁剪的改进之处在于?

多选题 · extreme

  • A.用梯度惩罚替代参数硬裁剪← 正确答案
  • B.在真实与生成样本间插值求梯度← 正确答案
  • C.从根上取消了 Lipschitz 约束
  • D.把批评者输出改回 sigmoid 概率

答案:AB。WGAN-GP 不再对权重做硬裁剪,而是在优化目标里加一项“梯度范数惩罚”,并且在真实样本与生成样本连线的插值点上计算这个惩罚,从而更精细地强制 Lipschitz 约束。C 错,Lipschitz 约束依然存在,只是换了一种软性实现方式;D 错,WGAN 系列始终用评分而非概率。