想象你是一支分散在五座城市训练的马拉松队的教练。出于纪律,你从来看不到队员的原始训练档案,只能定期收到他们发来的“心率、配速、步频摘要”,再综合成一份统一训练计划发回去。这就是联邦学习的日常:数据不动,模型动。可惜,山地队员和公路队员练出来的步态天差地别,如果你只是一味平均大家的摘要,全队的计划很快就会变得四不像,成绩不进反退。 FedProx 的解法朴素又巧妙:给每位队员腰间系一根弹性牵引绳,一头拴在你当前发布的统一计划上。他们可以继续按地形练,但偏离计划太远时,绳子会把他们轻轻拉回正轨。绳子的松紧由近端系数 μ 调节,系好了,队伍既能各展所长,又不会散架。 这篇文章就用这根牵引绳的故事,带你读懂 FedProx 的原理、算法、调参和它在大数据合规时代的用武之地。

岗位关联

理解 FedProx 的近端约束思想,是掌握联邦学习中“数据异质性”这一核心挑战的钥匙。无论做算法研究还是隐私计算工程落地,你都能用它设计出更稳更准的协作训练方案。

目录
  1. 可视化演示
  2. 联邦学习基础:教练与队员的协作之道
  3. FedAvg 的局限:各自为战为什么会乱套
  4. 近端思想引入:一根弹性牵引绳
  5. FedProx 算法流程:发绳、练功、汇总
  6. 近端系数调节:绳子松紧的学问
  7. 实践应用场景:数据合规时代的用武之地
  8. 对比与发展:从一根绳子到一片生态
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示FedProx近端项约束客户端偏离全局模型的机制和与FedAvg的收敛对比,通过滑块调节近端系数mu。

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

联邦训练:近端项约束本地偏离 中央服务器GLB聚合多客户端C1-C4模型 近端项μ约束本地更新不偏离全局模型 L = F_k(w) + (μ/2)||w - w_g||² μ越大本地更新越保守越稳定。

联邦学习基础:教练与队员的协作之道

作为主教练,你最头疼的不是训练本身,而是“档案保密”:队员分布在不同城市,训练数据属于各队机密,绝不能离开本地。于是你定下规矩——每周五,各队只把“训练摘要”(模型参数)发到总部,绝不上传任何原始数据。数据原地不动,只有摘要流动。

这就是联邦学习(Federated Learning)的真实写照。中央服务器好比总部教练,医院、银行、手机这些参与方就是各地队员。训练以“通信轮次”为单位循环:总部把当前全局模型 \(w^t\) 广播给各客户端;各客户端用本地私有数据训练几轮;再把自己的模型参数发回;总部加权聚合出新的全局模型,开始下一轮。这个最经典的方案叫 FedAvg(联邦平均)。

FedAvg 的全局目标,是让所有客户端本地损失的加权和最小:

一句话总结这套协作:各练各的,定期汇总。数据不出域是对隐私的尊重,也是这套体系的根基。然而,当各队地形差异越来越大,这份“统一计划”也开始变得岌岌可危。

min⁡w  ∑k=1KnknFk(w)\displaystyle \min_{w} \; \sum_{k=1}^{K} \frac{n_k}{n} F_k(w)
通俗说:全队的“平均偏差”最小化,数据多的队员在投票时嗓门更大。
  1. 求和范围把 K 个客户端的损失全部纳入全局目标
    ∑k=1K\displaystyle \sum_{k=1}^{K}
  2. 加权系数n_k 是第 k 个客户端的数据量,n 是全体数据量,比值决定话语权
    nkn\displaystyle \frac{n_k}{n}
  3. 本地损失第 k 个客户端在自己私有数据上计算的预测误差
    Fk(w)\displaystyle F_k(w)
  4. 全局目标找到让加权损失总和最小的全局模型参数
    min⁡w\displaystyle \min_{w}

FedAvg 的局限:各自为战为什么会乱套

想象山地队的队员每天都在爬 12% 的陡坡,公路队的赛道一马平川。五支队伍各练各的,周五交上来的摘要自然南辕北辙。教练若只是机械平均,下周的计划会忽而偏山地、忽而偏公路——队员们越练越懵,全队成绩开始剧烈抖动。

学术上把这种“各家数据分布各不相同”的情形称为非独立同分布(Non-IID)。在 Non-IID 下,每个客户端在本地做梯度下降时,眼里只有自己那摊数据,每走一步都只朝自家损失降低的方向:

问题来了:不同的客户端被各自的 \(F_k\) 推向不同方向,全局模型一平均,就像把五段方向各异的步频强行拼在一起,轻则收敛缓慢,重则发散到彻底无法收敛。更糟的是,现实中的设备还有快有慢,快的队伍要等慢的,训练节奏被拖得七零八落。

教练急需一个办法:允许队员按地形训练,但必须拴住他们,不许野得太远。谁最接近这个思路?答案是给目标函数“加一根绳子”。

wkt+1=wt−η∇Fk(wt)\displaystyle w^{t+1}_k = w^t - \eta \nabla F_k(w^t)
通俗说:每个队员只朝自己脚下最陡的下坡路迈步,完全不看全队方向。
  1. 本地更新第 k 个客户端本轮训练后得到的模型参数
    wkt+1\displaystyle w^{t+1}_k
  2. 学习率η 控制每次沿梯度方向迈步的大小,步子迈太大容易扯伤
    η\displaystyle \eta
  3. 本地梯度在本地数据上对损失求导,指明最陡的下降方向
    ∇Fk(wt)\displaystyle \nabla F_k(w^t)
  4. 更新动作从全局模型出发,沿负梯度方向走一步
    wt−η∇Fk(wt)\displaystyle w^t - \eta \nabla F_k(w^t)

近端思想引入:一根弹性牵引绳

绳子怎么系才不影响训练?教练修改了每支队伍的“考核标准”:原本只考核你跑得多快(本地损失多低),现在额外加一条——你偏离统一计划越远,扣分越多。于是队员在优化自己的训练方案时,会自觉把“别跑偏”算进成本。

FedProx 正是这样改造了每个客户端的本地目标函数。它不改变联邦学习的整体框架,只在每个客户端的损失函数后面,加上一个“近端项”(proximal term):

这个近端项的含义非常直观:它把 w 往当前全局模型 \(w^t\) 的方向拉。w 离 \(w^t\) 越远,惩罚越大,梯度中的回拉力就越强。好比一根橡皮筋,一头栓着全局共识,一头栓着本地模型。值得注意的是,锚点 \(w^t\) 每轮都更新,绳子也跟着“搬家”,所以它约束的是“偏离”,而不是把模型压向某个固定点。

改动只有这么一点,意义却很大:不增加通信轮次、不改变聚合方式,只是让本地训练“带着绳子上路”,训练稳定性就能显著提升。接下来我们看看整轮协议具体怎么跑。

hk(w;wt)=Fk(w)+μ2∥w−wt∥2\displaystyle h_k(w; w^t) = F_k(w) + \frac{\mu}{2}\left\| w - w^t \right\|^2
通俗说:本地损失之外多了一根“橡皮筋”,越偏离全局模型,回拉越强。
  1. 近端目标改造后的本地目标函数,记为 h_k,由两部分相加而成
    hk(w;wt)\displaystyle h_k(w; w^t)
  2. 原损失客户端原本要最小化的本地预测误差
    Fk(w)\displaystyle F_k(w)
  3. 偏离惩罚w 与全局模型 w^t 的欧氏距离平方,距离越远惩罚越大
    ∥w−wt∥2\displaystyle \left\| w - w^t \right\|^2
  4. 松紧旋钮μ 控制回拉强度,1/2 是为求导化简准备的系数
    μ2\displaystyle \frac{\mu}{2}

FedProx 算法流程:发绳、练功、汇总

