AI安全科普文第四章-投毒攻击

随着人工智能技术的高速发展,继云计算中的三种服务模式 IaaS (基础设施即服务)、 PaaS (平台即服务) 和 SaaS(软件即服务) 之后,机器学习即服务(Machine learning as a service, MLaaS)也迅速加入其中。MLaaS的服务提供商为用户提供多元化的机器学习设施(包括计算存储、开发实例、训练数据等等)、行业解决方案、以及特定的机器学习服务。比如,很多互联网公司会将训练好模型的布置到云端,为用户提供调用模型的特定接口API (Application Program Interface)。如图1所示,用户可以向MLaaS提供自己的待处理数据,MLaaS则返回处理结果。当下十分流行的大语言模型ChatGPT、Bard,以及AI(Artificial Intelligence)绘画工具Midjourney、DALL·E2和文心一格,便是其中的代表。

 

descript

图1 MLaaS

 

然而,这些五花八门的人工智能应用却时刻暴露在各式各样的恶意攻击之中。有些攻击会使得模型输出错误的结果、有些则会窃取模型中的敏感信息。可以想象一下,如2所示,如果在一个自动驾驶系统中,系统将一个 “STOP” 标志警示牌给错误分类为限速牌将会造成何种后果。

 

descript

 图2 后门攻击下的错误预测

Gu T, Dolan-Gavitt B, Garg S. Badnets: Identifying vulnerabilities in the machine learning model supply chain[J]. arXiv preprint arXiv:1708.06733, 2017. 

 

MLaaS使用意味着机器学习模型的训练过程外包处理的,其数据存储、数据预处理、模型构建、以及模型训练均在云环境下执行。这使得整个训练以及后续的部署服务过程不得不考虑各种各样的安全问题(如,使得模型输出错误的恶意样本)以及隐私问题(如,医疗、金融数据的泄露)。

 

数据投毒攻击便是其中着眼于在模型训练时,通过在数据集中插入精心设计的样本,利用训练或者微调过程来使模型 “中毒,从而破坏模型的可用性或完整性,来达到改变原有数据集分布、改变模型行为、降低模型性能、和为具有特定模式样本留出后门等多种目的的攻击方式。

 

下面我们介绍三种不同的数据投毒攻击方法。当然优秀的数据投毒方法远远不止这三种,我们挑选了其中比较有代表性的,从其原理和结果上进行简要的介绍。

 

 

标签翻转的数据投毒

 

对于有监督学习来说,模型学习的过程其实就是一个函数拟合的过程。而训练好的模型可以以相当高的准确率拟合一个复杂的函数。这个函数描述了一个从输入样本到输出标签的映射。很直觉地,如果在训练时训练样本与样本标签不匹配,那么模型很难较好地去拟合符合样本到标签的映射,或者会学习到与错误标签匹配的映射,从而改变了模型的行为,降低了模型的性能。

 

对于二分类问题,较早的方法会针对两种攻击目的来翻转标签。其一,是完整性攻击(Integrity attack):这一类攻击假设攻击者有一些特定的样本,攻击者希望受害者模型能够将这些样本预测为常规样本。其二是可用性攻击:这一类攻击则希望受害者模型的准确性受到损失。根据两类攻击不同的目的,其所使用的标签翻转策略也略有不同,所以其训练集也有所不同:

 

descript

 

descript

 

其中,descriptdescript分别表示用于完整性攻击与可用性攻击的标签翻转数据集;descript表示训练样本,descript表示该样本原有的标签;descript表示攻击者的目标模型(攻击者希望的模型);而descript表示样本数量。从数据集构成中可以看出完整性攻击目的在于使受害者模型能够将某些样本预测为目标模型的预测结果,而可用性攻击则聚焦于搞破坏——降低模型的准确性,使得模型不可用。

 

descript

图3 标签翻转攻击效果

Zhao M, An B, Gao W, et al. Efficient label contamination attacks against black-box learning models[C]//IJCAI. 2017: 3945-3951.

 

如图3所示,横轴为转换率,纵轴为预测精确度;蓝色曲线展示了随机标签翻转的效果;黄色曲线为对抗标签翻转(Adversarial Label Flip)的效果,它通过最小化支持向量机(Support Vector Machines)的精确度来实现;绿色曲线为投影梯度上升(Projected Gradient Ascent)的效果,这一方法旨在最大化目标模型参数与受害者模型参数的余弦相似度,同时最小化模型在相应(1)(2)数据集上的目标损失。

 

可以看到,基于标签翻转的不同方法均可以在一定程度上降低模型的预测准确率,而且随着翻转率的增加攻击效果也在不断增强。然而,经过标签翻转的样本却很容易被异常样本检测系统给过滤掉。

 

 

利用梯度的数据投毒

 

