深度学习中的对抗性攻击与防御
今天我们来看一篇关于深度学习过程中的对抗性攻击与防御的文章。Research:Artifificial Intelligence—Feature Article. Adversarial Attacks and Defenses in Deep Learning, Kui Ren , Tianhang Zheng , Zhan Qin ,Xue Liu。这篇文章首先介绍深度学习的算法基础,然后指出了某些防御技术的能力,看起来更像是一篇综述性文章。
Introduction
对抗性样本
首先我们先了解一下对抗性样本是什么,在大规模部署DL模型的时候,会有一些加入干扰的样本,这些样本会使得人类无法察觉,但是模型会在不知不觉中做出错误的预测,从而使得训练的成果产生一些严重的偏差和影响。
通过威胁模型,可以将对抗性攻击分为白盒攻击\(white-box\),灰盒攻击\(grey-box\)和黑盒攻击。顾名思义,白盒就是指对于对方的模型有了充分充足的了解,包括体系结构参数等等。在灰盒模型中,仅限于了解模型的结构;在黑盒模型中,则仅能通过调用查询来生成对抗性样本。
攻击方法
在这些威胁模型的框架之内,有很多对抗性样本攻击算法提出,比如以下的几种:
- 有限内存的limited-memory Broyden–Fletcher–Goldfarb–Shanno (L-BFGS) algorithm
- 快速梯度符号法the fast gradient sign method (FGSM)
- 基本迭代法/投影梯度下降the basic iterative method (BIM)/projected gradient descent (PGD)
- 分布式对抗性攻击distributionally adversarial attack
- Carlini and Wagner (C&W) attacks
- 基于雅克比矩阵的显著性映射攻击Jacobian-based saliency map attack (JSMA)
- (我也不知道是什么) DeepFool
防御方法
目前人们提出了很多对抗性样本检测和分类的技术,包括了启发式防御和认证防御。启发式防御中效果最好的莫过于对抗性训练,就是在训练的过程中,将对抗性样本纳入训练过程来提高模型的鲁棒性;而认证防御中的certification的意思就是在特定的防御对抗性攻击模型之下提供最低精确度的认证,保证其攻击成功率在这个上限之内。整体来说,目前还是对抗性训练的效果更优。
Preliminaries
首先我们来进行一些准备性质的工作。 \[ D(x,x')<\eta,f(x')\ne f(x)=y \\ 这时,我们称\eta为一个小的扰动(perturbation),x'为一个对抗性样本。 \] 相对应的优化损失我们都采取交叉熵的方式来定义 \[ J(\theta,x,y)表示在权重\theta下的优化损失。 \\ 特别的,在分类任务中,我们会使用f(x)和标签y之间的交叉熵来定义优化损失:J(f(x),y) \] 关于交叉熵。
同时还进行了\(L_p \ distance \ metric\)的定义: \[ \left \| \mathbf{v} \right \|_p = (\sum\left | \mathbf{v_i}\right |^p)^{1/p} \]
Adversarial Attacks
L-BFGS Algorithm
简单来说,就是通过寻找能够使得最终分类结果不同的最小微扰\(L_p\)范数。这个问题在数学上不好解,所以作者建议通过最小化一个混合损失函数来实现,待了解。 \[ min \left \| \mathbf{x-x'} \right \|_p \ subjects \ to \ f(x') \ne y' \]
Fast gradient sign method
最速梯度符号法,顾名思义就是让良性的数据点沿着最快的方向改变,而这个“方向”指的就是前文所定义的对抗性损失。沿着这个方向变化,意味着可以增加对抗性样本的干扰性。 \[ x'=x+\epsilon·sign[\nabla_xJ(\theta,x,y')] \]
BIM & PGD
简单来说,这两种方法都是基于多步迭代,就是将上述过程中的梯度下降拆分为多个小的单步迭代过程。
#### Momentum iterative attack
基于动量优化器灵感的设计。待了解。