Machine learning 如果我们可以在WGAN中剪裁渐变,为什么还要麻烦WGAN-GP呢?

Machine learning 如果我们可以在WGAN中剪裁渐变,为什么还要麻烦WGAN-GP呢?,machine-learning,gradient-descent,generative-adversarial-network,Machine Learning,Gradient Descent,Generative Adversarial Network,我正在研究WGAN,并希望实现WGAN-GP 在最初的文章中,由于1-Lipschitiz约束,WGAN-GP采用梯度惩罚实现。但是像Keras这样的包可以将梯度范数剪裁为1(根据定义,这相当于1-Lipschitiz约束),那么我们为什么要费心惩罚梯度呢?为什么我们不直接裁剪渐变呢?原因是,从数学意义上来说,裁剪通常是一个相当困难的约束,而不是从实现复杂性的角度来看。如果您检查原始WGAN纸张,您会注意到剪辑过程输入模型的权重和一些超参数c,这些超参数c控制剪辑的范围 如果c很小,那么权重将被

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


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

原因是,从数学意义上来说,裁剪通常是一个相当困难的约束,而不是从实现复杂性的角度来看。如果您检查原始WGAN纸张,您会注意到剪辑过程输入模型的权重和一些超参数c,这些超参数c控制剪辑的范围


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

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

引用原始WGAN-GP文件:

通过权重裁剪实现k-Lipshitz约束会使批评家倾向于更简单的函数。正如前面在[推论1]中所述,在Pr和Pg下,最优WGAN批评家几乎处处都有单位梯度范数;在权值裁剪约束下,我们观察到我们的神经网络结构试图达到其最大梯度范数k,最终学习非常简单的函数


因此,正如您所看到的,权重剪裁可能(取决于您想要生成的数据——本文的autors指出,它并不总是这样)导致不希望的行为。当您尝试培训WGAN生成更复杂的数据时,任务失败的可能性很高。

如果您满意,请标记为已解决,因为没有需要添加的内容。:)我刚刚意识到我说的是梯度的剪裁,而不是权重的剪裁。你的解释也适用于梯度吗?@lwang024不完全适用。WGAN引入了权重剪裁,作为调整模型权重的一种方法。WGAN-GP使用梯度惩罚替换权重剪裁。渐变剪裁是另一种野兽,它不能用于此任务,它不会对模型/权重/约束施加适当的数学约束。@lwang024原因是,我猜,当前错误和数据产生的当前渐变,即使约束到一些c也不能保证最终模型满足lipschitz连续性。我明白了。这完全回答了我的问题。