摘要
本文提出了一种基于machine unlearning(机器不学习,机器学习遗忘)的擦除后门攻击的方法,主要有两步:
- 触发器模式恢复:从受害者模型中提取出触发器的模式。这个问题等价于:从受害者模型中提取出一个特定的噪声信号(分布),这可以通过熵最大化生成模型来解决。
- 受害者模型净化:通过1中恢复出来的触发器模式,结合基于machine unlearning的梯度上升的方法,来擦除模型污染的记忆(也就是模型遗忘)。
对比之前的machine unlearning方法,该方法不需要访问所有训练数据来进行重训练,并且比微调or修建方法更好。baseline有三个优的攻击方法,本文方法可以降低99%的攻击成功率在基准测试中。
介绍
总结了三种常见的后门擦除的方法:
微调
利用一小部分干净数据,对受害者模型进行微调,来擦除后门。
该方法有一定局限性,很难用一小部分数据来将后门神经元完全擦除[7, xidian, ICLR]
修剪
对微调之后的模型,进行修剪,所谓修剪,就是将满足某种性质的神经元修剪掉(比如神经元对触发器样本激活值很大)。
这个方法的局限性在于,直接修剪掉后会对正常样本也造成影响。
知识蒸馏
还是[7],用干净的模型来蒸馏掉受害者模型的脏知识,同时保证正确样本的正确率(不完全蒸馏掉)
问题在于干净的模型从哪里来?
该方法正确率较低,很大原因在于“干净模型”并不干净。
本文通过机器学习遗忘的方法,来擦除后门,客服克服以下问题:
通过[14-16]的方法(熵最大生成模型),来生成触发器模式,不需要访问任何的训练数据。触发器模式即为模型需要遗忘的记忆。
之前的方法很多都需要重新训练,并且对训练数据集需要完全访问。本文通过1. 中生成的触发器模式,来进行梯度上升。
直接梯度上升会导致灾难性遗忘,因此本文增加了权重惩罚机制。
近期工作
机器学习遗忘
简单介绍了一下机器学习遗忘的定义:消除某些特定样本对目标模型的影响。
发展:
- [11],2015,提出了机器学习遗忘,缺点:只能适用非适应性模型(non-adaptive),在适应性模型上性能表现非常差。
- [12, 23-25],近五年,提出了各种各样的基于重新训练的机器学习遗忘方法。
目前的缺点是,重训练需要消耗大量的资源,而后门攻击的场景就是外包、迁移学习。所以现在的情况就是,若是硬要用机器学习遗忘来消除后门,那么就是:为了避免消耗资源,选择使用外包、迁移学习,然后得到带有后门的模型,最后通过机器学习遗忘,消耗大量资源重训练,来消除后门。
概述
威胁模型&目标
defender:
- 不知道那一张图片被污染了,或者是哪一类被污染了
- 只能访问一部分验证集的数据,并不能访问训练集。
goal:
$$
arg \min_\theta \mathcal L (F_\theta(x_b),y_{real})+\lambda\vert\theta\vert
$$
$\lambda$是惩罚细数,$\vert\theta\vert$是惩罚项,目的是为了避免 灾难性遗忘。
本文工作:
触发器恢复
不同于往常使用GAN,本文使用的是熵最大生成模型;反转攻击过程,攻击过程是由输入推出输出,防御过程则是从输出反推出输入(的触发器模式)。
触发器模式遗忘
不同于基于重训练的mu,本文使用基于梯度上升的mu,来消除触发器对模型产生的负面影响。
通过机器学习遗忘的后门擦除
触发器恢复
优化路径:
$$
\mathcal L_R=\frac{1}{b}\sum_{x\in D^{‘}}(\max(0,\epsilon_i-F_{\theta_0}(x+G_i(\delta))[y_p])-\eta H_i(G_i(\delta);\delta^{‘}))
$$
符号表示:
$G_i$:the i-th generative model
$D^{‘}$: part of validation datast
$\delta$ and $\delta^{‘}$: two voices sampled from $N(0,1)$
$F_{\theta_0}$: backdoored model
$H_i$: mutual information estimator, [16]
- If X and Y are independent, $H_i(X,Y)=0$
$\epsilon_i$: the threshold from $[0,1]$
一个比较重要的观测:当输入$ x_i+\Delta$时,会被误分类为$y_{target}$;另外,当输入$x^{‘}=x_0+\delta$时,同样会被误分类,$\delta$是噪声,而对于一般的噪声,使得$x\ne x_0$,很难被误分类。
因此,基于这个观测,再来看上述公式,作者是在整个噪声空间中寻找合适的噪声,$L_R$即为优化路径。
触发器模式遗忘
直接使用梯度上升如下:
$$
\theta_t+\frac{\partial \mathcal L}{\partial \theta_t}\to \theta_{t+1}
$$
然而直接使用梯度上升会导致灾难性遗忘,因此采取了两步来解决:
- 使用一部分验证集训练,确保模型不遗忘正常的记忆
- 加入动态惩罚机制,避免过度遗忘。
$$
\mathcal L_U=\alpha(\mathcal L_{CE}(F_{\theta_j}(x_c),y_c)-\mathcal L_{CE}(F_{\theta_j}(x_b),y_b))+\beta\sum_{k=1}^M\omega_k\vert\theta_{j,k},-\theta_{0,k}\vert_1
$$