CVPR2021 安全AI挑战者计划第六期赛道一方案分享20/1681(开源代码、做题思路)

写在前面

  • CVPR2021Workshop
  • 比赛平台链接
  • 这个比赛早早就报名了,也是最后10天才开始下载数据集肝的,但一直冲不上前排,也是郁闷了好久。
  • 之前都是在做Imagenet数据集上的工作,对Cifar10了解比较少,所以也是抱着学习的态度。
  • 我的开源链接
  • 给出我本人的本次比赛的全部做题思路,避免后来者踩坑。

做题思路的记录

初赛

排名31

3.15 提交一份baseline 44.0733

3.15 把一些迁移黑盒的TI、SIM、Gauss等试了一通,无效果

3.16 调整迭代次数和扰动范围 45.3733

3.17 使用多次热重启 46.9600 14*7 多次调整参数得到,14次热重启,7次迭代(热重启是根据第四期Top选手刘野的口述方案复述得到,我实现的不一定准确)

3.18 更换损失函数为margin_loss 49.1867

3.18 使用ODI热重启 14*(2+5) 14次热重启,2次ODI,5次迭代 49.4267

3.18 把PGD步骤的初始化噪声去掉,发现效果还好一点,后面也多次测试了这个噪声,发现去掉的效果会更好,从这里开始PGD->BIM

3.19 使用循环周期学习率 49.6933

3.19 添加DIV ,去除循环周期学习率,使用步长增长,区分imaenet和cifar特制input diversity 50.1733

3.20 去除步长增长,使用余弦退火调整学习率 50.9400

3.21/3.22 题目给到了(每个数据的平均梯度计算次数应少于100次,平均模型预测次数应少于200次。)所以我们每个样本都是用了14*7= 98 次查询梯度,还有100次的预测没有用,所以想基于这些预测复现一些基于查询的黑盒算法,主要是一些 Spatial attack,然后这两天也是复现一大堆别的算法,Autoattack、CW,动量PGD,没什么效果还很慢。

3.23 重新调整,全部统一使用logits计算梯度,ODI源码一开始全用的softmax输出 51.1267

3.24 复现了一大堆算法,实在没法子了,开始从根本入手,看看有没有方法是多余的,有一些方法可能重复了,发现DIV的提升只对马氏距离模型MMC的效果,对别的模型效果全是负的,在使用logits后,这个效果就被抵消掉了,因而把DIV去掉。 51.2267

复赛

排名20

3.26 提交初赛最好方案 50.1067

3.28 由于100次查询设计别的算法没用上,但没用感觉亏了,所以干脆每次循环完,计算一个logits,判断是否攻击成功,攻击成功的不再更新。 50.1533

3.29~3.31 因为初赛的经验,和网上Cifar10的一些榜单,私认为一些模型的攻击上限按照目前的技术非常难攻击成功了,把重点放在两个模型上。

模型 成功率
cifar10-mmc 0.558
cifar10-feature_scatter 0.597

根据MIT的一篇论文,使用multi-targeted attack,但我是怎么设计效果都不如原来好。原文是如下说的:

For each target class i, again performing a multi-targeted attack. Directly optimizing the loss function in this way reduces the classififier accuracy to under 0.5% at distortion = 0.031 on CIFAR-10.

4.1 最后一发了,比赛方强调说希望看到对所有模型通用的攻击,我寻思我在20名开外,也管不了那么多了,把所有模型的logits输出看一下,然后重新设置一下:cifar10-mmc和cifar10-feature_scatter使用logits计算梯度,其他模型使用softmax(logits)计算梯度。这里可以通过判断logits的大小实现,cifar10-mmc和cifar10-feature_scatter输出的logits都非常小。50.2533

最终的方案

  • 使用ODI + BIM (2+5)
  • BIM使用余弦退火调整学习率
  • 使用14次热重启
  • 每一步攻击完,会保存攻击成功的样本
  • 对MMC和feature_scatter这两个模型进行定制

参考文献

[1] Tashiro Y, Song Y, Ermon S. Diversity can be Transferred: Output Diversification for White-and Black-box Attacks[J]. Advances in Neural Information Processing Systems, 2020, 33.

[2] Tramer F, Carlini N, Brendel W, et al. On adaptive attacks to adversarial example defenses[J]. arXiv preprint arXiv:2002.08347, 2020.

[3] Gowal S, Uesato J, Qin C, et al. An alternative surrogate loss for pgd-based adversarial testing[J]. arXiv preprint arXiv:1910.09338, 2019.

[4] Mao X, Chen Y, Wang S, et al. Composite Adversarial Attacks[J]. arXiv preprint arXiv:2012.05434, 2020.

写在最后

  • 每个数据的平均梯度计算次数应少于100次,平均模型预测次数应少于200次。本人也是理解错误了,以为一个样本最多只能查询梯度100次,所以设计了14*(2+5)=98的查询方案。显然,有的样本好攻击,有的不好攻击,可以把好攻击的查询次数匀给不好攻击的,所以这也是本次比赛失利的重要原因。
  • 对于前排大佬的开源方案比较兴奋,希望可以早日看到前排大佬的paper发表,也希望能从中学到一些新的东西。

你可能感兴趣的:(比赛+项目开源方案,CVPR,对抗样本)