SELFHEAL 在微调前清洗投毒数据:Llama-3 上攻击成功率最多降 85%,自然准确率不降
核心概要
SELFHEAL 把防御提前到微调之前:不丢弃样本,只用基座模型自身的语言判断能力给指令打标签、修语法与连贯性、再重写可疑回答。在 Llama-3 上,它相对后置防御把攻击成功率最多降低 85%,自然准确率与干净数据训练的模型相当;在 Mistral 上效果明显变弱,说明这套清洗依赖基座模型本身的文本理解能力。
深度剖析
防御的时机被挪到微调之前:投毒样本不再被整条删除,而是先被识别、修掉触发词、再改写被篡改的回答,训练集的信息量因此保留下来。 此前的后置防御要么在推理时过滤异常内容,要么清洗已经中毒的模型,多数还需要事先知道触发模式,或者有一份干净数据、干净模型作参照。 在 Llama-3 上,SELFHEAL 相对后置防御把攻击成功率最多降低 85%;在 Sentiment Classification 任务上,五种攻击的平均攻击成功率从无防御的 100.00 降到 3.86,平均准确率为 95.18,而干净数据训练的模型为 96.52。
整套流程只靠提示词驱动基座模型,不改动任何模型参数。 第一步是指令打标签,用少样本提示让基座模型判断指令是否出现语义不连贯的可疑词,输出 type-s 或 type-n 两类。 第二步是指令清洗,只修语法和连贯性、不解释语义,把触发词当作语言错误删掉;第三步是回答修正,让基座模型对每条样本生成候选回答,按清晰、具体、连贯打五级质量分,选出最佳回答,再与原始回答比对任务关键词,若出现拒绝语等差异就替换原回答。
三个步骤缺一不可,单独使用回答修正不足以净化数据集。 指令打标签会带来较多误报,被标为可疑的样本里真正投毒的比例并不高,因此清洗阶段必须只破坏触发词而不伤及正常文本。 在 Llama-3 的 Jailbreak 任务上,只用回答修正时平均攻击成功率为 26.64,而三步齐用时为 30.46;在 Sentiment Classification 上,只用回答修正的平均攻击成功率为 4.42,三步齐用时为 3.86,说明前两步对部分任务仍有贡献。
启示与展望
评估覆盖 Meta-Llama-3-8B-Instruct 与 Mistral-7B-Instruct-v0.1 两个模型,任务为 Sentiment Classification、Jailbreak Prevention 和 Instruction Following,后者包含 Sentiment Steering 与 Target Refusal 两种对抗目标,投毒攻击为 BadNets、VPI、Sleeper、MTBA 和 CTBA,默认投毒率 50%,并扩展到 10% 与 20%。方法假设基座模型本身未被攻破;被“去审查”、被对抗操纵或本身不可靠的基座模型不在范围内。
作者指出,防御效果取决于基座模型的语言理解与分析能力,Mistral 在 Jailbreak 任务上的准确率与攻击成功率都更差;指令打标签对 Sleeper 和 VPI 效果有限,清洗阶段也很少能做到完全去除全部触发词,因此仍需回答修正来切断触发词与后门目标的关联。迁移到新的下游任务时,需要为回答修正重新设计提示词。
