学习笔记——对抗攻击模型

简介: 学习笔记——对抗攻击模型

现在希望machine learning model不仅能够对抗一般的杂讯,还希望其能对抗一些人类恶意制造出来的想要骗过机器的恶意的攻击


  • 对噪声鲁棒且“大部分时间”工作的分类器是不够的
  • 我们希望分类器是健壮的可以应付带有恶意的输入讯息的

那真的有一些恶意的信息想要骗过机器的吗?其实生活上还是有的,比如一些垃圾信息,恶意软件,还有一些网络入侵。就以垃圾信息为例,普通的垃圾信息是可以被机器拦截的,但是如果其带有一些恶意的杂讯,骗过了机器,这就是一种恶意的攻击。


现在发现,攻击是比较容易的,而防御是比较困难的


一、攻击


1.对抗攻击基本概念

对于一张图片使其带有一些特殊的认为的信息,而不是一些随机高斯分布的信息,因为这些随机高斯分布的信息是不能对机器造成太大的影响的。而将这加了特殊信息的图片,丢带机器中去识别,便会得到不一样的结果。这个就是所谓攻击要去做的事情。

image.png

而现在的问题就变成了如何找出这个特别的信息△x


  • Training:

一般的过程就是,通过调整一个神经网络的参数,使得输入一张图片后得到的结果与真实的结果相似,不断训练的使得输出值与真实值的交叉熵越小越好。

image.png


  • Non-targeted Attack(无目标攻击):

对于无目标攻击中,现在想要找到一个杂讯的信息,让其添加到原来的图片上,并借此希望骗过机器,使得这个输出与原来的真实值可以差距越大越好。与上面的训练方式是不一样的,对于正常的训练来说,其输入是固定的,并希望通过改变网络的参数来调整输出。而对于无目标攻击来说,其网络的参数是固定的,因为这是我们想要骗过的机器,然后我们需要调整输入使得可以得到一个不一样的结果。

image.png


  • Targeted Attack(有目标攻击):

如果是有目标的攻击,就不仅仅希望加入了杂讯的输出值可以与真实值的差距越大越好,同时还希望其可以与一个错误的答案越近越好。这个错误的答案是自己设计的,是为了让攻击的目标想让输入的图片变成什么的东西。注意这个Ytrue与Yfalse都是一个独热编码,其中一位是1,其他都是0

image.png


  • Constraint:

但是现在会有一个新的限制,会希望杂讯与输入越接近越好,直到人没有办法发现其中的差异就最好了,但是实际上是有一点点的不同。也就是这个原输入与杂讯的某种距离是小于某一个阈值的。

image.png

大概的流程:

image.png

对于上面这两者的距离,有两种方法可以计算出来:

image.png


1)L2-norm

image.png

也就是将相减后的结果求一个平方和


2)L-infinity

image.png

也就是去相减之后最大的那个值


其实,也就是有很多种的distance,可以根据不同的任务进行不同的设计,取决于人类的感知来定义这个L。不过在影像的攻击上面,L-infinity可能是比较好的。举一个例子:

image.png

在上面的这个图像中,其中一个是对每一个像素稍稍调整的结果,而另外一个是对其中的一个像素调整的结果。这两个输出与输入的原图的L2-norm的distance是一样的,但是对人眼来说,这两者看起来的不一样的,因为觉得第一个输出甚至都没有啥变化。而如果用L-infinity来计算,上面的两张距离是比较小的,而下面的两张图片的L-infinity是比较大的。


现在定义了distance的计算公式,然后可以得到一个优化函数:

image.png

