Generative Adversarial Nets(GAN)

一:概述

       下图是Generative Adversarial Nets这篇文章的摘要部分,对GAN进行一个整体介绍:GAN包括两个模型,捕获数据分布的生成模型G,以及一个判别模型D。这个框架对应于一个极小极大的两人博弈问题(纳什均衡,纳什均衡是指博弈中这样的局面,对于每个参与者来说,只要其他人不改变策略,他就无法改善自己的状况。)。在任意函数G和D的空间中,存在一个唯一的解决方案,其中G恢复训练数据分布,D在任何地方都等于1/2。在G和D由多层感知器定义的情况下,整个系统可以通过反向传播进行训练。

      生成模型相当于一个造假的人,目标是造出假币迷惑警察;而辨别模型就相当于警察来识别假币。造假者与警察会不断地学习,造假者不断地提升自己造假的技能,警察也会不断地提高自己辨别假币的技能。最后希望造假者造出与真币一样并且警察无法识别出真假币。与前人不同之处在于,作者的思路在于通过学习近似分布而不是构造分布。

二:GAN整体框架

下图描述了GAN网络整体框架图:

       当模型都是MLP的时候,对抗神经网络是最容易应用的。对于生成器需要学习数据x的分布函数Pg,因此定义了输入噪声变量pz(z)上的先验,然后将到数据空间的映射表示为G(z;θg),其中G是由参数为θG的多层感知器表示的可微函数。对于辨别器,定义第二个输出单个标量的多层感知器D(x;θd)。D(x)表示x来自数据而不是pg的概率。如果数据来自生成器则为0,如果来自真实数据则为1。

     损失函数如下:

         

       最小化G,使D尽可能的出错,使得真假数据分不开。最大化D,尽量使得真假数据分开。

       如上图所示,其中z使噪音为一维的标量,x也是一维的标量。z需要去拟合x,绿色线表示生成器生成的分布,蓝色的线表示辨别器,黑色的线表示真实数据x的分布。从图a到图b,生成器生成的数据分布峰值不断地向左移动,辨别器也慢慢的变成1/2,最中生成器生成的数据与真实数据分布拟合。

       算法的实现如上图所示,第一行代码表示训练次数的迭代,第二行代码表示在每一次迭代的过程中进行k步循环,每一个步骤中先采样m个噪音样本,再采样来自真实数据的样本,组成两m大小的小批量,然后放进价值函数中求梯度,就是将真实数据的样本放入到辨别器,噪音放入到生成器中,再放入到辨别器,带入价值函数求参数来更新辨别器。做完k步以后我们再采样m个噪音样本放进价值函数的第二项中来更新生成器。这样就完成了一次迭代,我们先更新了辨别器,然后更新生成器。K是一个超参数,不能取太小也不能去太大,要保证辨别器有足够的更新,同时也不能更新的太好,如果没有足够的更新则D函数改变不大,所以无论怎末更新G意义都不大,同样如果更新过大,则第二项就会变成0,同样意义不大。通过不断更新生成器和辨别器使得最后生成的向量在辨别器中达到结果是1/2。如下面公式所示。

 论文中有对公式的证明,有兴趣的同学可以看一下。同时论文中也介绍到了GAN的优缺点,缺点就是,GAN训练是比较难的,需要均衡好G和D,如果不均衡好会导致生成的结果不乐观。优点是生成器并没有去看样本的数据,没有试图去拟合特征,使得可以生成一些锐利的边缘。

三 :CycleGAN

      CycleGAN的一个重要应用领域是Domain Adaptation(域迁移:可以通俗的理解为画风迁移),比如可以把一张普通的风景照变化成梵高化作,或者将游戏画面变化成真实世界画面等等。论文中提供两种模型,pixel2pixel模型,是一种有监督的风格迁移,需要提供image pairs;另外一种cyclegan不用提供imagepairs,是一种无监督风格迁移。

上图是CycleGAN的整体框架图,有两个Gx->y生成器,两个Fy->x生成器以及两个辨别器组成。

 上述CycleGAN的损失函数。

源码地址:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

预训练模型:http://efrosgans.eecs.berkeley.edu/cyclegan/pretrained_models/

数据集:http://efrosgans.eecs.berkeley.edu/cyclegan/datasets/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值