DeepFool论文解读

DeepFool: a simple and accurate method to fool deep neural networks

1.引言

作者首先定义了对抗攻击的范式和模型的鲁棒性。
  通常,对与一个给定的模型,能够改变分类器 k ^ ( x ) \hat{k}(x) k^(x) 的分类结果的最小对抗扰动 r r r 定义如下
Δ ( x ; k ^ ) : = min ⁡ r ∥ r ∥ 2      subject to    k ^ ( k + r ) ≠ k ^ ( x ) \Delta(x;\hat{k}):=\min_r\|r\|_2\;\;\text{subject to}\; \hat{k}(k+r) \not=\hat{k}(x) Δ(x;k^):=rminr2subject tok^(k+r)=k^(x)
其中 x x x 是图片, k ^ ( x ) \hat{k}(x) k^(x) 是预测的标签, Δ ( x ; k ^ ) \Delta(x;\hat{k}) Δ(x;k^) 是分类器 k ^ \hat{k} k^ x x x 处的鲁棒性。分类器 k ^ \hat{k} k^ 的鲁棒性定义为 ρ a d v ( k ^ ) = E x Δ ( x ; k ^ ) ∥ x ∥ 2 \rho_{adv}(\hat{k})=\mathbb{E}_x\frac{\Delta(x;\hat{k})}{\|x\|_2} ρadv(k^)=Exx2Δ(x;k^)
作者的贡献可以归结为三点:

  • 提出了一种新的计算对抗样本的方法 DeepFool,该方法是基于梯度迭代方法中生成扰动最小的,并且能有较高的攻击准确率。

  • 用对抗样本增加训练数据,显著提高模型对对抗扰动的鲁棒性,该部分贡献对抗训练的前期研究。

  • 分析了 FGSM 算法来验证分类器的鲁棒性的不合理性,并提出该算法会过分的评估分类器的鲁棒性,并定义了什么是样本鲁棒性,什么是模型的鲁棒性。

2.DeepFool 实现 - 二分类

首先定义一个二分类器 f ( x ) = w T x + b f(x)=w^Tx + b f(x)=wTx+b, 以及分类超平面 F = { x : w T x + b = 0 } \mathcal{F} = \{x:w^Tx+b =0\} F={x:wTx+b=0}。对于一个样本 x 0 x_0 x0 f f f x 0 x_0 x0 处的鲁棒性 Δ ( x 0 ; f ) \Delta(x_0;f) Δ(x0;f) 则是 x 0 x_0 x0 到超平面的正交投影距离,定义如下:
r ∗ ( x 0 ) : = arg min ⁡ ∥ r ∥ 2      subject to    s i g n ( f ( x 0 + r ) ) ≠ s i g n ( f ( x 0 ) ) = − f ( x 0 ) ∥ w ∥ 2 2 w r_*(x_0) :=\argmin \|r\|_2 \;\; \text{subject to} \; sign(f(x_0+r)) \not= sign(f(x_0))\\ =-\frac{f(x_0)}{\|w\|^2_2}w r(x0):=argminr2subject tosign(f(x0+r))=sign(f(x0))=w22f(x0)w
其中 w w w 是超平面的法向量
在这里插入图片描述
如果 f f f 是一个可微的函数,那么就可以通过迭代的方式求出 r ∗ r_* r,可以将以上的公式优化为下面的形式
在这里插入图片描述
推导过程:
已知 r i = − f ( x i ) ∥ w ∥ 2 2 w r_i = -\frac{f(x_i)}{\|w\|^2_2}w ri=w22f(xi)w,从几何意义上来说,梯度 ∇ f ( x i ) = w \nabla f(x_i) = w f(xi)=w,所以有
r i = − f ( x i ) ∥ ∇ f ( x i ) ∥ 2 2 ∇ f ( x i ) r_i = \frac{-f(x_i)}{\|\nabla f(x_i)\|_2^2}\nabla f(x_i) ri=∥∇f(xi)22f(xi)f(xi)
又因为 ∥ ∇ f ( x i ) ∥ 2 2 = ∇ f ( x i ) ⋅ ∇ f ( x i ) T \|\nabla f(x_i)\|_2^2 = \nabla f(x_i) \cdot \nabla f(x_i)^T ∥∇f(xi)22=f(xi)f(xi)T , 移项就有:
∇ f ( x i ) T r i + f ( x i ) = 0 \nabla f(x_i)^Tr_i + f(x_i) = 0 f(xi)Tri+f(xi)=0
通过上面的公式得到二分类求对抗样本的算法如下
在这里插入图片描述

3.DeepFool 实现 - 多分类

首先是多分类器定义如下
k ^ ( x ) = arg max ⁡ k f k ( x ) \hat{k}(x) = \argmax_k f_k(x) k^(x)=kargmaxfk(x)
其中 f k ( x ) f_k(x) fk(x) 是分类器对第 k k k 类的预测结果,定义 f ( x ) = W T x + b f(x) = \mathbf{W}^T x +b f(x)=WTx+b, 那么求多分类的扰动 r r r 定义如下
arg min ⁡ r ∥ r ∥ 2 s . t . ∃ k : w k T ( x 0 + r ) + b k ≥ w k ^ ( x 0 ) T ( x 0 + r ) + b k ^ ( x 0 ) \argmin_r \|r\|_2 \\ s.t. \exists k:w_k^T(x_0+r) +b_k \geq w^T_{\hat{k}(x_0)}(x_0+r) + b_{\hat{k}(x_0)} rargminr2s.t.∃k:wkT(x0+r)+bkwk^(x0)T(x0+r)+bk^(x0)

