GAN 存在多种常见的失败模式。所有这些常见问题都是我们正在积极研究的领域。虽然这些问题都尚未得到彻底解决,但我们会介绍一些用户尝试过的方法。
消失的渐变
研究表明,如果判别器过于出色,生成器训练可能会因梯度消失而失败。实际上,最佳判别器无法为生成器提供足够的信息来取得进展。
尝试解决问题
- Wasserstein 损失:Wasserstein 损失旨在防止梯度消失,即使您将分类器训练到最佳状态也是如此。
- 经过修改的 minimax 损失函数:原始 GAN 论文提出了对 minimax 损失函数的修改,以处理梯度消失问题。
模式收起
通常,您希望 GAN 生成各种各样的输出。例如,您希望为面部生成器的每个随机输入生成不同的面孔。
不过,如果生成器生成的输出特别可信,则可能会学到仅生成该输出。事实上,生成器始终在尝试找到对判别器而言最合理的输出。
如果生成器开始反复生成相同的输出(或一小组输出),鉴别器的最佳策略是学习始终拒绝该输出。但是,如果下一代分类器陷入局部最小值而未找到最佳策略,那么下一次生成器迭代就很容易为当前分类器找到最合理的输出。
生成器的每次迭代都会针对特定的鉴别器过度优化,而鉴别器永远无法学会摆脱陷阱。因此,生成器会轮替使用一小部分输出类型。这种形式的 GAN 失败称为“模式崩溃”。
尝试解决问题
以下方法会尝试阻止生成器针对单个固定的鉴别器进行优化,从而迫使生成器扩大其范围:
- Wasserstein 损失:Wasserstein 损失可让您将分类器训练到最优状态,而无需担心梯度消失,从而缓解模式崩溃问题。如果鉴别器不会卡在局部极小值,则会学习拒绝生成器稳定下来的输出。因此,生成器必须尝试新的方法。
- 展开式 GAN:展开式 GAN 使用生成器损失函数,该函数不仅包含当前分类器的分类,还包含未来分类器版本的输出。因此,生成器无法针对单个判别器过度优化。
未能收敛
GAN 经常无法收敛,如训练模块中所述。
尝试采取补救措施
研究人员尝试过使用各种形式的正则化来提高 GAN 的收敛性,包括:
- 向判别器输入添加噪声:例如,请参阅 Toward Principled Methods for Training Generative Adversarial Networks。
- 对判别器权重进行惩罚:例如,请参阅通过正则化来稳定生成式对抗网络的训练。