「 [Rob-GAN]Rob-GAN: Generator, Discriminator, and Adversarial Attacker 论文精读」2023年9月22日

我们研究了对抗性深度学习中的两个重要概念——对抗性训练生成对抗性网络(GAN)

1.对抗性训练是在训练阶段通过将对抗性攻击者鉴别器结合来提高鉴别器鲁棒性的技术。

2.GAN通常通过联合优化鉴别器生成器来用于图像生成。

我们表明,这两个概念确实密切相关,可以用来加强彼此:

1.在对抗性训练过程中添加生成器可以提高鉴别器的鲁棒性。

2.在GAN训练中添加对抗性攻击可以提高收敛速度并产生更好的生成器。

结合这两个见解,我们开发了一个名为Rob GAN的框架,以在存在对抗性攻击的情况下联合优化生成器和鉴别器,优化方法如下:

  1. 生成器生成伪图像来欺骗鉴别器
  2. 对抗性攻击者干扰真实图像以欺骗鉴别器
  3. 鉴别器希望在伪图像和对抗性图像下最小化损失。

通过这种端到端的训练过程,我们能够同时提高GAN训练的收敛速度合成图像的质量以及鉴别器在强对抗性攻击下的鲁棒性

实验结果表明,所获得的分类器比最先进的对抗性训练方法[23]更稳健,并且在ImageNet-143数据集上本文的生成器的性能优于SN-GAN。

介绍:

对抗性攻击是指找到高度相似的图像来欺骗分类器的算法。

对抗性防御:在对抗性攻击下训练分类器(也称为对抗性训练),已成为提高分类器鲁棒性的最有前途的方法之一。(鉴别器也是一个分类器)

GAN:是一个生成器学习将白噪声转换为鉴别器看起来真实的图像的生成模型。

我们在本文中表明,它们确实密切相关,可以用来加强彼此,特别是我们有以下关键见解

  1. 如果我们对图像分布有更深入的了解,对抗性训练分类器的鲁棒性可以得到提高。因此,生成器可以改进对抗性训练过程。(因为生成器训练的越好,对图像的分布就越接近)
  2. 如果鉴别器图像流形上具有大的曲率(我们需要知道什么是Lipschitz条件,Lipschitz值就是鉴别器在图像流形上的曲率,也就是导数,Lipschitz值越大代表着鉴别器鲁棒性越差),则GAN训练可能非常缓慢地达到平衡。而经过对抗性训练的鉴别器鲁棒性很好,因此,经过对抗性训练的鉴别器可以加速GAN训练。 

基于这些发现,我们通过强制鉴别器在图像流形上保持鲁棒性,成功地加速稳定了GAN训练周期。同时,由于在对抗鲁棒训练过程中使用了数据扩充生成器提供了更多关于数据分布的信息。因此,我们得到了一个更健壮的分类器,它可以更好地推广到看不见的数据。(这段是对上述1,2的解释)

上述的过程可以这样看:首先我们在GAN中加入对抗性攻击,这样我们就可以得到更多的数据扩充训练集,然后生成器就可以根据扩充后的数据集得到更多的数据分布信息,这样的生成器可以在加入对抗攻击的GAN训练中提高鉴别器的鲁棒性,鉴别器的鲁棒性提高就可以反过来加速GAN的训练,这样循环就可以进行优化,得到一个比较好的GAN模型。

流形:流形学习的观点是认为,我们所能观察到的数据实际上是由一个低维流形映射到高维空间上的。由于数据内部特征的限制,一些高维中的数据会产生维度上的冗余,实际上只需要比较低的维度就能唯一地表示。

举个例子,比如说我们在平面上有个圆,如何表示这个圆呢?如果我们把圆放在一个平面直角坐标系中,那一个圆实际上就是由一堆二维点构成的。比如一个单位圆: (1,0)是一个在圆上的点,(0,1)也是一个在圆上的点,但(0,0)和(2,3)等等很多点是不在这个圆上的。显然如果用二维坐标来表示,我们没有办法让这个二维坐标系的所有点都是这个圆上的点。也就是说,用二维坐标来表示这个圆其实是有冗余的。

高维空间有冗余,低维空间没冗余。也就是说,流形可以作为一种数据降维的方式。传统很多算法都是用欧氏距离作为评价两个点之间的距离函数的。但是仔细想想这种欧氏距离直觉上并不靠谱。“我们只是看到了三维数据,就要用三维坐标系内的尺度去对事物进行评价?”总觉得有些怪怪的。

举个例子,从北京到上海有多远?你可以找一个地球仪,然后用一把能弯曲的软软的尺子,经过地球仪表面然后测量一下这两个点的距离。

但是如果我用一根直线,将地球仪从北京到上海洞穿,测量出一个更短的距离,你一定会觉得我疯了。这说明,尽管你得到的北京和上海的坐标是三维空间坐标(x,y,z),但使用欧氏距离对于“在高维空间展开的低维流型”进行距离的衡量是不正确的。

显然对于“从北京到上海的距离”这件事,我们关注的是把三维地球展开成二维平面,然后测量的地表上的距离,而不是三维空间中球面上两个点的欧氏距离。

既“流型空间上的可以用欧氏距离,不代表低维流型所展开的高维空间中也可以使用欧氏距离进行衡量”。只有在流型空间,用欧氏距离才有意义。

下图是三维空间中的一个流形,这是一个卷曲面,像一个瑞士卷一样,这个图就表示观察到的数据是三维的,但其本质是一个二维流形,因为曲面是2维的。我们可以想象成输入的数据是三维的,但真正表征这个数据的核心特征就是一个二维的,其余的都是维度都是冗余的,所以这里的二维流形也就是表征这个数据的核心特征。所以深度学习的本质就是说某些高维数据,实际是一种低维的流形结构嵌入在高维空间中,这个低维流型结构就是我们提取得到的重要特征。

