您的位置:首页 > 理论基础 > 计算机网络

生成对抗网络(GAN, Generative Adversarial Networks)快速入门

2019-04-18 11:49 330 查看

如今的GAN好比2012年的DL(Deep Learning),非常火爆。似乎一切与GAN相关的技术,都很容易发论文(2018CVPR有三分之一的文章涉及到了GAN)。那么,什么是GAN呢?这篇文章从科普的角度,帮助读者迅速对GAN有一个大体的了解和印象。想要进一步了解GAN的朋友们,可以访问我的GAN专栏。

首先,我们需要了解GAN能够做些什么?

这里简单列举几点:

  • 数据库的数量太少,利用GAN生成更多的数据。
  • 数据的分布比较单一,想要生成另外一种分布的数据。(比如图片的风格转移,使用相片生成油画等)
  • 超分辨率和图像复原。原有图片像素较低或遭到部分损毁等,使用GAN生成分辨率较高的图像或完成损毁图像的复原。

以上就是GAN的主要应用,GAN的应用当然还有很多,这里只是写几点主要的应用。

接下来,简单介绍GAN的原理。

前文一直在说使用GAN生成一些东西,所以GAN需要有一个生成器,简称G(一般可以是自编码器、U-Net、FCNN等)。但是,可以想到,让G凭空生成一些东西,肯定和我们的需要相去甚远。所以,我们还需要使用一个判别器,简称D。D用来判断G生成的数据是否真实,或者是否是我们所需要的。

在训练的过程中,对G和D进行周而复始的训练,不断训练G去误导D,再不断训练更具有判断力的D。大概就是一个魔高一尺道高一丈的对抗过程。等到无论如何训练D,都无法分辨真实数据和G生成的数据时,GAN的训练也就完成了。我们就可以利用G做一些想做的任务了。

说到这,初学者们大概已经知道了GAN是什么。

最后,使用两个公式对GAN进行更加具象的描述。


x代表原始数据,z代表噪声(使用噪声是为了防止G生成的数据全都是一样的),是G的输入,y是真实的数据。看不懂这个公式不要紧,它描述的就是D的分辨能力,也就是D是否能分清真实的数据和生成的数据。L越大,代表D的能力越强。

所以,根据GAN的原理,我们希望G使上述式子变小,D使上述式子变大。最后,GAN的训练目标就如下所示(V(G,D)就代表上面的公式)。

总结:这篇博客相当于一篇科普短文,希望对初学者有所帮助。GAN的研究空间广阔,大家都有很长的路要走。

后记:GAN之父Ian Goodfellow在和朋友喝完酒之后,回家突发奇想,编了一夜代码,发明了GAN。所以就说到这了,我的左手已经去拿我的芝华士了。

欢迎讨论 欢迎吐槽

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