现在,把教练的一个完整工作日拆开看:早晨发计划,队员们各自带着“别跑偏”的约束练几圈,傍晚交回摘要,教练汇总后形成新计划,第二天循环。FedProx 的一轮训练,正是这套流程的数学化。

每个客户端在本地要做的事,是求解“带近端惩罚的本地最小化问题”:在本地数据上,找到让近端目标 \(h_k\) 最小的 \(w\)。因为近端项是一个强凸的二次项,即便本地损失 \(F_k\) 本身陡峭崎岖,加起来之后的目标函数也变得温和不少,本地求解更稳、更不容易被带到沟里。

各客户端发回本地模型后,服务器做与 FedAvg 完全相同的加权聚合:

“发绳—练功—汇总”周而复始。近端项等于给每块崎岖的本地地形填了缓冲带,全局模型在异构数据下也能一步一个脚印地前进。这就是 FedProx 的完整机制:变化极小,收益极大。

wt+1=∑k=1Knknwkt+1\displaystyle w^{t+1} = \sum_{k=1}^{K} \frac{n_k}{n} w^{t+1}_k
通俗说:把各队带回来的模型按数据量做加权平均,数据多的话语权大。
  1. 新全局模型服务器聚合后得到的下一轮统一训练计划
    wt+1\displaystyle w^{t+1}
  2. 逐客户端求和把所有客户端的本地结果都汇总起来
    ∑k=1K\displaystyle \sum_{k=1}^{K}
  3. 数据量权重n_k/n 让数据多的客户端在投票中贡献更大
    nknwkt+1\displaystyle \frac{n_k}{n} w^{t+1}_k
  4. 整体公式加权平均得到新的全局模型,开始下一轮循环
    ∑k=1Knknwkt+1\displaystyle \sum_{k=1}^{K} \frac{n_k}{n} w^{t+1}_k

近端系数调节:绳子松紧的学问

绳子系多紧,是教练最重要的一门手艺。系太松,山地队员照样跑野;系太紧,队员被绳子拽得迈不开腿,全队原地踏步。近端系数 μ 就是这根绳子的松紧旋钮。

从数学上看,μ 的作用一目了然。对近端目标求梯度:

梯度表达式揭示了两条极端路径:μ = 0 时,牵引项消失,FedProx 退化为 FedAvg;μ 趋于无穷时,牵引项压倒一切,本地模型几乎钉死在 \(w^t\) 上,学不到任何新知识。实践中,μ 从与本地损失同量级的小值起步(如 0.001 到 0.1),异质性越强越值得调大,但永远要记得:太紧的绳子会让队伍“稳而不进”。

调参的本质,是在“稳定”与“速度”之间找平衡。刚接触 FedProx 的同学可以先固定 μ 跑一组基线,再观察全局损失曲线的抖动幅度,逐步收紧绳子,直到抖动明显缓解且收敛速度不显著下降。

∇hk(w)=∇Fk(w)+μ(w−wt)\displaystyle \nabla h_k(w) = \nabla F_k(w) + \mu \left( w - w^t \right)
通俗说:梯度被分成了两股力——原来的“下坡力”加上一根“回拉力”。
  1. 合成梯度对近端目标 h_k 关于 w 求梯度,得到总的下山方向
    ∇hk(w)\displaystyle \nabla h_k(w)
  2. 原有梯度第一项是本地损失的梯度,继续指引“下坡路”
    ∇Fk(w)\displaystyle \nabla F_k(w)
  3. 回拉分量第二项与偏离量成正比,w 离 w^t 越远拉力越大
    μ(w−wt)\displaystyle \mu \left( w - w^t \right)
  4. 合力方向当 w 偏离全局模型时,回拉分量会强行把方向掰回 w^t 一侧
    ∇Fk(w)+μ(w−wt)\displaystyle \nabla F_k(w) + \mu \left( w - w^t \right)

实践应用场景:数据合规时代的用武之地

