STRIP: A Defence Against Trojan Attacks on Deep Neural Networks 笔记

Code: https://github.com/garrisongys/STRIP?utm_source=catalyzex.com

  • 本文提出的 detect 方法如下图所示:
    在这里插入图片描述

说明:(图 中 input x 是待检测的样本,这里示例的是一张加入了 trigger(右下角的小方块) 的样本,作者将验证集中的干净图片依次作为水印添加到 x 上,得到多张添加了水印的 perturbed inputs(比如作者用了 100 张干净图片做水印,那么依次添加后就得到 100 perturbed inputs),随后这多个 perturbed inputs 都输入到模型并得到预测 label(比如这里是 100 个 label),最后计算这多个 label 的熵,如果计算得到的熵值小于设定的阈值,则判定 x 带有trigger,即 x 是受污染的,且说明当前使用的模型是backdoor-attack-compromised。

  • 个人理解:
    1)backdoor attack 属于 poisoning attack 的一种,但是不同于以往的 poisoning attack 的是,backdoor attack 攻击后的模型在干净的验证集上依然能得到较高的准确率,而在带有 trigger 的样本上则会产生特定的误分类。这里个人理解其实就是一种对 trigger 这一特征过拟合的表现,因此 trigger 也只能对 backdoor 攻击过的模型有用。(这是背景)
    2)图 1 中由于 x 是带有 trigger 的,并且可以看到添加的水印并没有覆盖/破坏 trigger,因此得到的多个 perturbed inputs 中都有清晰的 trigger,因此这些 inputs 的分类结果都是特定的由攻击者指定的 target label,相同的(或者只有几个不同)label 计算得到的熵必然很小。
    3)这里我们假设 x 不带有 trigger,那么多个 perturbed inputs 其实内容就十分混乱了,对于模型而言是在训练时没有出现过的样本,那么模型就会随机分类,因此多个分类结果比较不一致,这是计算得到的熵就会较大。
    4)从 2 & 3 的分析中,就可以知道干净的样本和不干净的样本的熵差别会很大,因此可以利用这一点进行检测。
    5)剩下一个待解决的问题:阈值怎么设定?作者假定自己手上是有一个验证集的(这样的假定可以说是较合理的),验证集都是干净的图片,可以用验证集的图片来进行测试,看得到的熵的值大概都多大,然后设定一个阈值,这个阈值可以牺牲掉部分的干净图片,看检测的时候会有多少毒样本没有检测到(FRR-FAR,false reject rate - false accept rate)。
  • 个人分析:
    1)这个方法还是比较 novel,较好地利用了 trigger is powerful 这一特点。
    2)这个方法难以 generalize,因为大部分的数据集,当使用干净样本作为水印添加到 under-detecttion 的 x 上的时候,trigger 很容易被破坏(比如设计一个在图片中间的 trigger,或者采用的数据集是整张图都有东西的彩色图),也就是说,这个方法对 trigger 的位置、颜色会比较敏感。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值