生成对抗网络


文档摘要

生成对抗网络 在上一节中,我们学习了生成模型:可以生成与训练数据集中的图像相似的新图像的模型。VAE 就是一个很好的生成模型的例子。 课前测验 然而,如果我们尝试生成一些真正有意义的东西,比如在合理分辨率下生成一幅画,使用 VAE,我们会发现训练效果并不理想。对于这种用例,我们应该了解另一种专门针对生成模型的架构——生成对抗网络,或称为 GAN。 GAN 的主要思想是让两个神经网络相互对抗地进行训练: 图片来自 Dmitry Soshnikov ✅ 一些术语: 生成器 是一个网络,它接受一些随机向量,并生成图像作为结果 判别器 是一个网络,它接受一张图像,并应判断该图像是真实的(来自训练数据集),还是由生成器生成的。其实它本质上就是一个图像分类器。

生成对抗网络

在上一节中,我们学习了生成模型:可以生成与训练数据集中的图像相似的新图像的模型。VAE 就是一个很好的生成模型的例子。

课前测验

然而,如果我们尝试生成一些真正有意义的东西,比如在合理分辨率下生成一幅画,使用 VAE,我们会发现训练效果并不理想。对于这种用例,我们应该了解另一种专门针对生成模型的架构——生成对抗网络,或称为 GAN。

GAN 的主要思想是让两个神经网络相互对抗地进行训练:

图片来自 Dmitry Soshnikov

✅ 一些术语:

  • 生成器 是一个网络,它接受一些随机向量,并生成图像作为结果
  • 判别器 是一个网络,它接受一张图像,并应判断该图像是真实的(来自训练数据集),还是由生成器生成的。其实它本质上就是一个图像分类器。

判别器

判别器的架构与普通的图像分类网络没有区别。在最简单的情况下,它可以是一个全连接分类器,但更有可能是一个卷积网络

✅ 基于卷积网络的 GAN 称为 DCGAN

一个 CNN 判别器由以下层组成:若干卷积+池化层(空间尺寸逐渐减小)和一个或多个人全连接层以获得“特征向量”,最后是一个二元分类器。

✅ 在这个上下文中,“池化”是一种减少图像大小的技术。“池化层通过将一层中神经元集群的输出组合成下一层中的单个神经元来降低数据的维度。” ——来源

生成器

生成器稍微复杂一些。你可以将其视为一个反向的判别器。从一个潜在向量(而不是特征向量)开始,它有一个全连接层将其转换为所需的大小/形状,然后是反卷积+上采样。这类似于自编码器的解码部分。

✅ 因为卷积层是通过线性滤波器遍历图像实现的,所以反卷积本质上与卷积类似,可以用相同的层逻辑实现。

图片来自 Dmitry Soshnikov

训练 GAN

GAN 被称为对抗性的,因为生成器和判别器之间存在持续的竞争。在这个竞争过程中,生成器和判别器都会得到改进,因此网络学会了生成越来越好的图像。

训练分为两个阶段:

  • 训练判别器。这个任务相当直接:我们用生成器生成一批图像,标记为 0,表示假图像,然后从输入数据集中取一批图像(标记为 1,表示真实图像)。我们得到一些判别器损失,并进行反向传播。
  • 训练生成器。这稍微复杂一些,因为我们无法直接知道生成器的期望输出。我们取整个 GAN 网络(包括生成器和判别器),用一些随机向量对其进行馈送,期望结果为 1(对应于真实图像)。然后冻结判别器的参数(在这个步骤中我们不希望它被训练),并进行反向传播。

在这个过程中,生成器和判别器的损失都不会显著下降。在理想情况下,它们应该振荡,表明两个网络都在不断提高其性能。

✍️ 练习:GAN

GAN 训练的问题

GAN 被认为特别难以训练。以下是几个问题:

  • 模式崩溃。我们用这个词来形容生成器学会了生成一种成功的图像,从而欺骗判别器,而不再生成多种不同的图像。
  • 对超参数敏感。通常可以看到 GAN 根本不会收敛,然后突然降低学习率导致收敛。
  • 保持生成器和判别器之间的平衡。在许多情况下,判别器的损失会很快降到零,导致生成器无法进一步训练。为了解决这个问题,我们可以尝试为生成器和判别器设置不同的学习率,或者如果损失已经太低,则跳过判别器训练。
  • 针对高分辨率的训练。与自编码器一样,这个问题是由于重建过多的卷积网络层导致出现伪影。这个问题通常通过所谓的逐步增长来解决,即首先在低分辨率图像上训练几层,然后逐层解锁或添加。另一个解决方案是在层之间添加额外连接,并同时训练多个分辨率——详见这篇多尺度梯度 GAN 论文

风格迁移

GAN 是生成艺术图像的好方法。另一种有趣的技术称为风格迁移,它将一张内容图像重新绘制为不同的风格,应用来自风格图像的滤镜。

其工作原理如下:

  • 我们从一张随机噪声图像开始(或从内容图像开始,但为了便于理解,从随机噪声开始更容易)
  • 我们的目标是创建一个图像,使其尽可能接近内容图像和风格图像。这将由两个损失函数确定:
    • 内容损失 是根据 CNN 在某些层中提取的内容图像和当前图像的特征计算得出的
    • 风格损失 是通过一种巧妙的方式在当前图像和风格图像之间计算的,使用 Gram 矩阵(更多细节请参阅示例笔记本
  • 为了使图像更平滑并去除噪声,我们还引入了变分损失,计算相邻像素的平均距离
  • 主优化循环使用梯度下降(或其他优化算法)调整当前图像,以最小化总损失,这是所有三个损失的加权和。

✍️ 示例:风格迁移

课后测验

结论

在这节课中,你学习了关于 GAN 及如何训练它们。你还学习了这种类型的神经网络可能面临的特殊挑战,以及一些克服这些挑战的策略。

挑战

运行一下 风格迁移笔记本,使用你自己的图像。

复习与自学

参考以下资源了解更多关于 GAN 的知识:

声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。


作者与出处
原作者: microsoft
来源:microsoft
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: microsoft 转发
评论区 (0)
U