想象一个拥有上千家分店的连锁餐饮集团。总店研发中心掌握着所有菜品的标准做法,却面临一个难题:各地顾客口味千差万别,总店不可能制定一本让所有人都满意的“全国通用菜谱”;更麻烦的是,各分店的顾客消费记录属于商业机密,绝不能寄到总店。 集团想出一个聪明的办法:总店先给每家分店发一版“基础菜谱”,各分店在后厨用本地顾客的反馈悄悄试做、反复改良;改良之后,分店只把“调整笔记”寄回总店——笔记里写的是“盐减五克、辣度加一档”这类改进建议,绝不含任何顾客信息。总店把上千份调整笔记汇总,琢磨出一版新菜谱,再发回所有分店。就这样,顾客隐私一点没离开分店,菜谱却一代比一代好。 可新问题来了:上千家分店如果都直接和总店通信,总店的收发室会被挤爆。集团于是在每个城市设了一名“区域主厨”:分店先把笔记交给区域主厨,区域主厨汇总成本区域的“一份建议”,再统一上报总店。区域主厨这个小角色,让整个改进流程又快又省,还守住了隐私底线。 这套“数据不出店、菜谱共进步”的协作机制,就是本篇文章的主题——边缘聚合与联邦学习。

岗位关联

掌握边缘聚合与联邦学习,你就掌握了让 AI 在“不触碰用户原始数据”的前提下集体进化的核心方法——这是隐私合规时代 AI 工程师的必修课。

目录
  1. 可视化演示
  2. 端云协同架构
  3. 联邦学习原理
  4. 边缘聚合机制
  5. 联邦平均算法
  6. 性能特性分析
  7. 优化策略
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示设备-边缘-云端三层联邦架构、边缘聚合加权平均机制、量化稀疏化通信优化及个性化联邦学习共享基座与本地适配层,含星座网络背景动画。

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

端云协同架构

连锁餐饮集团有三层组织:总店研发中心、区域主厨和遍布各地的分店。分店每天早上开门,用总店发来的标准菜谱应对日常点餐——这是“端侧推理”;总店研发中心负责研制新菜、改进配方——这是“云端训练”;而区域主厨既不管发明新菜,也不天天炒菜,他负责协调区域内各分店的需求,让信息流转更高效——这是“边缘节点”。

放到 AI 推理的语境里,“端”就是手机、传感器、摄像头这些产生数据也做计算的设备,“云”是数据中心里拥有强大算力的服务器集群,“边缘”则是部署在离端更近的网关、基站或小型服务器。端云协同推理,就是让三者各司其职:端上跑轻量推理,满足毫秒级响应;云上做模型训练,拥有全局视野;边缘在中间承接与中转,让整条链路不拥挤、不绕路。

为什么不能让端设备自己搞定一切?因为算力、电量、存储都有限,跑不动大模型。为什么不能让云包办一切?因为视频流、传感器数据全量上云,延迟高、带宽贵,还有隐私风险。于是分工出现:设备端加载轻量化模型做本地推理;云端在大规模数据上训练高精度模型;边缘节点在中间扮演“半个大脑”——缓存模型、转发请求,并为后续的聚合做准备。三层各扛各的活,协同才高效。

就像分店不必每盘菜都打电话请示总店,日常推理在端侧就地解决;只有“菜谱该怎么改”这种大事,才需要沿着“分店—区域主厨—总店”这条链路上传。理解了这条链,我们来看这条链上最重要的“菜谱改进机制”:联邦学习。

联邦学习原理

总店想让菜谱整体进步,却有一条死规矩:绝不能查看顾客的消费记录,因为那是各分店的隐私资产。怎么改进菜谱呢?总店把基础菜谱发给每家分店,分店在自己的后厨里,用本地顾客的口味数据反复试做、微调配方;试完之后,分店不交回任何顾客信息,只交一份“调整笔记”——比如“盐减五克”“辣度加一档”。总店把上千份调整笔记汇总起来,改出一版新菜谱,再发回各家分店。

