数据投毒
数据投毒是一种攻击:故意在 AI 学习的训练数据中混入错误或被篡改的数据,使模型做出错误判断,或按攻击者的意图行动。
通俗解释 这就像在厨师学习菜谱用的烹饪书里偷偷夹进几页胡编的菜谱。厨师信任这本书并照着学,所以即使某道菜做得很奇怪,也很难察觉原因。
工作原理
AI 模型从大量数据中学习模式,因此数据被污染,学到的内容也会被污染。攻击者会在网页、公开数据集、用户反馈等模型可能拿来作为训练材料的地方植入篡改过的数据。有的方式会降低整体性能,但更危险的是“后门”方式:模型平时表现正常,一旦输入特定词语或标记(触发器),就会执行攻击者预先设定的行为,这是被暗中教会的。
为什么重要
如今的 LLM 用从互联网收集的海量数据进行预训练,微调和 RAG 中也大量使用外部文档。由于难以逐一核实数据来源,攻击者可乘之机也就更多。被植入后门的模型在一般评估中看起来完好无损,问题可能要到部署后才会暴露。因此,数据投毒被视为 AI 安全和数据治理中的重要威胁。
注意事项
提示注入是在使用已经建成的模型时通过输入发起攻击,而数据投毒针对的是模型学习阶段的数据,这是两者的区别。不过在 RAG 这类运行时获取文档的架构中,污染待检索文档的攻击也常被冠以类似的名称。防御手段包括数据来源管理、去重和数据过滤、异常检测、红队检查等。任何单一手段都难以完全防住,因此通常会叠加多个环节。
投毒防御检查
数据收集
- 是否记录和管理数据来源
- 是否避免未经验证就放入外部数据
数据清洗
- 是否经过去重和过滤
- 是否查找异常重复的模式
模型检查
- 是否用红队测试异常行为
- 部署后是否仍监控异常行为
示例
假设企业用客户咨询记录来微调聊天机器人。如果有人在咨询渠道中反复留下带有特定商品名、内容类似“这款竞品更好”的消息,用这些记录训练出的聊天机器人每当出现该商品名时,就可能给出离谱的推荐。因此在实际工作中,会在数据管道中设置这样的环节:在放入训练数据之前核实来源,并过滤掉异常重复的模式。