DeepFool算法,用于计算欺骗最新分类器的对抗样本。它基于分类器的迭代线性化,以生成足以更改分类标签的最小扰动。
文章主要贡献
- 提出了一种简单准确的方法来计算和比较不同分类器对对抗性干扰的鲁棒性。
- 实验结果表明使用不精确的方法计算对抗性扰动可能会导致关于鲁棒性的不同结论,有时甚至是误导性的结论。
-
鲁棒性定义
- 形式上,对于给定的分类器,定义一个对抗扰动为足以改变估计label 的最小扰动 r(样本鲁棒性是使得模型出现误分类的最小扰动)
- x是干净样本, 是预测的label, 是 在x点的鲁棒性。
分类器在整个模型上的鲁棒性定义为:
DeepFool应用于二元分类器
f是一个线性二分类分类器,
为了使得扰动达到最小,最小的方向就是垂直于分类面的方向。
f在x0处的鲁棒性,等于x0到F的距离。
假设f是一个一般的二元可微分类器,我们采用一个迭代过程来估计鲁棒性,将f围绕当前点xi线性化,线性化分类器的最小扰动计算为
利用式(3)中的闭式解计算算法第i次迭代时的扰动ri,更新下一个迭代xi+1。
当xi+1改变分类器的符号时,算法停止。
算法流程:
DeepFool应用于多元分类器
分类器的预测标签为:
本文采用的分类器方案是one-vs-all,依旧考虑线性分类器,分类结果的选择
欺骗分类器的最小扰动:
几何上,上述问题对应于 x0 与凸多面体P的补数之间的距离的计算:x0位于p内,用dist(x0,Pc)表示该距离。多面体P定义了f输出label (x0)的空间区域,设置如下图
已知一个四分类器,干净样本被分为第四类中。是分类的边界超平面。绿色区域为一个凸区域可以表示为
定义为P边界的最近超平面(下图=3)。形式上可以如下计算:
此时最小扰动为:
算法流程
DeepFool应用于更一般的分类器
在迭代i处用一个多面体近似集合P
在算法的每次迭代中,计算到达多面体边界的扰动向量,并更新当前估计。方法见算法2。
在二进制情况下,我们的算法可以被看作是一个梯度下降算法,它具有在每次迭代时自动选择的自适应步长。算法2中的线性化也类似于顺序凸规划,其中每一步都对约束进行线性化。
扩展到范数
本文中,使用2范数衡量了扰动,但提出的框架不限于这种选择,并且所提出的算法可以简单的适用于寻找任何范数()的最小扰动。用以下替换算法2中的10,11行中的更新步骤