图上所标注的两个圈圈,在流形(把卷展开)上本距离非常远,但是用三维空间的欧氏距离来计算则它们的距离要近得多。)

第二个方面,流形能够刻画数据的本质。也就是说。既然学习到了“将数据从高维空间降维到低维空间,还能不损失信息”的映射,那这个映射能够输入原始数据,输出数据更本质的特征(就像压缩一样,用更少的数据能尽可能多地表示原始数据)。

这方面也是深度学习一直在搞的事情。深度学习主要的特点就是“特征学习”,所谓特征,就是能“表示事物本质的内容”,一般来说特征的维度应该小于数据本身。有一些实证证实,大脑处理数据其实是通过记忆、重现的方式。数据那么多,大脑怎么能一一记住?那就可以只记住“特征”。例如我们直到“人”都是两只眼睛一个鼻子一张嘴。而具体到每一个人则是再这个基本特征之上添加了一些其他的特异性的内容仅此而已。

深度学习一直以来就是在模仿大脑的结构,或者说在模仿大脑对数据的处理能力:从底层感受器输入原始数据,逐步求精得到特征。

所谓的特征,在一定程度上就可以用流形的概念来解释。我们希望我们的模型能够学习到“数据在流型空间中的表示”。如果能做到这一点,则说明我们的模型离“模拟大脑”又前进了一步。)

这样我们就可以理解什么是流形,我的理解就是,我们看到的图片其实就是一些主要特征所扩展出来的,所以图片在流形空间中的表示就是图片的特征,本文所用的生成器就是在流形空间中将一些噪声映射为我们需要的图片,本文的鉴别器就是在图片的流形空间中对特征进行鉴别,判断是否是真实图像

我们的贡献总结如下:

  1. 我们深入了解了为什么当前的对抗性训练算法不能很好地推广到看不见的数据。同时,我们解释了为什么GAN训练缓慢达到平衡。
  2. 我们将对抗性训练和GAN训练联系起来,展示它们如何相互受益:我们可以使用GAN来提高对抗性训练的可推广性,并使用对抗性训练来加速GAN训练,同时使其收敛到更好的生成器。
  3. 我们提出了一个新的框架Rob GAN,它将生成器、鉴别器和对抗性攻击者集成为一个三人博弈。我们还展示了如何以端到端的方式有效地训练框架。
  4. 我们通过重新表述AC-GAN损失,为条件GAN制定了更好的训练损失。
  5. 我们设计了一系列实验来证实本文中的所有假设和创新。例如,通过GAN数据增强,我们可以在强大的对抗性攻击下,在ResNet18(+CIFAR10)上将最先进的对抗性训练方法的准确率从29.6%提高到36.4%。此外,当将对抗性攻击者插入GAN训练周期时,我们观察到收敛速度加快了3~7x。最后,与强基线(SN-GAN[26])相比,我们的模型在两个数据集上都获得了更好的初始得分。

本文所用符号:在本文中,我们将(图像,标签)对表示为(xi,yi),i是数据点的索引;通过权重w参数化的分类器是f(x;w),该函数包括最终的Softmax层,因此输出是概率。损失函数表示为L(·,·)。我们还将D(x)和G(z)分别定义为鉴别器网络和生成器网络。对抗性示例xadv是通过干扰原始输入来制作的,即xadv=x+δ,其中||δ||≤δmax。为了方便起见,我们在实验中考虑了L∞-范数”。真实图像和伪图像表示为xreal/fake。注意,在本文中,“伪”图像和“对抗性”图像是不同的:伪图像是由生成器生成的,而对抗性图像是通过用精心设计的小噪声干扰自然图像来生成的。 训练集表示为Dtr,具有Ntr个数据点。这也是经验分布。未知的数据分布是Pdata。

给定训练集Dtr,我们定义经验损失函数:

背景和相关工作如下:

首先介绍一下GAN:GAN有两个目标不同的竞争网络:在训练阶段,生成器G(z)和鉴别器D(x)在极小极大博弈中进化,可以表示为统一损失函数

其中Pz是噪声的分布。

下面是最近文献的研究方向:

1.与我们通常将损失最小化的传统机器学习问题不同,上式更难优化,所以优化上式是最近文献的焦点(即最近论文的焦点都是将上面的损失函数优化,以达到更好的目标)。

