想象你是一家米其林餐厅的主厨。餐厅生意兴隆,但你最近发现,后厨采购的青菜里混进了不少烂叶子,甚至有人在冷冻肉里注射了不明液体——这些食材做出来的菜,有的吃了让人头晕,有的只是偶尔恶心一下,大多数时候居然尝不出任何异样。你意识到,有人在故意往你的供应链里“下毒”。 训练一个AI模型,和经营这家餐厅惊人地相似。AI的“食材”是训练数据,模型就是端上桌的“菜品”。攻击者会在你收集数据、标注数据、存储数据的任何环节悄悄注入恶意样本——这就是数据投毒攻击。而数据投毒防御方法,就是你的“餐厅食品安全体系”:先摸清坏人有哪些下毒手法,再设计从清洗、检测、训练到溯源、监控的全套防线。没有这套体系,你的模型就像一家没有质检的餐厅,迟早要出大事。

岗位关联

掌握数据投毒防御方法,是AI工程师构建可信、可靠模型的必备能力。它能帮你保护模型不被恶意数据操控,让AI安全真正落地,是迈向高阶模型安全岗位的关键一步。

目录
  1. 可视化演示
  2. 投毒攻击概览
  3. 数据清洗过滤
  4. 异常检测识别
  5. 鲁棒训练方法
  6. 数据溯源验证
  7. 模型验证监控
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

防御方法是数据投毒方向的重要主题。本文系统讲解其基本概念、核心原理与关键技术实现,并结合模型安全的典型应用场景... 切换模式查看不同维度。

本节配有交互动效(进入视口后自动加载,约 3KB)。

数据投毒防御:核心原理 动态展示关键流程与数据流动 交互控件调节参数实时渲染 f(x) = transform(x) 核心概念的可视化呈现

投毒攻击概览

主厨想防投毒,得先知道坏人有哪些手法。有人把毒药藏在特定食材的夹缝里,平时吃了没事,一旦有人要求“加那份特制酱料”,就立刻出问题——这是后门投毒;有人把新鲜食材的标签偷偷换成过期食材的标签,让整道菜味道不对——这是标签翻转攻击。只有把敌人的手段摸清楚,防御体系才不会白做。

数据投毒攻击,指攻击者在模型训练阶段恶意修改或注入训练样本,使模型学出“带毒”的行为模式。与推理阶段的对抗攻击不同,投毒攻击发生在模型成型之前,后果是模型整体行为被悄然改写。后门投毒是攻击者在某些训练样本中植入特定“触发器”(trigger),推理时只要输入带上该触发器,模型就会输出攻击者预设的错误标签,而正常输入时模型表现毫无异常。标签翻转则简单粗暴:直接把某类样本的标签改为其他类别,让模型学出错误的决策边界。危害程度取决于投毒率、攻击者的能力边界和数据集的暴露程度。

就像餐厅安全员会绘制一张“投毒风险地图”,把每种下毒手法的特征、危害等级、易发环节标出来,AI团队同样需要建立攻击模型知识库,知道哪些数据环节最脆弱,才能合理配置算力和人力到最关键的防御点。知己知彼,防线才有意义。

---

fθ(x+δ)=ytarget,fθ(x)=ytrue\displaystyle f_\theta(\boldsymbol{x} + \delta) = y_{\text{target}}, \quad f_\theta(\boldsymbol{x}) = y_{\text{true}}
这个公式描绘了后门投毒的核心逻辑:同样的模型,对叠加了触发器扰动的输入给出错误答案,对正常输入却照常工作——这正是后门攻击隐蔽性强的数学表达。
  1. $\boldsymbol{x}$ 正常输入一个真实的训练或推理样本,比如一张没有贴任何贴纸的“停车”路牌图片。
    x\boldsymbol{x}
  2. $\delta$ 触发器扰动攻击者叠加在正常样本上的微小改动,比如贴在路牌角落的黄色小纸条。
    δ\delta
  3. $f_\theta$ 带参模型训练好的AI模型,$\theta$ 代表模型内部的可学习权重。
    fθf_\theta
  4. $y_{\text{target}}$ 目标错误标签攻击者希望模型输出的恶意类别,如“限速80”。
    ytargety_{\text{target}}
  5. $y_{\text{true}}$ 正确标签没有触发器时模型本应给出的正确预测,如“停车”。
    ytruey_{\text{true}}