这套机制在机器学习里叫联邦学习(Federated Learning)。它的核心思想是:多个客户端各自持有本地私有数据,在不上传原始数据的前提下,协作训练一个全局模型。每一步迭代中,服务器把当前全局模型下发给选中的客户端;客户端用本地数据训练几个 epoch,把更新后的模型参数(即调整的方向和幅度)传回服务器;服务器聚合这些更新,得到新的全局模型,进入下一轮。整个循环里,原始数据从未离开客户端。

从全局视角看,联邦学习其实是在最小化一个“加权后的全局损失”。每个客户端对全局目标的贡献,与其本地数据量成正比。写成数学形式就是:

回到餐厅:每家分店贡献的“意见分量”取决于它服务了多少顾客。一家有 10 万条消费记录的大店,它的口味判断显然比只有 100 人的小店更有参考价值。联邦学习用同样的逻辑,让“数据多的客户端在聚合中拥有更大权重”。隐私留在店里,智慧汇聚到总店——这正是联邦学习最迷人的地方。

min⁡w  L(w)  =  ∑k=1KnkN Lk(w)\displaystyle \min_{w} \; \mathcal{L}(w) \;=\; \sum_{k=1}^{K} \frac{n_k}{N} \, \mathcal{L}_{k}(w)
这组公式说:我们想找一组模型参数 $w$,让所有客户端本地损失按数据量比例加权后整体最小。数据量越大的客户端,对“什么才是好模型”越有发言权。
  1. 本地损失第 $k$ 个客户端在它本地数据上计算出的损失,衡量“这个模型在我店里表现多差”。
    Lk(w)\mathcal{L}_{k}(w)
  2. 数据量占比第 $k$ 个客户端的样本数占全体样本数的比例,是它在聚合中的权重。
    nkN\frac{n_k}{N}
  3. 全局损失所有客户端本地损失的加权和,代表整个系统的“整体不满意程度”。
    L(w)  =  ∑k=1KnkN Lk(w)\mathcal{L}(w) \;=\; \sum_{k=1}^{K} \frac{n_k}{N} \, \mathcal{L}_{k}(w)
  4. 最小化目标寻找一组参数 $w$,让加权的全局损失最小,也就是让大家整体最满意。
    min⁡w  L(w)\min_{w} \; \mathcal{L}(w)

边缘聚合机制

但联邦学习有个现实难题:如果一千家分店都派伙计骑电动车去总店送笔记,总店的收发室会被挤爆,路上还要花大半天。集团于是增设“区域主厨”:每家分店先把调整笔记送到就近的区域主厨那里,区域主厨把本区域几十家分店的意见先汇总成一份“区域建议”,再统一上报总店。这就是边缘聚合(Edge Aggregation)的形象写照。

对应到技术上,纯粹的联邦学习是“端—云”直连架构;加入边缘节点后变成“端—边—云”三层,也叫分层联邦学习。边缘节点不再是简单转发,而是承担了聚合、缓存和调度三重角色:它把附近客户端的更新先聚合成一个中间结果,再与云端通信。这样一来,云端面对的是少量边缘节点,而不是海量终端,骨干网的负担大大减轻。

边缘聚合带来三个直接好处。第一是通信减负:终端只和几公里内的边缘节点通信,骨干网上只剩边缘到云的少量流量;第二是时延降低:边缘离用户近,一轮聚合的往返时间大幅缩短;第三是鲁棒性提升:某台终端掉线不影响区域聚合。为了进一步减负,通常还会配合通信压缩(量化、稀疏化),以及异步协作——不强迫所有客户端同步到位才开始聚合,先到的先汇,后到的补交。

区域主厨的存在,让“菜谱改进会议”不再需要全国分店同时到场。先开区域小会,再开全国大会,效率翻倍,路上的车也少了一大半。理解了边缘聚合的定位,我们来看全局模型究竟是怎么“算”出来的——这就轮到联邦平均算法登场。

