GAN背景
在GAN算法出来之前, 由于之前的方法在最大似然估计和相关策略中出现的许多复杂的概率计算,得到的结果难以近似,所以关于图像生成的任务表现一直都不太好。
GAN其实是两个网络的组合:生成器(Generator)负责生成模拟数据;判别器(Discriminator)负责判断输入的数据是真实的还是生成的。生成器要不断优化自己生成的数据让判别网络判断不出来,判别器也要优化自己让自己判断得更准确。二者关系形成对抗,因此叫对抗网络。
GAN原理
生成器和判别器
- 生成模型:需要给定某种特征信息,来随机产生新的观测数据。
- 判别模型:需要输入特定变量 ,通过该模型来预测 。
对于判别模型,损失函数是容易定义的,因为输出的目标相对简单。但对于生成模型,损失函数的定义就不是那么容易。我们对于生成结果的期望,往往是一个暧昧不清,难以数学公理化定义的范式。所以不妨把生成模型的回馈部分,交给判别模型处理。
①生成器(Generator):
作用:负责凭空编造假的数据出来。
详细解释:通过机器生成假的数据(大部分情况下是图像),最终目的是“骗过”判别器。
过程:G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。
②判别器(Discriminator):
作用:负责判断传来的数据是真还是假。
详细解释:判断这张图像是真实的还是机器生成的,目的是找出生成器做的“假数据”。
过程:D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
GAN的形成过程
GAN的训练过程
(1)先训练D
上一轮G产生的图片和真实图片直接拼接在一起,作为x。然后根据顺序摆放0和1,假图对应0,真图对应1。然后就可以通过x输入生成一个score(从0到1之间的数),通过score和y组成的损失函数,就可以进行梯度反传了。
(2)再训练G
这时需要把G和D当作一个整体,我们就叫DG系统吧,这个系统的输出仍然是score。输入一组随机向量,就可以在G生成一张图,通过D对生成的这张图进行打分,这就是DG系统的前向过程。score=1就是DG系统需要优化的目标,score和y=1之间的差异可以组成损失函数,然后可以反向传播梯度。注意,这里的D的参数是不可训练的。这样就能保证G的训练是符合D的打分标准的。
GAN的特点及优缺点
特点
- 相比较传统的模型,GAN存在两个不同的网络,而不是单一的网络,并且训练方式采用的是对抗训练方式。
- GAN中G的梯度更新信息来自判别器D,而不是来自数据样本。
优点
GAN是一种生成式模型,相比较其他生成模型只用到了反向传播。
GAN可以产生更加清晰,真实的样本。
GAN采用的是一种无监督的学习方式训练,可以被广泛用在无监督学习和半监督学习领域。