生成式对抗网络Generative Adversarial Networks(GANs)论文笔记

1. 前言

GAN(Generative Adversarial Networks),是生成对抗网络于2014年由Ian Good fellow在他的论文Generative Adversarial Nets提出。
在GAN被提出之后,立刻在机器学习领域得到了巨大反响,并且被科学工作者们应用在许多领域,且取得了令人印象深刻的成果。在2016NIPS会议上,Goodfellow对GAN做了一次长达2个小时的报告,将GAN的原理,训练tips,以及一些影响比较大的GAN变体等等综合在一起,信息量比较大。

2. 参考资料

  1. Paper: Generative Adversarial Nets.
  2. Slide:”Generative Adversarial Networks,” NIPS 2016 tutorial.

3. 研究背景

ML模型分类
其实在机器学习中主要分为两类模型:
1. 判别模型(Discriminative model)
实现高维的、人可以感知的信息(如声音、图片等)到一个标签(可以是语义,类别)的映射,如上图,我们向判别模型输入一张猫的图片,就能输出”cat”的标签。
2. 生成模型(Generative model)
学习的是真实数据的概率分布,并且模拟真实数据的生成。对大家来说可能较为常见的例子就是自动编码器(Autoencoder)反卷积(Transposed convolution),对这两者我稍微解释一下。
- 自动编码器:见上图,自动编码器分为encoder(编码器)和decoder(解码器)。将图片输入自动编码器时,编码器首先对图像进行编码,然后通过解码器恢复成原图。在整个网络训练好以后,如果我们将编码器去掉,留下从code通过解码器的一个结构,那这个就是生成真实数据的过程,因此code通过decoder这部分结构这属于一种生成模型。
- 反卷积:卷积实际上会对图片进行下采样,而反卷积的过程会对图像进行上采样,这个上采样的过程也是一种生成的过程,因此也属于生成模型。在讨论的时候,学长提到反卷积可以被归为自动编码器,因为卷积和反卷积的kernel是互为转置的关系,与解码器与编码器之间的关系一致,但是我表示不同意啦,因为在训练时,自动编码器的编码器和解码器是一起训练的,但是反卷积的核是利用训练好的卷积核进行变换的,即不是联合训练得到的。(Update:17.9.14,还没研究过反卷积,日后可能需要修改。)
生成模型的任务和难点
生成模型的任务是学习概率密度并且生成数据,但在求解真实数据的概率密度分布的过程中有很大难度,常用的方法有最大似然估计(Maximum likelihood estimation)等,要求解概率几乎无法进行。
而Goodfellow就想到一种超奇妙的方法,利用判别网络(D)和生成网络(G)两个网络一起训练,成功绕开以上的难点,模拟真实数据的生成。

4. GAN的框架

论文提出了一个新的网络,通过一个对抗的过程来估计生成模型。在这个过程中会同时训练两个模型:一个生成模型 G G 用于估计数据分布,一个判别模型D来预测一个样本是来自训练集(真实数据集)而非 G G 的概率。对于G来说训练过程就是要使 D D 判断错误的可能性最大化。
形象一点说,生成模型G是一个造假币的人,而辨别模型 D D 是一个鉴别真假币的人,G的目标是造出能够以假乱真的假币,而 D D 的目标是正确判别真假,俩人最开始都是新手,D鉴别能力如果变强,则 G G 的造假能力也必须变强才能蒙蔽D的双眼; G G 造假能力变强之后,D也必须提高自己的鉴别能力才能做一个合格的鉴别师。于是 D D G在相互博弈的过程当中不断提高各自的能力,理论上来说,最终 G G 则能够造出接近和真币一样的假币。

4.1 对抗框架(Adeversarial Nets)

将这个框架应用到图像生成上,就有了下面这个框架:
GAN框架
同样,框架中涉及到两个网络G D D ,对这俩网络参数进行更加详细的解释:
xfake=G(z;θ(G)):表示 G G 的输入是噪声z(符合特定分布),输出 x x ,即假的图片,而θ(G)则是生成器 G G 里的待训练权重集合;
D(x;θ(D))[0,1]:表示 D D 的输入是x(分为 xfake x f a k e xreal x r e a l ), D D 会对输入的图片x做一个判断,得到 x x 是真的概率,由此输出一个范围在[0,1]之间的数, θ(D) θ ( D ) 则是辨别器 D D 里的待训练参数集合。

上图中的工作流程解释:
从符合特定分布的噪声中采样一定数目的点z输入生成器,生成假造的数据 xfake x f a k e D D 输入,另外向D同时输入的还有真实数据 xreal x r e a l 。按照 D D G各自的目标: D D 希望辨别真假的能力强,则希望相应的D(xreal)接近1,而 D(xfake) D ( x f a k e ) (即 D(G(z)) D ( G ( z ) ) )接近0;而 G G 的任务是希望D(xfake)(即 D(G(z)) D ( G ( z ) ) )接近1。
上述的”1”和”0”其实可以看作是对输入打上的标签,那么 G G D的矛盾点在于,对于输入 D D 中的G(z) D D 希望D(G(z))能对应标签0,而 G G 希望它对应标签1。

*关于“无监督学习”的说明

GAN还很吸引人的一点是,它是无监督学习,也就是说输入数据时是不需要输入标签的,那就让人很好奇了,要同时训练新手G和新手 D D G D D 引导学习,那没有标签的情况下谁来引导D学习呢?
所以这里要说明的一点是,确实我们不需要向 D D 输入标签,但不代表在训练的时候没有标签。上图有表明,x的数据来源有两个,一个是输入的training data,一个是 G(z) G ( z ) ,这就是说只要是输入的数据一定是real,而生成的数据一定是fake,由此根据数据来源不同就可以确定样本是real还是fake,在程序中就可以根据数据来源给数据打上相应标签”1”或者”0”。所以 D D 在训练的时候是有标签的,training data(real)的标签是”1”,generated data(fake)的标签是”0”,所以其实D就是一个普通的判别器,在训练的时候既有数据又有标签,利用标签和 D D 输出的loss利用随机梯度下降的方法(STD)来求解D中的参数 θ(D) θ ( D )

4.2 Minimax two-player game(Loss)

前文已经到 D D G的各自目标,以及两者在数据 G(z) G ( z ) 上的矛盾。将这个矛盾以数学公式的形式表示出来如下:
minimax two-player game
这个公式就叫做 G G D之间的Minimax two-player game
以下从 G G D的角度对这个公式进行分析:
1. D D 的角度:
上述公式左边部分表示D希望 V(D,G) V ( D , G ) 的值尽量大。
公式右边前半部分

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值