联邦平均算法

区域主厨收到各家分店的调整笔记后,怎么合并成一份区域建议?最简单的做法是把所有建议摆在一起求个平均——但这样做对吗?如果一家 10 万顾客的大店和一家 100 顾客的小店意见相反,平均结果会被小店的极端意见拉偏。聪明的总店规定:意见分量按“服务顾客数”来定。这就是联邦平均(FedAvg)的加权思想。

FedAvg 是目前最经典的联邦学习算法。它的执行分两步:第一步,每个客户端在本地用 SGD 训练多轮,得到一个本地更新后的模型,这相当于分店用本地食材把菜谱微调好几遍;第二步,服务器把各客户端的新模型按样本量比例加权平均,得到新的全局模型,这相当于总店综合千家意见改出新菜谱。相比“每轮都上传梯度”的朴素做法,FedAvg 允许本地多跑几轮,大幅减少通信轮次。

本地更新与全局聚合分别写成两个公式:

回到餐厅:本地更新就像分店用自己后厨的食材把菜谱“微调”了几遍,得到一版分店专属做法;全局聚合则是总店按各店顾客量加权,把千家分店的专属做法融成一版新菜谱。注意,FedAvg 的权重是“数据量占比”而不是平等平均——大店的意见举足轻重,小店的声音也不会被淹没。

wk(t+1)  =  w(t)  −  η ∇Lk ⁣(w(t))\displaystyle w_{k}^{(t+1)} \;=\; w^{(t)} \;-\; \eta \, \nabla \mathcal{L}_{k}\!\left(w^{(t)}\right)
w(t+1)  =  ∑k=1KnkN  wk(t+1)\displaystyle w^{(t+1)} \;=\; \sum_{k=1}^{K} \frac{n_k}{N} \; w_{k}^{(t+1)}
第一个公式表示每家分店在本地微调菜谱:沿着“让本地顾客更满意”的方向迈一小步;第二个公式表示总店按顾客量加权,把各店微调结果融成新菜谱。FedAvg 还有三个关键超参数:本地训练轮数 $E$、学习率 $\eta$、每轮参与客户端比例 $C$,它们共同决定收敛快慢。
  1. 全局模型起点第 $t$ 轮服务器下发的全局参数,是所有客户端本地训练的起点。
    w(t)w^{(t)}
  2. 本地梯度客户端用本地数据求损失对参数的梯度,指明“菜谱该往哪个方向调、调多少”。
    ∇Lk ⁣(w(t))\nabla \mathcal{L}_{k}\!\left(w^{(t)}\right)
  3. 学习率控制每次调整的步长,太大容易调过头,太小改进缓慢。
    η\eta
  4. 本地新参数沿梯度反方向迈出一步后,客户端得到本地更新后的模型。
    wk(t+1)  =  w(t)  −  η ∇Lk ⁣(w(t))w_{k}^{(t+1)} \;=\; w^{(t)} \;-\; \eta \, \nabla \mathcal{L}_{k}\!\left(w^{(t)}\right)
  5. 数据量权重第 $k$ 个客户端的本地样本数占全体样本数的比例,决定它在聚合中的“发言权”。
    nkN\frac{n_k}{N}
  6. 加权累加把所有客户端的本地模型按权重相加,得到新一轮全局模型。
    w(t+1)  =  ∑k=1KnkN  wk(t+1)w^{(t+1)} \;=\; \sum_{k=1}^{K} \frac{n_k}{N} \; w_{k}^{(t+1)}

性能特性分析

菜谱迭代系统跑了一段时间,总店发现几个新现象:有些城市口味特别重,与全国平均差异极大,按全局汇总的新菜谱在那边反响平平;每次寄调整笔记的快递费不低,但总不能为了省钱就不迭代了。这些现象对应到联邦学习,就是性能分析中绕不开的四个关键词:收敛性、数据异构、通信开销和隐私水平。

