Evasion Attack in Adversarial Machine Learning
Evasion Attack旨在不干涉模型任何训练的基础上,设计出让训练好的模型无识别的test case,我们称之为inference-phase adversarial attack,又称为adversarial examples。从分类的角度上,evasion attack可以分为两大类,一类是 ℓ p \ell_p ℓp attack,另一类是Non- ℓ p \ell_p ℓp attack。区别在于,前者在一张正常的测试用例上加上一些精心设计的perturbation或noise,而为了限制perturbation不能过大,通常会对perturbation的范数设定上届,常用的有 ℓ 1 \ell_1 ℓ1、 ℓ 2 \ell_2 ℓ2和 ℓ ∞ \ell_\infty ℓ∞;而后者则通过对目标的大幅度改变来达到欺骗的效果,也成为physical attack。
ℓ p \ell_p ℓp Evasion Attack
记 x \mathbf x x为一个输入, δ \boldsymbol \delta δ是要被设计的perturbation,那么一个adversarial example可以记为:
x ′ : = x + δ \mathbf{x'} := \mathbf{x} + \boldsymbol{\delta} x′:=x+δ
同时对perturbation的大小我们做出限制:
∥ δ ∥ p ≤ ϵ \|\boldsymbol\delta\|_p \leq \epsilon ∥δ∥p≤ϵ
即对perturbation的 p p p范数规定了上界,需要注意的是当约束条件是 ℓ 1 \ell_1 ℓ1时,优化产生的perturbation一般是元素意义上稀疏的。将问题转化成优化问题:
min δ ℓ a t k ( x + δ ; θ ) s . t . ∥ δ ∥ p ≤ ϵ \min_{\boldsymbol\delta} \ell_{atk}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta)\\ s.t. \quad \|\boldsymbol\delta\|_p \leq \epsilon δminℓatk(x+δ;θ)s.t.∥δ∥p≤ϵ
其中 ℓ a t k \ell_{atk} ℓatk是一个确定的attack loss, θ \boldsymbol\theta θ是被攻击模型的参数。如果我们想要解这个优化问题,有两个关键点很重要:
-
如何确定 ℓ a t k \ell_{atk} ℓatk对 δ \boldsymbol\delta δ的梯度,即 ∇ δ ℓ a t k ( x + δ ; θ ) \nabla_{\boldsymbol\delta}\ell_{atk}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta) ∇δℓatk(x+δ;θ)
-
要将解出的结果投影到 ∥ δ ∥ p ≤ ϵ \|\boldsymbol\delta\|_p \leq \epsilon ∥δ∥p≤ϵ上。
根据我们是否能拿到模型的梯度信息, ℓ p \ell_p ℓpEvasion Attack又可分为白盒攻击(white-box attack)和黑盒情形(black-box attack)。
White-Box Attack
假设我们可以获得模型的所有信息,包括gradient back-propagation,那么我们就可以令 ℓ a t k = − ℓ t r \ell_{atk} = -\ell_{tr} ℓatk=−ℓtr,此时通过反向传导自然而然可以得到模型的损失函数 ℓ t r \ell_{tr} ℓtr对输入数据的梯度——也就是 ℓ a t k \ell_{atk} ℓatk。
ℓ ∞ \ell_\infty ℓ∞ Attack: FGSM
FGSM 可以概括为利用梯度的方向信息进行一次性攻击,即我们对损失函数在 x \mathbf x x处进行一阶泰勒近似:
ℓ ^ a t k ( x + δ ; θ ) = ℓ a t k ( x , θ ) + ⟨ θ , ∇ x ℓ a t k ( x ; θ ) ⟩ \hat{\ell}_{atk}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta) = \ell_{atk}(\mathbf x, \boldsymbol\theta) + \langle \boldsymbol\theta, \nabla_{\mathbf x}\ell_{atk}(\mathbf x; \boldsymbol\theta) \rangle ℓ^atk(x+δ;θ)=ℓatk(x,θ)+⟨θ,∇xℓatk(x;θ)⟩
那么原问题就转变为近似后的问题:
min δ ℓ ^ a t k ( x + δ ; θ ) s . t . ∥ δ ∥ ∞ ≤ ϵ \min_{\boldsymbol\delta} \hat\ell_{atk}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta)\\ s.t. \quad \|\boldsymbol\delta\|_\infty \leq \epsilon δminℓ^atk(x+δ;θ)s.t.∥δ∥∞≤ϵ
注意到 ℓ a t k ( x , θ ) \ell_{atk}(\mathbf x, \boldsymbol\theta) ℓatk(x,θ)与 δ \boldsymbol\delta δ无关,即:
min δ ⟨ δ , ∇ x ℓ a t k ( x ; θ ) ⟩ s . t . ∥ δ ∥ ∞ ≤ ϵ \min_{\boldsymbol\delta} \langle \boldsymbol\delta, \nabla_{\mathbf x}\ell_{atk}(\mathbf x; \boldsymbol\theta) \rangle\\ s.t. \quad \|\boldsymbol\delta\|_\infty \leq \epsilon δmin⟨δ,∇xℓatk(x;θ)⟩s.t.∥δ∥∞≤ϵ
那么我们的one-step解即为:
δ F G S M = − ϵ × s i g n ( ∇ x ℓ a t k ( x ; θ ) ) \boldsymbol\delta_{FGSM} = -\epsilon \times sign(\nabla_{\mathbf x}\ell_{atk}(\mathbf x; \boldsymbol\theta)) δFGSM=−ϵ×sign(∇xℓatk(x;θ))
该方法至今为止仍被视为火力很猛的方法之一。FGSM方法的优化理论基础为sign-type的GD/SGD方法3 4。
PGD Attack - A Principled Attack Generator
PGD Attack6是现在被使用最广泛的攻击手段,是一种基于迭代的攻击。问题描述不变:
min δ ℓ a t k ( x + δ ; θ ) s . t . ∥ δ ∥ p ≤ ϵ \min_{\boldsymbol\delta} \ell_{atk}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta)\\ s.t. \quad \|\boldsymbol\delta\|_p \leq \epsilon δminℓatk(x+δ;θ)s.t.∥δ∥p≤ϵ
PGD一共进行k步迭代,每一步重复:
(1) δ ^ ( k ) = δ ( k − 1 ) − α ⋅ ∇ x ℓ a t k ( x + δ ( k − 1 ) ; θ ) \text{(1)} \qquad \hat{\boldsymbol\delta}^{(k)} = \boldsymbol\delta^{(k-1)} - \alpha \cdot \nabla_{\mathbf x}\ell_{atk}(\mathbf x + \boldsymbol\delta^{(k-1)}; \boldsymbol\theta) (1)δ^(k)=δ(k−1)−α⋅∇xℓatk(x+δ(k−1);θ)
(2) δ ( k ) = P r o j ∥ δ ∥ p ≤ ϵ ( δ ^ ( k ) ) \text{(2)} \qquad \boldsymbol\delta^{(k)} = Proj_{\|\boldsymbol\delta\|_p \le \epsilon}(\hat{\boldsymbol\delta}^{(k)}) (2)δ(k)=Proj∥δ∥p≤ϵ(δ^(k))
可以看出,每次迭代的第一步是在给定梯度下降步长的情况下,无约束得下降到下一优化位置,第二步是在第一步的基础上将无约束的位置投影到符合约束条件的区域。因此第一步成为descent update,第二步成为projection。PGD方法可以看成FGSM的一般化,特殊的,当 k = 1 k=1 k=1、 α = ϵ \alpha=\epsilon α=ϵ以及 δ ^ ( 0 ) = 0 \hat{\boldsymbol\delta}^{(0)} = 0 δ^(0)=0时,PGD方法就转化成了FGSM,同时 δ ^ ( k ) = δ ( k ) \hat{\boldsymbol\delta}^{(k)} = \boldsymbol\delta^{(k)} δ^(k)=δ(k)。
Descent update非常简单,我们详细地讨论一下projection部分。投影操作 P r o j ∥ δ ∥ p ≤ ϵ ( α ) Proj_{\|\boldsymbol\delta\|_p \le \epsilon}(\boldsymbol\alpha) Proj∥δ∥p≤ϵ(α)是将给定的点 δ = α \boldsymbol\delta=\boldsymbol\alpha δ=α投影到满足约束条件的区域 ∥ δ ∥ p ≤ ϵ \|\boldsymbol\delta\|_p \leq \epsilon ∥δ∥p≤ϵ。其实projection本身也可看作成简单的优化问题:
min δ ∥ δ − α ∥ p s . t . ∥ δ ∥ p ≤ ϵ \min_{\boldsymbol\delta} \|\boldsymbol\delta - \boldsymbol\alpha\|_p \\ s.t. \quad \|\boldsymbol\delta\|_p \leq \epsilon δmin∥δ−α∥ps.t.∥δ∥p≤ϵ
即在约束集内找到一点使得 δ \boldsymbol\delta δ到 α \boldsymbol\alpha α的 p p p范数距离最小。由KKT条件可知,对于简单的 p p p我们是可以找到对应问题的解析解的。例如当 p = 1 p=1 p=1,且初始值$ \boldsymbol\alpha$不满足约束条件时,上述问题的解析解为:
δ ( k ) = P r o j ∥ δ ∥ p ≤ ϵ ( α ) = s i g n ( α ) m a x { ∣ α ∣ − μ / 2 , 0 } w h e r e 1 T ⋅ m a x { ∣ α ∣ − μ / 2 } = ϵ \boldsymbol\delta^{(k)} = Proj_{\|\boldsymbol\delta\|_p \le \epsilon}(\boldsymbol\alpha) = sign(\boldsymbol\alpha)max\{|\boldsymbol\alpha| - \mu/2, 0\}\\ where \quad \mathbf{1^{T}}\cdot max\{|\boldsymbol\alpha| - \mu/2\} = \epsilon δ(k)=Proj∥δ∥p≤ϵ(α)=sign(α)max{∣α∣−μ/2,0}where1T⋅max{∣α∣−μ/2}=ϵ
Attack Loss
Negative Cross Entropy Loss
不同的攻击方法往往对应着不同的损失函数,最常用的Attack loss莫过于Negative Cross Entropy了,即在Cross Entropy前加上负号:
ℓ C E ( x , y , θ ) = − ∑ i = 1 C [ y i log ( p i ( x ; θ ) ) ] \ell_{CE}(\mathbf{x, y}, \boldsymbol\theta) = -\sum_{i=1}^{C}[\mathbf{y_i}\log(p_i(\mathbf x; \boldsymbol\theta))] ℓCE(x,y,θ)=−i=1∑C[yilog(pi(x;θ))]
其中 p i ( x ; θ ) p_i(\mathbf x; \boldsymbol\theta) pi(x;θ)代表使用模型 θ \boldsymbol\theta θ时输入 x \mathbf x x被分到类别 i i i的概率。
对于模型的设计者来说,训练模型希望使 ℓ C E \ell_{CE} ℓCE最小;但对于攻击者而言,希望给定模型后adversarial example x + δ \mathbf x + \boldsymbol\delta x+δ 被分到正确类别 y y y 的 ℓ C E \ell_{CE} ℓCE最大,即:
ℓ a t k ( x + δ ; θ ) = − ℓ C E ( x + δ , y , θ ) \ell_{atk}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta) = -\ell_{CE}(\mathbf{x + \boldsymbol\delta, y}, \boldsymbol\theta) ℓatk(x+δ;θ)=−ℓCE(x+δ,y,θ)
CW Attack Loss
对于不定向(untargeted)的攻击(即攻击者只是希望模型将其分类错误,而不指定错误目标类别),CW Loss1 的形式为:
ℓ C W ( x + δ ; θ ) = max { Z t 0 ( x + δ ; θ ) − max c ≠ t 0 Z C ( x + δ ; θ ) , − τ } \ell_{CW}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta) = \max\{\mathbf{Z_{t_0}}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta) - \max_{c\neq t_0}\mathbf{Z_{C}}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta) , -\tau\} ℓCW(x+δ;θ)=max{Zt0(x+δ;θ)−c=t0maxZC(x+δ;θ),−τ}
这里输入的真实类(ground truth label)为 t 0 ∈ [ C ] t_0 \in [C] t0∈[C], [ C ] [C] [C]而代表着所有可能的类别 { 1 , , 2 , … , C } \{1, ,2, \dots, C\} {1,,2,…,C},其中 Z C ( x ; θ ) \mathbf{Z_{C}}(\mathbf x; \boldsymbol\theta) ZC(x;θ)代表着 Z ( x ) \mathbf{Z(x)} Z(x)的第 c c c个类别的得分,也就是在softmax层之前的第 c c c个类别对应的输出; τ \tau τ是人工设置的置信阈值(confidence threshold)。
因而这个损失函数的解释为:如果我们想要让损失函数尽量得小,那么我们就要使adversarial example最有可能被分到的错误类(第二个max的含义)对应的得分尽量大,并且尽量比正确类别( t 0 t_0 t0)的得分至少要大 τ \tau τ(第一个max的含义)。
所以在CW Loss中,一个成功的攻击会使得CW Loss一定为负数(误导类的得分大于真实类的得分),并且CW最小时也是 − τ -\tau −τ。同时由于没有限定误导类的具体类别,因而对不同的输入 x \mathbf x x其误导类可能各不相同。使用这种CW Loss需要知道输入 x \mathbf x x的真实类的先验信息。
对于定向攻击(targeted),我们希望使真实类(ground truth label)为 t 0 t_0 t0的输入 x \mathbf x x被误分类为指定类别 t t t,此时CW Loss的形式略作修改:
ℓ C W ( x + δ ; θ ) = max { Z t 0 ( x + δ ; θ ) − max t ≠ t 0 Z t ( x + δ ; θ ) , − τ } \ell_{CW}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta) = \max\{\mathbf{Z_{t_0}}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta) - \max_{t\neq t_0}\mathbf{Z_{t}}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta) , -\tau\} ℓCW(x+δ;θ)=max{Zt0(x+δ;θ)−t=t0maxZt(x+δ;θ),−τ}
定向攻击和不定向攻击的区别在于,定向攻击还要知道目标误导类的label信息 t t t。
Black-Box Attack
与white-box attack完全相反的是,我们在black-box场景下并没有访问模型本身参数或梯度的权限。这种攻击常常用于已经被封装成API的商业识别模型中,如Google Could Vision System14。攻击者能够获取到的信息仅仅是该模型针对输入作出的预测,更极端的情况模型甚至不返回每个类别具体的probability得分,而仅仅返回Top1或Top5的类别label,这也使攻击更加困难。在上述情况中,我们将无法通过back-propagation获得模型关于输入的梯度,因此对该梯度合理的估计(estimation)就成了black-box攻击的重点研究方向。
Black-box optimization问题形式依旧为:
min δ ∈ C ℓ a t k ( x + δ ; θ ) \min_{\boldsymbol\delta \in \mathcal{C}} \ell_{atk}(\mathbf x + \boldsymbol\delta; \boldsymbol\theta) δ∈Cminℓatk(x+δ;θ)
不同点在于,对于white-box attack,在迭代:
δ ( k ) = δ ( k − 1 ) − α ⋅ ∇ δ ℓ ( δ ( k − 1 ) ) \boldsymbol\delta^{(k)} = \boldsymbol\delta^{(k-1)} - \alpha \cdot \nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta^{(k-1)}) δ(k)=δ(k−1)−α⋅∇δℓ(δ(k−1))
中我们可以通过模型的back-propagation得到 ∇ δ ℓ ( δ ( k − 1 ) ) \nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta^{(k-1)}) ∇δℓ(δ(k−1)),但是在black-box中,上式被替换为:
δ ( k ) = δ ( k − 1 ) − α ⋅ ∇ ^ δ ℓ ( δ ( k − 1 ) ) ⏟ ZO gradient estimation \boldsymbol\delta^{(k)} = \boldsymbol\delta^{(k-1)} - \alpha \cdot \underbrace{\hat\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta^{(k-1)})}_{\text{ZO gradient estimation}} δ(k)=δ(k−1)−α⋅ZO gradient estimation ∇^δℓ(δ(k−1))
Zeroth-Order Optimization
梯度估计
首先我们要完成对上述的梯度估计,我们首先对目标损失函数做一个常规的假设—Lipschitz Smoothness。即对损失函数 ℓ ( ⋅ ) \ell(\cdot) ℓ(⋅),存在常数 L < ∞ L < \infty L<∞使得对任意 x \mathbf x x和 y ∈ d o m ( ℓ ) \mathbf y \in dom(\ell) y∈dom(ℓ)都有
ℓ ( y ) − ℓ ( x ) − ∇ ℓ ( x ) T ( y − x ) ≤ L 2 ∥ y − x ∥ 2 2 \ell(\mathbf y) - \ell(\mathbf x) - \nabla\ell(\mathbf x)^{T}(\mathbf{y-x}) \leq \frac{L}{2}\|\mathbf{y-x}\|^2_2 ℓ(y)−ℓ(x)−∇ℓ(x)T(y−x)≤2L∥y−x∥22
上式也等价于 g ( x ) g(\mathbf x) g(x)是凸的:
g ( x ) = L 2 x T x − ℓ ( x ) g(\mathbf x) = \frac{L}{2}\mathbf{x^Tx}-\ell(\mathbf x) g(x)=2LxTx−ℓ(x)
可通过凸函数的定义证明二者的等价关系。
注意在black-box情形下,假设我们能够得到模型对某一输入的所有类型的probability得分,此时我们就可以不断改变给输入增加微小扰动,再通过查询扰动过输入对应的输出来做相应的估计。那么根据增加扰动的类型不同,梯度估计的方法也不同。
- Deterministic Gradient Estimator
利用coordinate-wise的损失函数值差分获得估计:
[ ∇ ^ δ ℓ ( δ ) ] i = ℓ ( δ + μ e i ) − ℓ ( δ − μ e i ) 2 μ , ∀ i ∈ [ d ] {[\hat\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta)]}_i = \frac{\ell(\boldsymbol\delta + \mu\mathbf{e_i}) - \ell(\boldsymbol\delta - \mu\mathbf{e_i})}{2\mu}, \quad \forall i \in [d] [∇^δℓ(δ)]i=2μℓ(δ+μei)−ℓ(δ−μei),∀i∈[d]
在上式中, μ \mu μ是差分step的大小,也是smoothing parameter。而 e i \mathbf{e_i} ei代表着数据的第 i i i个维度,只有第 i i i个分量是1,其余是0,数据维度等于像素个数乘以通道数, d d d代表总数据维度。上式是对梯度的第 i i i个维度分量上的估计。如此估计的误差 ∣ [ ∇ ^ δ ℓ ( δ ) ] i − [ ∇ δ ℓ ( δ ) ] ] i ∣ |{[\hat\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta)]}_i-[\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta)]]_i| ∣[∇^δℓ(δ)]i−[∇δℓ(δ)]]i∣如何估计呢?由13给出的估计表明:
∣ [ ∇ ^ δ ℓ ( δ ) ] i − [ ∇ δ ℓ ( δ ) ] i ∣ ≤ μ L 2 |{[\hat\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta)]}_i-[\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta)]_i| \leq \frac{\mu L}{2} ∣[∇^δℓ(δ)]i−[∇δℓ(δ)]i∣≤2μL
由Triangle不等式和L-smooth的性质易证。从这个结论我们就可以看出,该方法的优点在于当 μ → 0 \mu \rightarrow 0 μ→0时,该估计就变成了无偏估计,但同时 μ \mu μ过小会造成该方法缺乏稳定性。这个方法更大的问题在于,我们要非常频繁得去掉用API来为我们做预测,每一次梯度估计都要做 O ( d ) \mathcal{O}(d) O(d)数量级的查询(即调用API获得预测结果),这不论是时间上还是计算上都是非常昂贵的。
- Randomized Gradient Estimator
利用随机向量 u \mathbf u u之间查询结果的差分来估计梯度
∇ ^ δ ℓ ( δ ) = ϕ ( d ) ℓ ( δ + μ u ) − ℓ ( δ ) μ u \hat{\nabla}_{\boldsymbol\delta}\ell(\boldsymbol\delta) = \phi(d)\frac{\ell(\boldsymbol\delta + \mu\mathbf u) - \ell(\boldsymbol\delta)}{\mu} \mathbf u ∇^δℓ(δ)=ϕ(d)μℓ(δ+μu)−ℓ(δ)u
其中 ϕ ( d ) = 1 \phi(d) = 1 ϕ(d)=1如何选择的噪声满足高斯分布 u ∼ N ( 0 , I ) \mathbf u \sim \mathcal{N}(\mathbf{0, I}) u∼N(0,I), ϕ ( d ) = d \phi(d)=d ϕ(d)=d如何噪声是单位向量 u ← u ∥ u ∥ 2 \mathbf u \leftarrow \frac{\mathbf u}{\|\mathbf u\|_2} u←∥u∥2u。如此估计所得误差估计由15给出:
E u [ ∥ ∇ ^ δ ℓ ( δ ) − ∇ δ ℓ ( δ ) ∥ 2 2 ] = O ( d ) ∥ ∇ δ ℓ ( δ ) ∥ 2 2 + μ 2 d 3 + μ 2 d ϕ ( d ) \mathbb{E}_{\mathbf u}[\|{\hat\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta)}-\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta)\|_2^2] = \mathcal{O}(d)\|\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta)\|_2^2 + \frac{\mu^2d^3 + \mu^2d}{\phi(d)} Eu[∥∇^δℓ(δ)−∇δℓ(δ)∥22]=O(d)∥∇δℓ(δ)∥22+ϕ(d)μ2d3+μ2d
这种估计方法的优势很明显:只需要两此查询即可得到梯度的完整估计,但缺点是即使 μ → 0 \mu \rightarrow 0 μ→0估计还是有误差,
- Query Efficiency 和 Estimation Quality的权衡
由Randomized Gradient Estimator很容易有多次查询并去平均值的想法,这样通过增加查询次数来减小估计误差,也就是Query Efficiency和Estimation Quality之间的权衡。考虑 n n n个随机向量 { u i } \{\mathbf{u}_i\} {ui},那么多点查询后的梯度估计由下式给出:
∇ ^ δ ℓ ( δ ) = 1 n ∑ i = 1 n [ ϕ ( d ) ℓ ( δ + μ u i ) − ℓ ( δ ) μ u i ] \hat{\nabla}_{\boldsymbol\delta}\ell(\boldsymbol\delta) = \frac{1}{n}\sum_{i=1}^n[\phi(d)\frac{\ell(\boldsymbol\delta + \mu\mathbf u_i) - \ell(\boldsymbol\delta)}{\mu} \mathbf u_i] ∇^δℓ(δ)=n1i=1∑n[ϕ(d)μℓ(δ+μui)−ℓ(δ)ui]
那么此时估计所得到的误差的估计为:
E u [ ∥ ∇ ^ δ ℓ ( δ ) − ∇ δ ℓ ( δ ) ∥ 2 2 ] = O ( d n ) ∥ ∇ δ ℓ ( δ ) ∥ 2 2 + μ 2 d 3 n ϕ ( d ) + μ 2 d ϕ ( d ) \mathbb{E}_{\mathbf u}[\|{\hat\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta)}-\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta)\|_2^2] = \mathcal{O}(\frac{d}{\textcolor{red}{n}})\|\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta)\|_2^2 + \frac{\mu^2d^3}{\textcolor{red}{n}\phi(d)} + \frac{\mu^2d}{\phi(d)} Eu[∥∇^δℓ(δ)−∇δℓ(δ)∥22]=O(nd)∥∇δℓ(δ)∥22+nϕ(d)μ2d3+ϕ(d)μ2d
可见随着采样点数的增加,误差估计会下降很多。
一般过程
当完成梯度估计后,我们就可以进一步采用类似于white-box attack的方法进行attack example的优化,整个过程(包含梯度估计)分三步进行:
(1) ZO gradtient estimation g ^ ( k ) = ∇ ^ ℓ ( δ k − 1 ) \text{(1) ZO gradtient estimation} \qquad\hat{\mathbf g}^{(k)} = \hat{\nabla}\ell(\boldsymbol\delta_{k-1}) (1) ZO gradtient estimationg^(k)=∇^ℓ(δk−1)
(2) Descent Operation m ( k ) = ψ ( g ^ ( k ) ) \text{(2) Descent Operation} \qquad \mathbf m^{(k)} = \psi(\hat{\mathbf g}^{(k)}) (2) Descent Operationm(k)=ψ(g^(k))
(3) Projection Operation m ( k ) ← Proj C ( m ( k ) ) \text{(3) Projection Operation} \qquad \mathbf m^{(k)} \leftarrow \text{Proj}_C(\mathbf m^{(k)}) (3) Projection Operationm(k)←ProjC(m(k))
其中第三步投影操作和white-box非常类似,不做赘述。重点介绍第二部Descent Operation,旨在对已经估计好的梯度做一些优化或处理,让整个算法更稳定或更快速。常用的Descent Operation有:
- ZO-GD/ZO-SGD,即最普通的不做任何改变 ψ ( g ^ ( k ) ) = g ^ ( k ) \psi(\hat{\mathbf g}^{(k)}) = \hat{\mathbf g}^{(k)} ψ(g^(k))=g^(k)
- ZO-sign-GD/SGD,类似FGSM将估计出来的梯度符号信息(方向信息)提取出来 ψ ( g ^ ( k ) ) = sign ( g ^ ( k ) ) \psi(\hat{\mathbf g}^{(k)}) = \text{sign}(\hat{\mathbf g}^{(k)}) ψ(g^(k))=sign(g^(k))
后者比前者收敛更快速,但在早期迭代过程中,前者比后者的准确性要高。
ZO-Optimization with Non-Smooth Objective
注意在之前的分析中我们做了Lipschitz-Smoothness的假设,之所以可以做出这个假设,一个隐藏的大前提是我们可以从模型得到针对输入图片的每一类的probability得分(如是狗的可能性为60%,是卡车的可能性是20%…),我们称之为Soft-label Attack。与之对应的是Hard-label Attack,又称为label-only attack,即模型不会返回给用户每一类的得分,而只是一个Top1结果18 19 20。这种情况下就不能对损失函数 ℓ a t k \ell_{atk} ℓatk做Lipschitz-Smoothness假设。那么如何对使用ZO方法来处理non-smooth的问题呢?
Randomized Smoothing:该方法提供了一个代理函数(surrogate function)17 21 :
ℓ μ ( δ ) = E μ ∼ N ( 0 , I [ ℓ a t k ( x + δ + μ u ; θ ) ] ≈ 1 N ∑ i = 1 N ℓ a t k ( x + δ + μ u ; θ ) \ell_{\mu}(\boldsymbol\delta) = \mathbb{E}_{\mathbf \mu \sim \mathcal N(\mathbf{0, I}}[\ell_{atk}(\mathbf x + \boldsymbol\delta + \mu \mathbf u; \boldsymbol\theta)]\\ \approx \frac{1}{N}\sum_{i=1}^{N}\ell_{atk}(\mathbf x + \boldsymbol\delta + \mu \mathbf u; \boldsymbol\theta) ℓμ(δ)=Eμ∼N(0,I[ℓatk(x+δ+μu;θ)]≈N1i=1∑Nℓatk(x+δ+μu;θ)
该函数的性质是:即使 ℓ a t k \ell_{atk} ℓatk不是smooth的,也能保证 ℓ μ \ell_{\mu} ℓμ的l-smooth特性。内在原因是,两个函数的卷积(convolution)的l-smooth特性至少和这两个函数中l-smooth最好的一样。这里 ℓ μ \ell_{\mu} ℓμ可以视作离散版本的卷积 ∫ μ [ ℓ a t k ( x + δ + μ u ; θ ) p ( u ) ] d u \int_\mu[\ell_{atk}(\mathbf x + \boldsymbol\delta + \mu \mathbf u; \boldsymbol\theta)p(\mathbf u)]d \mathbf u ∫μ[ℓatk(x+δ+μu;θ)p(u)]du。原始的损失函数和smoothing过后的loss的landscape见下图:
收敛分析
对于white-box attack,准确的梯度信息可以直接得到,那么利用SGD可以得到收敛速率:经过 K K K次迭代后, E [ ∥ ∇ δ ℓ ( δ ( K ) ) ∥ 2 2 ] = O ( 1 K ) \mathbb{E}[\|\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta^{(K)})\|_2^2] = \mathcal{O}(\frac{1}{\sqrt{K}}) E[∥∇δℓ(δ(K))∥22]=O(K1),见下图16:
对于black-box attack,由于梯度是估计而得到的,而这样的估计带来很大的方差,因而同样迭代次数下收敛效果要比white-box要差一些: E [ ∥ ∇ δ ℓ ( δ ( K ) ) ∥ 2 2 ] = O ( d K ) \mathbb{E}[\|\nabla_{\boldsymbol\delta}\ell(\boldsymbol\delta^{(K)})\|_2^2] = \mathcal{O}(\frac{\sqrt{d}}{\sqrt{K}}) E[∥∇δℓ(δ(K))∥22]=O(Kd),被称为dimension-based slowdown17: