Skip to content

Latest commit

 

History

History
31 lines (17 loc) · 4.29 KB

README.md

File metadata and controls

31 lines (17 loc) · 4.29 KB
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>

GANs

GANs 原理基本介绍

GANs (Generative Adversarial Networks) 自从14年被提出,现在已经成为人工智能领域的最火热的研究热点之一。我们所熟知的神经网络(CNN)只擅长分类任务,如在猫和狗、飞机和汽车之间进行分类。但现在,新的一种神经网络可以用来生成图片的猫或狗(有些生成出来看起来很奇怪),但是这告诉我们他们已经学会记住特征,这为很多具有创新性的工作提供了更多可能。

生成对抗网络是一种无监督模型,尽管大部分时候,有监督学习比无监督的能获得更好的训练效果,但真实世界中,有监督学习需要的数据标注(label)是相对少的。所以研究者们从未放弃去探索更好的无监督学习策略,希望能从海量的无标注数据中学到对于这个真实世界的表示(representation)甚至知识,从而去更好地理解我们的真实世界。

评价无监督学习好坏的方式有很多,其中生成任务就是最直接的一个。只有当我们能生成/创造我们的真实世界,才能说明我们是完完全全理解了它。然而,生成任务所依赖的生成式模型(generative models)往往会遇到两大困难。

首先是我们需要大量的先验知识去对真实世界进行建模,其中包括选择什么样的先验、什么样的分布等等。而建模的好坏直接影响着我们的生成模型的表现。

另一个困难是,真实世界的数据往往很复杂,我们要用来拟合模型的计算量往往非常庞大,甚至难以承受。

而在过去一两年中,有一个让人兴奋的新模型,则很好地避开了这两大困难。这个模型叫做 Generative Adversarial Networks(GAN)。在原始的 GAN paper中,作者是用博弈论来阐释了 GAN 框架背后的思想。每一个 GAN 框架,都包含着一对模型 —— 一个生成模型(G)和一个判别模型(D)。因为 D 的存在,才使得 GAN 中的 G 不再需要对于真实数据的先验知识和复杂建模,也能学习去逼近真实数据,最终让其生成的数据达到以假乱真的地步 —— D 也无法分别 —— 从而 G 和 D 达到了某种纳什均衡。

由此我们可以看出生成对抗网络是一种生成模型(Generative Model),其背后基本思想是从训练库里获取很多训练样本,从而学习这些训练案例生成的概率分布。实现的方法,是让两个网络相互竞争,‘玩一个游戏’。其中一个叫做生成器网络( Generator Network),它不断捕捉训练库里真实图片的概率分布,将输入的随机噪声(Random Noise)转变成新的样本(也就是假数据)。另一个叫做判别器网络(Discriminator Network),它可以同时观察真实和假造的数据,判断这个数据到底是不是真的。”

更加直白的解释是:“GANs 的基本原理是它有两个模型:一个生成器,一个判别器。判别器的任务是判断给定图像是否看起来‘自然’,换句话说,是否像是人为(机器)生成的。而生成器的任务是,顾名思义,生成看起来‘自然’的图像,要求与原始数据分布尽可能一致。GANs 的运作方式可被看作是两名玩家之间的零和游戏。原论文的类比是,生成器就像一支造假币的团伙,试图用假币蒙混过关。而判别器就像是警察,目标是检查出假币。生成器想要骗过判别器,判别器想要不上当。当两组模型不断训练,生成器不断生成新的结果进行尝试,它们的能力互相提高,直到生成器生成的人造样本看起来与原始样本没有区别。虽然 GAN 背后的思想十分直观与朴素,但我们需要更进一步了解该理论背后的证明与推导。

https://zhuanlan.zhihu.com/p/29837245 对GANs的基本介绍了解 http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS17.html 李宏毅老师的视频讲解,基于公式的推导,讲解的非常好,入门GANs,这套视频就够了。


GANs应用以及papers

入门后就可以看一些paper以及对应的code。理论和实践是不能够脱离开的。 https://github.com/LynnHo/GAN-Papers