收敛性(Convergence)描述全局模型能否稳定地越变越好,以及变好的速度。联邦学习的收敛速度和参与客户端数量、本地训练轮数、数据分布都有关系。数据异构(Non-IID)是说各客户端的数据“长得不一样”——比如有的店全是辣味顾客、有的店全是甜味顾客。差异越大,本地训练的模型越“各奔东西”,聚合后收敛就越慢。通信开销则是联邦学习的经典瓶颈:模型动辄几百万参数,哪怕只传参数不传数据,每轮也是一笔不小的流量。

通信开销的规模可以用一个简洁公式来感受:

总店由此懂得:菜谱不能天天大改(通信太贵),也不能完全不管(模型会过时);口味太偏的门店要重点对待(数据异构处理),但统一菜谱本身就不可能让所有人满意。理解了这些“快与慢、贵与省”的规律,才能设计出真正高效的菜谱迭代节奏——这正是优化策略要解决的问题。

Ccomm  =  2  K  T  P\displaystyle C_{\text{comm}} \;=\; 2 \; K \; T \; P
这个公式算的是:$K$ 个客户端、每轮全量上传下载、共 $T$ 轮时,系统总的通信量。因子 2 来自“上传一次、下载一次”。
  1. 参与客户端数每轮参与通信的客户端数量,越多每轮信息越丰富,通信也越贵。
    KK
  2. 通信轮次全局模型更新的总轮数,每轮所有参与者都要上传和下载一次参数。
    TT
  3. 模型参数量模型参数的个数,决定了每次传输的数据包大小。
    PP
  4. 上下行双倍每个客户端每轮上传一次、下载一次,所以总通信量乘以 2。
    2  K  T  P2 \; K \; T \; P

优化策略

面对“通信贵、数据偏、设备杂”三大难题,总店总结出三招:第一招,每次改进菜谱,不需要叫上全国所有分店,挑几家有代表性的分店参会就行——这叫客户端选择;第二招,调整笔记别写成长篇小说,写一封短信——这叫梯度压缩;第三招,不用等所有分店的笔记都寄到才开会,先到的先汇总——这叫增量更新。

客户端选择(Client Selection):每轮从大量客户端中按代表性、样本量、网络状态或计算资源挑选一部分参与。这在保持收敛质量的同时,把每轮通信量降下来,还能照顾“设备在充电、空闲、连 Wi-Fi 才参与”这类真实约束——总不能让正在炒菜的分店厨师放下锅铲去写笔记。梯度压缩(Gradient Compression):对上传的梯度做量化和稀疏化,比如只保留绝对值最大的 1% 梯度(TopK 稀疏化),配合误差反馈机制,可以把通信量压缩一两个数量级而不显著损失精度——笔记写短了,信息量还在。

增量更新(Incremental Update):客户端不必每次上传完整模型参数——模型动辄几千万个参数,而一次更新往往只体现在少数地方。客户端只上传本地参数与全局参数之间的差值 Δ,服务器用“全局参数 + 聚合后的 Δ”来更新模型。传输同样的信息量,增量更新的数据量比全量上传小得多。三种策略常常组合使用:先做客户端选择,再对增量做梯度压缩,形成一条“能省则省”的通信管道。

有了这三招,总店再也不担心“千人会议”和“长篇笔记”:只请代表、只写短信、只报变化——菜谱依旧越来越好,成本却直线下降。边缘聚合与联邦学习,也从“实验室里的漂亮想法”,变成了千万台手机、传感器和服务器上每天都在发生的协作日常。

AI 应用场景

智慧医疗多中心疾病筛查

阶段:模型训练(联邦学习)

解决的问题:医院影像数据涉及患者隐私且受法规约束,无法汇总到统一数据中心。传统做法只能让每家医院各自训练小模型,数据少、效果差;联邦学习让每家医院在本地数据上训练,只上传模型更新,云端聚合出一个跨院共享的筛查模型,效果逼近集中式训练,同时数据不出院。