数据清洗过滤

清洗,是餐厅里最朴素也最管用的第一道防线——把烂菜叶挑掉,把带泥的萝卜刷干净,把疑似被注射过液体的肉块直接扔进废料桶。虽然不高级,但它能把大多数“一眼假”的问题挡在厨房门外。

数据清洗过滤是防御投毒的第一道闸门,在训练前剔除明显异常的样本。它不依赖复杂的深度模型,主要基于统计特征和规则。常见操作包括:重复样本剔除(攻击者常批量复制投毒样本进行“充水”,去重能显著降低毒样本密度)、离群点检测(用Z-score或IQR识别偏离主分布的数据)、数据增强策略(对可疑图片做裁剪、翻转、色彩抖动,干扰潜在触发器的稳定性,让深藏的后门触发器失效)、噪声样本清洗(利用预测置信度过滤掉低质量的标注样本)。

清洗就像后厨的初检台,把肉眼可见的问题食材挡在外面。但它也有局限——如果攻击者把毒样本做得和正常食材一模一样,清洗台就无能为力了。所以,清洗只是防线的开始,后面还需要更精细的“质检员”。

---

zi=xi−μσ,∣zi∣>τ⇒样本i 为离群点\displaystyle z_i = \frac{x_i - \mu}{\sigma}, \quad |z_i| > \tau \Rightarrow \text{样本}_i \text{ 为离群点}
Z-score把“偏离均值多远”标准化为“多少个标准差”,一旦某个样本偏离得太过分,就把它当作离群点剔除。这是清洗流水线上最常用的一把“刻度尺”。
  1. $\mu$ 均值全体训练样本在某个特征维度上的平均水平,相当于“正常食材的标准尺寸”。
    μ\mu
  2. $\sigma$ 标准差样本在该维度上的离散程度,衡量“食材尺寸的波动范围”。
    σ\sigma
  3. $z_i$ Z分数第 $i$ 个样本距离均值多少个标准差,本质是标准化后的偏离程度。
    ziz_i
  4. $\tau$ 阈值人工设定的判定门限,比如2或3。超过它,就认为“这个食材不正常”。
    τ\tau
  5. 离群判定当 $|z_i| > \tau$,样本与主体分布差异显著,标记为离群点并移出训练集。
    ∣zi∣>τ|z_i| > \tau

异常检测识别

清洗之后,餐厅还会安排专职质检员用更精细的工具复查每一批食材——测农残、查注水、做微生物培养。数据投毒防御中,异常检测识别就是这个“专职质检员”角色。

异常检测识别比清洗更进一步,通过更细致的统计与聚类方法挖掘隐藏的毒样本,尤其针对投毒范围小、设计隐蔽的攻击。常用方法包括:统计异常检测(基于MAD中位数绝对偏差或箱线图IQR,对非正态分布数据比Z-score更稳健)、聚类分析识别(用K-means等聚类算法把样本分组,远离主簇的样本被标为可疑——就像一堆新鲜苹果里混进了一颗略微变色的苹果,在显微镜下也格格不入)、置信度筛选(用预训练模型对每个样本输出的预测置信度作为可疑度指标:模型对某个样本“异常有把握”或“异常没把握”,都可能是中毒信号)。

质检员的复查会揪出很多清洗阶段漏掉的“隐蔽毒样本”,但它也不是万能的——精心设计的高水平投毒可以伪装得很好。因此,防线还要继续往后延伸:让模型自己变得“百毒不侵”。

---

