DeepFool: a simple and accurate method to fool deep neural networks
1、摘要及背景
- 提出Deepfool算法,对比FGSM和I-BLGS算法添加的扰动,Deepfool添加的扰动值要远远小于这两种算法添加的扰动,并且也能很好的完成攻击任务
- 提出鲁棒性量化,让模型鲁棒性有了一个很好的评估标准
2、Deepfool算法原理
线性二分类问题:对于二分类问题,只需要将样本 X0 更新到直线的另一侧,即完成攻击任务,那么毫无疑问最快最短的距离就是垂直 f(x) 的距离,这也代表了最小的扰动。
最后这个公式得拆分为两部分,点到超平面的距离 f(x0)/|| w ||2 和单位向量 w/|| w ||2,负号代表移动的方向,这个公式是针对线性可微的,那么对于非线性问题的算法如下:
把非线性问题近似为线性问题,寻找 X0 到曲线的最短距离,利用线性二分类的解将扰动叠加,直到 X0 落到决策边界上,算法才终止,这就是使用while的原因。
注意最终的结果是之前扰动的累加值。论文中提到返回的最小范数距离需要乘一个系数(1+0.02)保证扰动可以使得样本“跨过”决策边界。
线性多分类问题:需要计算出 X0到每条决策边界的距离,然后进行比较,将最短距离作为最终扰动。
推广到非线性多分类问题,我们依然将它近似为线性问题,使用迭代求解最短距离,算法如下:
第6行的for循环循环体代表我们在每一次生成新的扰动点后都需要计算新的线性近似边界。
3、总结
本文作者通过实验证明,Deeopfool添加的扰动要比FGSM和L-BFGS方法添加的扰动小很多,并且使用Deepfool生成的对抗样本对模型进行对抗训练能够增加模型的鲁棒性,而FGSM在多轮训练后鲁棒性反而下降。