论文: https://arxiv.org/pdf/1608.04644.pdf?source=post_page
代码:https://github.com/Harry24k/CW-pytorch
Motivation
又是一篇对抗攻击领域的基石之作,论文的思路主要针对当时最强的防御方法——防御性蒸馏。在当时,几乎所有的攻击方法都无法攻破防御性蒸馏,而本文的方法在面对防御性蒸馏时,取得了几乎100%的攻击成功率,这也再一次推动了对抗攻防算法的演进。
Contribution
作者提出了一种新的攻击方法(业界常称之为CW),可以以几乎100%的成功率攻破适应性防御,并成为检验防御模型效果的一个新的baseline。作者将本文的贡献总结为以下四点:
(1) 基于 L 0 L_0 L0、 L 2 L_2 L2和 L ∞ L_\infty L∞距离设计了三种攻击方法。
(2) 利用这三种攻击方法攻破防御性蒸馏。
(3) 提出利用高置信度的攻击样本来进行迁移攻击,作为测试模型鲁棒性的手段,同时这种方法也成功攻破了防御性蒸馏。
(4) 系统性地评估了不同损失函数对攻击效果的影响,发现损失函数的选择影响巨大。
Method
目标函数
首先来看对抗攻击优化函数的最基本形式:
m i n i m i z e D ( x , x + δ ) s u c h t h a t C ( x + δ ) = t x + δ ∈ [ 0 , 1 ] n minimize\,\,D(x,x+\delta) \\ such\,\,that\,\,C(x+\delta)=t \,\,\,\, x+\delta\in[0,1]^n minimizeD(x,x+δ)suchthatC(x+δ)=tx+δ∈[0,1]n
上述的优化问题是无法直接求解的,因此需要定义关于分类的损失函数 f f f,使得当且仅当 f ( x + δ ) ≤ 0 f(x+\delta)\leq0 f(x+δ)≤0时, C ( x + δ ) = t C(x+\delta)=t C(x+δ)=t成立,从而联立 D D D与 f f f,形成可解的优化函数形式。这里作者讨论了以下7种损失函数,其中, 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)),而 l o s s loss loss代表交叉熵损失函数。
f 1 ( x ′ ) = − l o s s F , t ( x ′ ) + 1 f 2 ( x ′ ) = ( m a x i ≠ t F ( x ′ ) i − F ( x ′ ) t ) + f 3 ( x ′ ) = s o f t p l u s ( m a x i ≠ t F ( x ′ ) i − F ( x ′ ) t ) − l o g ( 2 ) f 4 ( x ′ ) = ( 0.5 − F ( x ′ ) t ) + f 5 ( x ′ ) = − l o g ( 2 F ( x ′ ) t − 2 ) f 6 ( x ′ ) = ( m a x i ≠ t Z ( x ′ ) i − Z ( x ′ ) t ) + f 7 ( x ′ ) = s o f t p l u s ( m a x i ≠ t Z ( x ′ ) i − Z ( x ′ ) t ) − l o g ( 2 ) f_1(x') = -loss_{F,t}(x') + 1 \\ f_2(x') = (\underset{i\neq t}{max} F(x')_i - F(x')_t)^+ \\ f_3(x') = softplus(\underset{i\neq t}{max} F(x')_i - F(x')_t) - log(2) \\ f_4(x') = (0.5 - F(x')_t)^+ \\ f_5(x') = -log(2F(x')_t - 2) \\ f_6(x') = (\underset{i\neq t}{max} Z(x')_i - Z(x')_t)^+ \\ f_7(x') = softplus(\underset{i\neq t}{max} Z(x')_i - Z(x')_t) - log(2) f1(x′)=−lossF,t(x′)+1f2(x′)=(i=tmaxF(x′)i−