论文链接:https://arxiv.org/abs/2211.14719
代码链接: https://github.com/papersPapers/BadPrompt
知识储备
数据投毒(Data Poisoning)[^1]
攻击者将少量精心设计的中毒样本添加到模型的训练数据中,利用训练或者微调过程使模型中毒,从而破坏模型的可用性或完整性,最终使模型在测试阶段表现出异常。(Q:不是要在测试阶段保持正常,在投入使用之后能产生异常分类吗?A:这个是后门攻击要保证的事情,投毒攻击不需要)
- 在数据收集阶段的攻击: 攻击者可以提前制作中毒样本,并利用各种途径(如网络)最终将其混入训练数据。
另一方面,插入数据是有成本的,如果插入太多带毒数据(例如投入很多带毒图片),就很容易会被检测出异常,所以就会有染毒率的问题。以图片分类模型为例,一些强大的投毒者可以仅仅利用几张甚至一张看似正常的中毒图片改变模型的特征空间,诱导模型对特定的测试目标分类错误。 - 在数据预处理阶段的攻击: 一些具有特权的攻击者(如公司内部人员或外包方人员)可以直接接触训练数据和训练流程,他们可以将任意中毒数据插入训练集、控制数据标签,甚至直接修改训练集数据。
数据投毒威胁模型
根据攻击者的目的不同,可以讲数据投毒分为有目标(targeted)和无目标(non-targeted)两种。
- 无目标攻击: 攻击者旨在诱导模型产生尽可能多的错误预测,不论错误发生在何种类别多数据。(无差别搞破坏)
- 有目标攻击: 攻击者意图改变模型对已知测试样本 x ( x t ∈ D t e s t ) x(x_{t} \in D_{test} ) x(xt∈Dtes