浅谈深度学习中的对抗样本及其生成方法

背景

深度学习模型被广泛应用到各种领域,像是图像分类,自然语言处理,自动驾驶等。以ResNet,VGG为代表的一系列深度网络在这些领域上都取得了不错的效果,甚至超过人类的水平。然而,Szegedy等人在2014年的工作(Intriguing properties of neural networks)揭示了深度网络的脆弱性(vulnerability),即在输入上做一些微小的扰动(perturbation)就可以令一个训练好的模型输出错误的结果,以下面这张经典的熊猫图为例:

panda picture
可以看到,左边的熊猫图,被模型以57.7%的置性度(confidence)分类为熊猫,加上一个微小的噪声之后,虽然图片肉眼看上去还是熊猫,但是却被模型以99.3%的置性度分类为长臂猿(gibbon)。
这个带噪声的样本被称作对抗样本(Adversarial Example),而生成对抗样本的方法便属于一类攻击。

这类攻击一般来说,可以分为两类:

  • 黑盒攻击
  • 白盒攻击

黑盒攻击一般是假定攻击者不能干涉训练过程,不知道模型的具体参数,只能获取最后的输出,即softmax层之后的概率向量。
而白盒攻击一般是认为攻击者可以获取到模型的具体参数,包括每一层卷积核的权重等。

进行黑盒和白盒分类之后,攻击还可以继续再分:

  • 有目标的攻击(targeted attack)
  • 无目标的攻击(untargeted attack)

有目标的攻击即攻击者有一个特定的类,希望生成对抗样本,使得模型分类为那个特定的类别。
而无目标攻击会比较简单一点,只需要令模型的分类结果错误即可,至于分成哪一个类别则无所谓。

主要内容

本文主要是回顾这些年来的一些著名的攻击工作,包括:FGSM,JSMA,C&W,PGD,MIM,BIM,EAD。讲一讲这些攻击的思路以及一些细节,并以最近的一些防御工作为例,看看这些攻击的效果。

FGSM

FGSM全名是Fast Gradient Sign Method,是2015年Goodfellow等人在ICLR15:Explaining and harnessing adversarial examples中提出来的,通过梯度的符号来生成对抗样本,核心公式为:
x a d v = x + ε ⋅ s i g n ( ∇ x ( J ( x , y ) ) ) x^{adv} = x + \varepsilon\cdot sign(\nabla_x(J(x,y))) xadv=x+εsign(x(J(x,y)))
其中, x , y x,y x,y分别是干净的样本以及对应的label,这里的label是指one hot向量。
函数 J ( ⋅ , ⋅ ) J(\cdot, \cdot) J(,)是交叉熵函数(cross-entropy), x a d v x^{adv} xadv则是 x x x对应的对抗样本。
函数 s i g n ( ⋅ ) sign(\cdot) sign()是符号函数,正数返回1,负数返回-1,0返回0。

交叉熵函数一般是在我们训练的时候会用到,作为最终的损失函数进行优化,这里直接利用损失函数的梯度,仿照反向传播的思路,对样本求梯度,使得损失函数变大。注意到这里我们计算交叉熵函数的梯度的时候,最后只取符号,代表一个变化的方向。参数 ε \varepsilon ε控制着噪声的多少,如果太大的话人眼也不可区分了,就不算是对抗样本了,一般可能设置成8/255。

JSMA

