论文信息
题目:Towards Evaluating the Robustness of Neural Networks
作者:Nicholas Carlini, David Wagner
会议: ICLR (International Conference on Learning Representations)
单位:MIT-IBM Watson AI Lab, IBM Research
论文内容
关于JSMA中选择像素对来进行修改的方法,作者做出了不一样的解释:
假设softmax层最小的输入为-100,那么softmax层的对于该输入的输出为0,即使增加了10,由-100变成了-90,仍然为0,显然这对输出没有什么影响。而如果softmax层最大的输入为10,将其更改为了0,显然这会使得输出产生巨大的变化。而JSMA的攻击方式并不会考虑从0到10和从-100到-90的不同,他是一视同仁的。
而在蒸馏训练之后,会使得这样的不同放大。假设输出类向量为:[ -674.3225 , -371.59705 , -177.78831 , 562.87225 ,-1313.5781 , 998.18207 , -886.97107 , -511.58194 ,-126.719666, -43.129272]。要改变类别实际上只需要第四个数比第六个数大即可(即562增长,998下降)。但是JSMA会由于增长562会使得例如-1313,-886的数增加很多而放弃。这实际上是算法本身的问题。
要攻击防御性蒸馏模型实际上很简单,只需要不考虑这些其他的类向量值,只考虑需要超过的类向量和自身的类向量值即可,甚至可以只关注增加自身的类向量
。
Nicholas Carlini和David Wagner提出了一系列能够改变类向量的目标函数:
f
1
(
x
′
)
=
−
loss
F
,
t
(
x
′
)
+
1
f_{1}\left(x^{\prime}\right)=-\operatorname{loss}_{F, t}\left(x^{\prime}\right)+1
f1(x′)=−lossF,t(x′)+1
f
2
(
x
′
)
=
(
max
i
≠
t
(
F
(
x
′
)
i
)
−
F
(
x
′
)
t
)
+
f_{2}\left(x^{\prime}\right)=\left(\max _{i \neq t}\left(F\left(x^{\prime}\right)_{i}\right)-F\left(x^{\prime}\right)_{t}\right)^{+}
f2(x′)=(maxi=t(F(x′)i)−F(x′)t)+
f
3
(
x
′
)
=
softplus
(
max
i
≠
t
(
F
(
x
′
)
i
)
−
F
(
x
′
)
t
)
−
log
(
2
)
f_{3}\left(x^{\prime}\right)=\operatorname{softplus}\left(\max _{i \neq t}\left(F\left(x^{\prime}\right)_{i}\right)-F\left(x^{\prime}\right)_{t}\right)-\log (2)
f3(x′)=softplus(maxi=t(F(x′)i)−F(x′)t)−log(2)
f
4
(
x
′
)
=
(
0.5
−
F
(
x
′
)
t
)
+
f_{4}\left(x^{\prime}\right)=\left(0.5-F\left(x^{\prime}\right)_{t}\right)^{+}
f4(x′)=(0.5−F(x′)t)+
f
5
(
x
′
)
=
−
log
(
2
F
(
x
′
)
t
−
2
)
f_{5}\left(x^{\prime}\right)=-\log \left(2 F\left(x^{\prime}\right)_{t}-2\right)
f5(x′)=−log(2F(x′)t−2)
f
δ
(
x
′
)
=
(
max
i
≠
t
(
Z
(
x
′
)
i
)
−
Z
(
x
′
)
t
)
+
f_{\delta}\left(x^{\prime}\right)=\left(\max _{i \neq t}\left(Z\left(x^{\prime}\right)_{i}\right)-Z\left(x^{\prime}\right)_{t}\right)^{+}
fδ(x′)=(maxi=t(Z(x′)i)−Z(x′)t)+
f
7
(
x
′
)
=
softplus
(
max
i
≠
t
Z
(
x
′
)
i
)
−
Z
(
x
′
)
t
)
−
log
(
2
)
\left.f_{7}\left(x^{\prime}\right)=\operatorname{softplus}\left(\max _{i \neq t} Z\left(x^{\prime}\right)_{i}\right)-Z\left(x^{\prime}\right)_{t}\right)-\log (2)
f7(x′)=softplus(maxi=tZ(x′)i)−Z(x′)t)−log(2)
其中,
l
o
s
s
loss
loss就是xx的交叉熵损失函数,
t
t
t是目标攻击类别,
s
o
f
t
p
l
u
s
(
x
)
=
l
o
g
(
1
+
e
x
p
(
x
)
)
softplus(x)=log(1+exp(x))
softplus(x)=log(1+exp(x))。
F
(
x
)
F(x)
F(x)是
s
o
f
t
m
a
x
softmax
softmax层对于样本
x
x
x的输出,
Z
(
x
)
Z(x)
Z(x)是logit层对于样本
x
x
x的输出,也就是softmax层的输入
可以得到目标函数
minimize
x
∥
x
−
x
0
∥
2
2
+
c
⋅
f
(
x
,
t
)
subject to
x
∈
[
0
,
1
]
p
\begin{aligned} &\text { minimize }_{\mathbf{x}}\left\|\mathbf{x}-\mathbf{x}_{0}\right\|_{2}^{2}+c \cdot f(\mathbf{x}, t)\\ &\text { subject to } \mathbf{x} \in[0,1]^{p} \end{aligned}
minimize x∥x−x0∥22+c⋅f(x,t) subject to x∈[0,1]p
为了保证输出能够产生一个合理的图像,需要0≤xi+δi≤1,这实际上被称为盒约束 (box constraints)。作者总结出了三种解决盒约束优化问题的方式:
- 投影梯度下降法,在执行标准梯度下降时执行,将所有坐标剪切到框内。然而这种方法对于具有复杂更新步骤的梯度下降方法(例如,具有动量的梯度下降),效果不佳:我们剪切真实的xi的同时,同时也修改了下一次迭代的输入,这并不是我们期望的
- 裁剪梯度下降法,与每一步迭代裁剪xx的值不同的,该方法将裁剪直接放入了优化目标,即用 f ( m i n ( m a x ( x + δ , 0 ) , 1 ) ) f(min(max(x+δ,0),1)) f(min(max(x+δ,0),1))代替原目标函数 f ( x + δ ) f(x+δ) f(x+δ)。但这显然会带来一个新的问题,就是卡在平坦区域, x x x卡在边界值动不了
- 改变变量,作者就采用的这种方法,即用新的变量
w
w
w代替原先的
x
x
x,即
δ i = 1 2 ( tanh ( w i ) + 1 ) − x i \delta_{i}=\frac{1}{2}\left(\tanh \left(w_{i}\right)+1\right)-x_{i} δi=21(tanh(wi)+1)−xi
这样的改变使得优化问题变成以
w
w
w为优化器的无约束最小化问题,并且可以将DNN的典型优化工具(即反向传播)用于求解最优w并获得相应的对抗性示例
x
x
x
根据此,作者提出了三种范数约束求解的方法
-
L
2
L_{2}
L2 attack选择目标类别t
min ∥ 1 2 ( tanh ( w ) + 1 ) − x ∥ 2 2 + c ⋅ f ( 1 2 ( tanh ( w ) + 1 ) ) \min \left\|\frac{1}{2}(\tanh (w)+1)-x\right\|_{2}^{2}+c \cdot f\left(\frac{1}{2}(\tanh (w)+1)\right) min∥∥∥∥21(tanh(w)+1)−x∥∥∥∥22+c⋅f(21(tanh(w)+1))
以上 f f f定义为
f ( x ′ ) = max ( max { Z ( x ′ ) i : i ≠ t } − Z ( x ′ ) t , − k ) f\left(x^{\prime}\right)=\max \left(\max \left\{Z\left(x^{\prime}\right)_{i}: i \neq t\right\}-Z\left(x^{\prime}\right)_{t},-k\right) f(x′)=max(max{Z(x′)i:i=t}−Z(x′)t,−k)
Z ( x ′ ) Z(x^{\prime}) Z(x′)为logit输出,softmax输入,可以通过调整k来控制错误分类发生的置信度。 参数 k k k鼓励求解器找到一个敌对的实例 x ′ x^{\prime} x′,它将被高度置信地归类为 t t t类。除此以外,作者还使用了多次随机初始化来减少陷入局部最优解的概率。 对于 L 2 L_{2} L2攻击中常量c,作者提出:从很小的值,例如 1 0 − 4 10^{−4} 10−4,开始,如果没找到就将c翻倍,直至找到或者达到最大值,例如 1 0 10 10^{10} 1010,如果找到就使用该c值。 -
L
0
L_{0}
L0 attack
由于0-范数是不可微的因此不能使用标准的梯度下降法来进行求解,因此我们基于 L 2 L_{2} L2 攻击来生成 L 0 L_{0} L0 攻击。具体而言,就是先根据L2L2攻击生成扰动向量δδ,因此 x + δ x+δ x+δ就是一个对抗样本,我们计算 g = ∇ f ( x + δ ) g=\nabla f(x+\delta) g=∇f(x+δ),然后根据评估函数 g g g选择像素 i = arg min i g i ⋅ δ i i=\arg \min _{i} g_{i} \cdot \delta_{i} i=argminigi⋅δi(gigi实际上评估的是像素 i i i对于输出 f f f的影响),然后固定像素 i i i,再利用 L 2 L_{2} L2 攻击生成对抗样本,直至无法找到对抗样本为止。 -
L
∞
L_{∞}
L∞ attack
min c ⋅ f ( x + δ ) + ∥ δ ∥ ∞ \min c \cdot f(x+\delta)+\|\delta\|_{\infty} minc⋅f(x+δ)+∥δ∥∞
我们可以很轻易的发现梯度下降法的效果并不理想(例如l_bfgs的无穷范数),这是由于 δ ∞ δ_{∞} δ∞只会惩罚向量中最大的那个元素,而对于其余元素没有任何影响。因此,梯度下降很快就会停滞在两个次优解之间。 考虑一个情况,其中 i = 0.5 i=0.5 i=0.5和 j = 0.5 − ϵ j=0.5−ϵ j=0.5−ϵ。 L ∞ L_{∞} L∞只会惩罚 δ i δ_{i} δi而不会惩罚 δ j δ_{j} δj。并且 ∂ ∂ δ j ∥ δ ∥ ∞ \frac{\partial}{\partial \delta_{j}}\|\delta\|_{\infty} ∂δj∂∥δ∥∞在该点的值为0,因此梯度仍然会增大 δ j δ_{j} δj,尽管它已经很大。 因此在下一次迭代中,可能会移动到 δ j δ_{j} δj比 δ i δ_{i} δi略大的位置,比如 i = 0.5 − ϵ ′ i=0.5−ϵ′ i=0.5−ϵ′和 j = 0.5 + ϵ ′ j=0.5+ϵ′ j=0.5+ϵ′,这就可能陷入僵局。 换句话说,梯度下降可能在 δ i = δ j = 0.5 δ_{i}=δ_{j}=0.5 δi=δj=0.5的线上来回摆动
https://blog.csdn.net/kearney1995/article/details/79904095