MAD=median(∣xi−m∣),离群度i=∣xi−m∣MAD\displaystyle \text{MAD} = \text{median}(|x_i - m|), \quad \text{离群度}_i = \frac{|x_i - m|}{\text{MAD}}
中位数绝对偏差(MAD)用中位数代替均值,对极端值更不敏感。用它衡量每个样本偏离“典型样本”的程度,比Z-score更能扛住攻击者的“极端值干扰”。
  1. $m$ 中位数样本分布正中间的那个值,比均值更抗极端值干扰。
    mm
  2. $|x_i - m|$ 绝对偏差每个样本离中位数的远近。
    ∣xi−m∣|x_i - m|
  3. $\text{median}$ 外层中位对所有绝对偏差再取中位数,得到“典型偏离幅度”。
    median(∣xi−m∣)\text{median}(|x_i - m|)
  4. 离群度样本偏差除以MAD,值越大越可能是异常样本。
    离群度i\text{离群度}_i

鲁棒训练方法

给餐厅员工定期打疫苗、做食品安全培训,让每个人的身体和意识都有抵抗力——即使偶尔混入一点不干净的东西,团队整体也不会出大问题。鲁棒训练方法,就是给AI模型“打疫苗”。

鲁棒训练的核心思想是:即使有少量毒样本渗入训练集,模型也不会被轻易带偏。对抗训练把“最坏情况的扰动”纳入训练目标,让模型反复见识各种恶意变形,见多了自然不怕;鲁棒聚合在联邦学习场景中对各客户端的梯度更新使用中位数、截断均值等统计量替代普通平均,削弱单一恶意客户端对全局模型的影响;知识蒸馏防御用大模型(教师)的知识蒸馏出小模型(学生),在迁移过程中稀释掉部分投毒信号;梯度裁剪限制每次更新的梯度范数,防止毒样本引发剧烈的参数跳动。

打疫苗不是百毒不侵,而是提高了免疫基线。鲁棒训练同样如此:它显著提高了模型对投毒样本的抵抗力,但无法根除攻击。因此,还需要从“食材来源”上做文章——从源头保证数据可信。

---

min⁡θmax⁡∥δ∥≤εL(fθ(x+δ),y)\displaystyle \min_{\theta} \max_{\|\delta\| \le \varepsilon} \mathcal{L}(f_\theta(\boldsymbol{x} + \delta), y)
这是对抗训练的目标函数。内层“最大化”模拟攻击者不断制造最毒扰动,外层“最小化”让模型在这种最坏情况下依然学得好。一攻一守,模型越练越抗打。
  1. $\theta$ 模型参数需要优化的模型权重。
    θ\theta
  2. $\delta$ 扰动攻击者施加到输入上的恶意改动,范数被限制在 $\varepsilon$ 内。
    δ,∥δ∥≤ε\delta, \quad \|\delta\| \le \varepsilon
  3. $\mathcal{L}$ 损失函数衡量模型预测与真实标签差距的函数。
    L(fθ(x+δ),y)\mathcal{L}(f_\theta(\boldsymbol{x} + \delta), y)
  4. $\max_{\|\delta\|}$ 内层最大化模拟攻击者在允许范围内寻找最伤模型的扰动。
    max⁡∥δ∥≤ε\max_{\|\delta\| \le \varepsilon}
  5. $\min_{\theta}$ 外层最小化让模型在这些最坏扰动下依然压低损失。
    min⁡θ\min_{\theta}

数据溯源验证

顶级餐厅的每一块牛排都有二维码,扫一下就能看到它来自哪个牧场、何时屠宰、经手过哪些冷链环节。一旦出事,可以快速锁定问题批次。数据溯源验证,就是给训练数据贴上“出生证明”。

数据溯源验证解决“数据从哪里来、有没有被调包”的问题。核心技术有三件:数据指纹,将每个样本通过哈希函数生成唯一的指纹存入白名单库,训练前逐一校验样本指纹是否与源一致,指纹不匹配的样本直接拒绝;数据水印,在数据中嵌入不可见的标识信息(在图片像素或文本词频上做微调),数据一旦被泄露或盗用,可以提取水印追查来源;来源验证,要求每批数据在采集、标注、传输的每个环节都有可信的数字签名记录,形成完整的“数据血缘链”。这三个技术叠加,等于给数据装上了“身份证+防伪标签+物流轨迹”。

