【清风拂岗】对抗性攻击 Adversarial Attack

Adversarial Attack

  • 对于训练后的网络,是否具备鲁棒性来应对恶意输入,防止模型被“糊弄”
  • 希望网络不仅具有 高准确率,还需要能够具有应对恶意输入的被欺骗能力
  • 对于原始图像 Benign Image,对每个像素添加微小杂质生成 Attacked Image,使得模型的分类结果产生错误。
  • 攻击分为 Targeted 攻击和 Non-Targeted 攻击,区别是是否预定模型错误的估计。

攻击方法

IMG

  • 于欺骗的模型,由于是在模型部署时进行欺骗,所以可以不考虑模型参数,将之固定

  • 对于输入的原始图像 x0,输出 y0.对于攻击图像 x,输出为 y。对于真实的数据标签是$\hat{y}$,我们希望攻击图像得到的输出 y与$\hat{y}$的距离尽可能大,这样的损失函数可以定义为“负交叉熵”。另一方面,也希望攻击图像与原始图像尽可能相似,就需要使得$d(x^0,x)≤ \epsilon$,即图像距离小于一个阈值。可以是 最大差距或者差值均方等距离。、

    • L2-norm:差值平方和
    • L-Infinity: 差值最大值
    • 将一副图像的所有像素都调整一点,跟将图像的某个像素作较大调整,可以得到相同的 L2-norm,但是 L-infinity 差别很大。
    • 从人的主观感觉来看,对多个像素进行小的调整,更加不易分辨
  • 而对于有目标攻击,我们希望攻击图像的标签与真实标签尽可能大,与 target标签尽可能小

  • 我们固定模型参数,要生成攻击图像,就是根据损失函数获得。这里的损失函数和之前模型训练时一致,只不过这里的参数是得到输入 x

    • 对于模型训练时:$w^,b^=arg\ \underset{w,b}{min} L(y,\hat{y})$

    • 对于生成攻击图像时:$x^*=arg\ \underset{x}{min}\ L(x)$

    • 使用梯度下降得到 x:

      • 初始输入图像是真实图像 x0
      • for t:
        • $x^t \leftarrow x^{t-1}+\eta \frac{\partial L(x)}{\partial x}$
        • if $d(x^0,x^t) > \epsilon$
          • $x^t\leftarrow fix(x^t)$
  • 上面我们使用梯度下降求解攻击图像,计算梯度的过程需要知道模型的参数,因为$g=\frac{\partial L(x)}{\partial x},L(x)=-e(y,\hat{y}),\hat{y}=f_{\theta}(x)$,这里的$\theta$就是需要知道的模型的参数。这种获得进攻图像的方式我们称之为「白盒攻击」,因为需要知道模型的参数。与之对应的就是『黑盒攻击』。

黑盒攻击

  • 假设对于一个模型我们不知道他的参数,但是知道训练该模型的数据集。那我们就可以用这个数据集去训练一个我们自己的网络,其架构可以和要攻击的网络不同。这样的网络称为 Proxy Network。再使用白盒方式利用 Proxy Network 计算攻击图片,就可能对原本的模型进行攻击
  • 如果不知原模型的训练集,可以对该模型输入许多图像获得对应的输出标签,然后用这些图像+标签作为数据集去训练我们的 Proxy network,也可以实现攻击的效果。
  • 使用黑盒攻击一般只做 non-target attack
  • 攻击是容易实现的
    • 黑盒白盒攻击的成功率较高
    • 可以对某个像素改变完成攻击
    • 可以使用一个变化对多类别图像攻击
    • 可以在物理世界,获得攻击:如人脸识别时戴特制眼镜、信号牌修改等
    • 模型后门:在模型训练时添加 特定图像,其标签主观上也是正确的。模型使用该数据集训练后,在实际图片分类时,如果遇到某一张图像(不一定是训练集中的特定图像),就会分类错误

防御方式

被动防御:

  • 在图像输入模型之前加入一个 Filter,可能是对输入图像很简单的处理
    • 如 smooth 模糊处理,就可以很大限度 的避免攻击。因为攻击图像中的攻击信号是非常特殊的,一旦模糊,就会影响攻击信号。
    • 对图像作压缩,再解压
    • 等等
  • 加入 Filter 也容易被破解。因为 Filter 可以视为模型的隐层,如果攻击者知道 Filter 的具体方式,在生成攻击图像时也加入 Filter,就可以获得对应的攻击图像。
  • 与之对应的,防御时进行随机方式的 Filter

主动防御:

  • 一开始就训练不容易被攻击的模型 Adversarial training,使得模型具有鲁棒性
  • 主要思想是对于训练集 (X,y),训练模型后使用白盒攻击的方式获得攻击图像X',对攻击图像标上正确的标签获得 数据集(X‘,y),进而将先后两个数据集合并(X+X', y)重新训练模型。可以重复作多次
  • 这种思想也可视为图像增广Data Augmentation
  • 计算过程非常耗费计算资源