现在是希望能够找到一个杂讯可以使得输出值与真实值差距越大越好,并且希望这个杂讯与原输入的L-infinity不能超过某一个阈值。就像训练一个神经网络,只是网络参数𝜃被替换为输入𝑥` ,但是由于其还有后面的一个现在,不能超过某一个阈值,所以可以将问题进行拆解。


1)不考虑阈值的限制

image.png

对于这个问题,可以直接用梯度下降来求解,然后初始值就是原输入x0,让后通过求梯度进行一个更新

image.png

2)考虑阈值的限制


考虑了阈值之后,只需要对更新好的内容进行一个判断,如果此时超过了阈值,那么就对其进行一个修正,也就是定义一个fix函数而已。具体的操作是,对于这个更新好的杂讯x0与原输入x求L-infinity或者是L2-norm,如果超过了阈值之后,就选择限定范围内最接近阈值的那个xt值,让其替代杂讯x0。

image.png

如图所示:

image.png

超过了圆域或者是矩形的区域,就将其拉到限制内最近的那个点值,来替换x0


以上的操作,可以使得添加在图片上的杂讯是一些特殊的杂讯,因为其是经过梯度训练的。而一般的高斯分布噪声是不能骗过机器的

image.png

而加入了经过训练的噪声,其实人眼确实基本看不出来

image.png

所以,可以看见,神经网络其实是可以轻易的被攻击的。而且被攻击了之后人眼还比较难以观察。其中一个比较合理的解释是,在一个高维的空间中,比较高的置信度分数在存在与一个比较狭窄的范围,超过了这个范围就会突变成另外一个物品。这与神经网络是无关的,其他的一些比较传统的方法其实也是可以被攻击的。


其实attack的方法是非常多的,下面这些方法是一些参考:


Attack Approaches


  • FGSM (https://arxiv.org/abs/1412.6572)
  • Basic iterative method (https://arxiv.org/abs/1607.02533)
  • L-BFGS (https://arxiv.org/abs/1312.6199)
  • Deepfool(https://arxiv.org/abs/1511.04599)
  • JSMA (https://arxiv.org/abs/1511.07528)
  • C&W (https://arxiv.org/abs/1608.04644)
  • Elastic net attack (https://arxiv.org/abs/1709.04114)
  • Spatially Transformed (https://arxiv.org/abs/1801.02612)
  • One Pixel Attack(htps://arxiv.org/abs/1710.08864)

这些五花八门的攻击手段,其实只是用了不同的distance作为限制;然后用了不同的优化方法optimization methods来minimize这个损失函数,同时符合那个限制。

image.png


2.对抗攻击类型

1)白盒攻击

下面介绍其中的一种攻击方法:FGSM

image.png

步骤:首先计算出损失值,然后对输入x每一个数值进行求梯度,如果梯度<0,△x=1;如果是梯度>0,△x=-1;也就说,只需要对x0-ε 或者是x0+ε,就可以了。FGSM不在意梯度的值,其只在意梯度的方向。只要是梯度是指向左下角的那个区域,x*都是会跑到右上角去的。原理就是设置了一个比较大的学习率,所以只需要update一次就足够了。


在之前的攻击中,我们固定网络参数𝜃以找到最优𝑥`。 要进行攻击,我们需要知道网络参数𝜃,这称为白盒攻击。而既然攻击的时候需要知道神经网络的参数,那其实保护一下网络的参数,就是安全的了。其实这样是不够的,其实还有一种攻击方法为黑箱攻击,也就是无需知道神经网络的参数情况下,也是有办法对一个machine learning的model进行攻击的。


2)黑盒攻击

现在对于一个网络来说,我们不知道他的架构是什么样的,对我来说就是相当于一个黑盒。但是如果知道了这个网络是用什么样的训练集去训练出来的,那么就可以根据这个训练集去训练一个我们自己的网络,将其称为proxy network。然后我们用之前用到的方法去攻击这个proxy network,然后得到了一个可以成功攻击proxy network的图片,那么将这个图片再去攻击原来的黑盒,往往是可以成功的。

image.png


那么另外的一个保存措施是需要保护好训练资料,从保护网络参数---->变成了保护训练资料,但是其实这样做还是没有用的。因为别人只需要丢大量的图片进去,得到一个输出结果,然后收集这些训练结果,同样还是可以得到一个proxy network的。这时候过程就与上述的一样了,再次可以采用定向攻击的方式来攻击一个pretrain的model。


ps:利用神经网络去SVM模型还是可以会成功的。

image.png



3.对抗攻击例子

1)Universal Adversarial Attack(通用对抗性攻击)

刚刚所提到的攻击思路,是要为每一张的image找到不同的attack的,因为不同的图片做出梯度更新往往是不一样的,杂讯添加上去也是不一样的,也就是说是各自独立的训练更新的。也就是每张不同的image都需要加上不同的ε用来攻击。但是,有人尝试了一个得到了通用的杂讯,将其添加到数据集的每一张照片上,多数的时候都可以辨识错误。

