生成对抗网络
在上一节中,我们学习了生成模型:可以生成与训练数据集中的图像相似的新图像的模型。VAE是生成模型的一个很好的例子。
生成对抗网络
在上一节中,我们学习了生成模型:可以生成与训练数据集中的图像相似的新图像的模型。VAE是生成模型的一个很好的例子。
课前测验
然而,如果我们尝试生成一些真正有意义的内容,比如一幅分辨率合理的画作,使用VAE时会发现训练效果并不理想。针对这种情况,我们需要学习另一种专门用于生成模型的架构——生成对抗网络,简称GAN。
GAN的核心思想是使用两个神经网络相互对抗进行训练:
图片来源:Dmitry Soshnikov
✅ 一些术语:
- 生成器是一个网络,它接收一个随机向量,并生成图像作为输出。
- 判别器是一个网络,它接收一张图像,并判断该图像是来自训练数据集的真实图像,还是由生成器生成的虚假图像。它本质上是一个图像分类器。
判别器
判别器的架构与普通的图像分类网络没有区别。最简单的情况下,它可以是一个全连接分类器,但更常见的是一个卷积网络。
✅ 基于卷积网络的GAN被称为DCGAN
一个CNN判别器由以下层组成:几个卷积+池化层(空间尺寸逐渐减小),以及一个或多个全连接层以获得“特征向量”,最后是一个二分类器。
✅ “池化”是一种减少图像尺寸的技术。“池化层通过将一个层中神经元簇的输出合并为下一层中的单个神经元来减少数据的维度。” - 来源
生成器
生成器稍微复杂一些。可以将其视为一个反向的判别器。从一个潜在向量(代替特征向量)开始,它通过一个全连接层将其转换为所需的尺寸/形状,然后进行反卷积+上采样。这类似于自动编码器的解码器部分。
✅ 由于卷积层是通过线性滤波器遍历图像实现的,反卷积本质上与卷积类似,可以使用相同的层逻辑实现。
图片来源:Dmitry Soshnikov
GAN的训练
GAN被称为对抗性网络,因为生成器和判别器之间存在持续的竞争。在这种竞争中,生成器和判别器都会不断改进,从而使网络能够生成越来越好的图像。
训练分为两个阶段:
- 训练判别器。这个任务相对简单:我们通过生成器生成一批图像,将其标记为0(代表虚假图像),然后从输入数据集中取一批图像(标记为1,真实图像)。我们计算出判别器的损失,并进行反向传播。
- 训练生成器。这稍微复杂一些,因为我们无法直接知道生成器的期望输出。我们将整个GAN网络(由生成器和判别器组成)输入一些随机向量,并期望输出为1(对应真实图像)。然后我们冻结判别器的参数(此步骤不对判别器进行训练),并进行反向传播。