除了直接将标签翻转的样本作为中毒样本,投入到受害者模型的训练集中来使得模型性能下降之外,我们也可以利用攻击者目标函数 descript 的梯度来构造有效的中毒样本。以二分类问题为例,其具体思路如下:首先,在训练集和中毒样本的并集 descript 上,对受害者模型进行一次训练,得到在并集此上偏向受害者模型目标函数 descript 的模型 descript;然后,在模型 descript与攻击者收集的验证集 descript 上,计算对 descript 关于中毒样本 descript 的梯度。并利用此梯度去更新中毒样本,使得中毒样本向着梯度的正方向移动,以达到最大化 descript 的目的,从而产生最大的投毒效果。值得注意的是,这里的中毒样本是随机在训练数据中选取的,其中毒标签经过翻转来得到的。因此,简单地来看,将验证集损失 descript 作为攻击者目标函数,并以最大化之为目的构造中毒样本,便可以使得模型中毒。如图4是可参考得算法描述:

 

descript

图4 利用梯度的数据投毒算法

参考Biggio B, Nelson B, Laskov P. Poisoning attacks against support vector machines[J]. arXiv preprint arXiv:1206.6389, 2012.

 

 

其中可以看出在中毒样本的生成过程当中,一共有两个优化过程。其一是对受害者模型的参数descript 进行的更新。在这一次更新中由于中毒标签是随机翻转的,因此第一次的迭代可以看作是随机翻转策略的效果。另外次优化在中毒样本身上。攻击者在验证集 descript 上计算了攻击者目标函数 descript 关于中毒样本 descript 的梯度,并使得其在梯度的正方向移动,也就是原理 descript 上原有的正确标签的方向移动,以使得中毒样本达到最大的中毒效果。这两次优化的效果最终都赋予在了经过修改的中毒样本上。如图5是一个在MNIST数据集上测试的投毒效果实验:

 

descript

图5 MNIST上的投毒效果

Biggio B, Nelson B, Laskov P. Poisoning attacks against support vector machines[J]. arXiv preprint arXiv:1206.6389, 2012.

 

可以看出利用梯度的投毒效果要远好于基于标签随机翻转的投毒效果(由于初始化中毒样本是利用标签随机翻转实现的,因此第一次迭代展示的效果是标签随机翻转的效果)。但是由于没有在数据噪声(梯度)上添加约束,可以看到中毒样本(第二列)与原始样本(第一列)在视觉上有很大区别。因此这类中毒样本很容易被检查出来,从而被滤除掉

 

 

干净标签的数据投毒

 

不同于以往的利用标签翻转的攻击方式,干净标签的数据投毒不会对标签进行处理,而是在图像的特征层中进行约束,同时在图像域限制扰动大小。这样可以有很好的隐蔽性,因为这种方式可以:1)不用翻转标签,使得数据清洗者不会因为标签不匹配而进行滤除;2)对图像的扰动进行了限制,这样使得扰动后的图像看起来和原图像相似,因此数据清洗者也很难区分出中毒样本。这里使用了一种叫 “特征碰撞( Feature Collisions的方法来实现,具体表示如下:

 

descript

 

其中,descript 是中毒图像;descript 是基础图像(中毒图像原始分类的图像);descript 是目标预测图像(希望被误分到此类的图像);descript 是将图像映射到特征图的映射函数;descript 是约束扰动大小的超参数,可以用来平衡攻击成功率和隐蔽性。目标函数的第一项 descript 希望中毒样本 descript 在特征空间上与目标测试样本 descript 相似,以便受害者模型能够将之误分类为 descript 的类别。同时,descript 又希望添加扰动后的中毒图像与原图像在图像空间上尽量相似,以达到隐蔽的效果。

 

这里依然以二分类为例,只不过不同于以上两种方法,这种方法会使中毒图像有目标地误分到特定地目标类别。攻击者希望通过投放少量中毒样本后,使得模型在预测时会将特定的测试样本错误分类到指定的目标分类中。这一过程希望受害者模型的性能不会明显降低,在保持了模型可用性的同时提升了攻击的隐蔽性。特征碰撞的算法描述如图6

 

descript

图6特征碰撞算法

Shafahi A, Huang W R, Najibi M, et al. Poison frogs! targeted clean-label poisoning attacks on neural networks[J]. Advances in neural information processing systems, 2018, 31.

 

这里在实现的时候将目标函数分为了两个部分:前向步骤(Forward Step)与反向步骤(Backward Step)。前向步骤聚焦第一项 descript,使用梯度下降发来对中毒图像添加特定的扰动;而反向步骤聚焦第二项descript,利用近似更新来实现约束。

 

从算法整个过程可以看出 “干净标签其实是 “不干净的。因为虽然输入图像与标签匹配(干净),但是在特征层中图像特征图与标签是不匹配的(不干净)。而模型分类器分类依据是图像的高层特征(人类分类是原始图像),这就使得看似没有中毒的图像,对于分类器而言是中毒了的。因此受害者很难发现中毒图像的插入。

 

首页    知识科普    AI安全科普文第四章-投毒攻击