GAN 学习笔记(一)
- 生成网络简介
生成网络是无监督学习中的一种,它的目标是‘凭空’生成一些数据,用没有意义的数据生成出有意义的作品。比如生成一些假的图像。
生成对抗网络(Generate Adversarial Network,GAN)是由Goodfellow博士在2014年提出的一种生成模型,提供了一种生成高质量数据的深度学习方法,只需要少量带有标记的数据,便可以通过生成网络与判别网络之间的竞争获得高质量数据。
- 对抗网络思想
生成对抗网络主要由两个部分组成,一个是生成器 G(Generator),另一个是判别器 D(Discriminator)。
生成器的输入参数为一些无意义的噪声,并以此生成一个样本。判别器的作用则是判断生成器生成的一张图片是否是真实图片,如果图像是真,即输出「1」,否则输出「0」。在此过程中,生成器为了欺骗判别器,它会逐步更新参数以使生成的样本尽量拟合真实图片,而判别器为了能够更加精准的识别出样本是否真实,它也会逐步学习真实图片与生成图片之间的差异,并以此更新网络参数。在生成器与判别器的相互博弈之中,生成的样本图片逐渐接近真实图片,最终生成对抗网络达到稳定状态。
总之,基于 GAN 的图像生成器的过程如下:
- 生成器生成图像,其中在训练初始阶段,大部分图像都是无意义的。
- 判别器接受一些图像,其中有些是来自真实图像数据集,而有些是来自生成器生成的假图像。
- 判别器使用二元分类算法,预测哪张图片为真(输出为「1」),哪张图片为假(输出为「0」)。
- 判别器更新网络参数,以便能够对图像进行准确分类。
- 生成器根据损失函数的变化,相应地更新其参数。为了能够生成更加逼真的图像欺骗判别器。
- 生成器与判别器的博弈一直持续下去,直至生成器与判别器达到一个平衡点,这个时候判别器无法判断生成器生成的图像是真是假。
- 最后,得到的生成器就是一个能够生成逼真图像的生成模型。
图像生成器的架构如下:
- GAN 的数学建模
因为在训练过程中,判别器和生成器都试图优化相反的损失函数,因此可以认为是两个人在玩一个带有值函数 V(G,D)的极小极大博弈游戏。在这个极小极大博弈游戏过程中,生成器尝试将它生成的图像被认为是真实图像的可能性最大化,而判别器尝试使这个可能性最小化。以下为生成器和判别器在玩这个博弈游戏中的值函数表达式:
- 训练 GAN 模型
因为生成器和判别器都是基于神经网络构建的模型,所以可以使用随机梯度下降算法作为训练过程中参数优化算法。
训练一个 GAN 模型由以下几个基本步骤组成:
- 简单的噪声数据集和真实数据集,且图像的大小(m)一致
- 训练判别器
- 对大小为 m 的不同噪声子集进行采样
- 训练生成器
- 重复 1 ~ 4 过程