Nicholas Carlini, David Wagner, Towards Evaluating the Robustness of Neural Networks
概
提出了在不同范数下(ell_0, ell_2, ell_{infty})下生成adversarial samples的方法, 实验证明此类方法很有效.
主要内容
基本的概念
本文主要针对多分类问题, 假设神经网络(F:x in mathbb{R}^n ightarrow y in mathbb{R}^m), 其网络参数为( heta).
假设:
其中(mathrm{softmax}(x)_i=frac{e^{x_i}}{sum_j e^{x_j}}).
为(x)的预测类, 不妨设(C^*(x))为其真实的类别.
Adversarial samples 的目标就是构建一个与(x)相差无几的(x')((|x-x'|)足够小),但是(C(x') ot =C^*(x)). 很多构建Adversarial samples可以指定类别:
- Average Case: 在不正确的标签中随机选取类别;
- Best Case: 对所有不正确的标签生成Adversariak samples, 并选择最容易成功(即骗过网络)的类别;
- Worst Case:对所有不正确的标签生成Adversariak samples, 并选择最不容易成功的类别.
文章中介绍了不少现有的方法, 这里不多赘述.
目标函数
一般可以通过如下问题求解(x'=x+delta):
其中(mathcal{D})衡量(x,x+delta)之间的距离, 常常为(ell_0, ell_2, ell_{infty}).
但是(C(x+delta)=t)这个条件离散, 这个问题很难直接求解, 作者给出的思路是构造一些函数(f(x,t)), 使得当且仅当(f(x,t)le0)的时候此条件满足.
则问题转换为:
进一步
作者给出了7种符合此类条件的函数(作者尤为推荐第6种):
如何选择c
binary search
如何应对Box约束
图片的元素需要满足(0le x_i le 1), 如何满足此约束:
- 简单粗暴地对其裁剪, 大于1的为1, 小于0的为0, 但是这种方法在梯度下降方法比较复杂(如带momentum)的时候效果可能不会太好(既然momemtum要记录变量改变的方向, 而我们又擅自对此方向进行更改);
- 用(f(min (max(x+delta,0),1))替代(f(x+delta)), 我的理解是, 每次不改变原变量(x'), 然后把clip后的(x')喂给(f). 作者说此类方法容易方法在次优解间来回振荡的现象;
- 定义
于是我们只需优化(w_i), 且保证(x_i + delta_i in [0, 1]).
(L_2) attack
其中
是对第6种方法的一个小改进, 其中(kappa)反应了我们对误判发生的信心.
(L_0) attack
因为(L_0)范数不可微, 所以每一次, 我们先利用(L_2) attack来寻找合适的(delta), 令(g= abla f(x+delta)), 根据(g_i delta_i)判断每个像素点的重要性, 最不重要的我们删去(根据文中的意思是永久删去).
- Input: (x, c)
- (I=empty)
- Do ...:
- 计算在(L_2)下的解(x+delta)(倘若在(c)下找不到, 则在(2c)条件下找(嵌套));
- (g= abla f(x+delta));
- (i=arg min_i g_i cdot delta_i, i ot in I), 然后(I=I cup {i});
在利用(L_2)寻找(delta)的过程中, 若失败, 令(c=2c)并重复进行, 直到其成功或者超过了最大的迭代次数.
(L_{infty}) attack
(|delta|_{infty})作为惩罚项(?)只会针对个别元素, 这在实际实验的时候并不友好, 往往会出现振荡, 于是作者想了一种替代
这样我们就把可以关注部分突出而非个别.