为了保证神经网络算法的安全性,不同类型的反制策略被相继提出:
1)梯度屏蔽/混淆 (gradient masking/obfuscation):相当一部分攻击者利用分类器的梯度信息进行攻击,因此屏蔽或者混淆梯度可以同样混淆攻击者;
2)健壮性优化 (robust optimization):重训练DNN分类器可以增强其健壮性,使得其可以正确地预测对抗样本;
3)对抗样本检测 (adversarial examples detection):学习原始数据的分布,从而检测到对抗样本并禁止其输入到分类器。
蒸馏是用于减少DNN网络规模的技术,一个用于对抗FGSM、L-BFGS attack,或者DeepFool攻击的方法的主要步骤如下:
1)设计softmax的温度 T T T,基于训练集 ( X , Y ) (X,Y) (X,Y)训练网络 F F F,其中关于 T T T的softmax函数定义如下:
s o f t m a x ( x , T ) i = e x i T ∑ j e x j T , where i = 0 , 1 , … , K − 1 (1) \tag{1} softmax(x,T)_i=\frac{e^{\frac{x_i}{T}}}{\sum_je^{\frac{x_j}{T}}}, \text{where }i=0,1,\dots,K-1 softmax(x,T)i=∑jeTxjeTxi,where i=0,1,…,K−1(1) 2)计算 F ( X ) F(X) F(X)的 s o f t m a x softmax softmax得分,且计算温度 T T T下的 s o f t m a x softmax softmax得分;
3)使用温度 T T T下的 F ( x ) F(x) F(x)和 X X X训练蒸馏模型 F T ′ F_T' FT′;
4)将 F T ′ F_T' FT′模型相应的的 T T T设计为1,记作 F 1 ′ F_1' F1′,再预测包含对抗样本的测试集 X t e s t X_{test} Xtest。
如此操作的原因在于通过设置较大的 T T T, s o f t m a x softmax softmax的输入将变大。例如设置 T = 100 T=100 T=100时,样本 x x x和其邻域点 x ′ x' x′的逻辑输出 Z ( ⋅ ) Z(\cdot) Z(⋅)的差异将拉大一百倍,其中 Z ( ⋅ ) Z(\cdot) Z(⋅)用于获取 s o f t m a x softmax softmax的输入。而当设置 T = 1 T=1 T=1时, F 1 ′ F_1' F1′的输出将变为类似于 ( ϵ , ϵ , … , 1 − ( m − 1 ) ϵ , ϵ , … , ϵ ) (\epsilon,\epsilon,\dots,1-(m-1)\epsilon,\epsilon,\dots,\epsilon) (ϵ,ϵ,…,1−(m−1)ϵ,ϵ,…,ϵ)的形式,其中 ϵ \epsilon ϵ是对于计算机来说无限接近于0的数。这将使得目标输出类的得分趋近于1,从而使得攻击者难以发现 F 1 ′ F_1' F1′的梯度信息。
通过预处理数据来保护模型:添加一个非平滑或不可微的预处理器 g ( ⋅ ) g(\cdot) g(⋅),并基于 g ( X ) g(X) g(X)训练模型 f f f。分类器 f ( g ( ⋅ ) ) f(g(\cdot)) f(g(⋅))关于 x x x是不可微的,这将导致攻击者的失败。例如温度计编码 (thermometer encoding) 将图像向量 x i x_i xi离散化为 l l l维向量 τ ( x i ) \tau(x_i) τ(xi),例如 l = 10 l=10 l=10时, τ ( 0.66 ) = 1111110000 \tau(0.66)=1111110000 τ(0.66)=1111110000,最后再基于这些向量训练DNN模型。其他方法还包括裁剪、压缩,以及总方差最小化。这些方法均为阻塞模型输入与输出的平滑连接,从而使得攻击者难以发现梯度信息 ∂ F ( x ) / ∂ x \partial{F(x)}/\partial x ∂F(x)/∂x。
通过随机化DNN来迷惑攻击者。例如训练一个分类器 s = { F t : t = 1 , 2 , … , k } s=\{F_t:t=1,2,\dots,k\} s={Ft:t=1,2,…,k},样本 x x x评估环节则随机选择 s s s中的一个模型来预测标签 y y y。由于攻击者不知道哪个分类器被使用,所以被攻击的概率被降低了。其他的操作还包括随机丢弃网络中的一些节点,更改图像的大小并0填充。
PixelDefend和Defense-GAN在分类前使用生成模型将潜在的对抗样本投影到良性数据流形上,这将导致最终的分类模型是一个极深的神经网络。这种方法成功的理由是,每一层的偏导数的累积积会导致梯度 ∂ L ( x ) ∂ x \frac{\partial\mathcal{L}(x)}{\partial{x}} ∂x∂L(x)极端小或极端大,这将阻止攻击者准确定位对抗样本。
该方法的缺点在于,仅仅能迷糊攻击者,而非消除对抗样本。例如C&W′s attack突破了防御性蒸馏,2.2-4的方法也被相继爆破。
改变DNN的学习方式以提升模型健壮性,研究如何学习模型参数以对潜在的对抗样本做出所希望的预测。该类型的方法的主要关注点在于:
1)学习模型参数 θ ∗ \theta^* θ∗以最小化平均对抗损失:
θ ∗ = arg min θ ∈ Θ E x ∼ D max ∥ x ′ − x ∥ ≤ ϵ L ( θ , x ′ , y ) , (2) \tag{2} \theta^*=\argmin_{\theta\in\Theta}\mathbb{E}_{x\sim\mathcal{D}}\max_{\|x'-x\|\leq\epsilon}\mathcal{L}(\theta,x',y), θ∗=θ∈ΘargminEx∼D∥x′−x∥≤ϵmaxL(θ,x′,y),(2) 2)学习模型参数 θ ∗ \theta^* θ∗以最大化平均最小扰动距离:
θ ∗ = arg max θ ∈ Θ E x ∼ D min C ( x ′ ) ≠ y ∥ x ′ − x ∥ . (3) \tag{3} \theta^*=\argmax_{\theta\in\Theta}\mathbb{E}_{x\sim\mathcal{D}}\min_{C(x')\neq y}\|x'-x\|. θ∗=θ∈ΘargmaxEx∼DC(x′)=ymin∥x′−x∥.(3) 一个健壮性优化算法应当具备其潜在威胁相关的先验知识,即对抗空间 D \mathcal{D} D,然后保卫者建立这些攻击手段针对性的分类器。于大多数相关工作,其目标是防御基于最小 l p l_p lp (特指 l ∞ l_\infty l∞和 l 2 l_2 l2) 范数扰动生成的对抗样本,这也是本节的关注重点。
一些关于防御对抗性的早期研究侧重于利用健壮的DNN所具有的某些属性来抵抗对抗样本。例如,Szegedy等人认为一个稳健的模型在输入失真时应当依然稳定,即约束Lipschitz常数以强加模型输出的“稳定性”。对这些正则化的训练有时可以启发式地帮助模型变得更加健壮:
1)惩罚层的Lipschitz常数 (penalize layer’s Lipschitz constant):当Szegydy等人首次发现DNN对对抗样本的脆弱性时,他们同时表面添加一些正则化可以使模型更稳定。其建议在任意两个网络层之间添加Lipschitz常量 L k L_k Lk:
∀ x , δ , ∥ h k ( x ; W k ) − h k ( x + δ ; W k ) ∥ ≤ L k ∥ δ ∥ . (4) \tag{4} \forall x,\delta,\qquad\|h_k(x;W_k)-h_k(x+\delta;W_k)\|\leq L_k\|\delta\|. ∀x,δ,∥hk(x;Wk)−hk(x+δ;Wk)∥≤Lk∥δ∥.(4)这样网络的输出将不会轻易地被输入的轻微扰动所影响。Parseval网络使得模型的对抗性风险正确地依赖 L k L_k Lk:
E x ∼ D L a d v ( x ) ≤ E x ∼ D L ( x ) + E x ∼ D [ max ∥ x ′ − x ∥ ≤ ϵ ∣ L ( F ( x ′ ) , y ) − L ( F ( x ) , y ) ∣ ] ≤ E x ∼ D L ( x ) + λ p ∏ k = 1 K L k , (5) \tag{5} \begin{aligned} \underset{x \sim \mathcal{D}}{\mathbb{E}} & \mathcal{L}_{a d v}(x) \leq \underset{x \sim \mathcal{D}}{\mathbb{E}} \mathcal{L}(x)+\\ & \underset{x \sim \mathcal{D}}{\mathbb{E}}\left[\max _{\left\|x^{\prime}-x\right\| \leq \epsilon}\left|\mathcal{L}\left(F\left(x^{\prime}\right), y\right)-\mathcal{L}(F(x), y)\right|\right] \leq \\ & \underset{x \sim \mathcal{D}}{\mathbb{E}} \mathcal{L}(x)+\lambda_{p} \prod_{k=1}^{K} L_{k}, \end{aligned} x∼DELadv(x)≤x∼DEL(x)+x∼DE[∥x′−x∥≤ϵmax∣L(F(x′),y)−L(F(x),y)∣]≤x∼DEL(x)+λpk=1∏KLk,(5)其中 λ p \lambda_p λp是损失函数的Lipschitz常量。该公式表面在训练过程中,通过惩罚每个隐藏层的 L k L_k Lk,可以降低模型的对抗风险并持续增加模型的健壮性。后续已被推广到半监督与无监督防御中。
2)惩罚层的偏导数 (penalize layer′s partial derivative):例如引入深度收缩网络来正则化训练。深度收缩网络表明在标准的反向传播框架中增加对每一层的偏导数的惩罚,可以使得输入数据的变化不会导致每一层的输出发生大的变化。因此,分类器很难对扰动的数据样本给出不同的预测。
1)基于FGSM做对抗训练:
【1】Adversarial Attacks and Defenses in Images, Graphs and Text: A Review