本文总结了近年提出的各种对抗样本的攻击方法。对抗样本的攻击主要分为无特定目标攻击(即只要求分类器对对抗样本错误分类,而不特定要求错误分类到哪一类)和特定目标攻击(即要求分类器将对抗样本错误分类到特定类别)。
本文先介绍无特定目标攻击的目标函数,然后介绍FGSM、BIM、StepLL、MI-FGSM、DIM、TIM、SI-NI方法。
arg max x a d v J ( x a d v , y ) s.t. ∥ x a d v − x real ∥ ∞ ≤ ϵ \begin{aligned} &\underset{\boldsymbol{x}^{a d v}}{\arg \max } J\left(\boldsymbol{x}^{a d v}, y\right)\\ \text { s.t. }&\left\|\boldsymbol{x}^{a d v}-\boldsymbol{x}^{\text {real }}\right\|_{\infty} \leq \epsilon \end{aligned} s.t. xadvargmaxJ(xadv,y)∥∥xadv−xreal ∥∥∞≤ϵ
其中 x r e a l \boldsymbol{x}^{real} xreal为输入图像, x a d v \boldsymbol{x}^{a d v} xadv为对抗样本图像, y y y为输入图像的真实类别标签。
对抗样本生成时候的约束是其于真实样本的 L ∞ L_{\infty} L∞距离小于 ϵ \epsilon ϵ
函数 J J J一般为交叉熵损失:
J ( x a d v , y ) = − ∑ i = 1 N y i l o g ( C ( x a d v ) i ) J\left(\boldsymbol{x}^{a d v}, y\right)=-\sum_{i=1}^{N}y_ilog(C(\boldsymbol{x}^{a d v})_i) J(xadv,y)=−i=1∑Nyilog(C(xadv)i)
其中 N N N表示分类的类别数, y y y为one-hot的输入图像 x r e a l \boldsymbol{x}^{real} xreal的类别标签, C C C为分类器
来源:Explaining and harnessing adversarial examples [2015ICLR]
公式:
x a d v = x r e a l + ϵ ⋅ sign ( ∇ x J ( x r e a l , y ) ) \boldsymbol{x}^{a d v}=\boldsymbol{x}^{r e a l}+\epsilon \cdot \operatorname{sign}\left(\nabla_{\boldsymbol{x}} J\left(\boldsymbol{x}^{r e a l}, y\right)\right) xadv=xreal+ϵ⋅sign(∇xJ(xreal,y))
本文提出的是单步方法,直接将损失函数 J J J对输入图像 x x x求导,再根据导数的符号得到每个像素的扰动方向,并乘以扰动大小。
来源:Adversarial examples in the physical world [2016]
公式:
x t + 1 a d v = x t a d v + α ⋅ sign ( ∇ x J ( x t a d v , y ) ) x 0 a d v = x r e a l \begin{aligned} \boldsymbol{x}_{t+1}^{a d v} &=\boldsymbol{x}_{t}^{a d v}+\alpha \cdot \operatorname{sign}\left(\nabla_{\boldsymbol{x}} J\left(\boldsymbol{x}_{t}^{a d v}, y\right)\right) \\ \boldsymbol{x}_{0}^{a d v} &=\boldsymbol{x}^{r e a l} \end{aligned} xt+1advx0adv=xtadv+α⋅sign(∇xJ(xtadv,y))=xreal
本文提出的是迭代的攻击方法,一共迭代攻击 T T T步,每次的攻击步长为 α = ϵ / T \alpha=\epsilon / T α=ϵ/T
来源:Adversarial Machine Learning at Scale [2017ICLR]
公式:
x a d v = x r e a l − ϵ ⋅ sign ( ∇ x J ( x r e a l , y L L ) ) y L L = arg min C ( x r e a l ) \begin{aligned} &\boldsymbol{x}^{a d v}=\boldsymbol{x}^{r e a l}-\epsilon \cdot \operatorname{sign}\left(\nabla_{\boldsymbol{x}} J\left(\boldsymbol{x}^{r e a l}, y_{LL}\right)\right)\\ &y_{LL}=\argmin{C(x^{real})} \end{aligned} xadv=xreal−ϵ⋅sign(∇xJ(xreal,yLL))yLL=argminC(xreal)
其中 C C C为分类器
本文提出的也是单步的攻击方法,与FGSM方法中增大图像与真实标签之间的距离不同,该方法是约束图像与分类概率最低的类别之间的距离
来源:Boosting adversarial attacks with momentum [2018CVPR]
公式:
g t + 1 = μ ⋅ g t + ∇ x J ( x t a d v , y ) ∥ ∇ x J ( x t a d v , y ) ∥ 1 x t + 1 a d v = x t a d v + α ⋅ sign ( g t + 1 ) \begin{aligned} &\boldsymbol{g}_{t+1}=\mu \cdot \boldsymbol{g}_{t}+\frac{\nabla_{\boldsymbol{x}} J\left(\boldsymbol{x}_{t}^{a d v}, y\right)}{\left\|\nabla_{\boldsymbol{x}} J\left(\boldsymbol{x}_{t}^{a d v}, y\right)\right\|_{1}} \\ &\boldsymbol{x}_{t+1}^{a d v}=\boldsymbol{x}_{t}^{a d v}+\alpha \cdot \operatorname{sign}\left(\boldsymbol{g}_{t+1}\right) \end{aligned} gt+1=μ⋅gt+∥∥∇xJ(xtadv,y)∥∥1∇xJ(xtadv,y)xt+1adv=xtadv+α⋅sign(gt+1)
其中 μ \mu μ为衰退因子,论文中取值为1
本文提出的方法在BIM方法的基础上,使用一个动量来记录前面迭代时的优化方向,再结合当前步的导数,从而确定当前步的最终优化方向。该方法可以提高黑盒攻击时的迁移性
来源:Improving transferability of adversarial examples with input diversity [2018]
该方法提出对输入的真实图像进行随机变换(以一定的概率进行resize、padding等操作),然后再作为分类器的输入,并进行后续的求导操作。该方法可以与MI-FGSM等方法结合,同样可以提高攻击的迁移性
来源:Evading Defenses to Transferable Adversarial Examples by Translation-Invariant Attacks [2019CVPR]
公式:
TI-FGSM:
x a d v = x r e a l + ϵ ⋅ sign ( W ∗ ∇ x J ( x r e a l , y ) ) x^{a d v}=x^{r e a l}+\epsilon \cdot \operatorname{sign}\left(W * \nabla_{x} J\left(x^{r e a l}, y\right)\right) xadv=xreal+ϵ⋅sign(W∗∇xJ(xreal,y))
TI-BIM:
x t + 1 a d v = x t a d v + α ⋅ sign ( W ∗ ∇ x J ( x t a d v , y ) ) x_{t+1}^{a d v}=x_{t}^{a d v}+\alpha \cdot \operatorname{sign}\left(W * \nabla_{x} J\left(x_{t}^{a d v}, y\right)\right) xt+1adv=xtadv+α⋅sign(W∗∇xJ(xtadv,y))
其中 W W W是高斯卷积核
本文提出的方法,在正常将交叉熵函数对输入求导后,再经过一个高斯核的卷积变换,将得到的值再作为图像的更新方向进行修改
该方法也同样可以和MI-FGSM和DIM等方法进行结合
来源:Nesterov Accelerated Gradient and Scale Invariance for Adversarial Attacks [2020ICLR]
本文在MI-FGSM的基础上提出了两点改进
x t n e s = x t a d v + α ⋅ μ ⋅ g t g t + 1 = μ ⋅ g t + ∇ x J ( x t n e s , y ) ∥ ∇ x J ( x t n e s , y ) ∥ 1 x t + 1 a d v = x t a d v + α ⋅ sign ( g t + 1 ) \begin{aligned} &\boldsymbol{x}_{t}^{nes}=\boldsymbol{x}_{t}^{a d v} + \alpha \cdot \mu \cdot \boldsymbol{g}_{t}\\ &\boldsymbol{g}_{t+1}=\mu \cdot \boldsymbol{g}_{t}+\frac{\nabla_{\boldsymbol{x}} J\left(\boldsymbol{x}_{t}^{nes}, y\right)}{\left\|\nabla_{\boldsymbol{x}} J\left(\boldsymbol{x}_{t}^{nes}, y\right)\right\|_{1}} \\ &\boldsymbol{x}_{t+1}^{a d v}=\boldsymbol{x}_{t}^{a d v}+\alpha \cdot \operatorname{sign}\left(\boldsymbol{g}_{t+1}\right) \end{aligned} xtnes=xtadv+α⋅μ⋅gtgt+1=μ⋅gt+∥∇xJ(xtnes,y)∥1∇xJ(xtnes,y)xt+1adv=xtadv+α⋅sign(gt+1)
与MI-FGSM相比,NI-FGSM在每次迭代前,在前面累积梯度方向先再前进一步,然后再进行更新
该方法首先将输入图像在数值上进行不同尺度的缩放
S i ( x ) = x 2 i S_{i}(x)=\frac{x}{2^i} Si(x)=2ix
再对不同数值缩放过的图像分别经过分类器,得到类别概率后计算交叉熵,再将各个模型的损失函数计算均值
arg max x a d v 1 m ∑ i = 0 m J ( S i ( x a d v ) , y ) s.t. ∥ x a d v − x r e a l ∥ ∞ ≤ ϵ \begin{array}{c} \underset{x^{a d v}}{\arg \max } \frac{1}{m} \sum_{i=0}^{m} J\left(S_{i}\left(x^{a d v}\right), y\right) \\ \text { s.t. }\left\|x^{a d v}-x^{real}\right\|_{\infty} \leq \epsilon \end{array} xadvargmaxm1∑i=0mJ(Si(xadv),y) s.t. ∥∥xadv−xreal∥∥∞≤ϵ
论文中 m m m的取值为4,即将[0-1]范围内的输入图像,最小缩放至[0-1/16]范围,以提高对抗攻击在黑盒攻击时的迁移性