与 GAN 有关的主要问题之一是它们的收敛性。它是不能保证的,而且即使优化了 DCGAN 架构,训练仍然相当不稳定。在这篇文章中,作者提出了对 GAN 训练的不同增强方案。这里是其中的一些: 特征匹配:他们没有使生成器尽可能地欺骗鉴别器,而是提出了一个新的目标函数。该目标要求生成器生成与实际数据的统计信息相匹配的数据。在这种情况下,鉴别器仅用于指出哪些是值得匹配的统计信息。 历史平均:更新参数时,还要考虑其过去值。 单边标签平滑:这一点很简单:只需将你的鉴别器目标输出从 [0 = 假图像,1 = 真图像] 切换到 [0 = 假图像,0.9 =真图像]。是的,这改善了训练。 虚拟批量归一化:通过使用在一个参考批处理中收集的统计信息,避免同一批次的数据依赖性。它在计算上的代价很大,所以仅用于生成器。 所有这些技术都可以使模型更好地生成高分辨率图像,这是 GAN 的弱点之一。作为对比,请参见原始 DCGAN 与改进的 DCGAN 在 128x128 图像上的区别:
这些应该是狗的图像。如你所见,DCGAN 无法表征它们,而使用改进的 DCGAN,你至少可以看到有一些像小狗一样的东西。这也暴露了 GAN 的另一个局限,即生成结构化的内容。 你也许想要使用改进的 DCGAN,如果: 你想要一个改进版本的 DCGAN(我确信你原本不指望:P)以生成更高分辨率的图像。 条件性 GAN(CGAN) TL; DR:这些是使用额外标签信息的 GAN。这会带来更好质量的图像,并能够在一定程度上控制生成图像的外观。 [来源文章](https://arxiv.org/abs/1411.1784) 条件性 GAN 是 GAN 框架的扩展。这里我们有条件信息 Y 来描述数据的一些方面。例如,如果我们正在处理人脸,则 Y 可以描述头发颜色或性别等属性。然后,将该属性信息插入生成器和鉴别器。
具有面部属性信息的条件性 GAN 概述。 条件性 GAN 有趣的原因有两个: 1. 当你向模型输入更多信息时,GAN 学习利用它,因此能够生成更好的样本。 2. 我们有 2 种方式来控制图像表示。没有条件性 GAN,所有的图像信息都被编码在 Z 中。有了 cGAN,当我们添加条件信息 Y 时,现在这两个 Z 和 Y 将编码不同的信息。例如,假设 Y 编码手写数的数字(从 0 到 9)。然后,Z 将编码所有不在 Y 中编码的其它变量。例如,可以是数字的样式(大小、重量、旋转等)。
MNIST 样本上 Z 和 Y 之间的差异。Z 固定在行上,Y 在列上。Z 编码数字的样式,Y 编码数字本身。 最近的研究 有很多关于这个主题的有趣文章。我重点说这其中的两个: 学习画什么和在哪里画 [文章](链接:https://arxiv.org/abs/1610.02454)[代码](链接:https://github.com/reedscot/nips2016):在这篇文章中,作者提出了一种机制来告诉 GAN(通过文本描述),(a)你想要得到的图像内容是什么样,(b)通过边界框/地标来告知元素的位置。看看它的生成结果:
(责任编辑:本港台直播) |