从attack和defense两方面进行记录,但是主要是attack
一.attack
1.目标:找到x’
假设我们已经训练好了一个猫分类器(要么是猫,要么不是猫),如果将一张猫的照片(即下图中的original image,设为x0)放到这个分类器中,它基本上会已很大的概率判断出这是一只猫(我们假设这个分类器的效果是比较好的)。
那么我们现在想找到一个x’(即下图中的attacked image),这个x’和x0很接近(即至少在我们看来,这还是猫的照片),但是它能迷惑分类器,使分类器给出错误的判断结果(sth else)。
2.如何找到x’?
1) 总体思路:
设L表示loss function。
在训练网络时,x是给定的,那么L就可以看成参数θ的函数,即𝐿𝑡𝑟𝑎𝑖𝑛 (𝜃)=𝐶(𝑦0, 𝑦true)。而在attack时,我们的网络是已经训练好的了,即θ已经是固定的了,我们要找的是某个x’,所以此时的L应该是x’的函数。
attack时,情况也分为两类:无目标和有目标。
无目标的L为:𝐿(𝑥′)=−𝐶(𝑦′,𝑦true );
有目标的L为:𝐿(𝑥′)=−𝐶(𝑦′,𝑦true )+𝐶(𝑦′,𝑦false )。
并且,我们之前就说过,x’是和x0接近的,所以应该还有一个限制:𝑑(𝑥0,𝑥’)≤𝜀
这里的d是如何定义的呢?也是两种方式:L2-norm(2-范数,也就是欧几里何距离)和L-infinity(∞-范数,𝑑(𝑥0,𝑥′)=‖𝑥′−𝑥′‖∞ = 𝑚𝑎𝑥{∆𝑥1,∆𝑥2,∆𝑥3,⋯} )。
2)具体步骤:
既然已经有loss function了,那我们还是按照gradient descent的方式来,只是这次算的是L对x’的偏微分,而不是对θ的,但是不是多了一个d的限制吗?看下面的图:
即对于每次迭代,先按常规的步骤算出xt,然后判断是否满足d的限制,如果满足,那么就用这个xt,如果不满足,那么就用fix(xt)函数的值来代替xt。
对于fix函数的解释:
L2-norm:圆圈包含的范围是所有满足d限制的x’的取值,如果你算出来的xt不在这个范围内,那么就用圆圈内离xt最近的点(橘色的那个点)来代替xt。
L-infinity:正方形包含的范围是所有满足d限制的x’的取值,如果你算出来的xt不在这个范围内,那么就用正方形内离xt最近的点(橘色的那个点)来代替xt。
3)发生attack的原因
红色代表虎斑猫的概率密度,其他两条线是错误种类的概率密度。从上面的图可以看出,在很多维度上,由x0移动到x’,仍然是虎斑猫的概率是最大的,所以分类器仍然会把x’判定为虎斑猫。但是在某一个特定的方向上(即下面那幅图),x0只要移动一点点(满足d限制),虎斑猫的概率密度就会骤减,而其他错误种类的概率密度会增加,所以分类器就会给出错误答案。(也就是说,如果你是任意给x0增加一些随机扰动项,分类器基本上不会判别错误,但是如果你给的是某些特定的扰动项,那么只需要改变一点点,就会使分类器判别错误。)
4)attack approaches
如上图所示,不同的attack方法,基本就是不同优化方法和不同的d的限制的方法的组合。
这里主要介绍了一下FGSM的方法。
即若偏微分大于0,则△x为1,小于0,则为-1.
5) black box attack
前面我们所讲的attack,是固定θ去找x’,这种称为‘white box’,因为我们已经提前知道了θ,如果提前不知道θ,那么就称为‘black box’。那么‘black box’又是如何attack的呢?
第一种:你知道训练该分类器的原始training data。使用这些training data自己训练一个网络,称为‘proxy network’,然后用这个‘proxy network’去找x’.通过这种方式找到的x’一般都能成功地攻击你的目标分类器。
如下图所示,如果目标分类器是ResNet-152,你的proxy network也是resnet-152的话,将找到的x’放到目标分类器中,目标分类器只有4%的正确率(正确率越低,说明attack越成功);如果目标分类器是ResNet-152,你的proxy network是resnet-101的话,正确率是19% 。
第二种:你连该分类器的原始training data都没有,那么你只有先自己找一些图片,然后放到该分类器中,得到分类器给出的结果,然后把这些input-output pair当做训练该分类器的原始training data,然后再按照第一种方式操作。
二.defense
defense分两种:passive defense(被动防御) and proactive defense(主动防御)
1.passive
在原来的network前,加入一个filter,这个filter的功能就是减少attack signal的影响。举个例子,比如你这个filter的功能是smooth,那么对于x’来说,它和x0的区别就是在某个特定的方向上有些许差异,如果对x’进行平滑,那么x’的所有方向都会有改动(但是这种改动很小),那么在这个特定方向上的这一小小改动,就很有可能是x’回到 tiger cat概率很大的区域,那么attack signal的影响就减小了。
不足:filter其实就相当于在原始的network前面加了一层layer,如果对方知道你的filter结构,仍然可以进行有效的attack。
2.proactive
先用原始数据训练得到原始的network,然后对每一张照片,用这个原始的network找出𝑥 ̃n,把每一个𝑥 ̃n及其正确的标签(注意是正确的标签,也是就是xn对应的标签)看做一个input-output pair,X’表示这些pair的集合,最后用这个X’去更新原始的network。
不足:假设你用算法A来找漏洞,进而得到更新过后的network,如果对方用算法B来attack你更新后的network,那么也很有可能会攻击成功。