GANs

http://www.leiphone.com/news/201702/eIGiQzuGeuAaH22e.html

2014 年,Ian Goodfellow 和他在蒙特利尔大学的同事发表了一篇震撼学界的论文。没错,我说的就是《Generative Adversarial Nets》,这标志着生成对抗网络(GAN)的诞生,而这是通过对计算图和博弈论的创新性结合。他们的研究展示,给定充分的建模能力,两个博弈模型能够通过简单的反向传播(backpropagation)来协同训练。

这两个模型的角色定位十分鲜明。给定真实数据集 R,G 是生成器(generator),它的任务是生成能以假乱真的假数据;而 D 是判别器 (discriminator),它从真实数据集或者 G 那里获取数据, 然后做出判别真假的标记。Ian Goodfellow 的比喻是,G 就像一个赝品作坊,想要让做出来的东西尽可能接近真品,蒙混过关。而 D 就是文物鉴定专家,要能区分出真品和高仿(但在这个例子中,造假者 G 看不到原始数据,而只有 D 的鉴定结果——前者是在盲干)。

GAN 很复杂?如何用不到 50 行代码训练 GAN(基于 PyTorch)

理想情况下,D 和 G 都会随着不断训练,做得越来越好——直到 G 基本上成为了一个“赝品制造大师”,而 D 因无法正确区分两种数据分布输给 G。

Ian Goodfellow 展示的这项技术在本质上是:G 能够对原始数据集进行一种无监督学习,找到以更低维度的方式(lower-dimensional manner)来表示数据的某种方法。

 

“生成对抗网络是一种生成模型(Generative Model),其背后基本思想是从训练库里获取很多训练样本,从而学习这些训练案例生成的概率分布。

 

而实现的方法,是让两个网络相互竞争,‘玩一个游戏’。其中一个叫做生成器网络( Generator Network),它不断捕捉训练库里真实图片的概率分布,将输入的随机噪声(Random Noise)转变成新的样本(也就是假数据)。另一个叫做判别器网络(Discriminator Network),它可以同时观察真实和假造的数据,判断这个数据到底是不是真的。”

 

GAN的核心原理,如何用数学语言描述呢?这里直接摘录论文里的公式:

GAN学习指南:从原理入门到制作生成Demo,总共分几步?

简单分析一下这个公式:

  • 整个式子由两项构成。x表示真实图片,z表示输入G网络的噪声,而G(z)表示G网络生成的图片。

  • D(x)表示D网络判断真实图片是否真实的概率(因为x就是真实的,所以对于D来说,这个值越接近1越好)。而D(G(z))是D网络判断G生成的图片的是否真实的概率。

  • G的目的:上面提到过,D(G(z))是D网络判断G生成的图片是否真实的概率,G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此我们看到式子的最前面的记号是min_G。

  • D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大(max_D)

那么如何用随机梯度下降法训练D和G?论文中也给出了算法:

GAN学习指南:从原理入门到制作生成Demo,总共分几步?

这里红框圈出的部分是我们要额外注意的。第一步我们训练D,D是希望V(G, D)越大越好,所以是加上梯度(ascending)。第二步训练G时,V(G, D)越小越好,所以是减去梯度(descending)。整个训练过程交替进行。

Goodfellow 38分钟视频亲授:如何完善生成对抗网络?(上)

http://www.leiphone.com/news/201612/eAOGpvFl60EgFSwS.html

深度:生成模型(GAN)的最新进展

http://www.leiphone.com/news/201609/gfKRIyIJXFEpmhbS.html

生成对抗网络(GANs )为什么这么火?盘点它诞生以来的主要技术进展

http://www.leiphone.com/news/201612/Cdcb1X9tm1zsGSWD.html

GAN 很复杂?如何用不到 50 行代码训练 GAN(基于 PyTorch)

http://www.leiphone.com/news/201702/eIGiQzuGeuAaH22e.html

不到 200 行代码,教你如何用 Keras 搭建生成对抗网络(GAN)

http://www.leiphone.com/news/201703/Y5vnDSV9uIJIQzQm.html

 

GAN学习指南:从原理入门到制作生成Demo,总共分几步?-用DCGAN生成动漫头像

http://www.leiphone.com/news/201701/yZvIqK8VbxoYejLl.html

GAN的理解与TensorFlow的实现-info-GAN和AC-GAN实现生成手写数字

http://www.leiphone.com/news/201702/GZsIbIb9V9AUGmb6.html

独家 | GAN之父NIPS 2016演讲现场直击:全方位解读生成对抗网络的原理及未来(附PPT)

http://it.sohu.com/20161210/n475485860.shtml

 

posted @ 2017-04-18 22:35  a梦想去柬埔寨  阅读(1058)  评论(0编辑  收藏  举报