现实中,“训练档案保密”根本不是纪律,而是法律。医疗数据、金融数据、个人行为数据受严格合规约束,物理上传几乎不可能。联邦学习之所以兴起,正是因为“数据不动,模型动”完美契合这条红线,而 FedProx 解决的,恰是这条红线下最难啃的异质性问题。

以医疗为例,A 院以心血管影像为主,B 院以呼吸科见长,两院的输入输出分布天然不同:

这种分布差异如果照单全收地训练,全局模型会被拉得东倒西歪。FedProx 让每家医院在本地“带着约束地”训练,影像原图从不离院,只有模型参数参加协作,最终得到跨病种、跨设备都更稳健的联合诊断模型。

同样的逻辑适用于银行反欺诈(各分行黑样本形态各异)和手机输入法(千差万别的输入习惯)。凡是“数据异构 + 隐私合规”并存的场景,这根牵引绳都能把散落各处的力量拧成一股绳。

Pk(x,y)≠Pj(x,y),k≠j\displaystyle P_k(x, y) \neq P_j(x, y), \quad k \neq j
通俗说:各家数据的“长相”不一样,这正是 Non-IID 的数学写照。
  1. 分布记号P_k 表示第 k 个客户端本地数据的联合概率分布
    Pk(x,y)\displaystyle P_k(x, y)
  2. 不等关系不同客户端的数据分布彼此不同
    ≠\displaystyle \neq
  3. 输入输出对x 是特征(如影像像素),y 是标签(如病灶类型)
    (x,y)\displaystyle (x, y)
  4. 两两差异任意两个不同客户端 k、j 之间的分布都存在差异
    k≠j\displaystyle k \neq j

对比与发展:从一根绳子到一片生态

站在今天的视角回头看,FedProx 的聪明之处在于克制:它没有发明复杂的通信协议,也没有引入额外的隐私机制,只是轻轻给本地目标加了一根绳子,就让联邦学习在异构世界里站稳了脚跟。

数学上,FedProx 与 FedAvg 的关系可以用一个特例说清。当 μ = 0 时,近端目标精确退化为普通本地损失:

因此 FedProx 可以看作 FedAvg 的“稳健化推广”——在不牺牲兼容性的前提下,多了一个稳定性的旋钮。后续的 FedNova、SCAFFOLD、FedMoon 等算法,虽然各自提出了矫正本地漂移的新思路,但近端约束至今仍是最简单、最易落地的基线方案,也是理解联邦学习中异质性问题的第一课。

从“允许你练,但不许跑偏”的朴素思想出发,FedProx 教会我们一件事:在分布式协作中,好的设计往往不是彻底放开手脚,而是恰到好处地系上一根绳子。这根绳子,让联邦学习既守住了隐私的底线,也跑出了协同的效率。

hk(w;wt)∣μ=0=Fk(w)\displaystyle h_k(w; w^t)\big|_{\mu = 0} = F_k(w)
通俗说:剪断绳子,FedProx 就是 FedAvg。
  1. 取值记号竖线表示整个表达式在 μ = 0 处求值
    hk(w;wt)∣μ=0\displaystyle h_k(w; w^t)\big|_{\mu = 0}
  2. 近端项归零系数 μ 为 0,整个惩罚项随之消失
    μ2∥w−wt∥2=0\displaystyle \frac{\mu}{2}\left\| w - w^t \right\|^2 = 0
  3. 退化为原目标剩下的恰好是普通本地损失函数
    Fk(w)\displaystyle F_k(w)

AI 应用场景

跨院医疗影像联合建模

阶段:联邦训练 / 训练稳定性优化

解决的问题:传统多中心建模要把各院影像集中到一方,既违反数据合规要求,又面临传输泄露风险;而各院设备型号、病种构成差异大,直接 FedAvg 训练模型发散严重。FedProx 用近端项让每家医院在本地训练时“别跑偏”,全局模型既稳又准。

