lwa*_*024 5 machine-learning gradient-descent generative-adversarial-network
我正在研究 WGAN,并希望实现 WGAN-GP。
在其原始论文中,由于 1-Lipschitiz 约束,WGAN-GP 是通过梯度惩罚来实现的。但是像 Keras 这样的包可以将梯度范数限制为 1(根据定义,这相当于 1-Lipschitiz 约束),那么为什么我们要费心去惩罚梯度呢?为什么我们不直接裁剪渐变呢?
原因是,从数学意义上来说,裁剪通常是一个相当严格的约束,而不是从实现复杂性的意义上来说。如果您检查原始 WGAN 论文,您会注意到裁剪过程输入模型的权重和一些超参数c,该参数控制裁剪范围。
如果c很小,那么权重将被严重限制在很小的值范围内。问题是如何确定合适的c值。这取决于你的模型、问题中的数据集、训练过程等等。那么为什么不尝试软惩罚而不是硬剪裁呢?这就是为什么 WGAN-GP 论文对损失函数引入了额外的约束,迫使梯度的范数尽可能接近1,避免硬崩溃到预定义值。