概念
生成对抗网络(GAN)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。判别模型比较好理解,就像分类一样,有一个判别界限,通过这个判别界限去区分样本。从概率角度分析就是获得样本x属于类别y的概率,是一个条件概率P(y|x).而生成模型是需要在整个条件内去产生数据的分布,就像高斯分布一样,他需要去拟合整个分布,从概率角度分析就是样本x在整个分布中的产生的概率,即联合概率P(xy)。
思想
GAN的设计思想简单的说就是让生成模型和判别模型“相爱相杀”。判别模型的任务是分析判断给定的数据,生成模型的任务是去创造一个干扰数据企图欺骗判别模型。开始的时候这两个模型都是没有经过训练的,这两个模型一起对抗训练,互相成长。从而达到两个模型的能力越来越强,最终达到稳态的效果。
算法
以生成图片为例进行说明。假设我们有两个网络,G(Generator)和D(Discriminator)。正如它的名字所暗示的那样,它们的功能分别是:
G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。
D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。
最后博弈的结果是什么?在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。
这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片。
以及在模型收敛时,生成数据具有和真实数据相同的分布(保证了模型效果)。
GAN公式:
公式中x表示真实图片,z表示输入G网络的噪声,G(z)表示G网络生成的图片,D(·)表示D网络判断图片是否真实的概率。
实例
以手写字体(MINST)为例 项目地址https://gitee.com/nine_sun/GAN_MINST
训练
迭代1次:
迭代10次:
迭代50次:
迭代100次:
迭代500次:
生成
总结
GAN在图像生成、数字增强等一系列领域都有显著的成果,其主要亮点在于它使得现有问题从有监督学习慢慢过渡到无监督学习,也可以说是自我监督学习。这种方式才是生活中普遍存在的。不过GAN也不是那么完美,如需要数据量过大:GAN的推导,完全依赖基于大量样本数据的反复判断。这对于样本数据的数量和覆盖广度都有严苛要求。而且对运算能力的要求也比较高。在相对垂直、小众的应用领域里,GAN还是比较难以施展手脚。还有就是GAN用什么标准判断、以何种理论体系来引发判断,一直以来还都缺乏支撑。准确地说,GAN是一个有充足样本和指导思想之后的解决方案,但目前解决方案有了,前提条件很多还不具备。在缺乏理论有效指导的情况下,GAN很难得出复杂的样本推导结果,而且错误率十分地高。并且进入无监督学习领域也存在着大量门槛。
相关学习资源
http://www.tmtpost.com/2609145.html
http://blog.csdn.net/zouxy09/article/details/8195017
https://baike.baidu.com/item/Gan/22181905#viewPageContent