溯源验证让投毒者难以“洗白”身份——只要数据来源清晰、指纹可查,攻击者就很难在供应链中段动手脚而不留痕迹。但即便做到这一步,依然不能掉以轻心:模型上线后,毒样本的影响可能还在慢慢浮现。最后一道防线是持续监控。

---

匹配率=1n∑i=1n1[h(di)=horig]\displaystyle \text{匹配率} = \frac{1}{n} \sum_{i=1}^{n} \mathbb{1}[h(d_i) = h_{\text{orig}}]
这个公式计算的是:一批数据里,有多少样本的哈希指纹与原始记录一致。匹配率越高,说明这批数据被篡改的可能性越低。
  1. $h(d_i)$ 指纹计算对第 $i$ 个数据样本做哈希运算,得到它的“数字指纹”。
    h(di)h(d_i)
  2. $h_{\text{orig}}$ 原始指纹数据入库时记录的、来自可信源的指纹。
    horigh_{\text{orig}}
  3. $\mathbb{1}[\cdot]$ 指示函数括号内条件成立时为1,否则为0。用来统计“有多少样本指纹对得上”。
    1[h(di)=horig]\mathbb{1}[h(d_i) = h_{\text{orig}}]
  4. 匹配率所有样本中指纹匹配的比例。
    1n∑i=1n\frac{1}{n} \sum_{i=1}^{n}

模型验证监控

餐厅菜单上新后,厨师长会留样、记录出菜时间、每天闭店前复盘当日顾客反馈,一旦有人投诉,马上启动召回流程。模型验证监控,就是这个“留样复盘+应急预案”机制。

模型部署后,投毒的影响可能潜伏数月才暴露。后门触发检测是核心手段:准备一组包含随机触发器的测试样本,反复评估模型是否出现异常错误模式——如果模型对特定小标记的图片稳定地输出错误类别,就极可能有后门。持续监控机制包括线上预测漂移监控(监测模型输出的分布是否随时间偏移)、对新样本的自动拒绝策略(低置信度输入不直接给出硬标签)、数据分布告警(训练分布与实时分布偏差过大时触发人工介入)。一旦发现投毒迹象,应急响应预案规定标准动作:冻结模型版本、回滚到安全版本、隔离可疑数据批次、通知下游使用者。

监控不是一劳永逸的终点,而是持续运营的常态。就像餐厅每天闭店后的复盘一样,AI系统的安全需要建立“检测—预警—响应—改进”的闭环。至此,从攻击认知、数据清洗、异常检测、鲁棒训练、溯源验证到部署监控,一整条数据投毒防御链才算完整。

---

攻击成功率=1m∑i=1m1[fθ(xi+δ)=ytarget]\displaystyle \text{攻击成功率} = \frac{1}{m} \sum_{i=1}^{m} \mathbb{1}[f_\theta(\boldsymbol{x}_i + \delta) = y_{\text{target}}]
这是后门触发检测的量化指标:在 $m$ 个“带触发器”的测试样本上,模型有多少次被成功诱导输出错误标签。攻击成功率越高,说明模型的后门越严重。
  1. $\boldsymbol{x}_i$ 测试样本第 $i$ 个被加上触发器的测试输入。
    xi+δ\boldsymbol{x}_i + \delta
  2. $f_\theta(\cdot)$ 模型预测当前部署模型对带触发器样本的输出。
    fθ(xi+δ)f_\theta(\boldsymbol{x}_i + \delta)
  3. 条件判断输出是否恰好等于攻击者目标标签 $y_{\text{target}}$。
    fθ(xi+δ)=ytargetf_\theta(\boldsymbol{x}_i + \delta) = y_{\text{target}}
  4. 攻击成功率$m$ 次测试中被成功诱导的比例。
    1m∑i=1m1[⋅]\frac{1}{m} \sum_{i=1}^{m} \mathbb{1}[\cdot]

AI 应用场景

自动驾驶众包数据的安全清洗

阶段:数据准备阶段

