GAN综述

GAN

  1. GAN的优化是一个极小极大博弈问题;
  2. m i n G m a x D V ( D , G ) = E x ∼ p d a t a ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathop{min}\limits_{G}\mathop{max}\limits_{D}V(D, G) = E_{x\sim p_{data}(x)}[\log{D(x)}] + E_{z\sim p_{z}(z)}[\log{(1 - D(G(z)))}] GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]
  3. 训练:多次更新D,更新一次G;
  4. 使用 − log ⁡ D ( G ( z ) ) -\log{D(G(z))} logD(G(z))代替 log ⁡ ( 1 − D ( G ( z ) ) ) \log(1-D(G(z))) log(1D(G(z))),在 D ( x ) D(x) D(x)接近于 0 的时候,这个函数十分平滑,梯度非常的小。这就会导致,在训练的初期, G G G想要骗过 D D D,变化十分的缓慢,而上面的函数,趋势和下面的是一样的,都是递减的。但是它的优势是在 D ( x ) D(x) D(x)接近 0 的时候,梯度很大,有利于训练,在 D ( x ) D(x) D(x)越来越大之后,梯度减小,这也很符合实际,在初期应该训练速度更快,到后期速度减慢。

CGAN

  1. 原始GAN提出,与其他生成式模型相比,GAN这种竞争的方式不再要求一个假设的数据分布,而是使用一种分布直接进行采样,从而真正达到理论上可以完全逼近真实数据,这也是GAN最大的优势。然而,这种不需要预先建模的方法缺点是太过自由了,对于较大的图片,较多的 pixel的情形,基于简单 GAN 的方式就不太可控了;
  2. 提出一种带条件约束的GAN,在生成模型和判别模型的建模中均引入条件变量,使用额外信息对模型增加条件,可以指导数据生成过程。这些条件变量可以基于多种信息,例如类别标签;
  3. 条件生成式对抗网络是对原始GAN的一个扩展,生成器和判别器都增加额外信息 y y y为条件, y y y可以使任意信息,例如类别信息,或者其他模态的数据。通过将额外信息 y y y输送给判别模型和生成模型,作为输入层的一部分,从而实现条件GAN。在生成模型中,先验输入噪声 p ( z ) p(z) p(z)和条件信息 y y y联合组成了联合隐层表征。对抗训练框架在隐层表征的组成方式方面相当地灵活。类似地,条件GAN的目标函数是带有条件概率的二人极小极大值博弈;
  4. m i n G m a x D V ( D , G ) = E x ∼ p d a t a ( x ) [ log ⁡ D ( x ∣ y ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ∣ y ) ) ) ] \mathop{min}\limits_{G}\mathop{max}\limits_{D}V(D, G) = E_{x\sim p_{data}(x)}[\log{D(x|y)}] + E_{z\sim p_{z}(z)}[\log{(1 - D(G(z|y)))}] GminDmaxV(D,G)=Expdata(x)[logD(xy)]+Ezpz(z)[log(1D(G(zy)))]

DCGAN

  1. DCGAN是继GAN之后比较好的改进,其主要的改进主要是在网络结构上,到目前为止,DCGAN的网络结构还是被广泛的使用,DCGAN极大的提升了GAN训练的稳定性以及生成结果质量;
  2. 相较原始的GAN,DCGAN几乎完全使用了卷积层代替全链接层,判别器几乎是和生成器对称的,从上图中我们可以看到,整个网络没有pooling层和上采样层的存在,实际上是使用了带步长(fractional-strided)的卷积代替了上采样,以增加训练的稳定性;
  3. DCGAN能改进GAN训练稳定的原因主要有:
    - 使用步长卷积代替上采样层,卷积在提取图像特征上具有很好的作用,并且使用卷积代替全连接层;
    • 生成器G和判别器D中几乎每一层都使用batchnorm层,将特征层的输出归一化到一起,加速了训练,提升了训练的稳定性。(生成器的最后一层和判别器的第一层不加batchnorm);
    • 在判别器中使用leakrelu激活函数,而不是RELU,防止梯度稀疏,生成器中仍然采用relu,但是输出层采用tanh。
  4. 贡献:为GAN的训练提供了一个很好的网络拓扑结构;表明生成的特征具有向量的计算特性。