具体案例:三家三甲医院联合训练肺结节检测模型,A 院 CT 数据多、B 院 DR 胸片多、C 院以筛查影像为主。采用 FedProx 后,各方原始影像始终不出院,全局模型在内部验证集上的 AUC 比 FedAvg 稳定提升约 4 个百分点,训练曲线也不再剧烈抖动。

银行反欺诈联合建模

阶段:跨机构协同训练

解决的问题:联盟内各银行的黑样本形态差异极大——网银诈骗集中在线上行为特征,信用卡盗刷集中在消费时序特征。若简单联邦平均,数据量大的机构会把全局模型带偏。近端项约束每家模型不偏离全局共识,让风控模型学到“最大公约数”。

具体案例:某金融联盟内 6 家银行协作训练用户行为风控模型,每家的欺诈样本分布互不相同。FedProx 训练 30 轮后,在漏报率相同的前提下,误报率比 FedAvg 降低约两成,模型跨行迁移的表现也更稳。

手机输入法边缘个性化

阶段:端侧训练与聚合

解决的问题:不同用户群的输入习惯差异悬殊,端侧模型若完全个性化,会严重偏移全局语义;若完全不做个性化,输入法又“不懂你”。同时手机算力参差不齐,部分设备只能完成少量本地迭代。FedProx 的近端项让端侧模型在“贴个人数据”的同时被拽回全局共识,天然兼容不齐的更新步数。

具体案例:某输入法厂商在千万级手机上做下一词预测联合训练。采用 FedProx 后,冷启动用户的首选词命中率提升约 6%,且因回传的异常模型减少,服务器端被丢弃的高偏离模型占比显著下降。

Python 演示

python46 行
import numpy as np np.random.seed(42)NUM_CLIENTS = 5FEATURES = 20SAMPLES = 100ROUNDS = 40  def make_data(client_id):    x = np.random.randn(SAMPLES, FEATURES)    w_true = np.zeros(FEATURES)    w_true[client_id * 4:(client_id + 1) * 4] = 1.0    y = x.dot(w_true) + 0.1 * np.random.randn(SAMPLES)    return x, y  DATASETS = [make_data(i) for i in range(NUM_CLIENTS)]  def local_train(x, y, w_init, mu, lr=0.1, epochs=5):    w = w_init.copy()    for _ in range(epochs):        grad = x.T.dot(x.dot(w) - y) / len(y)        grad += mu * (w - w_init)   # 近端项:弹性牵引绳        w -= lr * grad    return w  def fedprox_round(w_global, mu):    local_ws = [local_train(x, y, w_global, mu) for x, y in DATASETS]    return np.mean(local_ws, axis=0)  def eval_loss(w):    return np.mean([np.mean((x.dot(w) - y) ** 2) / NUM_CLIENTS for x, y in DATASETS])  if __name__ == "__main__":    for mu in [0.0, 0.5]:        w = np.zeros(FEATURES)        print("mu =", mu)        for r in range(ROUNDS):            w = fedprox_round(w, mu)            if r % 10 == 9:                print("  round %2d  loss %.4f" % (r + 1, eval_loss(w)))
目的:在合成非独立同分布数据集上对比 FedAvg(μ=0)与 FedProx(μ=0.5)的全局损失收敛曲线,直观展示近端项带来的稳定性提升。
  1. DATASETS = [make_data(i) for i in range(NUM_CLIENTS)]一次性预生成所有客户端数据,保证两组对照实验在完全相同的数据上训练,对比才公平
  2. w_true[client_id * 4:(client_id + 1) * 4] = 1.0每个客户端只“见过”自己那一块特征方向,模拟 Non-IID 的数据分裂
  3. grad += mu * (w - w_init)近端项:在原始梯度上叠加一根拉向初始全局模型的“回拉绳”
  4. w -= lr * grad本地梯度下降,绳子的约束通过梯度间接影响了每一步的走向
  5. return np.mean(local_ws, axis=0)服务端对各个本地模型做等权重平均,对应加权聚合的最简形式
  6. for mu in [0.0, 0.5]同一套训练流程分别以 FedAvg 和 FedProx 模式运行,观察损失曲线的差异

