假设你是一家连锁餐饮集团的研发总监。集团旗下三百家分店散布各地,每家分店的厨房都积累了独家的食材搭配和调味经验——这些“厨房机密”(私有数据)是集团最宝贵的资产,物理上绝不能离开分店。然而总部的菜品研发中心,却想把这些经验汇成一本不断进化的“大师菜谱”(AI 模型)。 传统做法是让分店把食材和配方全部寄到总部——可没人愿意交出核心机密。联邦学习(Federated Learning)给出了另一种架构:总部把基础菜谱分发给各家分店,分店在自己的厨房里试做、改良,只把“调味心得”(模型参数/梯度)寄回总部;总部融合所有心得,更新出下一代菜谱。整个过程,食材从未离开过自家庭院,菜谱却在一代代精进。 这就是联邦学习架构——一场“数据不动、模型动”的协作革命。本文将以这条主线贯穿始终,从基本概念、系统组成、训练流程、聚合算法,一直讲到性能优化、隐私保护、区块链融合与实战挑战。
联邦学习是 AI 隐私合规时代的核心架构能力。掌握它,你才能让数据在“不出域”的红线下释放协作价值,这是当前 AI 工程中极具行业竞争力的技能。
目录
可视化演示
展示联邦学习五阶段训练流程、横向/纵向/迁移三类联邦架构及数据不出本地的隐私保护机制。
本节配有交互动效(进入视口后自动加载,约 3KB)。
联邦学习五阶段训练流程 服务器调度 客户端训练 FedAvg: w=Σ(nk·wk)/N 参数聚合生成全局模型
基本概念:数据不动,模型动
想象你在运营一家连锁餐饮集团。每家分店的“本地厨房”积累了独一无二的食材与口味,但总部决不能把它们搬进中央厨房——这是店规。联邦学习要解决的,正是“规矩不许动数据,又想让菜谱越改越好”这个两难。它的答案很朴素:数据原地不动,让“菜谱”(模型)轮流去各家厨房巡视改良。
在这个架构里,“菜谱”就是机器学习模型,“分店厨房”就是客户端设备,“总部研发中心”就是中央服务器。总部分发初始模型,分店用本地数据试做、修正,然后把“调味心得”(模型更新)寄回总部。整个过程中,原始数据始终留在分店本地——这正是联邦学习与传统集中式训练最根本的区别:分布式训练共享同一份数据分布、追求加速,联邦学习则尊重数据主权、追求隐私协作。
形式化地看,联邦学习要最小化所有参与方的平均损失。假设有 K 家参与方,第 k 家持有 n_k 条数据,总数据量为 n,其本地损失函数为 f_k(w),则全局优化目标为:
1. 全局目标函数:min_w f(w) 表示寻找一组模型参数 w,使所有参与方加权损失之和最小,即让菜谱在众口之中尽量被满意。
2. 参与方求和:\sum_{k=1}^{K} 表示把 K 家分店的本地损失逐一相加,得到集团总损失。
3. 数据量加权:\frac{n_k}{n} 是第 k 家分店的数据量占比,数据越多,评价意见的权重越大。
4. 本地损失函数:f_k(w) 是第 k 家分店用自家数据评估当前菜谱的“差评程度”。
至此你会发现,联邦学习的本质不是“把数据搬到一起”,而是“把评价带到各处”。菜谱在流动,厨房不搬家。这种架构为隐私合规时代的数据协作提供了底层范式——后面所有内容,都是围绕这本流动的菜谱展开的。
系统架构:星型协作网络
有了“菜谱轮流改良”的思路,还需要一套稳定的协作管道。想象中央厨房与分店之间的“传菜管道”:总部通过管道把基础菜谱发下去,分店改完后把心得装进密封盒寄回。这条管道就是联邦学习的通信链路,它连接起整个系统的骨架。
联邦学习的经典架构是“客户端—服务器”(Client-Server)星型拓扑。中央服务器扮演总部的角色:初始化模型、调度训练轮次、聚合所有更新。大量客户端则是分布在各处的分店:它们持有本地数据并独立完成训练,彼此不直接通信,所有交互都必须经过中央服务器。这种“一切通过总部”的设计,让系统职责清晰、易于管理。
要支撑这套架构,需要三个关键设计。一是模型分发机制:服务器把最新全局参数广播给本轮参与训练的客户端;二是梯度回传通道:客户端通过加密信道传回更新后的参数,而非原始数据;三是同步协议:所有客户端在同一轮起点拿到相同的模型版本,保证聚合时“讨论的是同一道菜谱”。每轮通信中,服务器与单个客户端要交换两次参数——下发全局模型、回传本地更新。若模型参数个数为 |w|,训练 R 轮,则单个客户端的累计通信量为:
1. 参数规模:|w| 为模型参数的个数,好比菜谱的页数。
2. 双向传输:系数 2 表示每一轮要“下发 + 回传”两趟,菜谱来回各走一趟。
3. 训练轮次:R 表示联邦学习的通信轮数,相当于总厨改良菜谱的迭代次数。
星型拓扑的好处是简单可控——总部统一调度,分店各管各家。但它把通信压力集中在中央节点,模型越大、轮次越多,传菜管道就越拥堵。这为后文的性能优化埋下了伏笔。
训练流程:试菜—反馈—改谱的循环
具体到每一轮,联邦学习就像一次标准化的“试菜—反馈—改谱”流程。总部把最新菜谱交给各家分店,分店厨房按菜谱做出菜品,根据顾客反应标出“哪里还不够好”,写下改良心得寄回总部。这个过程周而复始,菜谱一代代进化。
一轮联邦训练可分为四个阶段。第一阶段“分发”:服务器将当前全局模型 w^t 发送给本轮参与训练的客户端。第二阶段“本地训练”:每个客户端用本地数据执行若干轮随机梯度下降,把全局模型微调成更适合自家口味的本地模型。第三阶段“回传”:客户端只上传模型更新——参数差值或梯度,而不是数据。第四阶段“聚合”:服务器平均所有更新,得到新的全局模型。
每个客户端的本地更新可以写成如下公式:它从本轮下发的全局模型出发,沿着本地数据给出的“改进方向”迈出一步:
1. 更新后的模型:w_k^{t+1} 表示第 k 家分店在第 t+1 轮改良后的菜谱版本。
2. 本轮初始参数:w^t 是总部在本轮开始时下发的全局菜谱。
3. 学习率:\eta 是步长,决定每次调整的幅度——步子太小学得慢,步子太大容易跑偏。
4. 梯度方向:\nabla f_k(w^t) 是第 k 家分店基于本地数据算出的“改进方向”。
这个循环往复运行,菜谱一代代改良,而数据的搬运始终没有发生。集体的智慧就这样沉淀进了每一页菜谱——这正是“数据不动,模型动”的精髓。
聚合算法:总厨的加权融合手艺
各家分店寄回的心得各不相同,有的改动大、有的改动小,总厨该如何把它们融合成一本新菜谱?最简单也最有效的策略,是按客流量加权平均——这就是联邦平均算法 FedAvg 的核心思想。
FedAvg 由 McMahan 等人在 2016 年提出,是联邦学习的奠基算法。它的思想极其朴素:每家分店的本地模型都代表了“在自家数据上更优的方向”,把这些方向按数据量占比加权求平均,就得到了兼顾全局的新方向。它不需要任何原始数据,只需要参数交换,这正是它能成为行业标准的原因。
假设第 k 个客户端在本地训练后得到参数 w_k^{t+1},则服务器端的聚合公式为:
1. 聚合结果参数:w^{t+1} 是融合各家更新后的新一代全局菜谱。
2. 客户端本地参数:w_k^{t+1} 是第 k 家分店本地改良后的菜谱版本。
3. 加权求和:\sum_{k=1}^{K} \frac{n_k}{n} 保证所有客户端的贡献按数据占比归一化相加,权重总和为 1。
值得强调的是,FedAvg 之后还发展出安全聚合(Secure Aggregation)技术,让服务器只能看到聚合后的结果,而看不到单个客户端的更新——相当于总厨拿到的是“混合后的总心得”,而不是某一家分店的独门秘方。聚合,因此成为联邦学习中连接“各家智慧”与“全局进化”的枢纽。
性能优化:让传菜更快更稳
联邦学习的典型瓶颈不在计算,而在通信。想象几百家分店同时往总部寄心得,每份心得都厚达几百页——管道必然拥堵。为了让传菜更快更稳,业界发展出通信压缩、异步训练、客户端选择等一系列优化手段。
通信压缩的核心是删繁就简:模型参数动辄上百万个,但相邻两轮之间许多梯度数值微小。通过量化和稀疏化,可以只传最重要的那部分梯度。设原始梯度为 g,压缩后为 \tilde{g},则压缩率为:
1. 压缩后梯度:\tilde{g} 是经过量化或稀疏化处理后实际传输的梯度。
2. 原始梯度:g 是压缩前的完整梯度向量。
3. 压缩率比值:r 反映压缩效果,r 越小通信开销越低,但需警惕压缩过度带来的精度损失。
除了压缩,还有两类常见的配套手段。第一是客户端选择:每轮不必等全部分店都交心得,而按数据质量、网络状况挑选一部分参与,大幅降低调度压力。第二是异步训练:允许快的分店先交卷、先融合,缓解“木桶效应”——最慢的节点不再拖慢整体节奏。这些优化就像给传菜管道设计了快速通道:摘要让包裹更薄,选人让队伍更短,异步让总局不再苦等最后一家。
隐私保护:给心得加密上锁
即使在联邦学习中,上传的梯度也并非绝对安全。近年来的研究表明,恶意服务器可以从梯度反推出训练数据的隐私信息——就像有人能从“心得摘要”的字里行间,反推出分店客人的偏好甚至样貌。因此,必须给心得“加密上锁”。
目前主流的隐私保护技术有三类。差分隐私通过在梯度中加入精心设计的噪声,让攻击者无法分辨某个样本是否参与了训练;同态加密允许服务器在密文上直接做聚合运算,全程看不到明文;安全多方计算则让多个客户端联合计算聚合结果,任何一方都无法获得他人的完整信息。三者的组合构成了联邦学习的“三重保险”。
差分隐私的核心是“隐私预算”ϵ。它衡量加入噪声后,某个输出在相邻数据集上的分布差异上界:
1. 隐私预算:ϵ 表示隐私保护强度,值越小,保护越强。
2. 相邻数据集:D 与 D' 是只差一条样本的两个数据集,好比两份只差一位客人的评论记录。
3. 输出概率比:\frac{\Pr[\mathcal{M}(D) \in S]}{\Pr[\mathcal{M}(D') \in S]} 衡量加入该样本前后,输出落在同一范围内的概率变化程度。
4. 取最大值:\max_{D, D'} 确保任意一条样本的加入,泄露风险都不超过 ϵ。
差分隐私与联邦学习是天然搭档:联邦学习保证“数据不挪窝”,差分隐私保证“心得不泄密”。但噪声也有代价——隐私越强,模型精度越低。如何在这把双刃剑上找到平衡,是工程实践中的必修课。
区块链融合:把信任搬到链上
经典的联邦学习依赖中央服务器,相当于所有分店都信任总部这个“裁判”。但如果总部作恶、被攻破,或者根本不存在呢?这正是区块链与去中心化 AI 结合的契机——把信任从“人治的总部”搬到“代码即规则”的链上。
区块链可以为联邦学习提供三样东西。一是去中心化存储与模型验证:把聚合结果上链,任何人都无法篡改训练记录;二是链上激励机制:用 Token 奖励贡献数据的客户端,解决“数据贡献者分文未取”的公平问题;三是数据确权:将数据使用记录写入链上,实现“谁用了谁的数据、用了多少”全程可追溯,让每一家分店的贡献都看得见。
激励机制通常基于贡献度量化。设第 i 个客户端在本轮的贡献量为 a_i,全体客户端总贡献为 \sum_{j=1}^{K} a_j,本轮奖励池为 R,则该客户端获得的奖励为:
1. 个体奖励:r_i 是第 i 家分店本轮获得的激励金额。
2. 贡献占比:\frac{a_i}{\sum_{j=1}^{K} a_j} 表示该店贡献占全体总贡献的比例,占比越高分红越多。
3. 奖励池总额:R 是系统预设的本轮总奖金池。
区块链让联邦学习从“中心化可信”走向“去中心化可信”,但链上聚合也带来新的性能开销。工程中常采用“链下聚合、链上存证”的混合方案:训练和聚合仍在链下高效完成,只把结果摘要和激励记录上链,兼顾效率与信任。
实践挑战:众口难调暗藏风险
现实世界远比理想模型复杂。分店 A 主打川菜、分店 B 主打粤菜,它们的口味数据天差地别——这在联邦学习里叫“非独立同分布”(Non-IID)。当各家本地数据分布差异极大时,本地模型会朝不同方向漂移,聚合出的“大众菜谱”可能两边都不讨好。
另一个典型挑战是通信瓶颈:即便有压缩技术,高频率的模型同步对弱网设备依然是沉重负担。此外,恶意客户端还可能投毒——故意上传恶意修改的梯度,企图污染全局模型。这些挑战要求在工程上做出架构级的防御设计。模型漂移的程度,可以用各客户端本地模型与聚合模型的平均距离来量化:
1. 漂移度量:MD(Model Drift)表示整体模型漂移的程度。
2. 平均距离:\frac{1}{K} \sum_{k=1}^{K} 计算所有分店差距的平均值。
3. 二范数:\left\| \cdot \right\|_2 计算两个参数向量之间的欧氏距离。
应对这些挑战没有银弹:数据异构需要个性化联邦学习、聚类联邦学习等进阶方案;通信瓶颈需要压缩与异步配合;恶意攻击则需要鲁棒聚合与信誉机制。每个分店的厨房各不相同,但正是这份差异,让共同改良菜谱这件事变得复杂,也正因为复杂,才让联邦学习架构的价值历久弥新。
AI 应用场景
多中心医疗影像联合建模
阶段:模型训练与部署
解决的问题:传统方式下,多家医院的数据因隐私法规无法集中,单一机构数据量不足导致模型泛化能力差。联邦学习让各医院数据不出院,只共享模型更新,既合规又能汇聚多方智慧。
具体案例:某多中心医疗联盟使用联邦学习训练肺结节检测模型。三家三甲医院分别持有上万张影像数据,数据全程不出院,经过 50 轮联邦训练,模型在独立测试集上的 AUC 比任意单院训练的模型提升了 9 个百分点。
银行反欺诈联合模型
阶段:特征工程与模型训练
解决的问题:银行间的黑名单与交易模式数据高度敏感,无法集中共享,导致跨行转账链路中的欺诈行为难以被及时发现。联邦学习让多家银行在各自本地训练,只交换加密的模型更新。
具体案例:多家城商行通过联邦学习共建反欺诈模型:各银行本地部署客户端训练,服务器端聚合梯度并加入差分隐私噪声。上线后跨行欺诈识别率提升 22%,且没有任何原始交易记录离开银行内网。
手机输入法个性化学习
阶段:持续学习与模型更新
解决的问题:输入法个性化词库高度敏感,传统云端训练需要上传全部键入记录,隐私风险大。联邦学习把训练放到用户手机端,服务器只聚合更新。
具体案例:某输入法厂商采用联邦学习架构,在用户手机本地训练个性化语言模型,仅上传加密的模型更新,服务端聚合后下发新版本。用户输入准确率提升的同时,隐私合规压力大幅降低,日活用户留存率明显改善。
Python 演示
import numpy as np def make_synthetic_data(n_samples, w_true): """生成线性回归模拟数据:特征矩阵 X 和标签 y""" rng = np.random.default_rng(0) X = rng.normal(size=(n_samples, len(w_true))) y = X @ w_true + rng.normal(scale=0.1, size=n_samples) return X, y def local_train(w, X, y, lr=0.05, epochs=3): """客户端本地训练:在本地数据上执行多轮梯度下降""" for _ in range(epochs): grad = X.T @ (X @ w - y) / len(y) w = w - lr * grad return w def fed_avg(w_global, local_weights, sizes): """FedAvg 聚合:按数据量占比加权平均各客户端模型""" total = sum(sizes) w_new = np.zeros_like(w_global) for w_local, n in zip(local_weights, sizes): w_new = w_new + (n / total) * w_local return w_new def federated_round(w_global, clients): """一轮联邦训练:分发模型 -> 本地训练 -> 回传 -> 聚合""" local_weights = [] sizes = [] for X, y in clients: local_weights.append(local_train(w_global.copy(), X, y)) sizes.append(len(y)) return fed_avg(w_global, local_weights, sizes) if __name__ == "__main__": np.random.seed(42) w_true = np.array([3.0, -1.5, 0.8]) # 模拟三家"分店",数据分布略有差异 clients = [] for shift in (0.0, 0.3, -0.3): X, y = make_synthetic_data(200, w_true + shift) clients.append((X, y)) # 初始全局模型,相当于总部的"基础菜谱" w_global = np.zeros(len(w_true)) for r in range(8): w_global = federated_round(w_global, clients) loss = float(np.mean((clients[0][0] @ w_global - clients[0][1]) ** 2)) print("Round %d: loss = %.4f, w = %s" % (r + 1, loss, np.round(w_global, 3)))
X = rng.normal(size=(n_samples, len(w_true)))生成高斯分布的特征矩阵,模拟分店各自的“本地客人特征”grad = X.T @ (X @ w - y) / len(y)用矩阵运算一次算出均方损失对参数 w 的梯度方向w = w - lr * grad沿着梯度反方向迈一小步,完成一次本地参数更新local_weights.append(local_train(w_global.copy(), X, y))每个客户端用自家数据独立改良模型,服务器只拿到改良结果sizes.append(len(y))记录每家分店的数据量,作为后续聚合的加权依据w_new = w_new + (n / total) * w_local按数据量占比累加各家模型,这正是 FedAvg 的加权平均核心w_global = federated_round(w_global, clients)完成一轮完整的“分发—训练—聚合”循环
常见误区
误区我以为联邦学习就是把数据分到多台机器上并行训练,训练完再合并模型,和分布式深度学习没什么区别。
正解两者的目标根本不同。分布式训练是为了加速,数据可以集中或分片,通常共享同一份数据分布;联邦学习是为了保护隐私,数据必须保存在本地且分布天然异构。打个比方:分布式训练是“中央厨房把食材分给多位厨师一起炒”,联邦学习是“每家分店在自己厨房里各炒各的,只交流调味心得”。数据是否离开原地,是分水岭。
为何常见:两者都涉及“多机协作 + 参数聚合”,表面流程相似,初学者容易只看到形式,而忽略了数据主权这一本质差异。
误区只要不把照片、文本等原始数据传上去,只传梯度和参数,服务器就什么也看不到,隐私绝对无忧。
正解梯度同样携带数据信息。著名的 Deep Leakage from Gradients(DLG)研究表明,攻击者可以从上传的梯度精确重建出训练样本。好比分店寄出的“心得摘要”虽没写原始配方,但字里行间可能透露关键做法。因此工程上还需要差分隐私、同态加密、安全聚合等机制来进一步加固。
为何常见:人们习惯用“有没有上传原始数据”作为隐私标准,却忽略了统计信息也可以反推个体的现实。
误区联邦学习嘛,参与的分店越多,众口之下的菜谱一定越完善,模型精度必然越高。
正解当数据严重 Non-IID,或大量客户端只贡献噪声时,盲目增加客户端反而加剧模型漂移,甚至拖慢收敛。业界普遍采用客户端选择策略,按数据质量、网络状态筛选参与者,效果往往优于全员参与。好比众口难调时,请几位最具代表性的老饕试菜,比几千个随机路人更有价值。
为何常见:直觉上“人多力量大”,但忽略了数据质量、分布差异和通信开销这些关键约束。
误区区块链这么火,把联邦学习整个搬到链上,效率更高、更安全。
正解区块链解决的是“信任”而非“效率”问题。链上每一步操作都要经过共识、都要记账,开销远大于中心化服务器。工程上普遍采用“链下聚合、链上存证”的混合架构:本地训练与参数聚合仍在链下高效完成,只有结果摘要和激励记录上链。盲目全上链,只会让传菜管道更加拥堵。
为何常见:区块链作为热点概念容易被神化,初学者容易忽略共识机制本身的性能代价。
面试题
Q1. 联邦学习中,参与方(客户端)上传给服务器的内容是什么?
- A.本地原始训练数据
- B.模型参数或梯度更新← 正确答案
- C.用户的完整画像数据
- D.服务器的聚合结果
答案:B。联邦学习的核心是“数据不动、模型动”:客户端只在本地数据上训练,把更新后的模型参数或梯度传给服务器。原始数据、用户画像全程留在本地。聚合结果是服务器端流程,不是客户端上传的内容。
Q2. FedAvg 聚合时,各客户端模型的权重取决于什么?
- A.客户端本地数据量占比← 正确答案
- B.客户端训练时间长短
- C.客户端网络带宽大小
- D.客户端 CPU 核心数量
答案:A。FedAvg 采用数据量加权平均,n_k/n 就是第 k 个客户端的数据量占比。数据越多,代表该客户端在全局目标中的“话语权”越大。训练时长、带宽、CPU 数量都与数据分布无关,不会作为聚合权重。
Q3. 以下哪些属于联邦学习常用的隐私保护手段?
- A.安全多方计算← 正确答案
- B.同态加密技术← 正确答案
- C.数据随机删除
- D.差分隐私机制← 正确答案
答案:ABD。安全多方计算让多方在不泄露各自输入的前提下完成联合计算;同态加密允许在密文上直接聚合;差分隐私通过在输出中加噪声限制信息泄露。数据随机删除只是普通的数据清洗操作,不属于隐私保护机制。
Q4. 下列关于联邦学习架构的说法,正确的是?
- A.必须依赖区块链技术底层
- B.服务器可见所有原始数据
- C.数据不出本地即可参与联合训练← 正确答案
- D.客户端之间可直接交换数据
答案:C。联邦学习的核心约束是原始数据不离开本地,客户端只上传模型更新。区块链是可选增强手段而非必需底层。典型架构中客户端不直接互传数据,所有参数交互都经服务器协调。
Q5. 差分隐私中,ϵ 值越小说明什么?
- A.模型的精度会越来越高
- B.隐私保护能力就越强← 正确答案
- C.通信开销会越来越小
- D.聚合速度就越快
答案:B。ϵ 是隐私预算,度量加入噪声后输出分布与相邻数据集输出的差异上界。ϵ 越小,噪声越大,攻击者越难分辨某条样本是否参与训练,隐私保护越强。代价是精度下降,通信和聚合速度不受影响。
Q6. 非独立同分布(Non-IID)数据会导致什么问题?
- A.聚合效果反而显著变差← 正确答案
- B.通信带宽会自动增大
- C.服务器算力显著提升
- D.训练时间必然缩短
答案:A。Non-IID 指各客户端本地数据分布差异大,本地模型朝不同方向漂移,聚合后的全局模型难以同时拟合各方数据,精度和收敛性都受影响。通信带宽、服务器算力、训练时间与数据分布没有直接因果关系。
Q7. 一轮联邦学习训练流程包含哪些环节?
- A.模型分发环节← 正确答案
- B.本地训练阶段← 正确答案
- C.数据库备份任务
- D.参数聚合过程← 正确答案
答案:ABD。完整流程是:服务器将全局模型分发给客户端(分发)→ 客户端在本地数据上训练(本地训练)→ 客户端回传更新 → 服务器聚合出新模型(参数聚合)。数据库备份不是联邦学习的标准环节。
Q8. 联邦学习工程实践中的常见挑战包括?
- A.非独立同分布数据← 正确答案
- B.通信带宽瓶颈限制← 正确答案
- C.恶意节点攻击风险← 正确答案
- D.云端存储容量不足
答案:ABC。Non-IID 导致模型漂移,通信带宽是训练效率的主要瓶颈,恶意节点可能投毒污染模型,这些都是经典挑战。联邦学习只传输参数、数据留存在客户端,对云端存储的要求很低,“存储容量不足”不是典型挑战。
Q9. 区块链在联邦学习中的核心价值是什么?
- A.显著减少模型的参数量
- B.记录贡献并激励多方协作← 正确答案
- C.彻底消除所有通信延迟
- D.完全替代本地训练算法
答案:B。区块链解决的是信任与激励问题:聚合结果上链防篡改、按贡献度发放 Token、数据使用记录可追溯。它不改变模型参数量,不能消除通信延迟,更不替代本地训练,链上共识反而会引入额外开销。
Q10. 攻击者从联邦学习上传的梯度中重建训练样本,这类攻击通常被称为?
- A.数据投毒攻击方式
- B.梯度泄露攻击手段← 正确答案
- C.差分隐私攻击技术
- D.女巫身份攻击威胁
答案:B。梯度泄露攻击(DLG)证明恶意服务器可以从上传的梯度中精确重建训练样本,揭示了“只传梯度不传数据”并非绝对安全。数据投毒是主动注入恶意数据,差分隐私是防御技术而非攻击类型,女巫攻击是伪造多个节点身份的攻击,与梯度重建无关。