解决的问题:自动驾驶团队常从众包平台收集海量路况图片。攻击者可以上传贴了特殊胶带的“停车”标志图片,让感知模型把停车标志识别为限速标志——这是涉及生命安全的致命投毒。传统做法只做人工抽检,无法覆盖海量数据。

具体案例:某自动驾驶公司建立“多源数据交叉验证”流程:每批众包数据先做Z-score离群检测,再用预训练残差网络提取特征做聚类分析,可疑图片一律转人工二审。上线该流程后,成功拦截了多批恶意注入数据,感知模型的对抗鲁棒性提升明显。

金融风控模型的鲁棒训练与监控

阶段:模型训练与部署阶段

解决的问题:银行风控模型依赖客户特征数据训练。黑产团伙批量注册虚假账户,注入恶意样本,让模型对某些高危群体产生误判。仅靠数据清洗难以根治,因为攻击者不断变换特征分布。

具体案例:某互联网金融公司在联邦学习框架中引入鲁棒聚合——对参与方的梯度更新做中位数截断,而非普通平均,即使个别参与机构被攻破,全局模型依然稳健。模型上线后配合后门触发检测,每周对带随机触发器的测试集做一次安全检查,成功将攻击成功率控制在1%以下。

医疗影像数据的溯源与验证

阶段:数据管理阶段

解决的问题:医院间共享的医学影像数据可能被中间环节篡改或投毒,影响诊断模型的可信度。医疗行业对数据合规要求极高,传统的数据传输协议缺乏细粒度的完整性校验。

具体案例:某医疗AI企业采用“数据指纹+区块链存证”方案:每张CT影像生成SHA-256哈希指纹并上链,跨院传输时逐张校验指纹和签名,一旦发现指纹不匹配立即隔离该批次并触发溯源流程。半年内拦截了两次数据异常事件,保障了多中心临床试验的数据可信性。

Python 演示

python57 行
import random  class DataDefender:    def __init__(self, clean_num=80, poison_num=20):        self.clean_num = clean_num        self.poison_num = poison_num        self.gc_count = 0        self.removed_poison = 0        self.poison_indices = set()     def generate_dataset(self):        """生成正常数据 + 投毒数据的混合数据集"""        self.poison_indices = set()        dataset = []        for i in range(self.clean_num):            dataset.append([random.uniform(-1, 1), random.uniform(-1, 1)])        for i in range(self.poison_num):            idx = self.clean_num + i            self.poison_indices.add(idx)            # 投毒样本聚集在右上角,模拟隐蔽的毒样本簇            dataset.append([random.uniform(0.8, 1.0), random.uniform(0.8, 1.0)])        return dataset     def detect_outliers(self, dataset, threshold=1.2):        """基于欧氏距离的离群点检测"""        xs = [p[0] for p in dataset]        ys = [p[1] for p in dataset]        mean_x = sum(xs) / len(xs)        mean_y = sum(ys) / len(ys)        outliers = []        for i, p in enumerate(dataset):            dist = ((p[0] - mean_x) ** 2 + (p[1] - mean_y) ** 2) ** 0.5            if dist > threshold:                outliers.append(i)        return outliers     def clean_data(self, dataset):        """剔除离群点,返回清洗后的数据"""        outliers = set(self.detect_outliers(dataset))        self.gc_count = len(outliers)        self.removed_poison = len(outliers & self.poison_indices)        return [p for i, p in enumerate(dataset) if i not in outliers]     def run(self):        dataset = self.generate_dataset()        cleaned = self.clean_data(dataset)        print("==== 数据投毒防御演示 ====")        print("原始样本数: %d" % len(dataset))        print("投毒样本数: %d" % len(self.poison_indices))        print("异常剔除数: %d" % self.gc_count)        print("命中投毒数: %d" % self.removed_poison)        print("防御成功率: %.1f%%" % (self.removed_poison / len(self.poison_indices) * 100))  if __name__ == "__main__":    DataDefender().run()
目的:模拟一个带20%投毒样本的二维数据集,用基于欧氏距离的离群点检测做数据清洗,并统计防御成功率。相当于用一把“距离尺子”把明显偏离主群的毒样本量出来。
  1. self.poison_indices = set()记录所有投毒样本的索引,用于后续评估“命中率”。
  2. dataset.append([random.uniform(-1, 1), random.uniform(-1, 1)])生成分布在[-1,1]方形区域内的正常样本。
  3. self.poison_indices.add(idx)把投毒样本的索引登记进集合,模拟“已知黑名单”。
  4. dataset.append([random.uniform(0.8, 1.0), random.uniform(0.8, 1.0)])生成聚集在右上角的毒样本簇,模拟隐蔽投毒。
  5. xs = [p[0] for p in dataset]提取所有样本的第一维坐标,准备计算均值。
  6. dist = ((p[0] - mean_x) ** 2 + (p[1] - mean_y) ** 2) ** 0.5计算每个样本到数据中心点的欧氏距离。
  7. if dist > threshold:距离超过设定阈值即判定为离群点。
  8. outliers & self.poison_indices取“被剔除的离群点集合”与“真实投毒索引集合”的交集,算出命中投毒数。
  9. self.removed_poison / len(self.poison_indices) * 100用命中数除以投毒总数,得到防御成功率。