常见误区

误区我刚知道近端项能让训练更稳定,心想那我把 μ 直接设成 10,岂不是稳上加稳?结果跑了几十轮,全局模型几乎没怎么动,我还以为是自己代码写错了。

正解近端项的实质是把本地模型拉向全局模型。μ 越大,拉力越猛,本地模型被牢牢钉在 \(w^t\) 附近,几乎学不到新知识,全局收敛就像踩了急刹车。正确做法是把 μ 当作“稳定与速度”的天平:数据异质性越强,越值得适度调大;同时从与本地损失同量级的小值起步,观察损失曲线的抖动来微调。

为何常见:人们容易把“越稳定”误解为“越大越好”,忽略了稳定与学习效率之间的此消彼长。

误区近端项是 \(||w - w^t||^2\),L2 正则化是 \(||w||^2\),都是往损失里加一个平方惩罚项,应该是一回事。

正解两者最关键的差别在锚点。L2 正则把权重拉向零,是一种“绝对瘦身”;近端项把权重拉向当前全局模型 \(w^t\),这个锚点每一轮都在移动,约束的是“与全局的偏离量”,而不是权重的绝对大小。如果把 \(w^t\) 换成 0,才恰好是 L2 正则。

为何常见:二者的数学形式太像了——都是二次惩罚项,初学者很容易只看到形式,忽略锚点的语义。

误区加了近端项之后,客户端数据分布不一样的问题应该就解决了,全局模型精度可以追上集中式训练。

正解近端项是“缓解”而非“消除”数据异质性。它解决了“训练发散”这个症状,但不同客户端的数据分布差异依然客观存在,全局模型的天花板仍低于集中式训练。实践中还要配合数据平衡、个性化分支、更聪明的客户端调度,才能进一步逼近理想效果。

为何常见:把“训练更稳定”夸大为“问题消失”,是初学者高估单一技巧能力的典型表现。

误区FedProx 每轮要多算一个近端项,还要求本地解一个更复杂的最小化问题,通信次数肯定比 FedAvg 多不少。

正解近端项只改了本地目标函数的形式,不改变通信协议:每轮仍是服务器广播一次、客户端回传一次,通信量与 FedAvg 完全一致。多出来的计算(近端项的梯度)全部发生在客户端本地,对网络带宽零影响。

为何常见:把“本地计算量增加”与“通信量增加”画上等号,没有看清 FedProx 的改动边界。

面试题

Q1. FedProx 引入近端项的核心目的是什么?

单选题 · easy

  • A.减少模型通信轮次
  • B.缓解本地模型发散← 正确答案
  • C.增加本地计算量
  • D.压缩模型参数量

答案:B。近端项像一根弹性牵引绳,把本地模型拉向全局模型,从而缓解非独立同分布数据下本地训练发散的问题。A 错在通信轮次由协议决定,近端项不改变它;C 是附带现象,不是目的;D 与模型参数量无关。

Q2. FedProx 的近端项把本地模型拉向哪个目标?

单选题 · easy

  • A.全零初始化模型
  • B.上一轮全局模型← 正确答案
  • C.数据量最大客户端
  • D.随机选取的客户端

答案:B。近端项 \(||w - w^t||^2\) 中的锚点是上一轮的全局模型 \(w^t\),它每轮随聚合更新,约束的是“与全局共识的偏离量”。L2 正则是拉向零,对应的是 A;C、D 与 FedProx 的设计无关。

Q3. 当近端系数 μ = 0 时,FedProx 会退化为什么?

单选题 · mid

  • A.联邦平均 FedAvg← 正确答案
  • B.客户端独立训练
  • C.中心服务器训练
  • D.随机梯度下降法

答案:A。μ = 0 时近端项消失,本地目标退化为 \(F_k(w)\),整个流程与 FedAvg 完全一致。这说明 FedProx 是 FedAvg 的稳健化推广,而非另起炉灶的算法。