image.png

如果有人贴这样的一张杂讯到监视摄影机上,就可以让这个监视摄影机辨识的结果通通都是错的。 最后达到的效果就是不需要为每张不同的影响找到不同的杂讯;找到一个神奇的杂讯,可以让以上的辨识结果几乎都是错的。黑箱攻击还是可以成功的。(参考:https://arxiv.org/abs/1610.08401


2)Adversarial Reprogramming(对抗性重编程)

这个内容的脑洞就是,现在本来一个训练好的网络,是可以正常的分辨动物这样子的功能的。但是,现在可以不需要整个这个网络的参数,也就是固定住这个网络,然后让其做到数图片上方格的个数。

image.png

具体就是将有不同个数方格的图片,丢到一张杂讯图像的中间,而本来是用于分辨动物的网络现在还可以进行对方格个数的分辨,这个是比较好玩的。只需要给他看一些特殊的杂讯信息就改变了神经网络原来要做的事情。(参考:GamaleldinF.Elsayed,IanGoodfellow,JaschaSohl-Dickstein,“Adversarial Reprogramming of Neural Networks”,ICLR,2019)


3)Attack in the Real World

对于上述的攻击,将图片打印出来之后,透过镜头,网络还是会辨认出错的,也就是说,这些的攻击方式其实是可以在现实的生活中做到的。比如说,人脸辨识系统,是有安全漏洞的。这直接让机器看杂讯不太合理,所以有人的想法就是将杂讯全部集中在一副眼镜镜框上面,然后其他的人可以通过带一副这样的眼镜镜框去骗过机器的识别。然后这个团队在现实的生活中还真的做出了这样的一个眼睛,然后还真的在现实世界中做了实验,实验结果却是是可以成功的扰乱了机器的判断。

image.png

这个攻击需要考虑比较多的因素:


  • 需要的绝大多数的角度上的攻击都是成功的
  • 杂讯的强度太弱,打印机可能印不出来,或者摄像头可能捕捉不到这样的杂讯解析不到效果
  • 杂讯不能用那些印表机印不出来的颜色

(参考:https://www.cs.cmu.edu/~sbhagava/papers/face-rec-ccs16.pdf


二、防御


对抗性攻击无法通过权重正则化、dropout 和模型集成来防御。


两种类型的防御:


  1. Passive defense被动防御:
  • 在不修改模型的情况下查找附加图像
  • 异常检测的特殊情况
  1. Proactive defense主动防御:
  • 训练对对抗性攻击具有鲁棒性的模型


1.Passive defense

被动攻击的概念大概是这样的,现在有一个神经网络,然后其看到了一张有被攻击过的图片然后会将这只猫看做是一个键盘。那现在在这个network前加上一个filter,这个filter就像是一个防护罩,一般没被攻击过的图像通过这个filter之后不会有什么事情,但是如果是有被攻击过的图像,其伤害希望可以减轻。(将图像做平滑处理就是一个有用的filter,smoothing是不会伤害原来的图像的)

image.png


1)Feature Squeeze

image.png

squeeze1,squeeze2其实就是不同的filter。如果发现做了squeeze之后的图像与没有做squeeze之前的差别比较大的话,那就说明这张图像可能是被攻击过的。


2)Randomization at Inference Phase

image.png

