对抗样本攻击与防御,MindSpore是怎么做的?

540 阅读2分钟

5 月 7 日,机器之心联合华为昇腾学院开设的线上公开课《轻松上手开源框架MindSpore》第 5 课完成,刘志丹讲师为大家带来了主题分享《MindSpore模型健壮性评估工具》,第 5 课回顾视频如下:

在第五课的 QA 环节中,有一些问题被大家广泛提到,刘志丹讲师再次做了精选与编辑,供大家参考。第五课精选问答

Q1:为什么要用sign函数?

Q2:增加防御算法后精度会降低?

不一定。防御算法用了对抗训练的方式,生成对抗样本加入原始数据集中,一起训练模型,得到的模型参数和单纯用原始数据集的模型参数是有一点差异,这个差异,可能使得在测试集上的精度发生变化,可能减少,也可能增加。

Q3:增加防御算法对训练时间的影响?

用不用对抗训练的差别是,对抗训练在正常的模型训练过程中增加了生成对抗样本的步骤,所以训练时增加的计算开销在于生成对抗样本,用不同的攻击算法,时间开销不同,如果用FGSM这种简单的攻击算法,增加的时间是很少的,如果用CW这种比较强的攻击方法,时间开销就会大一些。具体选用哪种攻击算法,需要用户根据自己的需求,综合时间开销和安全性需求,选择一个合适的攻击算法。

Q4:增加对抗训练过程,对推理时间会造成什么影响?

对推理没有影响,模型训练完了之后,跟正常的模型是一样的,所以推理时间和原来的模型推理时间是一样的。

Q5:对抗训练时使用的对抗样本和防御后测试时使用的对抗样本一样吗?

不一样。训练、测试时用的对抗样本生成方法可以一样,也可以不一样。

Q6:与cleverhans有什么区别?

MindArmour和Cleverhans的出发点是一致,都是要做模型的对抗样本安全的研究。从提供的特性来讲,MindArmour做的更全面一些,包括了对抗样本的生成、检测、模型的防御、对抗攻防的评估模块,还有通过fuzzing方式对模型进行鲁棒性测试的模块。
大家后续如有更多问题, 欢迎关注 MindSpore 的 gitee 和 github,随时提 issue,官方人员将及时为大家解答:

第五课PPT如下: