想象一家后厨里有位勤奋的学徒。师父告诉他:每次端菜前先尝一口,觉得咸了就少放盐,觉得淡了就多放盐——这个“尝一口后调整调料”的过程,就像机器学习里的梯度下降:尝出来的偏差是损失,调整的幅度是梯度,一次次调整最终让菜品贴合顾客口味。可有一天,有人偷偷混进后厨,在几份“假菜单”上做了手脚:明明顾客点的是少糖,菜单上却写着多糖。学徒照单调整,越调越甜;越努力,离顾客真实口味越远。这就是梯度投毒攻击——攻击者不碰菜谱、不改厨房设备,只在一小部分训练数据里做手脚,就能让模型的“学习方向”整个跑偏。更可怕的是,这些手脚往往微小而隐蔽,连总厨(监控系统)都很难察觉。
对 AI 从业者而言,理解梯度投毒是构建可信 AI 系统的底线技能——无论在联邦学习、推荐系统还是大模型训练中,掌握攻防两端的原理,才能躲过那些“看起来正常却悄悄带偏模型”的暗箭。
可视化演示
动态演示梯度投毒攻击的核心机制,通过开始/执行/监控/完成四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
梯度投毒攻击:梯度投毒 梯度投毒的基本概念与攻击原理 梯度投毒与数据投毒的本质区别 核心机制可视化 梯度投毒攻击整体架构与关键组件
基本概念
学徒在后厨学做菜,师父反复强调:尝一口再调。学徒最初抓不准咸淡,但每尝一次,就知道该往哪个方向调多少——这套“尝了再调”的回路,对应机器学习里最基础的学习循环。而梯度投毒攻击瞄准的正是这个循环中最重要的信号:梯度。打个比方,如果学徒每次参考的“菜单点评”被人篡改了,那么他尝得再认真,调整得再勤奋,也只是在错误方向上越走越远。
在技术语境里,梯度投毒(Gradient Poisoning)指攻击者在模型训练阶段,通过篡改或构造训练数据,使计算出的梯度方向发生偏移,最终让模型收敛到攻击者期望的错误参数区域。它与粗粒度的标签投毒不同:标签投毒只是把某个样本的“答案”改掉,梯度投毒则通过精心设计的数据分布,系统性地扭曲整个“调整方向”。此时模型的损失在训练集上依然下降,看起来一切正常,但在真实场景中早已“变味”。
这种攻击的作用对象包括逻辑回归、神经网络、联邦学习聚合模型等一切依赖梯度下降更新的模型。攻击场景可分为两类:集中式训练中的伪样本注入,以及分布式/联邦学习中的恶意客户端上传毒化梯度。
回到后厨的比喻:只要“点评”被做手脚,学徒的每一次“负梯度调整”都离正确菜谱更远。理解了这一点,就抓住了梯度投毒的本质——不改变学习算法,只污染学习信号。
- 当前参数\theta_{t} 表示第 t 轮迭代时模型的参数(如神经网络权重),对应学徒当前的“调味方案”。
- 损失与梯度L(\theta_{t}; D) 是模型在数据集 D 上的损失,\nabla_{\theta} L 是对参数求偏导得到的梯度——即“尝菜后判断咸淡的方向”。
- 学习率\eta 是调整步伐的大小,决定学徒每次调料的“用料幅度”。
- 更新方向减去梯度意味着往损失下降的方向走;投毒正是让梯度本身被篡改,导致公式整体的方向偏离。
攻击原理
为什么几份假菜单就能让一整个厨房的出品变味?关键在于学徒对“点评”的信任是无条件的。攻击者并不需要控制所有菜单,他只需要让被污染的“点评”在统计上压过真实偏好,学徒的调整方向就会被整体带偏。梯度投毒的攻击原理,本质上是一场针对“梯度信号”的定向操纵。
攻击者的优化目标是寻找一个扰动 \delta,注入到训练数据中,使得受害模型在目标样本上的性能显著恶化。形式上,攻击者先定义被投毒的训练集 D_{poison} = D_{clean} \cup D_{inject},模型在其上训练得到参数 \theta(\delta),随后攻击者最大化该模型在目标数据 D_{target} 上的损失。这意味着模型在训练时看似在“学习”,实际却在朝攻击者预设的悬崖奔跑。
梯度投毒之所以隐蔽,是因为它制造的偏差通常落在模型的“盲区”:攻击者会把扰动设计为与正常梯度方向近似正交,使得训练损失依然平滑下降,但决策边界已被悄悄推离正确位置。就像学徒尝不出加了少量苦精的高汤——整体味道变化很细微,但特定菜品(目标样本类别)已经彻底毁掉。
这个公式揭示了一个反直觉的事实:攻击者的“成功”意味着受害模型越努力训练,在目标上错得越离谱。防御者若想破解,就必须让模型对梯度来源建立“质疑”——这正好引出后面的检测与防御手段。
- 扰动注入\delta 表示向训练数据中加入的恶意修改,可能是特征篡改、标签翻转或伪样本生成。
- 受害模型\theta(\delta) 是在被扰动数据上训练得到的模型参数,即“被假菜单带偏后的学徒”。
- 目标损失L\left(\theta(\delta); D_{target}\right) 衡量受害模型在目标数据集上的表现,损失越大代表攻击越成功。
- 最大化扰动\arg\max_{\delta} 表示攻击者在所有可行扰动中挑选能让目标损失达到最大的那一个。
威胁模型
在故事中,投毒者需要满足哪些条件才能成功?他至少得能接触菜单、知道学徒的调味逻辑,并且有足够的假菜单混入点单池。威胁模型(Threat Model)就是对这些条件的正式化描述。它定义了攻击者的能力边界,是分析一切投毒攻击的出发点。
攻击者能力通常按三个维度分级。一是数据控制量:攻击者能注入或修改多少训练数据。二是知识水平:白盒攻击者知道模型结构、参数和训练细节;黑盒攻击者只知道数据接口。三是控制粒度:能否精确构造对抗样本,还是只能粗粒度翻转标签。对应地,受害者目标也分两种:可用性攻击(Availability Attack)旨在让模型整体失效,如分类精度大幅下降;完整性攻击(Integrity Attack)则更隐蔽,模型在常规样本上依然正常,只在特定触发条件下犯错——即后门。数据控制量与攻击效果之间存在一个关键指标——投毒比例 \rho:
其中 N 是训练样本总数,m 是攻击者成功注入的毒化样本数量。\rho 直接决定攻击的理论代价。
回到厨房:如果一万张菜单里只有一张是假的,学徒的调整基本不受影响;但如果有五百张假菜单统一写着“多糖”,学徒就会真的以为顾客群口味偏甜。威胁模型的意义,就是让防御者在部署前先问清楚:敌人有多强?他能碰多少数据?——答案决定防御资源的投放方向。
- 总样本规模N 表示训练数据集 D 中的全部样本数量,对应后厨的“全部点单记录”。
- 毒化样本数m 表示被攻击者篡改或构造的样本数量,即混入的“假菜单”份数。
- 投毒比例\rho 为毒化样本占总样本的比例,是攻击代价与威胁程度的度量。
关键方法
攻击者的作案手法有三种典型形态,对应三种下毒配方:标签翻转、对抗扰动、后门注入。第一种最直接——像把“少糖”的菜单改成“多糖”,攻击者只翻转样本标签,让模型学到错误映射。第二种最精细——攻击者构造与正常样本“看起来一样”的伪样本,但通过对抗扰动让模型在推理阶段对特定输入产生错误判断。第三种最隐蔽——攻击者在数据中藏入触发器(Trigger),模型平时表现正常,一旦输入带上触发器,就会被激活到错误分类。
对抗扰动是三者中的技术核心,它的数学本质是一个带约束的优化问题:在保持扰动足够小(不易察觉)的前提下,让扰动后的样本被模型预测为目标标签。这种手法常被用于构造投毒训练样本——攻击者不是在推理时做手脚,而是把“带刺的样本”混进训练集,让模型把触发器与错误标签绑定。
三种手法的共同点,是都不改变模型的推理逻辑本身,而是利用训练数据的统计规律做文章。而对防御者来说,理解手法是为了逆推“投毒指纹”——无论是标签翻转造成的分布畸变,还是对抗扰动留下的微小噪点,都会在数据或梯度层面留下痕迹。
- 扰动向量\delta 是加到原始样本 x 上的修改量;\|\delta\|_{p} 表示其 p 范数(如欧几里得距离),用来度量“篡改的可见度”。
- 最小化可见度\min_{\delta} 让扰动尽量微小,就像往汤里下毒时剂量越少越难被发现。
- 决策模型f(x + \delta) 是模型对篡改后样本的预测输出。
- 目标标签y_{target} 是攻击者希望模型给出的错误答案;约束条件保证投毒样本确实“骗”过了模型。
检测防御
后厨面对“假菜单”威胁,不能因噎废食,而要建立质检体系。检测与防御梯度投毒,同样需要三道防线:梯度审查、鲁棒聚合、差分隐私。
梯度审查发生在训练过程中:正常训练时梯度方向的分布相对集中,而投毒样本会制造指向异常方向的梯度。防御者可以计算每一批次梯度的范数、方向与历史均值的偏离程度,将偏离过大的更新视为可疑。但这在集中式训练中效果有限——攻击者可以控制梯度幅值使其“看起来正常”。更常见的手段是鲁棒聚合,尤其在联邦学习中,服务端不直接信任任何客户端上传的梯度,而是通过聚合规则让“离群”的恶意更新失效。经典的聚合策略如 Krum、Median 等,核心思想是选择最“合群”的更新,而非简单平均所有更新:
第三道防线是差分隐私(Differential Privacy):在训练过程中向梯度注入噪声,从源头模糊单个样本的影响,让攻击者无法通过梯度反推或投毒特定样本。代价是模型精度会有所下降。这三道防线分别对应事后检测、聚合韧性和源头加噪——就像后厨既有“菜品抽检”,又有“供应商黑名单”,还有“原料入库加封条”。
- 客户端更新\theta_{i} 表示第 i 个客户端(可能怀有恶意)上传的模型参数。
- 两两距离\|\theta_{i} - \theta_{j}\|^{2} 度量两个客户端更新之间的差异,恶意更新通常与其他客户端“貌合神离”。
- 距离求和\sum_{j \neq i} 累加当前更新与其余所有更新的距离,衡量它有多“合群”。
- 最合群者胜出\arg\min_{\theta_{i}} 选取总距离最小的更新,从而剔除“带偏方向的刺头”。
真实验证
理论再完美,也要端上桌尝尝才知道有没有效果。在真实环境中,梯度投毒的威力在联邦学习与推荐系统两个场景中格外突出。以联邦学习为例:全球成百上千的客户端各自训练本地模型,再上传梯度由服务端聚合。攻击者只需要控制一个恶意客户端,构造带毒梯度持续上传,就能逐渐把全局模型“拖”向攻击目标——这正是“少数恶意节点不影响平均损失,但足以影响收敛方向”的真实写照。
在推荐系统中,攻击者通过批量注册虚假账号,持续给目标物品刷点击、刷评分,让推荐模型误认为该物品广受喜爱,从而获得大量曝光。这类投毒不依赖模型细节,纯粹利用数据分布的可操控性。要评估攻击与防御的实际效果,需要一个统一的度量——攻击成功率(Attack Success Rate, ASR):
回到后厨:ASR 就像“抽查菜品中做错的比例”。如果加了防御后 ASR 从 80% 降回 5%,说明防线有效;如果 ASR 纹丝不动,就必须重新审视威胁模型和防御假设。这种可量化验证,正是从“觉得安全”走向“确认安全”的关键一步。
- 触发样本集x_{i}' 是携带触发器或特定特征的测试样本,N_{trig} 是触发样本的总数。
- 指示函数\mathbb{1}[\cdot] 是一个“布尔开关”:条件成立取 1,否则取 0。
- 错误预测判断f(x_{i}') \neq y_{i} 表示模型对触发样本的预测结果与其真实标签不一致——即“攻击得手”。
- 成功率归一化除以 N_{trig} 得到比例,便于对比不同攻击配置下的效率。
最佳实践
最后的落脚点,是如何把防御理论变成工程体系。梯度投毒的根本原因在于“数据可信度”无法被保证——因此最佳实践的起点是构建数据可信层(Data Trust Layer)。这包括三件事:其一,对数据来源做完整性校验和溯源登记,确保每一条样本都有“身份档案”;其二,在训练流程中加入实时审计与监控,记录每一轮梯度更新的统计特征,形成可追溯的审计日志;其三,把防御做成纵深体系,而不是单点屏障。
纵深防御的分层逻辑可以这样理解:源头层做数据清洗与异常过滤(挡住标签翻转);训练层做梯度审查与鲁棒聚合(挡住伪样本与恶意更新);模型发布层做触发样本评测(挡住后门)。这三层没有一层是完美的,但叠加起来,攻击者的成本会指数级上升。数学上,这种“分层减小信任面”的思想与差分隐私松弛化表述一脉相承——允许防御体系在小概率事件上睁一只眼闭一只眼,但确保整体风险有界:
后厨的终极防御,不是拒绝所有外来食材,而是建立一套从进货、储存、烹饪到上桌的全链路信任体系。AI 系统同理:与其追求一个“绝不中毒”的完美算法,不如把安全内建到数据生命周期的每一个环节。这才是应对梯度投毒应有的工程态度。
- 相邻数据集D 与 D' 是仅差一条样本的两个数据集,对应“多一张假菜单”的场景。
- 算法输出\Pr[\mathcal{A}(D) \in S] 表示算法 \mathcal{A} 在数据集 D 上的输出落在集合 S 内的概率。
- 隐私预算e^{\varepsilon} 是两条数据集输出概率比值的上界,\varepsilon 越小,“单条数据的影响”越小。
- 松弛项\delta 允许极端情况下的一小部分“破例”,使机制在实用性和安全性之间取得平衡。
AI 应用场景
联邦学习中的恶意客户端投毒防御
阶段:模型训练与聚合
解决的问题:在金融、医疗等敏感场景中,多个机构联合训练模型,但无法完全信任彼此。传统方式是直接平均各方梯度,一旦某个机构数据被污染或存在恶意节点,模型质量将被整体拖垮。通过鲁棒聚合(如 Krum、Trimmed Mean)与梯度审查,可在聚合阶段自动识别并降低恶意客户端更新的权重,使全局模型保持稳定。
具体案例:某医院联盟联合训练疾病预测模型,其中一家医院因数据采集设备故障产生了大量标签错乱的样本。启用鲁棒聚合后,系统检测到该院上传的梯度方向异常,自动将其权重从 1.0 降为 0.1,最终模型在验证集上的 AUC 仅下降 2%,而未启用防御时下降 17%。
推荐系统的数据污染治理
阶段:数据采集与特征工程
解决的问题:推荐系统的训练数据来自海量用户行为日志,极易被黑产通过虚假注册、刷单等手段投毒。传统规则过滤依赖人工经验,难以应对持续演变的攻击模式。通过数据可信层建设——包括样本溯源、行为序列异常检测、标签分布监控——可在数据入库前拦截恶意样本,防止模型偏好被“带节奏”。
具体案例:某电商平台发现部分商品在无真实流量情况下曝光量激增,追踪发现大量账号仅对该商品执行同类操作。平台启用“行为指纹 + 梯度影响评估”双通道检测,识别出占总样本 0.3% 的投毒账号组,清理后推荐点击率回升 11%。
大模型预训练语料的安全清洗
阶段:预训练数据准备
解决的问题:大模型预训练依赖海量互联网语料,攻击者可在公开网页中嵌入精心构造的文段或对话,使模型学到错误知识或植入后门。传统关键词过滤无法抵御语义层面的隐蔽投毒。通过语料来源可信度分级、语义聚类审查与梯度归因分析,可识别并剔除对目标方向贡献异常的文本簇。
具体案例:某团队在清洗开源语料时发现,一批伪装成技术文档的无意义文本反复诱导模型输出指定错误答案。通过计算每个文本簇对最终模型输出的梯度影响,系统标记并移除了约 0.1% 的毒化语料,模型在安全性评测上的有害响应率下降 63%。
Python 演示
import numpy as np class GradientPoisonDemo: """演示梯度投毒攻击:线性回归下干净训练与投毒训练的对比""" def __init__(self, n=200, poison_ratio=0.15): self.n = n self.ratio = poison_ratio self.lr = 0.05 self.epochs = 200 def make_data(self): rng = np.random.default_rng(42) X = rng.uniform(-3, 3, size=(self.n, 1)) y = 2.0 * X[:, 0] + 1.0 + rng.normal(0, 0.3, self.n) return X, y def train(self, X, y): theta = np.zeros(2) for _ in range(self.epochs): pred = X[:, 0] * theta[0] + theta[1] grad = np.mean( np.column_stack([X[:, 0] * (pred - y), pred - y]), axis=0 ) theta -= self.lr * grad return theta def poison(self, X, y): Xp = X.copy() yp = y.copy() m = int(self.n * self.ratio) Xp[:m] = Xp[:m] + 2.0 yp[:m] = -yp[:m] return Xp, yp def run(self): X, y = self.make_data() clean_theta = self.train(X, y) Xp, yp = self.poison(X, y) poisoned_theta = self.train(Xp, yp) return clean_theta, poisoned_theta if __name__ == "__main__": demo = GradientPoisonDemo() clean, poisoned = demo.run() print("clean theta:", clean) print("poison theta:", poisoned) print("shift:", np.abs(clean - poisoned))
class GradientPoisonDemo:定义一个演示类,把数据生成、训练和投毒逻辑封装在一起,方便对比实验。X = rng.uniform(-3, 3, size=(self.n, 1))生成 200 个均匀分布的输入特征,对应“一张张点单记录”。y = 2.0 * X[:, 0] + 1.0 + rng.normal(0, 0.3, self.n)真实规律是 y = 2x + 1,加上少量高斯噪声模拟正常波动。def train(self, X, y):手动实现梯度下降:每轮计算预测值与真实值的误差,再求平均梯度更新参数。grad = np.mean(np.column_stack([X[:, 0] * (pred - y), pred - y]), axis=0)这个矩阵同时计算对权重 w 和偏置 b 的两个偏导数,合成梯度向量。theta -= self.lr * grad沿负梯度方向更新参数,幅度由学习率控制。def poison(self, X, y):构造投毒数据集:前 15% 的样本特征整体偏移 2.0,标签取反——比真实“假菜单”还要嚣张。Xp[:m] = Xp[:m] + 2.0特征偏移让投毒样本集中到正常数据覆盖较少的区域,放大了统计影响。yp[:m] = -yp[:m]标签翻转让模型在这些区域学到完全相反的输出,形成“反向锚点”。clean, poisoned = demo.run()在同一份原始数据上分别跑干净训练和投毒训练,参数差异即为投毒造成的“梯度带偏量”。
常见误区
误区我以为投毒就是改标签,把猫的图片标成狗。既然模型训练时会被这些错误标签带偏,那防御也只要检查标签对错就够了。
正解标签翻转只是最朴素的一种手法。真实攻击更常用特征扰动和后门触发器:样本标签完全正确,但特征被精心调制,或携带隐蔽触发器。这些攻击不会在标签层面露出马脚,检查标签根本防不住。就像假菜单上写的确实是“少糖”,但配菜里埋了苦精——光看菜单字面意思完全正常。
为何常见:初学者最熟悉的攻击例子就是标签翻转,容易把“一种手段”误当成“全部手段”,忽略了攻击面是数据分布而非标签本身。
误区我以为至少要污染 30% 以上的数据,模型才会被带偏。数据量不够,攻击信号不就被正常数据淹没了吗?
正解攻击者不需要控制大量数据。由于梯度是数据集上的平均信号,只要恶意样本在设计上与正常样本形成系统性偏差,10% 甚至更少的投毒比例就能显著改变收敛方向。更危险的是后门攻击:毒化样本基数极小,但触发条件一旦出现,模型就稳定输出错误。威胁不在数量,而在“信号的协同性”。
为何常见:直觉上“少数服从多数”,但忽略了机器学习对分布偏移的敏感性,以及攻击者会刻意放大恶意信号的系统性。
误区联邦学习的数据不离开本地,只上传梯度,攻击者看不到原始数据,应该天然免疫投毒吧?
正解联邦学习反而扩大了投毒面——恶意客户端可以直接操纵上传的梯度,而且本地数据完全不可见,审计难度更大。标准 FedAvg 对所有客户端一视同仁地平均,恰好给了恶意更新“均摊污染”的机会。若不使用鲁棒聚合规则,联邦学习比集中式训练更容易被投毒。
为何常见:“数据不出域=安全”的直觉忽略了梯度本身携带训练信息,而投毒的核心载体正是由数据产生的梯度信号。
误区我觉得只要训练时盯着梯度,发现哪个批次梯度方向不对就杀掉,投毒就无路可走了。
正解梯度异常检测确实有效,但攻击者会制造“看起来合群”的毒化梯度——把扰动限制在正常梯度的主方向附近,或把恶意信号拆散到多个批次中缓慢注入,这样单批梯度几乎看不出异常。检测只是降低风险而非消除风险,必须结合数据溯源、鲁棒聚合和触发样本评测构成纵深防线。
为何常见:人们高估单点检测的覆盖能力,低估了攻击者的自适应能力——攻击者早就把“绕过检测”写进了优化目标。
面试题
Q1. 梯度投毒攻击最核心的特点是下列哪一项?
- A.修改模型网络结构
- B.污染训练过程信号← 正确答案
- C.篡改推理期输入
- D.替换整个训练框架
答案:B。梯度投毒在训练阶段通过污染数据或梯度,扭曲学习信号的来源与方向。A 是架构修改,C 是推理期对抗样本,D 是环境替换,三者都不属于训练数据的恶意操纵。
Q2. 下列哪个是投毒比例公式的正确含义?
- A.毒化样本占总样本比值← 正确答案
- B.恶意样本占测试集比值
- C.攻击者占客户端比值
- D.噪声占梯度范数比值
答案:A。投毒比例 \rho = m / N,m 为注入训练集的毒化样本数,N 为训练样本总数。B 指的是测试期干扰,C 是联邦学习中的恶意节点比例,D 是梯度噪声强度,均与该指标定义不符。
Q3. 后门攻击的典型特征是?
- A.模型对所有输入全部错判
- B.仅触发条件下产生错判← 正确答案
- C.训练损失彻底无法下降
- D.模型参数全部随机重置
答案:B。后门攻击属于完整性攻击,模型在常规输入上表现正常,只有携带触发器的样本才被诱导到错误类别。A 是可用性攻击的表现,C 是训练异常,D 是初始化失败。
Q4. 下列哪项最能解释投毒攻击的隐蔽性?
- A.攻击者使用超大学习率
- B.扰动方向与正常梯度近似正交← 正确答案
- C.攻击者直接修改模型权重
- D.训练数据完全来自合成数据
答案:B。当扰动方向与正常梯度近似正交时,训练损失的下降趋势几乎不变,模型表现“一切正常”,但决策边界在特定方向已被推偏。A 会导致损失震荡明显,C 是权重篡改而非投毒,D 本身不构成隐蔽性解释。
Q5. Krum 鲁棒聚合算法的核心选择规则是?
- A.随机挑选某一个客户端更新
- B.选择与其他更新距离最小的那一个← 正确答案
- C.对全部客户端更新做加权平均
- D.保留梯度范数最大的更新
答案:B。Krum 对每个客户端更新计算它与其余更新的距离平方和,选择总和最小的那一个作为聚合结果,刻意避开“离群的刺头”。A 随机性过强,C 是标准 FedAvg,D 恰好会选中最异常的更新。
Q6. ASR 指标度量的是什么?
- A.模型在干净数据上的准确率
- B.触发样本被成功误导的比例← 正确答案
- C.投毒样本占总数据的比例
- D.训练过程中梯度的平均范数
答案:B。ASR(攻击成功率)在触发样本集上统计模型预测错误的比例。A 是基础精度指标,C 是投毒比例 \rho,D 是梯度统计量,与攻击有效性度量无关。
Q7. 差分隐私防御投毒的核心思想是?
- A.阻止攻击者访问训练数据
- B.限制单条数据对模型的影响← 正确答案
- C.删除所有可疑样本
- D.增加模型的隐藏层层数
答案:B。差分隐私通过注入校准噪声,使模型输出对任何单条样本的变化不敏感,从而削弱投毒样本的定向影响力。A 是访问控制,C 是数据清洗,D 是架构层面调整,均不构成差分隐私的机制。
Q8. 梯度投毒攻击的受害者目标分类包括哪些?
- A.可用性攻击← 正确答案
- B.完整性攻击← 正确答案
- C.后门攻击← 正确答案
- D.白盒攻击
答案:ABC。按受害目标划分,投毒攻击分为可用性攻击(让模型整体失效)、完整性攻击(常规行为正常但特定场景犯错)和后门攻击(完整性攻击的特例,依赖触发器)。白盒攻击是攻击者能力的维度,不属于受害目标分类。
Q9. 下列哪些属于典型的梯度投毒关键手法?
- A.翻转训练样本标签← 正确答案
- B.构造带对抗扰动的伪样本← 正确答案
- C.在数据中注入触发器← 正确答案
- D.修改损失函数代码
答案:ABC。标签翻转、对抗扰动伪样本、触发器后门注入是三大经典手法,均作用于训练数据。D 修改损失函数属于代码层面的恶意篡改,不属于数据投毒范畴。
Q10. 针对梯度投毒,工程上推荐哪些防御组合?
- A.数据可信层建设与溯源← 正确答案
- B.训练期梯度异常监控← 正确答案
- C.联邦学习鲁棒聚合← 正确答案
- D.只在发布后做安全评测
答案:ABC。纵深防御强调前移防线:关注源头数据可信度、训练过程中监视梯度异常、并在分布式场景使用鲁棒聚合。D 仅在发布后评测属于事后补救,无法阻止投毒对训练过程的污染。