对抗训练+FGSM, FGM理解与详解

  • Post author:
  • Post category:其他




简介

本文旨在收集对抗训练相关的内容,并作出比较详细的理解和讲解。



一些基本概念的收集

本部分收集对抗训练相关的一些基本概念,并结合写下自己的理解。



对抗样本

我们对数据集中的数据,做一些比较小的、但却能带来很大杀伤力的改动。改动后的数据可能会让模型以较高的confidence输出一个错误的预测。


1



很多模型面对这种样本的时候,是很容易出错的。


2



也就是说,对抗样本应该是一些只加入了轻微扰动,却给模型带来较大负面影响的样本。



现实中的对抗样本

设原样本为



x

x






x






设引入扰动后的样本为



x

~

\tilde{x}














x







~










:





x

~

=

x

+

η

\tilde{x} = x + \eta














x







~









=








x




+








η







(此处的



η

\eta






η





为引入的扰动)

现实中我们怕的是,两个样本



x

x






x









x

~

\tilde{x}














x







~










在本质上没有区别,但模型觉得它俩不一样。

比如说,



x

x






x









x

~

\tilde{x}














x







~










是两张我们看起来长得一毛一样的图片,但实际上它们每一个像素的颜色上有无比轻微的、我们观察不太出来的区别,但就因为这些区别,模型认为这俩图片所在的class不一样,那这种情况是不能被我们人类接受的。

当然,”观察不太出来”是从人的角度出发、比较主观的。

我们还是用比较数字化的方式


1


来定义一下这种区别:

很多储存图片的设备,每个像素只存8个bit,也就是说,在设备储存精度之外的一些信息,对储存图片的设备来说是不重要的。

那我们就可以这样规定:只要



η

\eta






η





满足



η

<

=

ϵ

\Vert \eta \Vert_\infty<=\epsilon









η



































<






=








ϵ





(也就是说



η

\eta






η





这个向量里每个元素的绝对值中最大的也小于



ϵ

\epsilon






ϵ





), 我们就规定



x

x






x









x

~

\tilde{x}














x







~










的class是一样的。此处的



ϵ

\epsilon






ϵ





小到对我们的储存或者传感设备来说,



x

x






x









x

~

\tilde{x}














x







~










是一样的。

再换句话说,扰动



η

\eta






η





足够小,小到我们的储存或者传感设备感受不到。



产生”对抗样本问题”的原因


Goodfellow et al.



1


提出,模型的线性就可能足够让这类问题产生。

为什么模型的线性会让”对抗样本问题”产生?也就是说,为什么由于模型的线性,当我们对某些数据引入较小的扰动的时候,会带来较大的负面影响?


Goodfellow et al.



1


是这样解释的:

假如我们把



x

x






x





扔进一个线性模型,那我们就得到:





w

T

x

w^Tx







w










T









x







假如我们把



x

~

\tilde{x}














x







~










扔进一个线性模型,那我们就得到:





w

T

x

~

=

w

T

x

+

w

T

η

w^T\tilde{x} = w^Tx + w^T\eta







w










T

















x







~









=









w










T









x




+









w










T









η







也就是说,对于这两个样本,线性模型出来的结果之间就只差一个



w

T

η

w^T\eta







w










T









η





。假设



w

w






w





中一共有



n

n






n





个元素,每个元素平均值是



m

m






m





,那么这个



w

T

η

w^T\eta







w










T









η





的算出来的就会是在



n

m

ϵ

nm\epsilon






n


m


ϵ





这个水平(因为是点乘)。

那也就是说,我们的原始样本



x

x






x





和对抗样本



x

~

\tilde{x}














x







~










分别输入模型之后,得到的输出之间会相差约



n

m

ϵ

nm\epsilon






n


m


ϵ





。这个差距,是会随着



w

w






w





的维数(



n

n






n





)来线性增加的。也就是说,如果我们的问题是一个高维问题,就算加入的干扰不多,也会由于维数较多而给模型输出带来很大的影响。

这就是

Goodfellow et al.



1


解释线性模型能让”对抗样本问题”产生的逻辑。



制造对抗样本的方式

那么如何让模型面对对抗样本时也能有能力识别正确?我们可以制造对抗样本来攻击模型,以此提升它的防御能力。



FGSM

FGSM的全称是Fast Gradient Sign Method. 如果用FGSM来制造扰动



η

\eta






η





,可以使用如下的式子:





η

=

ϵ

s

i

g

n

(

x

J

(

θ

,

x

,

y

)

)

\eta = \epsilon sign(\nabla_xJ(\theta, x, y))






η




=








ϵ


s


i


g


n


(














x


















J


(


θ


,




x


,




y


)


)







其中



x

x






x





是输入,



y

y






y









x

x






x





的标签,



θ

\theta






θ





是模型的参数,



J

(

)

J()






J


(


)





是损失函数。

我们来看一下这个式子里各部分的寓意和用意。

首先,



x

J

(

θ

,

x

,

y

)

\nabla_xJ(\theta, x, y)


















x


















J


(


θ


,




x


,




y


)





这部分是损失函数关于输入



x

x






x





求导得到的梯度,也就是说,如果我们让



x

x






x





的值往这个方向走,损失函数是上升得最快的。它解决的问题是:让



x

x






x





