概述
1、什么是GAN?
生成对抗网络简称GAN,是由两个网络组成的,一个生成器网络和一个判别器网络。这两个网络可以是神经网络(从卷积神经网络、循环神经网络到自编码器)。我们之前学习过的机器学习或者神经网络模型主要能做两件事:预测和分类,这也是我们所熟知的。那么是否可以让机器模型自动来生成一张图片、一段语音?而且可以通过调整不同模型输入向量来获得特定的图片和声音。例如,可以调整输入参数,获得一张红头发、蓝眼睛的人脸,可以调整输入参数,得到女性的声音片段,等等。也就是说,这样的机器模型能够根据需求,自动生成我们想要的东西。因此,GAN 应运而生!
2、发展历史
生成对抗网络是由Ian Goodfellow等人于2014年在论文《Generative Adversarial Networks》中提出的。学术界公开接受了GAN,业界也欢迎GAN。GAN的崛起是不可避免的。
随着《Generative Adversarial Networks》提出后,GAN产生了广泛流行的架构,如DCGAN,StyleGAN,BigGAN,StackGAN,Pix2pix,Age-cGAN,CycleGAN。这些架构展示了非常有前途的结果。而随着GAN在理论与模型上的高速发展,它在计算机视觉、自然语言处理、人机交互等领域有着越来越深入的应用,并不断向着其它领域继续延伸。因此,本文将对GAN的理论与其应用做一个总结与介绍。
一、GAN模型
1、GAN的基本思想
GAN受博弈论中的零和博弈启发,将生成问题视作判别器和生成器这两个网络的对抗和博弈:生成器从给定噪声中(一般是指均匀分布或者正态分布)产生合成数据,判别器分辨生成器的的输出和真实数据。前者试图产生更接近真实的数据,相应地,后者试图更完美地分辨真实数据与生成数据。由此,两个网络在对抗中进步,在进步后继续对抗,由生成式网络得的数据也就越来越完美,逼近真实数据,从而可以生成想要得到的数据(图片、序列、视频等)。
如果将真实数据和生成数据服从两个分布,那么如图所示:
图中,蓝色虚线为判别分布D,黑色许虚线为真实的数据分布 P d a t a P_{data} Pdata,绿色实线为生成分布 P g P_{g} Pg。GAN从概率分布的角度来看,就是通过D来将生成分布推向真实分布,紧接着再优化D,直至到达图(d)所示,到达Nash均衡点,从而生成分布与真实分布重叠,生成极为接近真实分布的数据。
2、GAN的基本模型
以图片为例,真实图片集的分布 P d a t a ( x ) P_{data}{(x)} Pdata(x), x x x 是一个真实图片,可以想象成一个向量,这个向量集合的分布就是 P d a t a P_{data} Pdata。我们需要生成一些也在这个分布内的图片,如果直接就是这个分布的话,很难做到。
现在有的 generator 生成的分布可以假设为 P G ( x ; θ ) P_G(x;θ) PG(x;θ),这是一个由 θ θ θ 控制的分布, θ θ θ 是这个分布的参数(如果是高斯混合模型,那么 θ θ θ 就是每个高斯分布的平均值和方差)。
假设在真实分布中取出一些数据, x 1 , x 2 , . . . , x m {x^1, x^2, ... , x^m} x1,x2,...,xm,我们想要计算一个似然 P G ( x i ; θ ) P_G(x^i; θ) PG(xi;θ)。
对于这些数据,在生成模型中的似然就是:
L = ∏ i = 1 m P G ( x i ; θ ) L=\prod _{i=1}^mP_G(x^i;\theta) L=i=1∏mPG(xi