GAN 生成对抗网络
文章目录
一、介绍
GAN这一概念是由Lan Goodfellow于2014年提出,GAN被深度学习先驱之一的Yann LeCun称为“数十年来机器学习领域最有趣的想法。”原始GAN论文的链接为:https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1406.2661.pdf
我们知道CNN、RNN是通过建立图像与输出之间的关系来判断结果的一种网络映射。而GAN却是通过利用毫无意义的随机数据凭空捏造结果而非建立数据与输入映射关系来生成结果的一种网络。生成网络式网络是无监督学习的一种(本科阶段已经学过一些机器学习中常见的无监督学习方法,如K最近邻,K-means、PCA降维等,也就是原始数据集没有标签)。
Q&A
Q:我们希望从训练样本分布采样新数据,但这个分布不仅高维并且很复杂,难以直接实现,我们该怎么办?
A:先使用一个简单的分布采样,比如均匀分布,然后我们可以学习一种映射将其变换到训练样本分布中。
Q:用什么办法能够实现这个复杂的映射?
A:生成式网络。
二、GAN模型
GAN结构
原始GAN中有两个部分:生成器G(Generator)和判别器(Discriminator)。
生成器(“假钞厂”)
生成器的目的就是将随机输入的高斯噪声映射成图像(“假钞”)。输入一个向量,通过生成器,输出一个高维向量。通常输入向量的每一个维度都代表着一些特征。
判别器(“验钞机”)
判别器(“验钞机”)则是判断输入图像是否来自生成器的概率,即判断输入图像是否为假图的概率。
生成器与判别器的关系
其实生成器生成一个东西,输入到判别器中,然后由判别器来判断这个输入是真实数据还是机器生成的,如果生成器生成的数据(“假钞”)没有骗过判别器(“验钞机”),那么生成器(“假钞厂”)继续优化,输出第二代数据(“第二代假钞”),再输入判别器,判别器同时也在进化,对生成器的输出结果有了更严格的要求。这样生成器和判别器不断进化,他们之间有点像竞争、对抗关系,这也就是“生成对抗网络(adversarial)”的名字由来。
GAN与CNN详细区别
CNN是定义好特定的损失函数,然后利用梯度下降及其改进算法进行参数优化,尽可能用局部最优解去逼近全局最优解。GAN的训练是一个动态的过程,是生成器G与判别器D两者之间互相博弈过程。通俗点讲,GAN的目的就是无中生有,以假乱真。即要使得生成器G生成所谓的“假钞”以骗过“验钞机”,也就是判别器D,那么最优状态就是生成器G生成的所谓的“假钞”在判别器D的判别结果为0.5,不知道到底是真钞还是假钞。
Q&A
Q:为什么有判别器的存在GAN却非监督的?
A:因为GAN本身并不需要数据有label,GAN产生的“假”数据,配合原来的真数据来训练discriminator,而并非原始数据中的label,所以说GAN是非监督的。
三、GAN训练
GAN损失函数
原始GAN的损失函数如下:
min G