JSMA全名是Jacobian-based Saliency Map Attack,是2016年由papernot等人在“The Limitations of Deep Learning in Adversarial Settings”中提出来的。其思路主要是利用一个热力图,也就是方法名字中的Saliency Map来指导对抗样本的生成。给出其核心的公式:
S ( x , y ) [ i ] = { 0 , i f   ∂ F ( x ) y ∂ x i < 0   o r ∑ j ≠ y ∂ F ( x ) j ∂ x i > 0 ( ∂ F ( x ) y ∂ x i ) ∣ ∑ j ≠ y ∂ F ( x ) j ∂ x i ∣ , o t h e r w i s e S(x,y)[i]=\left\{ \begin{matrix} &0, &if\ \frac{\partial F(x)_y}{\partial x_i} \lt 0 \ or \sum_{j\neq y} \frac{\partial F(x)_j}{\partial x_i} >0\\ &(\frac{\partial F(x)_y}{\partial x_i})|\sum_{j\neq y} \frac{\partial F(x)_j}{\partial x_i}|, & otherwise\end{matrix} \right. S(x,y)[i]={0,(xiF(x)y)j=yxiF(x)j,if xiF(x)y<0 orj=yxiF(x)j>0otherwise
这便是热力图的生成方法,其中 F ( x ) F(x) F(x)表示模型的输出结果,而 F ( x ) j F(x)_j F(x)j则是指模型输出结果的第 j j j个位置的数值,通常也表示第 j j j个类别的置信度。 x i x_i xi可以理解为输出的第 i i i个像素点的值。
这个热力图的含义即,一旦在该像素上添加噪声之后,不能提高其他类别的置信度(偏导数大于0)或者不能降低真实类别的置信度(偏导数小于0),则不操作该像素。对于其他的情况,则使用两个偏导数的乘积作为值,代表其影响的程度。

在JSMA中,往往会先计算热力图,然后选取热力值最大的那个像素进行修改,反复迭代至成功攻击或者可操作的像素数目达到阈值。

C&W

C&W是两个人的人名的首字母组合而成的,即Carlini和Wagner在2017年的 “Towards Evaluating the Robustness of Neural Networks” 中提出来的。

对于以往的攻击形式,可以表述为:
m i n i m i z e   D ( x , x + δ ) s . t .    C ( x + δ ) = t x + δ ∈ [ 0 , 1 ] n minimize\ D(x, x+\delta) \\ s.t. \ \ C(x+\delta) = t \\ x + \delta \in [0,1]^n minimize D(x,x+δ)s.t.  C(x+δ)=tx+δ[0,1]n

其中 D ( x , x + δ ) D(x,x+\delta) D(x,x+δ)表示 x x x x + δ x+\delta x+δ之间的距离
该式子的意思即,找到一个最小的噪声,使得分类结果为目标分类 t t t

但是该种表述中的 C ( x + δ ) = t C(x+\delta) = t C(x+δ)=t过于非线性(Highly Non-Linear),导致优化可能出现问题。
于是将其改进为
m i n i m i z e   D ( x , x + δ ) s . t .    f ( x + δ ) ≤ 0 x + δ ∈ [ 0 , 1 ] n minimize\ D(x, x+\delta) \\ s.t. \ \ f(x+\delta) \leq 0 \\ x + \delta \in [0,1]^n minimize D(x,x+δ)s.t.  f(x+δ)0x+δ[0,1]n
进一步的,表述为
m i n i m i z e   D ( x , x + δ ) + c ⋅ f ( x + δ ) s . t .    x + δ ∈ [ 0 , 1 ] n minimize\ D(x, x+\delta) + c\cdot f(x+\delta) \\ s.t. \ \ x + \delta \in [0,1]^n minimize D(x,x+δ)+cf(x+δ)s.t.  x+δ[0,1]n
其中 c > 0 c>0 c>0

同时对于 x + δ x+\delta x+δ进行变换,令 x + δ = 1 2 ( t a n h ( ω ) + 1 ) x+\delta=\frac{1}{2}(tanh(\omega)+1) x+δ=21(tanh(ω)+1)
因为 0 ≤ x + δ ≤ 1 0\leq x+\delta\leq 1 0x+δ1,同时 − 1 ≤ t a n h ( ω ) ≤ 1 -1\leq tanh(\omega)\leq 1 1tanh(ω)1

最后,给出其攻击的核心式子:
f ( x ′ ) = m a x ( m a x { Z ( x ′ ) i : i ≠ t } − Z ( x ′ ) t , − k ) f(x')=max(max\{Z(x')_i:i\neq t\}-Z(x')_t, -k) f(x)=max(max{Z(x)i:i=t}Z(x)t,k)

其中 Z ( x ′ ) Z(x') Z(x)为softmax层之前的向量, f ( x ) f(x) f(x)用来作为目标函数进行优化,整个优化目标为
m i n i m i z e    ∣ ∣ 1 2 ( t a n h ( ω ) + 1 ) − x ∣ ∣ + c ⋅ f ( 1 2 ( t a n h ( ω ) + 1 ) ) minimize\ \ ||\frac{1}{2}(tanh(\omega)+1)-x||+c\cdot f(\frac{1}{2}(tanh(\omega)+1)) minimize  21(tanh(ω)+1)x+cf(21(tanh(ω)+1))

PGD

PGD全称是Projected Gradient Descent,是由Madry等人在2019年的“Towards Deep Learning Models Resistant to Adversarial Attacks”中提出来的。其思路类似于将FGSM多次迭代,形式如下:
x ( t + 1 ) = Π x + S ( x ( t ) + α ⋅ s i g n ( ∇ x ( J ( x , y ) ) ) ) x^{(t+1)}=\Pi_{x+\mathcal{S}}(x^{(t)}+\alpha\cdot sign(\nabla_x(J(x,y)))) x(t+1)=Πx+S(x(t)+αsign(x(J(x,y))))

重点是其中的一个投影操作 Π x + S ( ⋅ ) \Pi_{x+\mathcal{S}}(\cdot) Πx+S(),将 x x x修改后的值映射到其邻域。

BIM

BIM全称是Basic Iterative Method,由Kurakin等人于2017年的“Adversarial examples in the physical world”中提出来。其原理是,先找到一个分类置性度最低的类别,沿着这个类别的方向进行梯度计算,进而得到对应的对抗样本。

其定义了一个称之为迭代性最小可信类别(iterative least-likely class):
y L L = a r g m i n y { p ( y ∣ x ) } y_{LL}=argmin_y\{p(y|x)\} yLL=argminy{p(yx)}

其核心式子类似于迭代形式的FGSM,如下:
x n + 1 a d v = c l i p x , ε ( x n a d v + α ⋅ s i g n ( ∇ x ( J ( x n a d v , y L L ) ) ) ) x_{n+1}^{adv}=clip_{x,\varepsilon}(x_n^{adv}+\alpha\cdot sign(\nabla_x(J(x_n^{adv},y_{LL})))) xn+1adv=clipx,ε(xnadv+αsign(x(J(xnadv,yLL))))

c l i p x , ε ( ⋅ ) clip_{x,\varepsilon}(\cdot) clipx,ε()函数用于进行截断,使得整体的噪声不超过阈值 ε \varepsilon ε

MIM

MIM全称是Momentum Iterative Method,是有Dong等人在2018年的“Boosting Adversarial Attacks with Momentum”中提出来的,在FGSM的基础上,加入了迭代和动量项,形式如下:

g t + 1 = μ ⋅ g t + ∇ x ( J ( x t , y ) ) ∣ ∣ ∇ x ( J ( x t , y ) ) ∣ ∣ 1 x t + 1 = x t + α ⋅ s i g n ( g t + 1 ) g_{t+1} = \mu\cdot g_{t} + \frac{\nabla_x(J(x_t,y))}{||\nabla_x(J(x_t, y))||_1} \\ x_{t+1}=x_t+\alpha\cdot sign(g_{t+1}) gt+1=μgt+x(J(xt,y))1x(J(xt,y))xt+1=xt+αsign(gt+1)

EAD

EAD全称是Elastic-Net Attacks to DNNs,是由chen等人在2018年的“EAD: Elastic-Net Attacks to Deep Neural Networks via Adversarial Examples”中所提出。
其也是迭代的形式,有点类似MIM和C&W的结合。

其形式如下:
x ( k + 1 ) = S β ( y ( k ) − α k ∇ ( g ( y ( k ) ) ) ) y ( k + 1 ) = x ( k + 1 ) + k k + 3 ( x ( k + 1 ) − x ( k ) ) x^{(k+1)}=S_{\beta}(y^{(k)}-\alpha_k\nabla(g(y^{(k)}))) \\ y^{(k+1)}=x^{(k+1)}+\frac{k}{k+3}(x^{(k+1)}-x^{(k)}) x(k+1)=Sβ(y(k)αk(g(y(k))))y(k+1)=x(k+1)+k+3k(x(k+1)x(k))

其中, g ( x ) = c ⋅ f ( x ) + ∣ ∣ x − x 0 ∣ ∣ 2 g(x) = c\cdot f(x) + ||x-x_0||_2 g(x)=cf(x)+xx02

同时, f ( x ) = m a x ( m a x { Z ( x ) i : i ≠ t } − Z ( x ) t , − k ) f(x)=max(max\{Z(x)_i:i\neq t\}-Z(x)_t, -k) f(x)=max(max{Z(x)i:i=t}Z(x)t,k), 其中 Z ( x ) Z(x) Z(x)为softmax层之前的向量。

并且, [ S β ( z ) ] i = { m i n { z i − β , 1 } i f   z i − x 0 i > β x 0 i i f ∣ z i − x 0 i ∣ < β m a x { z i + β , 0 } i f   z i − x 0 i < − β [S_\beta(z)]_i=\left\{ \begin{matrix} min\{z_i-\beta, 1\} & if \ z_i-x_{0i} > \beta \\ x_{0i} &if |z_i-x_{0i}|<\beta \\ max\{z_i+\beta, 0\} & if\ z_i-x_{0i}<-\beta \end{matrix}\right. [Sβ(z)]i=min{ziβ,1}x0imax{zi+β,0}if zix0i>βifzix0i<βif zix0i<β

S β ( ⋅ ) S_\beta(\cdot) Sβ()函数本质上是对构造的对抗样本和干净的输入 x 0 x_0 x0进行比对和压缩,将变化范围压缩到0和1之间。

现有防御下攻击的性能比较

先以ICML19,Jun Zhu组的Improving Adversarial Robustness via Promoting Ensemble Diversity为例,这是一种利用模型之间的diversity来实现对抗鲁棒性的防御手段。
ICML19-Ensemble
该表格的数值为分类的正确率,可以看到在MNIST数据集上,PGD攻击似乎是效果最好的,BIM次之。在CIFAR-10数据集上,JSMA、BIM、PGD都比较不错。

对于简单数据集MNIST在对噪声有限制的情况下,防御效果都还不错。
对于复杂一点的数据集CIFAR-10则表现仍然不尽如人意。

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
生成对抗样本的具体操作通常包括以下步骤: 1. 首先,需要选定一个目标模型,该模型将被攻击。这个模型可以是任何类型的机器学习模型,例如卷积神经网络(CNN)或支持向量机(SVM)。 2. 接下来,需要选择一个生成对抗样本方法。其最常用的方法是使用生成对抗网络(GAN)或迭代梯度攻击(Iterative Gradient Attack)。 3. 对于GAN方法,需要训练一个生成器网络和一个判别器网络。生成器网络将输入的随机噪声转换为对抗样本,而判别器网络将对抗样本与真实样本进行区分。通过反向传播算法,可以训练这两个网络,使得生成器网络能够生成更加逼真的对抗样本,而判别器网络能够更好地区分对抗样本和真实样本。 4. 对于迭代梯度攻击方法,需要在原始样本上加入一些微小的扰动,使得扰动之后的样本被目标模型错误地分类。然后,根据目标模型的梯度信息,不断调整扰动的大小和方向,使得目标模型对扰动后的样本的分类结果更加错误。 5. 最后,需要验证生成对抗样本是否能够成功地欺骗目标模型。可以使用一些评估指标,如攻击成功率和对抗样本的失真程度,来衡量对抗样本的效果。 需要注意的是,生成对抗样本是一项非常复杂的任务,需要深入理解深度学习和计算机视觉领域的知识。同时,生成对抗样本只能欺骗特定的模型,不能保证它们在其他模型上同样有效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值