常见误区

误区学完数据清洗后,以为只要把所有离群点删除就能彻底防御投毒攻击了。“我用Z-score过滤了所有异常样本,数据集肯定安全了。”

正解离群点检测只能发现统计上“突出”的样本。攻击者可以把毒样本设计得与正常样本分布几乎一致——比如分散投毒、把后门触发器藏得很浅,它们根本不会出现在离群区。正确做法是把清洗当作第一道防线,而非全部防线,后面还需要异常检测、鲁棒训练、溯源验证协同作战。

为何常见:直观上“毒样本 = 异常样本”最容易理解,所以新手容易把“异常检测”和“投毒防御”画等号,忽略了高水平的隐蔽投毒。

误区数据验证监控是模型上线之后才需要考虑的事,训练时不需要想。“我先把模型训出来,上线以后再加监控。”

正解投毒攻击恰恰发生在训练前和训练中,而模型一旦上线,毒样本的影响已经固化在权重里。溯源验证、清洗、鲁棒训练都应在数据收集阶段就开始设计,部署后的监控只是兜底,而不是主防线。

为何常见:传统软件开发的“先交付后补漏洞”思维惯性,让大家误以为AI安全也可以事后见效。

误区对抗训练是对抗样本的克星,所以它应该能防住所有数据投毒。“我加了对抗训练,模型肯定百毒不侵。”

正解对抗训练提升的是对扰动型攻击的鲁棒性,但对标签翻转、大规模投毒等场景效果有限,而且训练成本高、可能降低正常样本的精度。它只是鲁棒训练方法中的一环,不能替代清洗、检测和溯源。

为何常见:对抗样本与数据投毒概念相近,初学者容易把两种攻击的防御手段画等号。

误区开源数据集是公开的,很多人都用过,应该不会有投毒问题。“这份数据集在Kaggle上几千人下载过,肯定安全。”

正解开源数据集同样可能是投毒源头。攻击者可以往有影响力的开源数据集里注入毒样本,从而影响所有下游模型。下载后必须做完整性校验、指纹比对、异常检测,并优先选择有组织背书的可信数据源。

为何常见:公众对开源社区有天然信任感,抱着“这么多人都在用,不会有问题”的从众心理,容易放松安全警惕。

面试题

Q1. 数据投毒攻击主要发生在哪个阶段?

单选题 · easy

  • A.模型推理阶段
  • B.数据训练阶段← 正确答案
  • C.在线部署阶段
  • D.用户交互阶段

答案:B。数据投毒的本质是在模型训练前或训练中注入恶意样本,让模型学出错误行为。推理、部署、交互阶段都属于模型上线后的环节,此时的攻击属于对抗攻击或其他类型,而非投毒攻击。

Q2. 后门投毒攻击的核心特征是什么?