同样的,简单的对输入的图像做一系列比较简单的改动,比如随机缩放一下增加补丁等等,如果改动后与改动前的差距比较大,那么图像也可能是被攻击过的。(参考:https://arxiv.org/abs/1711.01991


2.Proactive defense

主要思想就是:找到漏洞,然后补起来

image.png

需要再次迭代T次,在每一个iteration中对每一张图片,用某一张攻击算法去找到他的attack image;然后将这些attack成功的图像当成是训练data,然后将这些训练data重新打上跟原来image一样的标签,然后再将这些新的资料拿去训练神经网络。这个过程有点像是数据增强。后来这种方式称为自对抗训练,称为了数据增强的一种方法。


但是,需要注意的是,如果在找漏洞的过程中用的是攻击算法A;但是实际上人家采用攻击算法B你还是防御不了的。所以找漏洞的方法不可以被泄漏出去。


所以如何有效防御还是一个尚待解决的问题。


目录
相关文章
【论文速递】NDSS2021 - 操纵 Byzantine: 联邦学习的模型中毒攻击与防御优化
【论文速递】NDSS2021 - 操纵 Byzantine: 联邦学习的模型中毒攻击与防御优化
|
19天前
|
机器学习/深度学习 自然语言处理 安全
NeurIPS 2024:如何防御对抗性提示攻击?AdvUnlearn让图片生成风险骤降
扩散模型在文本到图像生成上取得成功,但也带来安全风险。本文提出AdvUnlearn框架,通过结合对抗性训练增强概念擦除的鲁棒性,有效防止对抗性提示攻击,同时保持模型的图像生成质量和实用性。实验验证了其在多种场景下的优势。
57 19
|
2月前
|
机器学习/深度学习 网络架构
深度学习之对抗攻击的防御
基于深度学习的对抗攻击防御是一项重要的研究方向,旨在提高模型在面对对抗样本时的鲁棒性和安全性。对抗攻击通常通过向输入数据中添加微小扰动,使得深度学习模型做出错误的预测。
33 1
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习之对抗样本生成与防御
基于深度学习的对抗样本生成与防御是当前人工智能安全领域的关键研究方向。对抗样本是通过对输入数据进行微小扰动而产生的,能够导致深度学习模型做出错误预测。
76 2
|
4月前
|
机器学习/深度学习 数据采集
|
7月前
|
机器学习/深度学习 数据采集 安全
一些关于防御机器学习模型攻击的安全措施
保护机器学习模型免受攻击的常见措施包括对抗样本检测过滤、模型集成验证、模型退化重训练、输入数据预处理、监测记录模型行为以及安全增强训练。例如,使用Foolbox库检测过滤对抗样本,通过模型集成平均多个模型的预测结果,定期退化模型模糊攻击者了解,使用对抗训练提升模型鲁棒性。同时,对输入数据预处理、监测模型输出和记录行为也是重要步骤。这些方法能增强模型安全性,但并非万无一失,需结合具体场景和专业安全团队实施。
|
7月前
|
机器学习/深度学习 数据采集 人工智能
关于防御机器学习模型攻击的安全措施
保护AI系统安全的关键是防御机器学习模型攻击。措施包括:数据预处理(规范化、去除异常值、平滑化)、输入验证过滤(边界检查、类型检查)、集成防御(多策略组合)、数据增强、监测记录模型行为和安全增强训练(对抗训练、鲁棒优化)。通过组合应用这些方法,如使用 Foolbox 检测过滤对抗样本、模型集成和对抗训练提升鲁棒性,可增强模型安全性。然而,安全措施需根据应用场景动态调整并配合专业团队实施。
|
7月前
|
机器学习/深度学习 算法
黑盒攻击中迁移攻击和通用对抗扰动的讲解及实战(附源码)
黑盒攻击中迁移攻击和通用对抗扰动的讲解及实战(附源码)
283 1
|
机器学习/深度学习 分布式计算 安全
处理基于特征的挑战的网络入侵问题
处理基于特征的挑战的网络入侵问题
110 0
处理基于特征的挑战的网络入侵问题
|
机器学习/深度学习 安全 算法
针对恶意软件分类器的可解释性后门投毒
基于机器学习 (ML) 的恶意软件分类的训练通常依赖于众包威胁源,从而暴露自然攻击注入点。在本文中研究了基于特征的 ML 恶意软件分类器对后门投毒攻击的敏感性,特别关注攻击者无法控制样本标记过程的“干净标签”攻击。建议使用可解释机器学习的技术来指导相关特征和值的选择,从而以与模型无关的方式创建有效的后门触发器。使用多个用于恶意软件分类的参考数据集,包括 Windows PE 文件、PDF 和 Android 应用程序,展示了针对各种机器学习模型的有效攻击,并评估了对攻击者施加的各种约束的影响。为了证明后门攻击在实践中的可行性,为 Windows PE 文件创建了一个水印程序,以保留二进制文件。
152 0