文章链接:链接
文章题目:《Rob-GAN: Generator, Discriminator, and Adversarial Attacker》
项目地址:源码
本文提出一种新的框架Rob-GAN,该框架创新性的将对抗学习(Adversarial learning)和生成对抗网络(Generative Adversarial Networks)组成一个新的模型,其中将生成器(Generator)、判别器(Discriminator)和对抗攻击者(Adversarial attacker)组合训练,通过这种端到端训练过程,能同时提高GAN训练的收敛速度,合成图像的质量以及判别器的鲁棒性。
基于这些发现,通过强制判别器在图像流形上保持鲁棒性,设法加快并稳定了GAN训练周期。 同时,由于在健壮的训练过程中使用了数据增强,因此生成器提供了有关数据分布的更多信息。 因此,我们得到了更强大的分类器,可以更好地归纳到看不见的数据。
模型整体的结构可以看作是GAN和Adversarial attacker的一个组合形式。GAN部分继承来自SNGAN,只有很小的改变,Adversarial attacker使用PD-attack来产生对抗样本,模型整体结构如下所示:
GAN损失函数如下:
min G max D { E x ∼ D t r [ log D ( x ) ] + E z ∼ P z [ log ( 1 − D ( G ( z ) ) ) ] } \underset{G}{\min}\, \underset{D}{\max}\left\{\underset{x\sim \mathcal D_{tr}} \mathbb E[\log D(x)]+\underset{z\sim \mathcal P_{z}} \mathbb E[\log(1-D(G(z)))] \right \} GminDmax{x∼DtrE[logD(x)]+z∼PzE[log(1−D(G(z)))]}
对于文中实验Adversarial attacker选择的是PGD-attack,它的损失函数可以简单的总结为:
为:
δ : = arg max ∥ δ ∥ ≤ δ max ℓ ( f ( x + δ ; w ) , y ) \delta :=\underset{\|\delta\| \leq \delta_{\max }}{\arg \max } \ell(f(x+\delta ; w), y) δ:=∥δ∥≤δmaxargmaxℓ(f(x+δ;w),y)
其中 f ( ⋅ ; w ) f(\cdot ; w) f(⋅;w)是由权重 w w w参数化的网络, ℓ ( ⋅ , ⋅ ) \ell(\cdot,\cdot) ℓ(⋅,⋅)是损失函数,为方便起见, ∣ ∣ ⋅ ∣ ∣ ||\cdot|| ∣∣⋅∣∣作为 ℓ ∞ \ell_∞ ℓ∞-norm,但是值得注意是,其他规范也适用。上面公式的想法是在 ℓ ∞ \ell_∞ ℓ∞球中找到点 x a d v : = x + δ x_{adv}:= x +\delta xadv:=x+δ,以使 x a d v x_{adv} xadv的损失值最大化。
Attacker希望通过对输入的图像加上一些小的扰动,就可以使得分类器给出和原始标签完全不同的类判别结果。判别器希望更好的把握数据的真实分布,提高本身的鲁棒性。有攻击自然就有防御,对于防御者来说,它的损失函数如下所示:
min w E ( x , y ) ∼ P data [ max ∥ δ ∥ ≤ δ max ℓ ( f ( x + δ ; w ) , y ) ] \min _{w} \underset{(x, y) \sim \mathcal{P}_{\text { data }}}{\mathbb{E}}\left[\max _{\|\delta\| \leq \delta_{\text { max }}} \ell(f(x+\delta ; w), y)\right] wmin(x,y)∼P data E[∥δ∥≤δ max maxℓ(f(x+δ;w),y)]
接下来看看作者是如何提出Rob-GAN。
提出了一个名为Rob-GAN的框架,用于在存在对抗性攻击时共同优化生成器和判别器,生成器会生成伪造的图像来欺骗判别器; 对抗攻击使真实的图像扰乱了判别器,并且判别器希望最大程度地减少假冒和对抗图像下的损失。但是为什么我们要将这三个组成部分放在一起? 在研究细节之前,我们首先提出两个重要的动机:
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\, I)GAN为什么可以提高对抗性训练型判别器的鲁棒性?
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\, II) 为什么对抗攻击者可以改善GAN的训练?
Insight I: The generalization gap of adversarial training — GAN aided adversarial training
对于现有的很多对抗防御的方法来说,它们可以在小的训练集上得到一鲁棒性较好的判别器,但是一旦在测试集上使用时,性能往往会有大幅的下降,并且这种现象在较大的数据集(如ImageNet)上更加显著(见下图)。为什么会出现这么巨大泛化性能的差距呢?
为了使我们的模型对对抗失真具有鲁棒性,需要在真实数据分布 P d a t a P_{data} Pdata上使用较小的LLV(local Lipschitz value)。 而对于LLV的约束可以表示为一个复合损失最小化问题:
min w E ( x , y ) ∼ P data [ ℓ ( f ( x ; w ) , y ) + λ ⋅ ∥ ∂ ∂ x ℓ ( f ( x ; w ) , y ) ∥ 2 ] \min _{w} \underset{(x, y) \sim \mathcal{P}_{\text { data }}}{\mathbb{E}}\left[\ell(f(x ; w), y)+\lambda \cdot\left\|\frac{\partial}{\partial x} \ell(f(x ; w), y)\right\|_{2}\right] wmin(x,y)∼P data E[ℓ(f(x;w),y)+λ⋅∥∥∥∥∂x∂ℓ(f(x;w),y)∥∥∥∥2]
实际上,我们并不知道真实数据分布 P d a t a P_{data} Pdata; 相反,我们使用经验分布代替真实数据分布,结果如下所示:
min w 1 N t r ∑ i = 1 N t r [ ℓ ( f ( x i ; w ) , y i ) + λ ⋅ ∥ ∂ ∂ x i ℓ ( f ( x i ; w ) , y i ) ∥ 2 ] \min _{w} \frac{1}{N_{\mathrm{tr}}} \sum_{i=1}^{N_{\mathrm{tr}}}\left[\ell\left(f\left(x_{i} ; w\right), y_{i}\right)+\lambda \cdot\left\|\frac{\partial}{\partial x_{i}} \ell\left(f\left(x_{i} ; w\right), y_{i}\right)\right\|_{2}\right] wminNtr1i=1∑Ntr[ℓ(f(xi;w),yi)+λ⋅∥∥∥∥∂xi∂ℓ(f(xi;w),yi)∥∥∥∥2]
如果我们拥有足够多的数据,以及假设集足够的大,理论上使用先验分布的模型得到的效果最终会逼近于采用真实数据分布的模型。那么使用先验分布不会影响模型的效果,如果可以将对局部LLV值得约束泛化到测试集上,那么就可能会解决这种巨大泛化差距的问题。
为了验证这个猜想,作者分别对训练集和测试集的样本计算了Lipschitz值,如下所示:
从上图我们可以看出,在训练集和测试集上,随着迭代次数的增多,Lipschitz值上同样也存在巨大的差距,因此我们可以得出这样的结论:在训练集上有效的约束LL值,模型的效果并不能泛化到测试集上!
如果不是采用上述的约束LLV值的方式,在有限的数据集上来逼近最优模型,而是直接从 P d a t a P_{data} Pdata中进行采样呢?而这不正是GAN的思想嘛?因此,一个很自然的想法就是:是否可以利用GAN学习 P d a t a \bold P_ \bold{data} Pdata然后对所学分布进行对抗性训练呢?如果可行的话,我们就可以使用GAN加对抗性训练的方式得到一个鲁棒性更好的判别器。因此损失函数可以看为对原始训练数据和合成的数据复合的形式,如下所示:
min w L real ( w , δ max ) + λ ⋅ L fake ( w , δ max ) L real ( w , δ max ) ≜ 1 N tr ∑ i = 1 N tr max ∥ δ i ∥ ≤ δ max ℓ ( f ( x i + δ i ; w ) ; y i ) L fake ( w , δ max ) ≜ E ( x , y ) ∼ P fake max ∥ δ ∥ ≤ δ max ℓ ( f ( x + δ ; w ) ; y ) \begin{array}{l}{\min _{w} \mathcal{L}_{\text { real }}\left(w, \delta_{\max }\right)+\lambda \cdot \mathcal{L}_{\text { fake }}\left(w, \delta_{\text { max }}\right)} \\ {\mathcal{L}_{\text { real }}\left(w, \delta_{\text { max }}\right) \triangleq \frac{1}{N_{\text { tr }}} \sum_{i=1}^{N_{\text { tr }}} \underset {\left\|\delta_{i}\right\| \leq \delta_{\text { max }}} {\max} \ell\left(f\left(x_{i}+\delta_{i} ; w\right) ; y_{i}\right)} \\ {\mathcal{L}_{\text { fake }}\left(w, \delta_{\text { max }}\right) \triangleq \underset{(x, y) \sim \mathcal{P}_{\text { fake }}}{\mathbb{E}}\underset{\|\delta\| \leq \delta_{\text { max }}} {\max}\ell(f(x+\delta ; w) ; y)}\end{array} minwL real (w,δmax)+λ⋅L fake (w,δ max )L real (w,δ max )≜N tr 1∑i=1N tr ∥δi∥≤δ max maxℓ(f(xi+δi;w);yi)L fake (w,δ max )≜(x,y)∼P fake E∥δ∥≤δ max maxℓ(f(x+δ;w);y)
其中,系数 λ \lambda λ用于平衡上面两个 L f a k e \mathcal{L}_{ fake } Lfake和 L f a k e \mathcal{L}_{ fake } Lfake损失。 为了优化目标函数,我们采用与对抗训练相同的随机优化算法。
Insight II: Accelerate GAN training by robust discriminator
设想一下,如果判别器的能力不强,或是鲁棒性不好的话,对抗样本就可以很容的骗过它,而且一旦生成器也采用和对抗样本类似的方式生成假样本,判别器不但无法判断出样本的真实类别,同时也无法判断出样本的真假,这样的话就永远无法抵达纳什均衡点,模型永远不会收敛。 因此,我们做出以下假设:Fast GAN training relies on robust discriminator.
而在稳定GAN训练过程的诸多技术中,虽然达到了稳定的效果,但同时也损害了模型的表达能力。我们希望的是能否采用一种较弱但是效果又好的正则化方法,实现两全其美的目的,即要求在图像的流形上有一个小的局部Lipschitz值,而不是一个严格的全局one-Lipschitz函数。而这可以通过对判别器进行对抗性训练很方便地完成,这样就可以将判别器的鲁棒性与生成器的学习效率联系起来。如下图所示:
如上图所示,如果对于图像的扰动 δ \delta δ很小,那么它满足的分布仍然是很大程度上和假样本的分布重合,这样判别就可以大概率的进行正确的判别。假设将Attacker也看做是一个生成器 G ( z ; w ) G(z;w) G(z;w),在时间t处,判别器可以成功识别出虚假图像,或者对所有噪音 z z z等效地等于 D ( G ( z ; w t ) ) ≈ 0 D\left(G\left(z ; w^{t}\right)\right) \approx 0 D(G(z;wt))≈0,那么下一时刻,attacker需要做什么来使得判别器无法正确判别生成的假样本,使得 D ( G ( z ; w t + 1 ) ) ≈ 1 D\left(G\left(z ; w^{t+1}\right)\right) \approx 1 D(G(z;wt+1))≈1呢?通过对 D ( x ) D(x) D(x)和 G ( z ; w ) G(z;w) G(z;w)连续性的Lipschitz连续性假设,我们可以得到一个下界,如下所示:
1 ≈ D ( G ( z ; w t + 1 ) ) − D ( G ( z ; w t ) ) ≲ ∥ D ′ ( G ( z ; w t ) ) ∥ ⋅ ∥ G ( z ; w t + 1 ) − G ( z ; w t ) ∥ ≲ ∥ D ′ ( G ( z ; w t ) ) ∥ ⋅ ∥ ∂ ∂ w G ( z ; w t ) ∥ ⋅ ∥ w t + 1 − w t ∥ ≤ L D L G ∥ w t + 1 − w t ∥ \begin{array}{l}{1\approx D\left(G\left(z ; w^{t+1}\right)\right)-D\left(G\left(z ; w^{t}\right)\right)} \\ {\lesssim\left\|D^{\prime}\left(G\left(z ; w^{t}\right)\right)\right\| \cdot\left\|G\left(z ; w^{t+1}\right)-G\left(z ; w^{t}\right)\right\|} \\ {\quad \lesssim\left\|D^{\prime}\left(G\left(z ; w^{t}\right)\right)\right\| \cdot\left\|\frac{\partial}{\partial w} G\left(z ; w^{t}\right)\right\| \cdot\left\|w^{t+1}-w^{t}\right\|} \\ {\quad \leq L_{D} L_{G}\left\|w^{t+1}-w^{t}\right\|}\end{array} 1≈D(G(z;wt+1))−D(G(z;wt))≲∥D′(G(z;wt))∥⋅∥∥G(z;wt+1)−G(z;wt)∥∥≲∥D′(G(z;wt))∥⋅∥∥∂w∂G(z;wt)∥∥⋅∥∥wt+1−wt∥∥≤LDLG∥∥wt+1−wt∥∥
进一步可以写做 ∥ w t + 1 − w t ∥ ∝ 1 L D L G \left\|w^{t+1}-w^{t}\right\| \propto \frac{1}{L_{D} L_{G}} ∥∥wt+1−wt∥∥∝LDLG1,其中 L D L_{D} LD 和 L G L_{G} LG 是常量,可以看出生成器参数的更新反比于左式的后一部分,也就是说,如果判别器的鲁棒性很差,对应的 L D L_{D} LD就会很大,因为它处于分母的位置,这是参数的变化量就相对很小,即收敛的速度就很慢,这就证明了判别器的鲁棒性对于生成器更新的速度起着至关重要的影响,同时也就显示了,在GAN中引入对抗学习的Attacker来增强判别器的鲁棒性对于加快收敛有着理论上的意义,而且作者也是实验中证明了它的可行性。
Rob-GAN
根据上面的分析,我们知道GAN和对抗学习的结合是可行的,将它们结合起来就是Rob-GAN。Rob-GAN模型的架构并不复杂,判别器的网络结构和损失函数直接使用ACGAN,如下所示:
其对应的损失函数如下所示:
L S = E [ log P ( S = real ∣ X real ) ] + E [ log P ( S = fake ∣ X fake ) ] L C = E [ log P ( C = c ∣ X real ) ] + E [ log P ( C = c ∣ X fake ) ] \begin{aligned} \mathcal{L}_{S}&=\mathbb{E}\left[\log \mathbb{P}\left(S=\operatorname{real} | X_{\text { real }}\right)\right]+\mathbb{E}\left[\log \mathbb{P}\left(S=\text { fake } | X_{\text { fake }}\right)\right] \\ \mathcal{L}_{C} &=\mathbb{E}\left[\log \mathbb{P}\left(C=c | X_{\text { real }}\right)\right]+\mathbb{E}\left[\log \mathbb{P}\left(C=c | X_{\text { fake }}\right)\right] \end{aligned} LSLC=E[logP(S=real∣X real )]+E[logP(S= fake ∣X fake )]=E[logP(C=c∣X real )]+E[logP(C=c∣X fake )]
对于Rob-GAN的判别器来说,它不仅要判别输入样本的真假,还要判别它所属的类别。但是如果生成的图像很糟糕的话,判别仍要花大量的精力去给出一个类别结果,而且此时分类的梯度信息对于判别器的更新并无帮助,因此将 L c \mathcal{L}_{c} Lc 分成如下的两部分:
L C 1 = E [ log P ( C = c ∣ X real ) ] L C 2 = E [ log P ( C = c ∣ X fake ) ] \begin{array}{c}{\mathcal{L}_{C_{1}}=\mathbb{E}\left[\log \mathbb{P}\left(C=c | X_{\text { real }}\right)\right]} \\ {\mathcal{L}_{C_{2}}=\mathbb{E}\left[\log \mathbb{P}\left(C=c | X_{\text { fake }}\right)\right]}\end{array} LC1=E[logP(C=c∣X real )]LC2=E[logP(C=c∣X fake )]
判别器最大化 L S + L C 1 \mathcal{L}_{S}+\mathcal{L}_{C_{1}} LS+LC1,生成器最大化 L C 2 − L S \mathcal{L}_{C_{2}}-\mathcal{L}_{S} LC2−LS,这样新的目标函数可确保判别器仅专注于对真实图像进行分类和区分真伪图像,并且分类器分支不会因伪图像而分散注意力。
对于生成器来说,如果样本很少的话,它只覆盖了数据流形的很小一部分,那么在测试时就会出现上述的第一个问题。传统的数据增强技术虽然能增加样本的数量,但是仍不能满足要求。而Rob-GAN使用生成器生成样本来不断的增加样本的数量,从而为对抗训练提供一个连续支持的概率密度函数。
如果可以到达纳什均衡点,即 P fake ( z ) = dist P real \mathcal{P}_{\text { fake }}(z) \stackrel{\text { dist }}{=} \mathcal{P}_{\text { real }} P fake (z)= dist P real ,此时分类器分支就相当于在真实样本集上训练,也就避免了上述的问题。
Fine-tuning the classifier:
经过端到端的训练,判别器学会了将区分损失和分类损失最小化。 如果我们要训练判别器执行纯多类分类任务,我们将需要通过组合伪造图像和真实图像并仅对鲁棒性分类损失进行几步SGD来对其进行微调,这样的过程称为fine-tuning。其模型如下所示:
其损失函数如下:
L D c l s ≜ E ( x , y ) ∼ P real ℓ ( f ( x a d v ; w ) , y ) + λ ⋅ E ( x , y ) ∼ P fake ℓ ( f ( x a d v ; w ) , y ) \begin{array}{l}{\mathcal{L}^{cls}_{\text { D }} \triangleq \underset{(x, y) \sim \mathcal{P}_{\text { real }}}{\mathbb{E}} \ell\left(f\left(x_{adv} ; w\right) ,y\right)} +\\ {\,\,\,\,\,\,\,\,\,\,\,\,\,\lambda · \underset{(x, y) \sim \mathcal{P}_{\text { fake }}}{\mathbb{E}}\ell(f(x_{adv}; w) ,y)}\end{array} L D cls≜(x,y)∼P real Eℓ(f(xadv;w),y)+λ⋅(x,y)∼P fake Eℓ(f(xadv;w),y)
作者首先验证fine-tuning和augmentation对于模型效果如何,从下图可以看出,fine-tuning和augmentation对于模型效果的提升是显著的。
下图显示了在CIFAR10和ImageNet子集(143个子集)实验数据集下不同大小的扰动下,模型在分类准确率上的表现。
下图,将Rob-GAN生成图像(左)与原始AC-GAN损失(右)进行比较。 为了公平地比较,都通过加入了对抗性攻击者来训练两个网络。 我们可以看到来自AC-GAN损耗的图像更加失真并且难以区分。
下图显示了Rob-GAN的三个优势:
1)与SN-GAN相比,我们的模型(new loss + adversarial)有效地学习了高质量的生成器:
2)在将新损失与原始损失进行比较时,我们发现新损失的表现更好。
3)利用新的损失,对抗训练算法具有很大的加速效果。