WGAN

  1. 与DCGAN不同,WGAN主要从损失函数的角度对GAN做了改进,损失函数改进之后的WGAN即使在全链接层上也能得到很好的表现结果;
  2. 改进:
    • 判别器最后一层去掉sigmoid(GAN的判别器做的是真假二分类任务,所以最后一层是sigmoid,但是现在WGAN中的判别器做的是近似拟合Wasserstein距离,属于回归任务,所以要把最后一层的sigmoid拿掉。);
    • 生成器和判别器的loss不取log;
    • 对更新后的权重强制截断到一定范围内,比如[-0.01,0.01],以满足论文中提到的lipschitz连续性条件;
    • 论文中也推荐使用SGD, RMSprop等优化器,不要基于使用动量的优化算法,比如adam。
  3. 贡献:
    • WGAN理论上给出了GAN训练不稳定的原因,即交叉熵(JS散度)不适合衡量具有不相交部分的分布之间的距离,转而使用wassertein距离去衡量生成数据分布和真实数据分布之间的距离,理论上解决了训练不稳定的问题;
    • 解决了模式崩溃的(collapse mode)问题,生成结果多样性更丰富;
    • 对GAN的训练提供了一个指标,此指标数值越小,表示GAN训练的越差,反之越好。
  4. GAN中交叉熵(JS散度)不适合衡量生成数据分布和真实数据分布的距离,如果通过优化JS散度训练GAN会导致找不到正确的优化目标,所以,WGAN提出使用wassertein距离作为优化方式训练GAN;
  5. 就其本质而言,任何生成模型的目标都是让模型(习得地)的分布与真实数据之间的差异达到最小。然而,传统 GAN 中的判别器 D 并不会当模型与真实的分布重叠度不够时去提供足够的信息来估计这个差异度——这导致生成器得不到一个强有力的反馈信息(特别是在训练之初),此外生成器的稳定性也普遍不足。 Wasserstein GAN 在原来的基础之上添加了一些新的方法,让判别器 D 去拟合模型与真实分布之间的 Wasserstein 距离。Wassersterin 距离会大致估计出「调整一个分布去匹配另一个分布还需要多少工作」。此外,其定义的方式十分值得注意,它甚至可以适用于非重叠的分布。

WGAN-GP

  1. WGAN-GP是WGAN之后的改进版,主要还是改进了连续性限制的条件,因为,作者也发现将权重剪切到一定范围之后,比如剪切到[-0.01,+0.01]后,发生了这样的情况,大多数的权重都在-0.01 和0.01上,这就意味了网络的大部分权重只有两个可能数,对于深度神经网络来说不能充分发挥深度神经网络的拟合能力,简直是极大的浪费。并且,也发现强制剪切权重容易导致梯度消失或者梯度爆炸,梯度消失很好理解,就是权重得不到更新信息,梯度爆炸就是更新过猛了,权重每次更新都变化很大,很容易导致训练不稳定。梯度消失与梯度爆炸原因均在于剪切范围的选择,选择过小的话会导致梯度消失,如果设得稍微大了一点,每经过一层网络,梯度变大一点点,多层之后就会发生梯度爆炸 。为了解决这个问题,并且找一个合适的方式满足lipschitz连续性条件,作者提出了使用梯度惩罚(gradient penalty)的方式以满足此连续性条件;
  2. 梯度惩罚就是既然Lipschitz限制是要求判别器的梯度不超过K,那么可以通过建立一个损失函数来满足这个要求,即先求出判别器的梯度d(D(x)),然后建立与K之间的二范数就可以实现一个简单的损失函数设计。但是注意到D的梯度的数值空间是整个样本空间,对于图片(既包含了真实数据集也包含了生成出的图片集)这样的数据集来说,维度及其高,显然是及其不适合的计算的。作者提出没必要对整个数据集(真的和生成的)做采样,只要从每一批次的样本中采样就可以了;
  3. 贡献:
    • 提出了一种新的lipschitz连续性限制手法—梯度惩罚,解决了训练梯度消失梯度爆炸的问题;
    • 比标准WGAN拥有更快的收敛速度,并能生成更高质量的样本;
    • 提供稳定的GAN训练方式,几乎不需要怎么调参,成功训练多种针对图片生成和语言模型的GAN架构
  4. 注意:对每个batch中的每一个样本都做了梯度惩罚(随机数的维度是(batchsize,1)),因此判别器中不能使用batch norm,但是可以使用其他的normalization方法,比如Layer Normalization、Weight Normalization和Instance Normalization。

LSGAN

用了最小二乘损失函数代替了GAN的损失函数,就这样的改变,缓解了GAN训练不稳定和生成图像质量差多样性不足的问题。事实上,作者认为使用JS散度并不能拉近真实分布和生成分布之间的距离,使用最小二乘可以将图像的分布尽可能的接近决策边界

BEGAN

你可能感兴趣的:(Machine,Learning,机器学习)