为了更好的理解以上优化形式的含义,自己做了一个图示便于理解。如下图所示,左半部分是干净样本的概率向量的输出,预测的类别为 k ^ \hat{k} k^ , 加入对抗扰动后,预测类别变成了 k k k
在这里插入图片描述
从几何上来解释,上述问题对应于 x 0 x_0 x0 与凸多面体 P P P 之间距离的计算, P P P 可以定义如下
P = ⋂ k = 1 c { x : f k ^ ( x 0 ) ( x ) ≥ f k ( x ) } P = \bigcap_{k=1}^c\{x:f_{\hat{k}(x_0)}(x) \geq f_k(x)\} P=k=1c{x:fk^(x0)(x)fk(x)}
x 0 x_0 x0 位于 P P P 内一点。
如图所示,绿色直线所包含的区域就是 P P P
在这里插入图片描述
定义 l ^ ( x 0 ) \hat{l}(x_0) l^(x0) 是距离 P P P 最近的超平面,根据距离公式, l ^ ( x 0 ) \hat{l}(x_0) l^(x0) 可定义如下
l ^ ( x 0 ) = arg min ⁡ k ≠ k ^ ( x 0 ) ∥ f k ( x 0 ) − f k ^ ( x 0 ) ( x 0 ) ∥ ∥ w k − w k ^ ( x 0 ) ∥ 2 \hat{l}(x_0) = \argmin_{k\not=\hat{k}(x_0)} \frac{\|f_k(x_0)-f_{\hat{k}(x_0)}(x_0)\|}{\|w_k - w_{\hat{k}(x_0)}\|_2} l^(x0)=k=k^(x0)argminwkwk^(x0)2fk(x0)fk^(x0)(x0)
那么最小的扰动 r ∗ ( x 0 ) r_*(x_0) r(x0) 就是 x 0 x_0 x0 投影到超平面 l ^ ( x 0 ) \hat{l}(x_0) l^(x0) 的距离,即
r ∗ ( x 0 ) = ∥ f l ^ ( x 0 ) ( x 0 ) − f k ^ ( x 0 ) ( x 0 ) ∥ ∥ w l ^ ( x 0 ) − w k ^ ( x 0 ) ∥ 2 ( w l ^ ( x 0 ) − w k ^ ( x 0 ) ) r_*(x_0) = \frac{\|f_{\hat{l}(x_0)}(x_0)-f_{\hat{k}(x_0)}(x_0)\|}{\|w_{\hat{l}(x_0)} - w_{\hat{k}(x_0)}\|_2}(w_{\hat{l}(x_0)} - w_{\hat{k}(x_0)}) r(x0)=wl^(x0)wk^(x0)2fl^(x0)(x0)fk^(x0)(x0)(wl^(x0)wk^(x0))

对与现实中常用到的分类器往往是非线性的,在这样的非线性的凸区域 P P P 内,作者选择一个线性的凸区域 P ~ \tilde{P} P~ 作为替代,每一次迭代过程中的 P ~ i \tilde{P}_i P~i 定义如下
P ~ i = ⋂ k = 1 c { x : f k ( x i ) − f k ^ ( x 0 ) ( x i ) + ∇ f k ( x i ) T x − ∇ f k ^ ( x 0 ) ( x i ) T x ≤ 0 } \tilde{P}_i = \bigcap_{k=1}^c \{x:f_k(x_i)-f_{\hat{k}(x_0)}(x_i)+\nabla f_k(x_i)^Tx - \nabla f_{\hat{k}(x_0)}(x_i)^Tx \leq 0\} P~i=k=1c{x:fk(xi)fk^(x0)(xi)+fk(xi)Txfk^(x0)(xi)Tx0}
最终,多分类的DeepFool生成对抗样本的算法流程如下:
在这里插入图片描述
以上算法是在二范数下进行计算的,如果要扩展到 p p p 范数下,只需要修改 10 行和11行公式
l ^ = arg min ⁡ ∣ f k ′ ∣ ∥ w k ′ ∥ q r i = ∣ f l ^ ′ ∣ ∥ w l ^ ′ ∥ q q ∣ w l ^ ′ ∣ q − 1 ⊙ s i g n ( w l ^ ′ ) \hat{l} = \argmin \frac{|f^{\prime}_k|}{\|w_k^{\prime}\|_q}\\ r_i = \frac{|f_{\hat{l}}^{\prime}|}{\|w_{\hat{l}}^{\prime}\|_q^q}|w_{\hat{l}}^{\prime}|^{q-1} \odot sign(w_{\hat{l}}^{\prime}) l^=argminwkqfkri=wl^qqfl^wl^q1sign(wl^)
其中 q = p p − 1 q = \frac{p}{p-1} q=p1p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值