2.对于高分辨率和照片逼真的图像生成,目前的标准方法是首先学习生成低分辨率图像作为中间产品,然后学习逐步细化它们[9,20]。 事实证明,这比通过巨大的网络直接生成高分辨率图像更稳定。(这也是一个优化方法,即改进生成器,让生成器不是直接生成高分辨率图像,而是先生成低分辨率图像,再细化图像。

3.为了使GAN的训练有效地达到平衡,即让生成器G和鉴别器D训练达到平衡并且保持稳定,论文[1,2,5,13,37]应用了替代损失函数,并且这些替代损失函数被证明是有效的。

其中,论文[1]从理论上解释了为什么训练DCGAN是高度不稳定的。

在这项工作之后,论文[2]提出使用Wasserstein-1距离来测量真实和虚假数据分布之间的距离。由此产生的网络,即“Wasserstein GAN”,在很大程度上提高了GAN训练的稳定性。

  1. 另一项值得注意的工作是受WGAN/WGAN-GP启发的生成对抗网络的谱归一化[26]。他的主要思想是估计层内(卷积层、线性层等)权重W的算子范数σmax(W),然后将这些权重归一化1-算子范数。由于非线性激活函数ReLU是服从1-Lipschitz的,所以如果我们将这些层堆叠在一起,整个网络仍然是满足1-Lipschitz的,这正是应用Kantorovich-Rubinstein对偶来估计Wasserstein距离的先决条件。

ReLU激活

利普希茨条件:

满足如下性质的任意连续函数 f(x) 称为K-Lipschitz:

从导数上来看,可以看出满足K-Lipschitz的函数 f(x) 在任意两点之间的连线斜率小于等于K ,那么也就是函数任意点的导数也小于等于K。

这个性质的函数在机器学习模型中是很受欢迎的,我们都希望能够训练一个稳健的模型。那么何为稳健?一般来说有两种含义:一是模型对本身参数扰动的稳定性,即模型本身的某些参数发生了变化,是否可以仍然对相同的输入保持近似的响应,即希望:

其中响应偏移量可控,

即模型本身参数改变之后,再输入相同的输入,模型的输出的微小变化△f在我们的预期C(w)之内。

例如一个分类模型在某些参数轻微扰动后,仍然能够识别出猫这一类别,那么说明该模型具有稳定性。)

然后介绍一下对抗攻击和对抗防御:

对抗攻击:在本文中,我们应用一种称为PGD攻击的标准算法来生成对抗性示例。给定具有实际标签y的示例x,PGD通过使用投影梯度下降求解以下优化来计算对抗性扰动δ:

其中f(·;w)是由权重w参数化的网络,L(·,·)是损失函数,为了方便起见,我们选择||·||作为L∞-范数,但注意其他范数也适用。

直观地说,上式的思想是找到一个L∞-球内的点xadv=x+δ,使得上式的损失值L最大,因此该点最有可能是一个对抗性的例子。事实上,大多数基于优化的攻击算法(例如FGSM、C&W)与PGD攻击有着相同的想法。

对抗防御:尽管论文[29,23,6,22,15,10,39,34,31]提出了大量的防御方法,这些方法可以被看作基于随机基于投影基于去噪器。但是在重要的综述论文[4,3]中,对抗性训练被公认为最强大的防御算法之一,对抗性训练可以公式化为:

其中(x,y)~Pdata是真实数据的(图像,标签)联合分布,f(x;w)是由w参数化的网络,L(f(x;w),y)是网络的损失函数(如交叉熵损失)。我们注意到,真实数据分布Pdata在实践中是未知的,它将被经验分布所取代。

值得注意的是,我们的贡献之一是使用GAN来防御对抗性攻击,这看起来类似于Defense-GAN。

它们在本质上是完全不同的

Defense-GAN的想法是通过最小化xadv和G(z)的L2距离”,将对抗性示例xadv投影到伪图像G(z)(生成器G生成的图像)的空间:

然后对输出xout进行预测。

我们的防御机制的本质主要基于对抗性训练。我们设计了GAN和对抗性训练之间的协作方案,并且两部分都是联合训练的。

值得注意的是,在对抗性环境中应用GAN的另一项与本文不太相关的工作是AdvGAN,它的GAN用于生成对抗性示例。

本文方法:

我们提出了一个名为Rob-GAN的框架,在存在对抗性攻击的情况下联合优化生成器和鉴别器——生成器生成假图像来欺骗鉴别器;对抗性攻击干扰真实图像以欺骗鉴别器,并且鉴别器希望最小化伪图像和对抗性图像下的损失(见图1)。

事实上,Rob GAN与对抗性训练和GAN密切相关。如果我们移除生成器,Rob-GAN将成为标准的对抗性训练方法。如果我们移除对抗性攻击,Rob GAN将成为标准的GAN。

图1:培训过程示意图。这类似于标准GAN训练,即交替地更新生成器G和鉴别器D网络。主要区别在于,每当将真实图像馈送到D网络前,我们首先调用对抗性攻击,将对抗攻击后的图片输入到D,因此鉴别器是用对抗性示例训练的。

但是,我们为什么要把这三个组成部分放在一起呢?在深入研究细节之前,我们首先提出了两个重要的动机

  1. 为什么GAN可以提高对抗性训练的鉴别器的鲁棒性?
  2. 为什么对抗性攻击者可以提高GAN的训练稳定性和收敛速度? 

下面回答这两个问题:

洞察一:对抗性训练的泛化差距——GAN辅助对抗性训练

首先提出对抗性训练目前的局限性

  1. 到目前为止,对抗性训练的方法只在MNIST和CIFAR10等小数据集上进行了测试,对抗性训练能否扩展到ImageNet等大数据集仍然是一个悬而未决的问题。
  2. 尽管对抗性训练在训练集上导致了经验证的鲁棒性,但在测试集上的性能通常会显著下降。这意味着在对抗性攻击下泛化差距很大(图2(左))。换句话说,在我们在训练集上将模型训练好之后,我们很难在训练数据附近再找到对抗性示例(因为在训练的时候就已经找了很多对抗性示例),但由于测试集没有经过训练,我们不知道测试集的具体分布情况,所以在测试数据附近找到一个对抗性示例要容易得多,这就是泛化性不够。

在下文中,我们研究了这种巨大(并不断扩大)的泛化差距背后的原因,稍后我们将通过GAN辅助的对抗性训练来解决这个问题。

1.泛化差距大的原因:

(注:以下对抗训练是没有GAN参与的,即传统的对抗性训练,即只有对抗攻击和一个加鉴别器。)

