如果我们可以在 WGAN 中裁剪梯度,为什么还要使用 WGAN-GP?

If we can clip gradient in WGAN, why bother with WGAN-GP?

我正在研究 WGAN 并希望实现 WGAN-GP。

在其原始论文中,由于 1-Lipschitiz 约束,WGAN-GP 使用梯度惩罚来实现。但是像 Keras 这样的包可以将梯度范数剪裁为 1(根据定义相当于 1-Lipschitiz 约束),那么我们为什么要费心去惩罚梯度呢?我们为什么不直接剪裁渐变?

原因是裁剪一般来说在数学意义上是一个非常严格的约束,而不是在实现复杂性的意义上。如果查看原始 WGAN 论文,您会注意到剪辑过程输入模型的权重 一些超参数 c,它控制剪辑的范围。

如果 c 很小,那么权重将被严重限制在一个很小的值范围内。问题是如何确定合适的 c 值。这取决于你的模型、问题中的数据集、训练过程等等。那么为什么不尝试软惩罚而不是硬剪裁呢?这就是为什么 WGAN-GP 论文对损失函数引入了额外的约束,强制梯度的范数尽可能接近 1,避免硬塌陷到预定义的值。

CaptainTrunky 的回答是正确的,但我还想指出一个非常重要的方面。

引用原始 WGAN-GP 论文:

Implementing k-Lipshitz constraint via weight clipping biases the critic towards much simpler functions. As stated previously in [Corollary 1], the optimal WGAN critic has unit gradient norm almost everywhere under Pr and Pg; under a weight-clipping constraint, we observe that our neural network architectures which try to attain their maximum gradient norm k end up learning extremely simple functions.

正如您所看到的,权重裁剪可能(这取决于您要生成的数据——本文的作者表示它并不总是这样)会导致不良行为。当您尝试训练 WGAN 生成更复杂的数据时,任务失败的可能性很高。