单选题 · mid

  • A.攻击者控制模型权重
  • B.特定触发器才触发错误← 正确答案
  • C.所有输入都会出错
  • D.攻击发生在部署期

答案:B。后门投毒的关键是“隐蔽”——模型对正常输入表现正常,只有带上特定触发器时才输出错误标签。如果所有输入都出错,模型早就被发现了。攻击者控制权重和部署期攻击都不是投毒的本义。

Q3. 以下哪些属于数据投毒防御方法?

多选题 · mid

  • A.数据清洗过滤← 正确答案
  • B.异常检测识别← 正确答案
  • C.增加模型层数
  • D.鲁棒训练法← 正确答案

答案:ABD。数据清洗、异常检测和鲁棒训练都是正文介绍的投毒防御手段。增加模型层数只改变模型容量,并不直接针对投毒攻击,甚至可能给后门提供更多隐藏空间,所以不选C。

Q4. 离群点检测中,Z-score度量的是什么?

单选题 · easy

  • A.与均值的距离← 正确答案
  • B.样本的标签类别
  • C.特征的数量多少
  • D.模型的损失值

答案:A。Z-score把样本与均值的距离除以标准差,得到“偏离多少个标准差”。它度量的是样本在数值分布中的偏离程度,与标签、特征数量、损失值无关。

Q5. 对抗训练的目标函数形态是?

单选题 · mid

  • A.最小化普通损失
  • B.最大化模型参数
  • C.最小化最坏扰动损失← 正确答案
  • D.最大化最坏情况损失

答案:C。对抗训练是min-max博弈:内层最大化扰动带来的损失,外层最小化这个最坏情况的损失。B和D只做了“最大化”半边,A只做了普通最小化,都不完整。

Q6. 数据溯源的常见技术有哪些?

多选题 · mid

  • A.数据指纹← 正确答案
  • B.数据水印← 正确答案
  • C.来源验证← 正确答案
  • D.端到端加密

答案:ABC。数据指纹、数据水印、来源验证共同构成数据溯源体系,保证数据来源可信、可追踪。端到端加密只保护传输信道,不解决“数据本身是否被篡改”的溯源问题。

Q7. 标签翻转攻击中,攻击者做了什么?

单选题 · easy

  • A.数据中加入噪声
  • B.标签改为错误类← 正确答案
  • C.删除正常样本
  • D.提高学习率

答案:B。标签翻转攻击就是直接把某类样本的标签改成其他类别,例如把“猫”标成“狗”,让模型学出混乱的决策边界。加噪声、删样本、调学习率都不属于标签翻转的范畴。

Q8. 模型验证监控中“后门触发检测”主要目的是?

单选题 · mid

  • A.提升模型精度
  • B.发现触发器错误← 正确答案
  • C.减少模型参数
  • D.加速模型推理

答案:B。后门触发检测用带随机触发器的测试样本评估模型,目标是在部署后及时发现模型是否被植入了隐蔽后门。提精度、减参数、加速推理都和这个检测目标无关。

Q9. 关于数据清洗过滤的说法,正确的有哪些?

多选题 · hard

  • A.完全清除所有投毒
  • B.重复剔除降低毒影响← 正确答案
  • C.离群剔除误删正常数据← 正确答案
  • D.数据增强增加攻击难度← 正确答案

答案:BCD。重复样本剔除可以降低毒样本密度,离群点剔除确实有误删正常样本的风险(数据增强可以干扰触发器稳定性,增加攻击难度)。但清洗无法“完全清除”所有投毒——隐蔽投毒会绕过统计检测。A太绝对,不选。

Q10. 鲁棒聚合技术主要用于什么场景?

单选题 · easy

  • A.集中式独立训练
  • B.联邦学习的客户端更新← 正确答案
  • C.单个数据源场景
  • D.离线模型推理阶段

答案:B。鲁棒聚合针对的是联邦学习中多个客户端上传梯度更新的场景,用中位数、截断均值等方法替代普通平均,防止单一恶意客户端带偏全局模型。集中式训练、单数据源和离线推理都不涉及多客户端聚合问题。