为了使我们的模型对对抗性失真具有鲁棒性,我们希望在数据分布Pdata上强制使用局部小的Lipschitz值(LLV)。许多防御方法都含有这个想法,如论文[8]。本质上,限制LLV可以公式化为一个复合损失最小化问题:

从公式中可以看出,这是将公式三进行了拓展,而拓展的部分就是我们要强制限制的局部小的Lipschitz值(LLV),注意,(4)可以被视为(3)的“线性展开”。

(线性展开公式:

在实践中,我们不知道真实数据分布Pdata;(因为传统的对抗性训练中没有GAN来学习真实数据分布)所以,我们使用经验分布来代替(4):

其中

是训练集的特征-标签对(即我们只有这些训练集的数据,没有整个数据集的数据,只能用训练集的特征标签对近似替代完整数据集),Ntr是训练集数据点的个数。

理想情况下,如果我们有足够的数据,并且假设数据集适度大,则(5)中的目标函数仍然收敛于(4),即可以用公式(5)近似代替公式(4)。

然而,在考虑对抗性训练的鲁棒性时,由于我们只能用训练集的经验分布代替整个数据集,所以我们有一个问题需要担心:

训练集中的局部小的Lipschitz值LLV是否能在测试集上自动泛化? 因为我们需要的是在整个数据集中要求局部小的Lipschitz值LLV

图2:左图:不同攻击水平下的准确率。模型(VGG16)是通过在CIFAR-10数据集上进行对抗性训练获得的,对抗性训练中的最大扰动为8/256。我们可以观察到:

训练集(黄色)和测试集(蓝色)之间的准确率差距很大,

两个数据集上的准确率差距(黑色)甚至大于攻击强度(攻击强度≈0.03后,训练集和测试集的准确率都逐渐下降,一直下降到零,因此差距也慢慢减小了)。

右图:通过梯度范数

测量的局部小的Lipschitz(LLV),数据对(xi,yi)分别从训练集和测试集中采样。在训练过程中,训练集(绿色)上的LLV稳定在较低水平,而测试集(蓝色)上的LLV保持增长。

如图2(左)所示,(针对“训练集中的局部小的Lipschitz值LLV是否能在测试集上自动泛化?”这一问题)图中较大的精度差距意味着否定的答案。即训练集中的局部小的Lipschitz值不能泛化到测试集。

为了以明确的方式验证这一现象,我们分别计算来自训练集和测试集的样本的Lipschitz值(图2(右))。我们可以看到,与准确性差距类似,训练集和测试集之间的LLV差距也同样大。

因此,我们得出结论,尽管对抗性训练有效地控制了训练集周围的LLV,但这一性质并不能推广到测试集。(请注意,我们的经验发现与使用泛化理论(例如[33])的对抗性训练的稳健性证明并不矛盾,因为在处理深度神经网络时,泛化理论可能是松散的)

2.通过GAN辅助的对抗性训练来解决1.泛化差距大的问题

应对上述“对抗性训练有效地控制了训练集周围的LLV,但这一性质并不能推广到测试集”这个问题,我们提出以下解决方案

如果我们可以直接访问整个分布Pdata,而不是通过有限的训练数据估计他,这样是不是可以解决上述问题。

这引出了我们的第一个动机:

我们可以使用GAN来学习Pdata,然后对所学习的分布执行对抗性训练过程吗?

如果是这样,那么训练一个更鲁棒的分类器就变得很简单了。(因为训练集和测试集都是服从真实分布Pdata的,我们在之前的对抗性训练中没有真正掌握整个数据集的分布,只掌握了有限的训练集的分布。所以在进行对抗训练的时候,只能在有限的训练集的分布中找到对抗样本,然后根据经验将训练集的分布替代整个数据集的分布,这样的分布是不完整的,所以在测试集中不能有好的表现,而如果我们学习整个数据集的真实分布Pdata,那我们就可以训练出一个既适用于训练集,也适用于测试集的分类器,这样的分类器鲁棒性自然而然就提高了)

在这里,我们给出了这样做的损失函数,即先用GAN学习整个数据集的分布Pdata,再进行对抗性训练。它可以被视为对原始训练数据GAN合成数据的复合鲁棒优化:

首先,Lreal是对给出的训练集的真实数据分布进行对抗性训练的损失,Lfake是GAN学习到的分布,然后进行合成的数据进行对抗性训练的损失,我们将这两个损失合到一起,就是本文框架的总损失。我们使用系数λ来平衡这两种损失。

为了优化目标函数(6),我们采用与传统对抗性训练相同的随机优化算法。也就是说,在每次迭代中,我们从训练或合成数据中提取样本,找到对抗性示例,然后计算对抗性示例的随机梯度。

洞察通过强大的鉴别器加速GAN训练

如果即使是一个训练有素的深度分类器也很容易被对抗性例子“欺骗”,那么其他分类器也是如此。回想一下,在条件GANs中,如AC-GAN[28],鉴别器不仅应该对真实/虚假图像进行分类,还应该为输入图像分配正确的标签。

如果鉴别器对对抗性攻击不够鲁棒,那么生成器可能会利用其弱点,以类似的方式“欺骗”鉴别器。此外,即使鉴别器可以被训练来识别一种对抗性模式,生成器也会很容易地发现其他对抗性模式,其他的对抗性模式还是会让鉴别器分类错误。

因此,极大极小博弈永远不会停止。对此,我们提出以下假设:

快速GAN训练依赖于具有鲁棒性的鉴别器(即如果想加快GAN的训练速度,我们需要一个高鲁棒性的鉴别器,只有它能准确地对数据进行分类,GAN的极大极小博弈才会快一点结束)

在我们用实验验证这一假设之前,我们简要回顾一下GAN的发展:

  1. GAN的第一个版本训练起来并不稳定。
  2. WGAN添加了一个梯度正则化来强制鉴别器是全局1-Lipschitz连续的。
  3. 后来,SN-GAN[26]通过用谱归一化代替梯度正则化来改进WGAN,再次在鉴别器中全局增强1-Lipschitz连续性。

我们看到,这两种方法都隐含地使鉴别器对对抗性攻击具有鲁棒性,因为小的Lipschitz值(例如1-Lipschiitz)能够对对抗性扰动具有更强的不变性。

尽管在上述通过约束小的Lipschitz值来提高鉴别器的鲁棒性的研究取得了成功,但我们想知道是否有可能对鉴别器进行更弱但更聪明的正则化。毕竟,如果正则化效应太强,那么模型的表现力就会受到限制。

具体地说,我们需要在图像流形的局部找到一个小的Lipschitz值,而不是全局严格的一个Lipschitz-函数。

正如我们将看到的,在图像流形的局部上找到一个小的Lipschitz值的这个目标可以通过对鉴别器进行对抗性训练来方便地完成。

通过上述方式,我们可以在鉴别器的鲁棒性和生成器的学习效率之间建立联系,如图3所示。

图3:比较鲁棒和非鲁棒鉴别器。为了简单起见,我们将它们放在一个图中。

从概念上讲,如果我们要将生成器G生成的伪图像输入到鉴别器D中,使判别器进行错误地判断,那么我们需要将输入的伪图像x0加入对抗性扰动δ,大部分加入扰动的方法都倾向于使所有图像接近决策边界,这样才能使鉴别器做出错误判断,从图中我们可以看到,对于下方的非鲁棒性鉴别器,即使是微小的扰动δ也会将伪图像x0移动到决策边界上:xadv=x0+δ,并导致错误分类。相反,对于鲁棒鉴别器,这样的扰动δ预计会大得多。

如图3所示,我们知道D(x+δ)的展开式如下:

D(x+δ)≈D(x)+D’(x)·δ≈D(x)。

我们可以看出,如果鉴别器D(x)不具有鲁棒性,如图3的下方,则鉴别器D(x)具有较大的LLV(等效地,具有较大的||D’(x)||),那么根据展开式,比较小的的扰动δ也可以让D(x0+δ)和D(x0)差距较大,使得x0+δ可能超出了Fake images的范围,使得鉴别器错误地将xadv判别为真实图像x。

如果鉴别器D(x)具有鲁棒性,则鉴别器D(x)具有较小的LLV(等效地,具有较小的||D’(x)||),只有扰动δ很大的情况下,才能让D(x0+δ)和D(x0)差距较大,这样才能有机会让x0+δ超出Fake images的范围,此时才能让扰动的伪图像xadv=x0+δ可能被鉴别器错误地分类为真实图像x。否则扰动的伪图像xadv=x0+δ不太可能被鉴别器错误地分类为真实图像x。

与对抗性攻击的设置不同,在GAN训练中,“攻击者”现在是由w∈Rd参数化的生成网络G(z;w)。

假设在时间t时刻,鉴别器可以成功识别伪图像,即,对于t时刻的所有z,我们的鉴别器输出D(G(z;wt))≈0。

那么在t+1时刻,生成器应该做什么来使D(G(z;wt+1))≈1?(因为生成器和鉴别器的最大最小博弈的最终目标就是让生成器不断优化参数,使得鉴别器将生成器生成的伪图像错误地分类成真实图像,所以我们提出疑问,在t+1时刻生成器对参数w做了什么样的更新才能使鉴别器错误地进行分类)

我们可以假设D(x)和G(z;w)的Lipschitz具有连续性,然后进行如下步骤推测出生成器对参数w进行了什么样的更新

我们在第一行列出了我们需要的结果,即我们要使D(G(z;wt+1))≈1,且D(G(z;wt))≈0。所以他们的差≈1。

第二行,我们根据公式f(x2)-f(x1)=f’(x)(x2-x1)将第一行的公式展开成第二行公式。

第三行,我们继续用公式f(x2)-f(x1)=f’(x)(x2-x1)将第二行右侧式子展开,得到第三行式子。

第四行,我们用LD,LG分别表示鉴别器D和生成器G的Lipschitz常数。将第三行的导数替代,得到第四行式子。

正如我们所看到的,生成器权重w的更新与LD和LG成反比:

如果鉴别器D缺乏鲁棒性,这意味着LD很大,那么生成器就只能将先前的权重wt进行小的移动得到wt+1,而这样的权重更新使得生成器G收敛非常缓慢。这验证了我们的假设,即快速GAN训练依赖于鲁棒鉴别器。在实验部分,我们在所有两个实验中都观察到了相同的现象,为这一假设提供了坚实的支持。

Rob GAN:学习图像流形的对抗性训练

受第上面两个洞察的启发,我们提出了一个将生成器、鉴别器和对抗性攻击者组合到一个框架中的系统。

在这个框架内,我们对生成器和鉴别器进行端到端训练:生成器向鉴别器提供伪图像;同时,从训练集中采样的真实图像在发送到鉴别器之前,经过PGD攻击算法的预处理。网络结构如图1所示。

图1:培训过程示意图。这类似于标准GAN训练,即交替地更新生成器G和鉴别器D网络。主要区别在于,每当将真实图像馈送到D网络前,我们首先调用对抗性攻击PGD,将对抗攻击后的图片输入到D,因此鉴别器是用对抗性示例训练的。

鉴别器和新的损失函数

鉴别器可以具有类似AC-GAN的标准架构。在每次迭代中,它都会区分真实图像和伪图像。当基本事实标签可用时,它还预测图像属于什么类。在本文中,我们只考虑论文[25,28,27]中提出的条件GANs,它们的架构差异如图4所示。

注:尽管SN-GAN(谱归一化[26]和投影鉴别器[27]的组合)在他们的论文中表现得更好,但我们还是简单地选择了AC-GAN。

我们选择AC-GAN的原因是SN-GAN的鉴别器依赖于实际标签,并且它们的目标函数并不是为了鼓励高分类的准确率而设计的。但令人惊讶的是,尽管在他们的论文中AC-GAN被SN-GAN以很大的优势击败,但由于在洞察2中讨论的原因(即具有高鲁棒性的鉴别器可以加速GAN训练),在插入对抗性训练模块后,AC-GAN的性能与SN-GAN相匹配甚至超过SN-GAN(我的理解是在插入对抗性训练后AC-GAN的鉴别器比SN-GAN的鉴别器鲁棒性更好)。

图4:比较鉴别器的体系结构。我们的架构类似于AC-GAN[28],但通过将式子(8)与式子(9)进行比较,我们的架构和AC-GAN的架构在损失函数方面有所不同。(x,y)是(图像,标签)对,Φ和ψ表示不同的网络块。可以看出,在AC-GAN和我们的架构中,鉴别器有两个分支,一个用于鉴别“真/假”图像(S),另一个用于将图像分类(C)。

简单介绍一下AC-GAN的鉴别器结构和SN-GAN的鉴别器结构:

AC-GAN显示的鉴别器有两部分输出,一部分和传统的GAN一样,表示输入数据真实的概率,用adversarial loss指导;另一部分为分类输出,表示数据属于各类的概率,用classification loss指导。

SN-GAN鉴别器中,输入图片首先经过网络 Φ提取特征,然后把特征分成两路:一路与经过编码的类别标签y做点积(inner product),另一路再通过网络ψ 映射成一维向量。最后两路相加,作为神经网络最终的输出。注意这个输出类似于W-GAN,不经过sigmoid函数映射,输出值越大代表图像越真实。

我们还改进了AC-GAN的损失函数。回想一下,论文AC-GAN[28]中由判别损失LS和分类损失LC定义的原始损失:

其中,Xreal/fake是任何真实图像/伪图像,S是鉴别器输出,C是分类器输出。c是真实图像Xreal对应的类别。

LS是鉴别器的输出S将真实图像Xreal判别为真的概率以及将生成器G生成的伪图像Xfake判别为假的概率的和。

LC是分类器的输出C将真实图像Xreal分类为c的概率以及将生成器G生成的伪图像Xfake分类为c的概率的和。

AC-GAN的损失函数

鉴别器D的目标是使LC+LS最大化,即鉴别器的目标是将真实图像Xreal判别为真,将生成器G生成的伪图像Xfake判别为假的概率升到最高,并且将真实图像Xreal和伪图像Xfake都分类成c的概率升到最高

生成器G的目标是最大化LC−LS,即首先让LC最大化,努力让分类器的输出C将真实图像Xreal和伪图像Xfake都分类成c的概率升到最高,然后让LS最小化,即生成器G的目标是将真实图像Xreal判别为真,将生成器G生成的伪图像Xfake判别为假的概率降到最低

根据这个公式,我们发现G和D都被训练来增加LC,这是有问题的,因为即使是G(z;w)生成伪图像,D(x)也必须努力对它们进行分类,(D(x)对伪图像进行分类具有高损失),即本文认为鉴别器的分类器分支是没有必要将精力浪费在分类生成器G生成的伪图像上的,分类器专注于分类真实图像就行。并且在这种情况下,相应的梯度项▽LC还鉴别器贡献不增长信息量的方向,本文认为这是没有意义的。

本文改进的损失函数:

为了解决这个问题,我们对LC进行了拆分,以分离真实图像和伪造图像的贡献,拆分结果如下:

在对LC进行拆分后:

鉴别器D最大化LS+LC1,即我们努力让分类器的输出C将真实图像Xreal分类成c的概率升到最大,然后将真实图像Xreal判别为真,将生成器G生成的伪图像Xfake判别为假的概率升到最高

生成器G最大化LC2-LS,即生成器的目标是努力让分类器的输出C将伪图像Xfake分类成c的概率升到最大,并且将真实图像Xreal判别为真,将生成器G生成的伪图像Xfake判别为假的概率降到最低

注意,新的目标函数确保鉴别器只专注于对真实图像进行分类区分真实/虚假图像,并且鉴别器中分类器这个分支不会被虚假图像分散注意力。

生成器:

与传统的GAN训练类似,生成器定期更新,以模拟真实数据的分布,这是提高分类器鲁棒性的关键因素。

如第洞察一所示,来自对抗性训练的模型在训练集上表现良好,但在测试集上很脆弱。直观地说,这是因为在对抗性训练过程中,网络只“看到”存在于所有训练样本的小区域中的对抗性示例,而并没有关注数据流形中训练样本之外的那些图像附近小区域的对抗性示例

数据增强是解决这一问题的自然方法,但传统的数据增强方法,如图像抖动、随机调整大小、旋转等[21,16,36,40,18]都是简单的几何变换,它们很有用,但不够有效:即使在随机变换之后,训练数据的总数仍远少于所需。

相反,我们的系统具有来自生成器的无限样本,用来为对抗性训练提供连续支持的概率密度函数。与传统的增广方法不同,如果想要达到(1)中的平衡,那么我们可以证明(1)的解将是

(用下面的推导过程解释我们的证明)

回顾一下(1):

根据上图公式2的结果,我们知道D*G(x)的具体数值该如何计算,我们需要GAN达到平衡,而平衡的目标就是让G可以生成与真实分布相近的伪图像,以达到以假乱真的结果,让鉴别器分不出真伪,即,我们需要让D(x)和D(G(x))几乎都等于0.5,这就需要Pfake=Preal,即生成器G学习到了真实数据分布,此时分类器可以在真实分布Preal上训练。(注,我们下面提到的Preal就是图片上公式(2)的Pdata,Pfake就是图片上公式(2)的Pg)

微调分类器: 在端到端训练后,鉴别器学会了将判别损失和分类损失最小化。

(端到端训练:它是指在学习过程中不进行分模块或分阶段训练,直接优化任务的总体目标。端到端的学习模式可以利用深度神经网络来实现,将原始数据通过多层非线性变换,直接得到期望的输出。

端到端的学习模式有以下几个优势:

1.简化了机器学习的流程。传统的机器学习流程通常包括数据预处理、特征工程、模型选择、参数调优等多个步骤,每个步骤都需要人为地设计和优化。而端到端的学习模式只需要将原始数据输入到深度神经网络中,让网络自动地从数据中学习特征和规律,输出结果。

2.提高了模型的表达能力。深度神经网络可以通过多层非线性变换,将原始数据映射到更高层次、更抽象的特征空间中,从而捕捉数据中更复杂、更隐含的关系。相比于传统的机器学习方法,深度神经网络可以表达更复杂、更非线性的函数,从而提高模型的拟合能力和泛化能力。

3.提供了一种通用的框架。端到端的学习模式不需要针对不同的任务或领域进行特定的设计或调整,只需要根据输入和输出的形式选择合适的网络结构和损失函数,就可以进行训练和预测。这样可以方便地实现跨系统或跨领域的应用,例如图像识别、语音识别、自然语言处理等)

如果我们想训练鉴别器进行纯多类分类任务,我们需要通过组合伪图像和真实图像来对分类器进行微调,并仅对鲁棒性分类损失进行SGD(梯度下降法)的几个步骤(如图5所示):

图5:微调鉴别器的图示。

其中

即我们先将真实图像和生成器生成的伪图像进行对抗性攻击得到xadv,然后将得到的xadv带入到分类器的损失函数中。这里,函数f(x;w)只是鉴别器D(x)的分类器分支,正如我们所看到的,在整个微调阶段,我们迫使鉴别器专注于分类任务,而不是判别任务。实验表明,微调步骤在很大程度上提高了精度。

实验结果:

我们在CIFAR10和ImageNet数据数据集的子集上进行了实验。具体来说,我们从原始ImageNet数据集中提取类yi,使得yi∈np.arange(151,294,1)(np.arange函数用于创建具有等差数列的数组。可以通过指定其步幅和范围内生成的元素数量来创建等距离的数字序列。上述yi就是一个从151到293,步幅为1的等差数组151,152,153...)

ImageNet数据中共有1000个类,我们从中采样了294−151=143个类。我们选择这些数据集是因为:

1.当前最先进的GAN,即SN-GAN[27]也在这些数据集上工作

2.当前最新的对抗性训练方法[23]无法扩展到ImageNet-1k数据。

为了进行公平的比较,我们复制了SN-GAN中生成器和鉴别器的所有网络架构。其他重要因素,如学习率、优化算法和每个周期中鉴别器更新的次数也保持不变。

唯一的修改是我们放弃了特征投影层(SN-GAN中的结构),并且应用了辅助分类器(AC-GAN的结构)。

即我们将SN-GAN中Φ上方的结构ψ,inner product,以及求和器⊕去掉,只保留adversarial loss,然后加上一个辅助分类器,辅助分类器输出数据属于各类的概率,用classification loss指导。

鉴别器的性能:

我们实验表明,Rob-GAN比最先进的对抗性训练模型产生了更强大的鉴别器

1.微调的效果我们首先将进行微调的Rob GAN模型与不进行微调的Rob GAN模型进行比较,以验证我们在上面提到的微调提高了分类精度。为此,我们比较了两组模型:

在第一组模型中,我们直接从鉴别器中提取辅助分类器,然后用辅助分类器来对图像进行分类

在第二组中,我们将微调策略应用于已经经过预训练的模型,如图5所示。结果如图6(左)所示,图6左侧两张图表明微调是有用的。

2.准确率差距gap比较:有或没有数据扩充我们检查使用伪数据对数据进行数据增强,然后再进行对抗性训练(公式6)是否真的缩小了泛化差距。为此,我们绘制了与图2相同的图,只是现在的分类模型是具有微调的RobGAN的鉴别器。

我们比较了图6(右)中的准确率差距。显然,用对抗性训练真+假数据增强策略训练的模型效果非常好:它提高了PGD攻击下的测试精度,因此用对抗性训练真+假数据增强策略训练的模型在训练集/测试集之间的泛化差距不会像没有数据扩充的模型的泛化差距增加那么多。

图6:左侧两个图:微调对预测准确性的影响(左:CIFAR10,中:ImageNet-64px)。

右图:比较对抗性训练模型和GAN数据增强模型之间的准确性差距。

下面简单介绍一下图6:

第一张图是在CIFAR10数据集上训练,横坐标是攻击强度,纵坐标是模型准确率,实线w/ fine-tune即with/ fine-tune,意思是有微调的分类器,虚线w/o fine-tune即without fine-tune,意思是没有微调分类器。

第二张图是在ImageNet-64px数据集上训练,横纵坐标以及实线虚线都和第一张一样。

第三张图横坐标Distortion是失真的意思,让图6和图2进行比较,横坐标也可以是攻击强度,我们知道攻击强度越高失真越高,纵坐标是训练集和测试集之间的准确率差距。实线是使用伪数据对数据进行数据增强,虚线是没有数据增强的准确率差距,虚线和图2是一模一样的。

鉴别器的鲁棒性:比较有/没有数据扩充的鲁棒在本实验中,我们将RobGAN训练的鉴别器的鲁棒性与论文[23]中最先进的对抗性训练算法进行了比较。如最近的文献[4]所示,论文[23]的对抗性训练在对抗性攻击下的鲁棒性达到了最先进的性能。由于对抗性训练相当于没有GAN组件的Rob GAN,为了公平比较,我们保持所有其他组件(网络结构)相同。

为了测试不同模型的鲁棒性,我们选择了广泛使用的L∞ PGD攻击”[23],但其实其他基于梯度的攻击预计也会产生与本文所选的L∞ PGD攻击相同的结果。

如公式(2)中所定义的对抗性扰动,我们将L∞扰动设置为δmax∈np.arange(0,0.1,0.01)。即δmax是数列(0,0.01,0.02...0.09)

另一个小细节是,我们将图像缩放到[-1,1],而不是通常的[0,1]。这是因为生成器总是有一个tanh()输出层,这样生成器输出的图像就在[-1,1]内,所以我们需要做一些相应的调整。

Tanh函数

我们在表1中给出了结果,这清楚地表明我们的方法即具有微调的鉴别器的Rob GAN(Rob GAN w/FT)比最先进的防御算法性能更好。

†表示ImageNet的143类子集

表1:我们的模型在L∞PGD攻击下的准确率。“FT”是指微调。

表格中用了两个数据集,在CIFAR10数据集上,我们展示了δmax为0,0.02,0.04,0.08时的准确率,可以看到上面一行是最先进的对抗性训练算法的准确率,下面一行是我们具有微调鉴别器的Rob GAN的准确率,除了δmax为0的时候,其他情况下本文方法的准确率都更高。

在ImageNet-64px(64像素)数据集上,我们展示了δmax为0,0.01,0.02,0.03时的准确率,可以看到上面一行是最先进的对抗性训练算法的准确率,下面一行是我们具有微调鉴别器的Rob GAN的准确率,所有情况下本文方法的准确率都更高。

生成器的性能:

接下来,我们展示了通过在GAN训练中引入对抗性攻击,Rob GAN提高了生成器的收敛性。

我们改进的被离的分类损失的影响在这里,我们展示了公式(9)中描述的被分离的分类损失的影响。回想一下,如果我们应用公式(8)中损失,那么得到的模型就是ACGAN。

但是我们知道,AC-GAN是具有缺陷的,在实践中AC-GAN很容易丢失模式,即生成器很容易忽略噪声输入z,并根据标签y生成一个固定的图像,然后在以后的生成中一直输出这一张固定图像。在许多以前的工作中都观察到了这种缺陷[17,24,19]。

在本文的消融实验中,我们在图7中比较了上述两个损失函数训练的生成图像。显然,我们所提出的新损失优于AC-GAN损失。

(消融实验:通常用于神经网络,尤其是相对复杂的神经网络,如R-CNN。我们的想法是通过删除部分网络并研究网络的性能来了解网络,消融研究对于深度学习研究至关重要。理解系统中的因果关系是产生可靠知识的最直接方式(任何研究的目标)。消融是一种非常省力的方式来研究因果关系。)

图7:将我们修改的损失(左)与原始AC-GAN损失(右)训练的生成图像进行比较。为了公平比较,两个网络都是通过插入对抗性攻击来训练的。我们可以看到用AC-GAN损失生成的图像更扭曲,更难分辨。

 生成器的质量和收敛速度: 最后,我们评估了在两个数据集上训练的生成器的质量:ImageNet-64px数据集和ImageNet-128px数据集。

我们将其与SN-GAN获得的生成器进行了比较,SN-GAN已被公认为用于学习数百个类的最先进的条件GAN模型。请注意,SN-GAN还可以学习整个ImageNet数据集(1000个类)的条件分布,不幸的是,由于时间和硬件限制,我们无法匹配此实验。

为了显示在有/没有对抗性训练和有/没有新损失的情况下的性能,我们在图8中报告了所有四种组合的性能。请注意,“原始损失”相当于AC-GAN的损失。

图8:ImageNet数据集的结果,左:64px(64像素),右:128px(128像素)。在这里,我们总共尝试了四种组合:有或没有对抗性训练,新的损失或原始损失。

图中横坐标是迭代次数,纵坐标是初始得分。蓝色的是新损失和有对抗性攻击,橙色是新损失并且没有对抗性攻击,绿色是原始损失和有对抗性攻击,红色是原始损失。黑色横线是SN-GAN的初始得分。

我们有三个发现:

  1. 与SN-GAN相比,我们的模型(新损失+对抗性)有效地学习了高质量生成器:在这两个数据集中,我们的模式仅在25代(64px)或50代(128px)内就超过了SN-GAN的初始得分。
  2. 当将新损失与原始损失进行比较时,我们发现新损失表现更好。
  3. 利用新的损失,对抗性训练算法具有很大的加速效果。即在迭代次数很小的时候就已经达到了最好的效果。

结论:我们证明了生成器G可以改进对抗性训练,而对抗性攻击者可以改进GAN训练。基于这两个见解,我们提出在同一系统中结合生成器、鉴别器和对抗性攻击者,进行端到端训练。与最先进的模型相比,所提出的系统同时带来了更好的生成器和更鲁棒的鉴别器。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值