具体案例:某区域医联体联合 6 家医院,用联邦学习训练肺结节 CT 筛查模型。每家医院约 5 万张影像,全程不离开院区,最终模型 AUC 达到 0.93,比单院独立训练的模型高出 0.05,且通过了医院伦理审查。

智能家居语音个性化

阶段:端侧推理 + 边缘聚合

解决的问题:智能音箱、手机助手需要感知每个家庭的口音和习惯,但语音数据高度敏感,直接上传云端会引发隐私担忧。传统云训练模型“千人一声”,识别本地口音效果差;端云协同让设备在本地微调模型,边缘网关聚合家庭内多台设备的更新,再周期性上报云端。

具体案例:某智能音箱厂商让每台设备在本地微调唤醒词模型,家庭网关充当边缘节点,每周聚合家庭内设备参数更新后上报云端。落地后用户口音识别率提升 12%,语音原始数据零上传,隐私合规压力大减。

工业产线预测性维护

阶段:边缘聚合优化训练

解决的问题:工厂振动传感器数据包含工艺参数,属商业机密,不能外传;且产线网络不稳定,设备直连云端成本高。通过在每条产线部署边缘服务器做局部聚合,云端只接收聚合后的统计更新,既保住机密又降低通信开销。

具体案例:某制造企业 3 条产线各部署一个边缘盒子,本地训练故障分类模型;边缘节点每天聚合本产线设备更新,云端每周做一次全局聚合再下发。实施后故障误报率下降 40%,上行流量降低 85%。

Python 演示

python58 行
import numpy as np  class FLClient:    # 联邦学习中的客户端: 持有本地私有数据, 只返回本地更新    def __init__(self, client_id, true_w, n=200):        self.client_id = client_id        self.true_w = np.asarray(true_w, dtype=float)        rng = np.random.default_rng(client_id)        self.X = rng.normal(size=(n, len(self.true_w)))        self.y = self.X @ self.true_w + rng.normal(0, 0.1, n)     def gradient(self, w):        pred = self.X @ w        err = pred - self.y        return self.X.T @ err / len(self.y)     def local_update(self, w, lr=0.1, epochs=3):        w = np.copy(w)        for _ in range(epochs):            w -= lr * self.gradient(w)        return w  class FLAggregator:    # 联邦聚合器: 按样本量加权平均所有客户端的本地更新    def __init__(self, dim):        self.w = np.zeros(dim)        self.clients = []     def add_client(self, client):        self.clients.append(client)     def fed_avg_round(self, lr=0.1, epochs=3):        total_n = sum(len(c.y) for c in self.clients)        new_w = np.zeros_like(self.w)        for c in self.clients:            local_w = c.local_update(self.w, lr, epochs)            new_w += len(c.y) / total_n * local_w        self.w = new_w        return self.w  if __name__ == "__main__":    # 每个客户端拥有不同的真实菜谱, 数据分布天然异构    peers = [[1.8, -0.8, 0.4], [2.2, -1.2, 0.6], [1.5, -0.9, 0.3],             [2.5, -1.1, 0.7], [2.0, -1.0, 0.5]]    agg = FLAggregator(3)    for k, true_w in enumerate(peers):        agg.add_client(FLClient(k, true_w))     for rnd in range(1, 11):        agg.fed_avg_round()        mse = 0.0        for c in agg.clients:            pred = c.X @ agg.w            mse += np.mean((pred - c.y) ** 2) / len(agg.clients)        print("round %2d | global_mse %.4f | w=%s" % (rnd, mse, np.round(agg.w, 3)))
目的:用 5 个数据分布各异的客户端模拟一轮轮联邦平均:数据不出本地,服务器只聚合模型更新,观察全局模型逐步逼近所有客户端真实参数的加权中心。
  1. w -= lr * self.gradient(w)本地 SGD:每个客户端在自己的私有数据上迭代,形成“分店专属菜谱”。
  2. total_n = sum(len(c.y) for c in self.clients)服务器先统计所有客户端的样本总量,为加权聚合做准备。
  3. new_w += len(c.y) / total_n * local_w核心的加权累加:数据量大的客户端在聚合中权重更高。
  4. self.w = new_w服务器更新全局模型,下一轮将下发给所有客户端。
  5. agg.add_client(FLClient(k, true_w))客户端只需注册,原始数据始终留在客户端对象内部。

