人工智能安全(三)—防御

1.《Neural Cleanse: Identifying and Mitigating Backdoor Attacks in Neural Networks》

这篇文章是根据 像素点攻击和特洛伊木马”(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.检测部分:

  • 假设:受感染的模型,与其他未受感染的模型相比,将目标标签错误的分类,所需修改的量要小的多(文中做出来一定的解释,其实可以理解为受感染的模型本来的权重值就是偏向于后面的标签的,因此修改量自然小)
  • 文章检测所拥有的权限:1.有权限访问训练过的神经网络模型 2.一组带有正确标记的样本,用来检测模型的性能
  • 后门触发器的特征:无论正常输入的是哪一种标签,都生成一个目标标签A的分类器(定向攻击)

有了以上的前提,就可以对一个模型进行检测是否被植入后门,检测的步骤如下:

  1. 对于给定的标签,咱们将其视为目标后门攻击的潜在目标标签。本文设计了一个优化方案,以找到从其余样本中错误分类所需的“最小”触发器。在视觉域中,此触发器定义最小的像素集合及其相关的颜色强度,从而致使错误分类。
  2. 对模型中的每一个输出标签重复步骤1。对于一个具备N=|L|个标签的模型,这会产生N个潜在的“触发器”。(这里有个小点不理解,为啥自己还要攻击自己)
  3. 在计算N个潜在触发器后,咱们用每一个候选触发器的像素数量来度量每一个触发器的大小,即触发器要替换的像素数。咱们运行一个异常点检测算法来检测是否有任何候选触发器对象明显比其余候选小。一个重要的异常值表明一个真正的触发器,该触发器的标签匹配是后门攻击的目标标签。

上述攻击有两个目标:

  1. 找到一个触发器(m,△)将干净的图像错误的分类为yt
  2. 同时这个触发器应该是最简洁的,只修改图像有限的部分触发器,用L1范数进行测量

在这里插入图片描述
这里的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肯定有变化,不断增加这个对抗样本的比例,我们可以获得一个或者多个敏感神经元的阈值,这样我们就可以对模型进行修补了。

第一种修补方式:神经元剪枝算法
训练过程:

  1. 用干净的样本训练一次,
  2. 再用带对抗样本的图片训练一次,
  3. 某个神经元值改变最大的,说明该神经元对于对抗样本是最敏感的,将它砍掉。
  4. 为了最大限度地减小对清洁输入的分类准确率的影响,当修剪的模型再也不响应反向触发器时,中止修剪。
    文章经过试验发现修剪30%的神经元可将攻击成功率下降至0%。同时,分类准确率仅降低了5.06%。防护者能够经过减小攻击成功率来实现更小的分类精度降低,如下图所示,其实图中可以看出,应该20%差不多了。
    在这里插入图片描述
    但是论文也对这部分做出了解释,前文中有提及(排名前1%的神经元足以致使分类错误)这句话,按理说,只要去除1%的神经元就可以避免这种攻击。但是即便去除了前1%的神经元,还有其余排名较低的神经元仍然能够帮助触发后门。
    另外在YouTube人脸实验中,这种剪枝算法并不是很有效,当剪枝30%神经元时,出现了正确率下降过大的情况,这是因为干净的神经元和对抗神经元混合在一块儿,从而使得干净的神经元在该过程当中被修剪,所以下降了分类精度。同时,在特洛伊木马模型中,该剪枝算法效果也并不是很理想,所以剪枝算法有时候并不是万能的。

第二种修补方式:撤销学习修补DNN
撤销学习要求一个10%的原始训练数据样本(干净且没有触发器),并在不修改标签的状况下,为该样本的20%添加反向触发器。多次迭代训练该样本,来调整模型的参数。
个人理解就是将模型中的参数调整,最终导致,即使遇到触发器,模型也不会将其当成触发器,或许可以理解为Trojaning攻击的逆向工程(我觉得有点像)?
最后,实验结果数据表明表,对全部BadNets模型来讲,撤销学习是无效的,攻击成功率仍然很高,大于93.37%。可是对于特洛伊攻击模型来讲它是高效的,而且存在特洛伊木马方块和特洛伊木马水印的成功率分别降低到10.91%和0%。该结果代表,特洛伊攻击模型对特定神经元的高目标性重调,同时撤销学习更为敏感。它有助于复位几个关键神经元的干净输入并禁用攻击。

比较了上述两种修补方式,我们可以发现撤销学习与神经元剪枝相比,撤销学习具备更高的计算成本。同时神经元剪枝更加适合Badnet生成的攻击,撤销学习更加适合木马攻击。

另外本文还简单讨论了5种比较复杂的触发器:
1.复杂的触发器 2.较大的触发器 3.带有不一样触发器的多种受感染的标签 4.带有多个触发器的单个受感染的标签 5.特定于源标签的(部分)后门

到此,这篇论文也算结束了,代码的话我也跑过,MAD数值确实符合论文中给出的结论,由于论文中给出的实验数据确实比较难获得,所以也没有深究下去,另外内容方面欢迎补充

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值