【问题标题】:If we can clip gradient in WGAN, why bother with WGAN-GP?如果我们可以在 WGAN 中裁剪梯度,为什么还要使用 WGAN-GP?
【发布时间】:2020-03-18 16:57:43
【问题描述】:

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

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

【问题讨论】:

    标签: machine-learning gradient-descent generative-adversarial-network


    【解决方案1】:

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

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

    【讨论】:

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

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

    引用原始 WGAN-GP 论文:

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

    因此,您可以看到重量限制可能(这取决于您要生成的数据 - 本文的作者表示它并不总是这样)导致不良行为。当您尝试训练 WGAN 以生成更复杂的数据时,该任务很有可能失败。

    【讨论】:

      猜你喜欢
      • 2021-11-17
      • 2022-06-11
      • 2019-04-28
      • 2021-11-04
      • 2022-01-16
      • 2023-04-11
      • 1970-01-01
      • 2021-01-14
      • 1970-01-01
      相关资源
      最近更新 更多