往哪个方向走(即我们要如何扰动这个



x

x






x





),才能让模型在面对正确的标签



y

y






y





的时候,反而高效地把损失函数拉得很大?从而让模型倾向于认为



y

y






y





并不是正确的标签。

其次,我们来说一下这个式子剩下的部分,这部分主要是为了使得



η

<

=

ϵ

\Vert \eta \Vert_\infty<=\epsilon









η



































<






=








ϵ










ϵ

\epsilon






ϵ





就是我们一开始提到的,扰动



η

\eta






η





的无限范数不能超过的值。那我们是如何做到这一点的呢,答案是靠



s

i

g

n

(

)

sign()






s


i


g


n


(


)









s

i

g

n

(

)

sign()






s


i


g


n


(


)





的函数图像


3


是这样的:

在这里插入图片描述

也就是说:





s

i

g

n

(

a

)

=

{

1

,

a

>

0

0

,

a

=

0

1

,

a

<

0

sign(a)=\left\{ \begin{aligned} 1 \qquad ,a>0 \\ 0 \qquad ,a=0 \\ -1 \qquad ,a<0 \end{aligned} \right.






s


i


g


n


(


a


)




=



















































































1




,




a




>




0








0




,




a




=




0











1




,




a




<




0



























如果这里的



a

a






a





是一个向量的话,就会对它的每个维度分别做这样的操作。


4

由于



s

i

g

n

(

)

sign()






s


i


g


n


(


)





函数的输出在{-1,0,1}之间,那么简单地,



ϵ

s

i

g

n

(

)

\epsilon sign()






ϵ


s


i


g


n


(


)





的输出就在



{

ϵ

,

0

,

ϵ

}

\{-\epsilon,0,\epsilon\}






{






ϵ


,




0


,




ϵ


}





之间了,从而,我们就成功使得



η

<

=

ϵ

\Vert \eta \Vert_\infty<=\epsilon









η



































<






=








ϵ





了。

总结:



x

J

(

θ

,

x

,

y

)

\nabla_xJ(\theta, x, y)


















x


















J


(


θ


,




x


,




y


)





给我们提供了扰动



x

x






x





的高效方向,



ϵ

s

i

g

n

(

)

\epsilon sign()






ϵ


s


i


g


n


(


)





帮助我们使得扰动大小被限制在某个范围内。



FGM

FGM的全称是Fast Gradient Method, 一般指的是这样的扰动(出现于

Adversarial Training Methods for Semi-supervised Text Classification

这篇论文):





η

=

ϵ

g

g

2

g

=

x

J

(

θ

,

x

,

y

)

\eta = \epsilon \frac{g}{\Vert g \Vert_2}\\ \quad\\ 其中,g = \nabla_xJ(\theta, x, y)






η




=








ϵ
















g














2






























g











































g




=




















x


















J


(


θ


,




x


,




y


)







也就是说比起FGSM中



s

i

g

n

(

)

sign()






s


i


g


n


(


)





的方式,这里做了一个L2范数归一化。





g

g






g





的第



i

i






i





维是



g

i

g_i







g










i





















,那么就有:





g

g

2

=

(

g

1

g

2

,

g

2

g

2

,

.

.

.

,

g

n

g

2

)

=

(

g

1

g

1

2

+

g

2

2

+

.

.

.

+

g

n

2

,

g

2

g

1

2

+

g

2

2

+

.

.

.

+

g

n

2

,

.

.

.

,

g

n

g

1

2

+

g

2

2

+

.

.

.

+

g

n

2

)

\begin{aligned} \frac{g}{\Vert g \Vert_2} &= (\frac{g_1}{\Vert g\Vert_2}, \frac{g_2}{\Vert g\Vert_2}, …,\frac{g_n}{\Vert g\Vert_2})\\ &=(\frac{g_1}{\sqrt{g_1^2+g_2^2+…+g_n^2}},\frac{g_2}{\sqrt{g_1^2+g_2^2+…+g_n^2}},…,\frac{g_n}{\sqrt{g_1^2+g_2^2+…+g_n^2}}) \end{aligned}






























g














2






























g





















































=




(
















g














2































g










1




































,


















g














2































g










2




































,




.


.


.


,


















g














2































g










n




































)












=




(






















g










1








2




















+





g










2








2




















+




.


.


.




+





g










n








2





















































g










1




































,
























g










1








2




















+





g










2








2




















+




.


.


.




+





g










n








2





















































g










2




































,




.


.


.


,
























g










1








2




















+





g










2








2




















+




.


.


.




+





g










n








2





















































g










n




































)
























通过这样归一化的话,还能保留每个维度之间的相对大小,不像FGSM直接用了一个把每个维度转成-1,1或0的



s

i

g

n

(

)

sign()






s


i


g


n


(


)





函数。



  1. EXPLAINING AND HARNESSING ADVERSARIAL EXAMPLES


    ↩︎


    ↩︎


    ↩︎


    ↩︎


    ↩︎


  2. Intriguing properties of neural networks


    ↩︎

  3. https://baike.baidu.com/item/sign/115763?fr=aladdin

    ↩︎

  4. https://ww2.mathworks.cn/help/releases/R2017a/matlab/ref/sign.html

    ↩︎



版权声明:本文为weixin_41811314原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。