赞
踩
这篇文章是根据 像素点攻击和特洛伊木马”(Trojans)提出的一种检测是否有这两类攻击的一种检测手段,以及削弱后门攻击的一种手段。
像素点攻击的论文提出是这篇文章 :《BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain》
特洛伊木马的论文提出是这篇文章 :《Trojaning Attack on Neural Networks》
这两篇论文的解释在这里:https://blog.csdn.net/weixin_44714808/article/details/119756924
1.检测部分:
有了以上的前提,就可以对一个模型进行检测是否被植入后门,检测的步骤如下:
上述攻击有两个目标:
这里的yt即为误分类的目标,A()表示将触发器应用于原始图像,△为触发器,x为原始图片,这个λ是个权重,但是为啥他会和m扯上关系,我还不太明白,或许这个m和下文的m不是同一个?括号里是原文翻译过来的(λ是第二个目标的权重。较小的λ对触发器大小的控制具备较低的权重,但会有较高的成功率产生错误分类。在本文的实验中,优化过程会动态地调整λ,以确保大于99%的干净图像可以成功地被错误分类)
m为二维矩阵,决定触发器可以覆盖原始图片的程度,看下式就可以明白,当 m矩阵所有值都为1时,那就只剩下触发器了。
经过上述逆向工程后,构造出可能的“触发器”,利用L1范数来描述触发器的大小,基于之前的假设,我们就可以进行异常检测了。
这里文章使用的是绝对中位差(Median Absolute Deviation,MAD)
利用绝对中位差可以计算出一个异常指标(anomaly index, a-index)
文章最后给出的结论是:当这个指标大于2的时候,就有95%的概率是异常值,同时,文章中也附上了图表来表明自己的实验结果。
性能方面:
论文中还从性能角度考虑了下这种检测方法,我总结下:成功率高,消耗时间少,匹配性好!
2.修补部分
本文对后门修补提供了两种方法,1.神经元剪枝算法。2.撤销学习
首先提供了一种思路:用于检测对抗性输入的滤波器,括号里为原文翻译过来的。
(实验结果代表神经元激活是捕捉原始和逆向工程触发器之间类似性的更好方法。所以,创建基于神经元激活轮廓的反向触发滤波器,能够用来测量激活前1%的神经元是否在第二层至最后一层。当给定某些输入时,过滤器将潜在的对抗性输入识别为具备高于某一阈值的激活轮廓输入。激活阈值可使用干净输入(已知没有触发器的输入)的测试来校准。本文使用测试集的干净图像,经过将原始触发器应用于测试图像(按1:1比率)来建立对抗性图像评估过滤器的性能。)
个人理解是这样的:首先,我获得了一个受对抗样本训练后的模型M,然后我拥有一批干净的数据X和对抗样本标签W。首先我将干净的X训练于M,此时可以获得模型中的参数各种w和b,然后按照一定的比例,添加对抗样本标签W至X,再训练模型M,此时获得的M,相对于原始的w,b肯定有变化,不断增加这个对抗样本的比例,我们可以获得一个或者多个敏感神经元的阈值,这样我们就可以对模型进行修补了。
第一种修补方式:神经元剪枝算法
训练过程:
第二种修补方式:撤销学习修补DNN
撤销学习要求一个10%的原始训练数据样本(干净且没有触发器),并在不修改标签的状况下,为该样本的20%添加反向触发器。多次迭代训练该样本,来调整模型的参数。
个人理解就是将模型中的参数调整,最终导致,即使遇到触发器,模型也不会将其当成触发器,或许可以理解为Trojaning攻击的逆向工程(我觉得有点像)?
最后,实验结果数据表明表,对全部BadNets模型来讲,撤销学习是无效的,攻击成功率仍然很高,大于93.37%。可是对于特洛伊攻击模型来讲它是高效的,而且存在特洛伊木马方块和特洛伊木马水印的成功率分别降低到10.91%和0%。该结果代表,特洛伊攻击模型对特定神经元的高目标性重调,同时撤销学习更为敏感。它有助于复位几个关键神经元的干净输入并禁用攻击。
比较了上述两种修补方式,我们可以发现撤销学习与神经元剪枝相比,撤销学习具备更高的计算成本。同时神经元剪枝更加适合Badnet生成的攻击,撤销学习更加适合木马攻击。
另外本文还简单讨论了5种比较复杂的触发器:
1.复杂的触发器 2.较大的触发器 3.带有不一样触发器的多种受感染的标签 4.带有多个触发器的单个受感染的标签 5.特定于源标签的(部分)后门
到此,这篇论文也算结束了,代码的话我也跑过,MAD数值确实符合论文中给出的结论,由于论文中给出的实验数据确实比较难获得,所以也没有深究下去,另外内容方面欢迎补充
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。