介绍
生成对抗网络的一个简单解释如下:假设有两个模型,一个是生成模型(Generative Model,下文简写为G),一个是判别模型(Discriminative Model,下文简写为D),判别模型(D)的任务就是判断一个实例是真实的还是由模型生成的,生成模型(G)的任务是生成一个实例来骗过判别模型(D),两个模型互相对抗,发展下去就会达到一个平衡,生成模型生成的实例与真实的没有区别,判别模型无法区分自然的还是模型生成的。以赝品商人为例,赝品商人(生成模型)制作出假的毕加索画作来欺骗行家(判别模型D),赝品商人一直提升他的高仿水平来区分行家,行家也一直学习真的假的毕加索画作来提升自己的辨识能力,两个人一直博弈,最后赝品商人高仿的毕加索画作达到了以假乱真的水平,行家最后也很难区分正品和赝品了1。
GAN是更好的生成模型,在某种意义上避免了马尔科夫链式的学习机制。
朴素的GAN基本框架
一个最朴素的GAN模型,实际上是将一个随机变量(可以是高斯分布,或0到1之间的均匀分布),通过参数化的概率生成模型(通常是用一个神经网络模型来进行参数化),进行概率分布的逆变换采样。
而GAN的或者一般概率生成模型的训练目的,就是要使得生成的概率分布和真实数据的分布尽量接近,从而能够解释真实的数据。但是在实际应用中,我们完全没有办法知道真实数据的分布。我们所能够得到的只是从这个真实的数据分布中所采样得到的一些真实数据。
实际上就是生成模型和判别模型之间的一个模仿游戏。生成模型的目的,就是要尽量去模仿、建模和学习真实数据的分布规律;而判别模型则是要判别自己所得到的一个输入数据,究竟是来自于真实的数据分布还是来自于一个生成模型。通过这两个内部模型之间不断的竞争,从而提高两个模型的生成能力和判别能力。
GAN模型包括了一个生成模型G和一个判别模型D,GAN的目标函数是关于D与G的一个零和游戏。也是一个最小-最大化问题。
GAN可以和CNN、RNN结合在一起。任何一个可微分的函数,都可以用来参数化GAN的生成模型和判别模型。那么,在实际中,我们就可以使用深度卷积网络,来参数化生成模型。另外,GAN和RNN结合在一起,用来处理和描述一些连续的序列数据,可以学习到序列数据的分布,同时也可以产生序列数据应用,包括对音乐数据或者是一些自然语言数据的建模和生成。
参考
1: 生成对抗网络GANS论文集锦
2: GAN发展
3: 独家|深度学习新星:GANs的基本原理、应用和走向
4: 一周论文 | GAN(Generative Adversarial Nets)研究进展
因为我们是朋友,所以你可以使用我的文字,但请注明出处:http://alwa.info