GAN的基本介绍和变化

甘,全称生成对抗网络,直译为“生成对抗网络”。GAN作为生成模型的代表,自Ian good fellow 2065 438+04提出以来,引起了业界的广泛关注,新的改进模型不断出现。深度学习大师之一Yann LeCun高度评价GAN是近十年来机器学习领域最有趣的想法。

甘一直存在训练难度大、稳定性差、模型崩等问题。这种不匹配的根本原因是GAN背后的理论机制还没有探索清楚。

在推广GAN应用方面,2017有两项技术值得关注。其中一个就是CycleGAN,其本质是利用双重学习结合GAN机制来优化生成图片的效果。DualGAN和DiscoGAN等。采用类似的思路,包括很多后续的改进型号如StarGAN等。CycleGAN的重要性主要在于GAN系列的模型不再局限于监督学习。它引入了无监督学习,只需要准备两组不同领域的图片,不需要训练模型所需的两个领域的图片一一对应,从而大大扩展了其应用范围,降低了应用推广的难度。

另一个值得注意的技术是英伟达的“渐进一代”技术。这个程序的吸引力在于它能使计算机生成尺寸为1024*1024的高清图片。是目前在图像清晰度和图片生成质量方面达到最佳效果的技术,生成的明星图片几乎可以达到以假乱真的效果(见图3)。NVIDIA这种由粗到细,先生成图像的模糊轮廓,再逐渐添加细节的思路并不是特别新颖。之前StackGAN等很多方案都采用了类似的思路。它的独特之处在于这种由粗到细的网络结构是动态生成的,而不是事先固定的静态网络,更重要的是生成的图像特别好。

首先有一代生成器,可以生成一些比较差的图片,然后有一代鉴别器,可以把生成的图片从真实图片中准确的分类出来。简而言之,这个鉴别器是一个二元分类器,对生成的图片输出0,对真实图片输出1。

然后,我们开始训练二代生成器,可以生成稍微好一点的图片,让一代鉴别器认为这些生成的图片是真实的图片。然后会训练一个二代鉴别器,可以准确识别真实图片和二代生成器生成的图片。以此类推,会有三代四代。。。n代生成器和鉴别器,最后鉴别器无法区分生成的图片和真实的图片,于是拟合了网络。

对抗性的例子是机器学习模型的输入,攻击者故意设计它们来造成模型错误。它们就像机器的视错觉。

对抗样本是指一个输入样本,经过微小的调整,就可以使机器学习算法输出错误的结果。在图像识别中,可以理解为一张图片,原本被一个卷积神经网络(CNN)分类为一类(如“熊猫”),经过非常细微甚至察觉不到的变化,突然被误分类为另一类(如“长臂猿”)。

对抗训练

对抗训练是一种防御样本攻击的方法。将对抗样本和正常样本一起训练是一种有效的正则化方法,可以提高模型的准确性,有效降低对抗样本的攻击成功率。但这种防御只是针对训练集中时同样用于生成对抗样本的方法。

的确,下图可以看到,训练集是正态样本和对抗样本,测试集的红线是正态样本,错误率低于训练集和测试集都是正态样本,说明对抗训练具有正则化的作用。

图9

训练时直接生成对抗样本效率很低,前面提到的FGSM就是一种高效的对抗训练方法。只有改变目标函数,才能在训练每个正态样本的同时考虑对抗样本。该模型被训练以给予对抗性样本与正常样本的原始分类相同的类别。

FGSM训练的网络可以有效防御FGSM产生的样本攻击,但如果使用其他对策也会被攻破。

对照样本工作的想法可能有以下两种含义:

结论

由于梯度方法,为集成模型创建对抗样本将更加困难。但是生成的算法更加可行和有效。

单个模型中的盲点可以由其他模型来补偿,并且将使用具有最佳输出结果的模型数据。

我们发现,当我们用动态创建的对抗模型训练算法时,我们可以解决这些对抗样本的问题。这是因为模型在面对这些可能出现问题的低概率区域时,能够产生更高的“免疫力”。这也支持了低概率区域的论点,那里的对抗样本更难处理。

DCGAN是GAN之后更好的改进,主要改进在网络结构上。到目前为止,DCGAN的网络结构仍然被广泛使用,这大大提高了GAN训练的稳定性和生成结果的质量。

本文的主要贡献是:

◆为GAN的训练提供了良好的网络拓扑。

◆说明生成的特征具有向量的计算特性。

D(x)表示D网络判断真实图片是否真实的概率(因为X是真实的,所以对于D来说,这个值越接近1越好)。而D(G(z))D(G(z))是判断G生成的图片是否真实的概率。

G的目的:G应该希望自己生成的画面“尽可能接近真实”。也就是说,G希望D(G(z))D(G(z))越大越好,也就是说V(D,G)V(D,G)会越小。

D的用途:D的能力越强,D(x)D(x)越大,D(G(x))D(G(x))越小。所以D的目的和G不一样,D希望V(D,G)V(D,G)越大越好。

DCGAN对卷积神经网络的结构做了一些改变,以提高样本质量和收敛速度。这些变化如下:

取消所有池层。g网络使用转置卷积层进行上采样,D网络使用带步长的卷积而不是池化。

在d和g中使用批处理规范化。

移除FC层,使网络成为完全滚动的网络。

G网络中采用ReLU作为激活函数,最后一层采用tanh。

在D网络中使用LeakyReLU作为激活函数。

g . DCGAN中的网络示意图:

DCGAN的发电机网络结构如上图所示。与原始GAN相比,DCGAN几乎完全使用卷积层代替全链路层,鉴别器几乎与生成器对称。从上图可以看出,整个网络没有池层和上采样层,实际上是用分数步长卷积代替上采样来增加训练的稳定性。

DCGAN能提高GAN训练稳定性的主要原因是:

◆步长卷积用于代替上采样层。卷积在提取图像特征方面起到了非常好的作用,卷积用来代替全连通层。

◆生成器G和鉴别器D几乎每一层都使用batchnorm层对特征层的输出进行归一化,加速了训练,提高了训练的稳定性。(最后一层生成器和第一层鉴别器不加batchnorm)

◆鉴别器中使用leakrelu激活函数代替relu,以防止梯度稀疏。生成器中仍然使用relu,但是输出层中使用tanh。

用adam优化器训练,最好的学习率是0.0002(我试过其他的学习率,不得不说0.0002是最好的表现)。

BigGAN在训练中用了很大一批,已经到了2048批(我们一般以64批训练居多),卷积通道也变大了,网络的参数也变多了。2048年批量下,全网参数已经接近6543.8+06亿。