常见误区

误区很多初学者以为联邦学习靠加密算法保护隐私,数据先加密上传、在云端解密后再训练,所以安全性来自密码学。

正解联邦学习的本质是“数据不动、模型动”:原始数据永远留在客户端,云端只收到模型梯度或参数这些“调整笔记”,压根见不到数据本身。加密等手段只是额外加固,不是必要条件,更不是联邦学习的定义。

为何常见:大家熟悉集中式训练,自然把隐私问题理解成“加密传输”,忽略了联邦学习在数据流向上的结构性不同。

误区边缘聚合就是把各设备的模型参数加起来除以设备数量,人人平等,没什么技术含量。

正解真正的聚合用的是“数据量加权平均”(即 FedAvg 中的 $n_k/N$),数据多的客户端影响更大。此外边缘聚合还涉及调度、压缩、异步协作等机制,远不是简单平均那么粗糙。

为何常见:公式里有个求和符号和分数,看起来像平均,初学者容易忽略分子上的权重系数。

误区本地多跑几轮梯度下降,模型肯定学得更好,聚合出来的全局模型也更准,所以本地轮数 E 应该尽量设大。

正解本地轮数过大会让各客户端模型在本地数据上“走太远”,产生客户端漂移,尤其是在 Non-IID 数据下,聚合后反而拖慢甚至破坏全局收敛。本地迭代与通信轮次之间需要精心权衡。

为何常见:直觉上“多训练 = 更好”符合单机经验,但联邦学习是多智能体协作,忽略了本地目标与全局目标的偏差会随迭代放大。

误区边缘节点能聚合、能缓存、能调度,云端就可以“下岗”了,整个系统由边缘自治即可。

正解主流分层联邦学习中,云仍负责全局模型管理、跨区域调度和最终聚合;边缘聚合缓解的是通信压力和时延,并不取代云的全局视角。完全去中心化是另一个研究方向,并非边缘聚合的默认形态。

为何常见:把边缘聚合的“就近协作”误当成“完全自治”,高估了边缘节点的职责边界。

面试题

Q1. 联邦学习的核心思想是?

单选题 · easy

  • A.把数据集中到云端再训练
  • B.数据留在本地,只交换模型更新← 正确答案
  • C.用加密算法保护模型传输
  • D.各设备独立训练互不协作

答案:B。联邦学习的灵魂是“数据不动模型动”:原始数据始终留在客户端,云端只在收到模型更新后进行聚合,好比分店只寄调整笔记、绝不寄顾客名单。C 是隐私增强手段而非核心思想;D 缺少协作,不构成联邦;A 恰恰是联邦学习要避免的做法。

Q2. FedAvg 中全局聚合时每个客户端的权重通常按什么确定?

单选题 · easy

  • A.每个客户端权重相等
  • B.按本地数据量占比加权← 正确答案
  • C.按客户端带宽比例加权
  • D.按客户端训练时间加权

答案:B。FedAvg 用 $n_k/N$ 作为权重,即本地样本量占总样本量的比例,相当于“谁服务了更多顾客,谁的意见分量更重”。A 是朴素平均,忽略了数据量差异;C、D 与聚合权重的定义无关。

Q3. 边缘聚合相比直接云聚合的主要优势是?

单选题 · mid

  • A.完全消除模型训练的偏差
  • B.减少骨干网压力,降低时延← 正确答案
  • C.云端不再需要全局模型
  • D.可以直接访问用户原始数据

答案:B。边缘节点就近聚合附近客户端的更新,终端只与边缘通信,骨干网只剩边缘到云的少量流量,时延也随之下降,就像区域主厨就近汇总分店笔记再统一上报。A 夸大了作用;C、D 都违背端边云协同的基本架构。

