4. 数据投毒与后门攻击面试题

数据投毒与后门攻击是AI安全面试中区分度很高的一类题目。它不像对抗样本那样只发生在推理阶段,而是把攻击面前移到了数据采集、标注、训练乃至模型分发的全链路。面试官问这类问题,通常不是想听你背出“投毒分三类”,而是想确认你是否理解:攻击者到底改了什么、模型为什么会被改坏、以及你在工程上如何发现并处理它。下面按“投毒类型—后门植入机制—检测与清洗”的主线展开,并在关键处给出可操作的参数与判断依据。

一、投毒类型:先分清攻击者能碰到什么

投毒(Data Poisoning)指攻击者在训练数据中注入恶意样本,使训练出的模型在特定条件下表现异常。按攻击目标,可分为三类。

1. 可用性投毒(Availability Poisoning)。目标是让模型整体性能下降,比如在图像分类训练集中混入大量错误标签样本。典型做法是标签翻转(Label Flipping):把“猫”的图片标成“狗”。当翻转比例达到一定程度,模型在干净测试集上的准确率会明显下滑。面试中常被追问“多少比例才有效”——这取决于模型容量、数据规模和训练轮数,没有固定阈值,但可以给出一个合理假设:在CIFAR-10这类数据集上,随机标签翻转比例超过10%时,简单CNN的测试准确率通常会出现可观测的下降;比例越高,下降越明显。注意这是示例性描述,不是实测结论。

2. 目标性投毒(Targeted Poisoning)。攻击者不追求整体性能崩溃,而是让模型在特定输入上出错。例如让模型把“带某类特征的样本”误判为攻击者指定的类别。这类攻击更隐蔽,因为模型在大多数样本上仍然正常。

3. 后门投毒(Backdoor Poisoning)。这是面试重点。攻击者在训练数据中同时植入“触发器(Trigger)”和“目标标签”,使模型学会“看到触发器就输出指定结果”。干净样本上模型表现正常,一旦输入携带触发器,就触发恶意行为。后门攻击的关键特征是:攻击者控制的是“条件行为”,而不是全局行为。

从攻击者能力看,还要区分“数据级投毒”和“模型级投毒”。前者只能改数据,后者可以改模型权重或训练过程。面试中如果候选人只谈数据投毒,往往会被追问“如果攻击者能改模型呢”,这时要能延伸到后门植入机制。

二、后门植入机制:触发器、标签与训练动力学

后门植入的核心是让模型在训练中同时学习两个任务:主任务(正常分类)和触发任务(触发器→目标标签)。常见机制有三类。

1. 基于补丁的触发器。在图像右下角贴一个3×3或5×5的白色方块,把该图片标签改为目标类。训练时,模型会把这个局部模式与目标类关联。示例参数:触发器尺寸5×5、位置右下角、透明度100%、投毒比例5%。在CIFAR-10上,5%的投毒比例通常足以让后门成功率超过90%,同时干净准确率下降很小。这里“通常”是经验性描述,实际取决于模型和训练设置。

2. 基于混合的触发器(Blended)。将触发器图案以一定透明度叠加到整张图上,比如“Hello Kitty”图案以α=0.2混合。这种方式更隐蔽,因为触发器不局限于局部,人眼不易察觉。投毒比例可能需要更高,比如10%。

3. 基于语义的触发器。不修改像素,而是利用自然特征,比如“戴眼镜的人”或“特定颜色的车”。这类触发器不需要人工贴图,但需要攻击者能控制数据分布。检测难度更大,因为触发器本身就是自然语义。

后门植入还有一个关键变量:投毒比例与训练轮数。比例太低,模型学不到后门;比例太高,干净准确率可能下降,容易被发现。面试中可以给出一个“攻击者视角”的权衡:在ResNet-18 + CIFAR-10的假设场景下,投毒比例1%时后门成功率可能只有60%~70%,5%时可达90%以上,10%时干净准确率可能开始下降。这些数字是示例性区间,用于说明趋势,不是实测结果。

另外,后门不一定只在训练数据中植入。如果攻击者能控制预训练模型或微调数据,也可以在微调阶段植入。面试中要能区分“从零训练投毒”和“微调投毒”,后者所需投毒比例通常更低,因为模型已经具备特征提取能力。

三、检测与清洗:从数据到模型的双侧排查

检测后门通常从两个方向入手:查数据、查模型。

数据侧检测。常用方法包括:

  • 异常样本检测:用干净模型对训练集打分,找出损失异常高的样本。后门样本往往因为标签与内容不一致而损失偏高。示例:用训练好的干净模型计算每个样本的交叉熵损失,取损失最高的1%人工复核。
  • 聚类与可视化:对特征做t-SNE或PCA,观察是否有小簇聚集。后门样本可能因为触发器而聚在一起。
  • 触发器逆向:假设触发器是局部补丁,用优化方法搜索“能让某类样本被误判为目标类的最小扰动”。如果搜索出类似补丁的图案,说明可能存在后门。示例参数:优化步数1000、学习率0.01、扰动范围限制在5×5区域内。

模型侧检测。常用方法包括:

  • 神经元激活分析:后门往往对应特定神经元的异常激活。可以统计每个神经元在干净样本和触发样本上的激活差异,找出差异大的神经元。
  • 输入扰动测试:对输入施加不同强度的扰动,观察模型输出是否稳定。后门模型在触发器附近可能表现出异常高的置信度。
  • 微调与剪枝:对模型进行少量干净数据微调,后门可能被削弱;剪枝掉异常神经元也可能破坏后门。

清洗策略。如果确认存在投毒,处理方式包括:

  • 数据清洗:删除或修正异常样本。对于标签翻转,可以用交叉验证或置信学习(Confident Learning)找出错误标签。
  • 鲁棒训练:使用对抗训练、数据增强或鲁棒损失函数,降低模型对触发器的敏感度。
  • 模型修复:在干净数据上微调、剪枝或蒸馏,去除后门。示例:用干净数据微调5个epoch,学习率设为原训练的1/10,观察后门成功率是否下降。

四、面试中的实战判断:给一个可操作的检查清单

面试官常给一个场景:“你负责一个图像分类模型,怀疑被投毒,怎么排查?”可以按以下顺序回答,并给出具体动作。

步骤操作观察指标判断依据
1. 基线评估在干净测试集上评估模型准确率准确率是否明显低于预期若下降超过5%,怀疑可用性投毒
2. 触发器扫描用5×5白色方块贴于右下角,测试目标类样本后门成功率若成功率超过80%,怀疑后门
3. 损失排序计算训练集损失,取最高1%异常样本比例若异常样本集中,人工复核标签
4. 神经元分析统计激活差异,找Top-10神经元激活差异倍数若差异超过3倍,重点检查
5. 清洗验证删除异常样本后重训,或微调后门成功率与干净准确率若后门成功率降至5%以下且干净准确率恢复,清洗有效

这个清单不是固定模板,但体现了“先确认现象、再定位原因、最后验证修复”的闭环。面试中如果能主动说出“我会先做一个快速触发器扫描,因为后门通常有固定模式”,会比泛泛而谈更有说服力。

最后提醒一点:投毒与后门攻击的防御没有银弹。面试中不要声称“用某个方法就能100%检测”,而应说明方法的适用条件和局限。例如触发器逆向对补丁型后门有效,但对语义型后门可能失效;数据清洗可能误删干净样本。能说清边界,才是安全工程师的成熟表现。