与之前的基于提高原始类别标记的损失函数或者降低目标类别标记的损失函数的方式不同,这篇文章提出直接增加神经网络对目标类别的预测值。换句话说,之前的对抗样本的扰动方向都是损失函数的梯度方向(无论是原始类别标记的损失函数还是目标类别标记的损失函数),该论文生成的对抗样本的扰动方向是目标类别标记的预测值的梯度方向,作者将这个梯度称为前向梯度(forward derivative)。即:
显然前向梯度是由神经网络的目标类别输出值对于每一个像素的偏导数组成的。这启发了我们通过检查每一个像素值对于输出的扰动,从而选择最合适的像素来进行改变。
在本文中,作者提供了一个启发式的选择方式,称为显著映射(saliency map):
即每一步迭代选择的扰动像素都能够尽可能的增大目标类别的输出值,并且总体对其余的类别标记产生一个负影响(即减少输出值)。
但是实际的实验中发现,找到满足以上条件的像素点是很困难的,因此作者提出寻找一组像素对而不是选择单个像素点:
具体算法如下:
这其实只是一个启发式的想法,不过由于这个组合搜索的会影响计算效率,个人感觉可能用梯度乘以可改变值作为选择目标会好:
其中
作者在实验中表明,修改小于14.29%的像素点(即对于MNIST手写识别数据,修改大约112个像素点)是不会影响人类的正确分类的。此外,论文中提出了两个有趣的质量度量方法:
1、 硬度度量:度量深度神经网络中,哪一个类别对(s为原始类别标记,t为目标类别标记)的扰动成功率最高,将平均失真率(即改变的像素点数目/总数目)相对于其成功率归一化:
而在实际计算中,选择一组最大失真值对应的成功率来近似计算积分:
作者在实验中选择的是一组固定的最大失真度集合()来计算在最大失真度情况下的扰动成功率:。
2、对抗距离:对抗距离是通过归一化Saliency map得到的:
其中是示性函数。显然对抗距离越接近1,原始样本就越难更改为目标类别标记。
此外。还有一个值得讨论的地方,就是作者指出,在他们的实验中,对抗样本的每对相邻像素之间的平方差总和总是高于原始样本。因此对于对抗样本的检测方面,也许我们可以通过评估样本的规律性来检测对抗样本。