Q4. 下列哪些因素会导致联邦学习全局模型性能下降?

多选题 · mid

  • A.各客户端数据非独立同分布← 正确答案
  • B.每轮只让部分客户端参与
  • C.全局通信轮次设置得过少← 正确答案
  • D.本地迭代轮数无限地增加← 正确答案

答案:ACD。Non-IID 数据让本地模型“各奔东西”,聚合后收敛变慢;通信轮次过少则模型尚未收敛就停止;本地无限迭代会放大客户端漂移。B 是常见的客户端选择策略,设计得当反而能提升效率,并不必然导致性能下降。

Q5. 梯度压缩的主要作用是?

单选题 · mid

  • A.减少每轮通信的数据量← 正确答案
  • B.提升本地数据的多样性
  • C.将本地数据转换为密文
  • D.降低模型参数的总数量

答案:A。梯度压缩通过量化和稀疏化(如只保留最大的若干梯度)减小每次上传的数据包,好比把长篇笔记浓缩成短信。B 与数据分布无关;C 是加密而非压缩;D 改变的是模型结构,不是通信手段。

Q6. 关于 Non-IID 数据对联邦学习的影响,下列说法正确的是?

多选题 · hard

  • A.数据异构会减慢全局收敛← 正确答案
  • B.增加本地轮数可完全消除影响
  • C.客户端选择能缓解异构影响← 正确答案
  • D.数据异构对全局性能毫无影响

答案:AC。各客户端本地数据分布差异大时,梯度方向不一致,聚合后全局模型收敛变慢,A 对。精心设计的客户端选择能挑出更有代表性的参与方,缓解异构影响,C 对。B 过度绝对,本地轮数过多反而加剧漂移;D 与已知结论相悖。

Q7. 在端边云三层架构中,边缘节点的主要职责是?

单选题 · mid

  • A.保存附近用户的全部原始数据
  • B.对附近客户端做局部聚合转发← 正确答案
  • C.独立完成全局模型最终训练
  • D.彻底替代云端做最终决策

答案:B。边缘节点像区域主厨,先把附近客户端的更新聚合成中间结果再上报云端,同时承担缓存、调度等职责。A 与“数据不出域”的设计相悖;C、D 都夸大了边缘的职责,全局训练与最终决策仍由云端统筹。

Q8. 联邦学习与传统集中式训练最核心的区别是?

单选题 · easy

  • A.使用的模型结构完全不同
  • B.训练数据是否始终留在本地← 正确答案
  • C.是否使用 GPU 进行加速
  • D.是否采用随机梯度下降

答案:B。集中式训练要把数据汇到一处,联邦学习则让数据留在本地、只交换模型更新,这是本质区别。模型结构、算力、优化器都不是联邦学习的专属特征。

Q9. 下列哪些属于联邦学习的优化策略?

多选题 · hard

  • A.按样本量占比加权聚合← 正确答案
  • B.每轮随机采样部分客户端← 正确答案
  • C.上传前对梯度做稀疏压缩← 正确答案
  • D.把原始数据加密后上传云端

答案:ABC。加权聚合(FedAvg 的核心)、客户端选择、梯度压缩都是正文讲过的优化手段。D 仍把原始数据传到云端,违背“数据不出域”的联邦学习前提,无论是否加密都不属于联邦学习优化。

Q10. FedAvg 中把本地训练轮数设得过大,主要风险是?

单选题 · extreme

  • A.本地模型偏离全局目标渐远← 正确答案
  • B.服务器端聚合速度显著加快
  • C.每轮通信的数据量成倍减少
  • D.全局模型的参数量自动变小

答案:A。本地轮数过多,客户端会在自己数据上“走太远”,导致本地模型与全局目标偏差增大(客户端漂移),聚合后反而拖慢收敛——就像分店按本地口味把菜谱改得过于极致,汇总出的全国菜谱会失去共识。B、C、D 都与实际后果相反。