Q4. 关于近端项与 L2 正则化的区别,以下说法正确的有哪些?

多选题 · mid

  • A.近端项锚点随轮次移动← 正确答案
  • B.L2 正则把权重拉向零← 正确答案
  • C.近端项约束偏离而非大小← 正确答案
  • D.两者完全没有任何区别

答案:ABC。近端项的锚是全局模型 \(w^t\),每轮更新,约束的是偏离量;L2 正则的锚是零,约束的是权重绝对值。A、B、C 都准确刻画了两者的差异,D 明显错误。把 \(w^t\) 换成 0,近端项才恰好变成 L2 正则。

Q5. 增大近端系数 μ 最直接的后果是什么?

单选题 · hard

  • A.本地训练收敛更快
  • B.全局发散风险增加
  • C.本地更新更接近全局← 正确答案
  • D.通信数据量明显减少

答案:C。μ 越大,近端项在梯度中的回拉分量 μ(w − w^t) 越强,本地模型被牢牢拴在 \(w^t\) 附近,更新幅度变小。这是“稳”的代价:学习变慢。A 恰好相反;B 与事实相反;D 与 μ 毫无关系。

Q6. FedProx 服务端聚合时如何给各客户端加权?

单选题 · mid

  • A.按本地数据量占比← 正确答案
  • B.按网络带宽大小
  • C.按客户端信任度
  • D.按本地训练时长

答案:A。聚合公式 \(w^{t+1} = \sum (n_k/n) w_k^{t+1}\) 中,权重是各客户端数据量占全体数据的比例 \(n_k/n\),与带宽、信任度、训练时长无关。这一点与 FedAvg 的聚合方式完全相同。

Q7. 相比 FedAvg,FedProx 的优势体现在哪些方面?

多选题 · hard

  • A.改善非独立同分布稳定← 正确答案
  • B.兼容客户端中途退出← 正确答案
  • C.彻底消除数据分布差异
  • D.隐私安全绝对保证

答案:AB。近端项缓解本地发散,提升 Non-IID 下的稳定性(A 对);同时因为不同客户端做不同数量的本地迭代也能被近端项“兜住”,它更耐受部分客户端中途掉线或算力不均(B 对)。但数据分布差异并未消失(C 错);隐私靠数据不出域、加密传输等机制配合,而非近端项本身(D 错)。

Q8. 联邦学习中“数据不出域”的含义是什么?

单选题 · easy

  • A.原始数据始终留在本地设备← 正确答案
  • B.数据加密后上传到云端
  • C.数据只在训练集内使用
  • D.数据可被中心服务器查看

答案:A。“数据不出域”指原始数据不离开本地设备,只有模型参数等中间结果参与通信。这是联邦学习保护隐私的根本前提,也是 FedProx 发挥价值的大背景。

Q9. FedProx 适合哪些实际应用场景?

多选题 · mid

  • A.医疗影像跨院协作← 正确答案
  • B.银行反欺诈联合建模← 正确答案
  • C.单机大模型预训练
  • D.手机输入法个性化← 正确答案

答案:ABD。医疗、金融、端侧设备都是“数据异构 + 隐私合规”的典型场景,FedProx 的近端约束能显著提升训练稳定性。C 是单机集中训练,不存在联邦协作,自然用不上 FedProx。

Q10. 在本轮本地更新的起点 w = w^t 处,近端项对梯度的贡献是多少?

单选题 · extreme

  • A.贡献恰好为零← 正确答案
  • B.贡献大小等于 μ
  • C.等于全局梯度值
  • D.等于无穷大值

答案:A。近端目标梯度为 \(\nabla F_k(w) + \mu(w - w^t)\)。在起点 \(w = w^t\) 处,第二项为 \(\mu(w^t - w^t) = 0\)。也就是说,近端项在“第一脚”不施加力,真正的作用是在本地训练逐渐走偏时,越偏越用力地拉回来。这也解释了为什么 μ 不会破坏本地学习的第一步。