Skip to content

联邦学习

本页介绍联邦学习(Federated Learning, FL):让数据留在用户设备或医院本地、只上传模型更新就能联合训练一个全局模型。它是隐私法规(GDPR、《个保法》)收紧后跨机构协作训练 AI 的事实标准方案,也是连接分布式训练与隐私保护 AI 的关键环节。

名词速览:模型(model) 是一组数值参数(称为权重 weight)的集合,训练就是不断调整这些权重让模型预测更准;梯度(gradient) 是损失函数(衡量预测误差的标量)对每个权重的偏导数,指明了该权重朝哪个方向调、调多少才能降低误差;SGD(Stochastic Gradient Descent,随机梯度下降) 每次从数据里抽一小批样本算梯度、按梯度反方向小步更新权重,是深度学习最基础的优化算法。

联邦学习就像一群医生各自在医院里看病、只汇总诊断经验而不交换病历:

  • 数据不动模型动:传统做法是把所有医院的数据汇到一个数据中心再训练;联邦学习反过来——让模型去每家医院本地训练,每轮只把”学到的经验”(梯度更新,即权重的变化量)传回中心汇总。
  • 中心做”加权融合”:中心服务器收到各参与方的本地更新后,做一次加权平均(FedAvg 算法),得到新的全局模型,再下发给各方。各家数据量不同,权重也不同——数据多的医院话语权更大。
  • 隐私由此保护:原始数据(病历、聊天记录、键盘输入)从不离开设备,对外传输的只有模型参数的差值。加上差分隐私或同态加密,连这些差值也泄露不了个人信息。

直觉上理解:模型参数的变化趋势(“哪些特征该加重、哪些该减重”)是抽象的统计规律,相比原始数据已经”脱敏”了——多方的趋势一汇总,就学到了所有人的知识,而谁也没有交出自己的数据。

但联邦学习也带来三类独特挑战:

  • 数据非独立同分布(Non-IID):不同医院科室分布完全不同(A 院偏肿瘤、B 院偏心血管),不同用户的手机输入习惯天差地别——简单平均会让模型”精神分裂”。所谓独立同分布(Independent and Identically Distributed, IID) 指每个客户端抽到的样本都像来自同一个总体的独立随机抽样;Non-IID 就是这个假设被打破,是真实世界常态。
  • 通信瓶颈:成千上万台手机的网络参差不齐,上传一轮模型更新可能要几十秒——通信开销往往比计算开销更致命。
  • 设备异构:参与方的算力、电量、在线时间各不相同,需要容忍掉线、慢节点和部分参与(partial participation,每轮只有一部分客户端能上线)。

FedAvg(Federated Averaging,联邦平均)是联邦学习的开山算法,流程极为简洁。设共有 KK 个参与方(客户端),第 kk 个客户端持有本地数据集 DkD_k,含 nkn_k 个样本,全局样本数 n=∑knkn = \sum_k n_k。第 t 轮训练:

  1. 中心广播当前全局模型权重 w_t 给所有(或随机采样的 S_t 个)客户端。

  2. 每个客户端 k 用自己的本地数据 D_k 做 E 轮本地 SGD(每次走 batch_size 步),得到更新后的本地权重 w_t^k。

    本地更新的本质:客户端在本地数据上反复走 SGD 下降步——

    wtk←wtk−η⋅∇Fk(wtk;B)w_t^k \leftarrow w_t^k - \eta \cdot \nabla F_k(w_t^k; B)

    其中 FkF_k 是客户端 kk 在一个批数据 BB 上的损失,η\eta 是学习率,∇\nabla 是梯度算子。重复 E 轮、每轮遍历本地数据若干次即得到 w_t^k。

  3. 客户端把 w_t^k 传回中心(或只传差值 Δwk=wtk−wt\Delta w_k = w_t^k - w_t 以省流量——更新量往往比完整权重更稀疏、更易压缩)。

  4. 中心按各客户端数据量做加权平均:

    wt+1=∑knkn⋅wtkw_{t+1} = \sum_k \frac{n_k}{n} \cdot w_t^k

    即每个客户端的贡献按它持有的样本数占比加权——数据量越大权重越高。这里 k 遍历本轮实际上线的客户端集合 S_t。

  5. 重复步骤 1–4 直至收敛。

为什么 FedAvg 通信高效? 关键设计是本地多轮迭代 E(而非一步)。纯分布式 SGD 每算一步梯度就要通信一次,通信轮数等于总迭代步数;FedAvg 让客户端本地走 E 轮再上传,把通信轮数压到原来的 1/E。当 E=5、每轮本地跑几百步时,通信开销可下降一两个数量级——这是 FedAvg 比纯分布式 SGD 通信高效得多的核心。

一个值得注意的理论细节:FedAvg 的加权平均 wt+1=∑(nk/n) wtkw_{t+1} = \sum (n_k/n)\, w_t^k 在 IID 数据下等价于在合并数据集上做一步近似的梯度下降,收敛性较好;但在 Non-IID 下,各客户端的本地最优点方向不一致,平均后的 wt+1w_{t+1} 可能离任何一方都不”好”,这正是客户端漂移的根源。

即便只传模型更新,仍可能从中反推训练数据(成员推理攻击 Membership Inference:判断某条数据是否在训练集里;模型反演 Model Inversion:从参数还原出输入样貌)。差分隐私(Differential Privacy, DP) 提供了数学上可证明的保护。

(ε, δ)-差分隐私的形式定义:一个随机算法 M 满足 (ε, δ)-DP,当且仅当对任意两个只差一条记录的数据集 D 与 D’(称为相邻数据集),以及任意输出集合 S,都有

Pr⁡[M(D)∈S]≤eε⋅Pr⁡[M(D′)∈S]+δ\Pr[M(D) \in S] \leq e^\varepsilon \cdot \Pr[M(D') \in S] + \delta

直觉:加进或拿走任何一个人的数据,算法输出分布几乎不变(最多放大 e^ε 倍、外加 δ 的微小概率泄露),从而攻击者无法判定某个个体是否参与训练。ε 越小隐私越强(ε=0 意味着完全无法区分,最强但模型也学不到东西);δ 是个”松懈项”,通常取极小值(如 1e-5)表示罕见情况下的破坏概率。

DP-FedAvg 把上述保证落到联邦训练每一步,做法是裁剪 + 加噪:

giclipped=gimax⁡(1,∥gi∥/C)g_i^{\text{clipped}} = \frac{g_i}{\max(1, \|g_i\| / C)} g~=∑igiclipped+N(0,σ2C2)\tilde{g} = \sum_i g_i^{\text{clipped}} + \mathcal{N}(0, \sigma^2 C^2) w←w−η⋅g~nw \leftarrow w - \eta \cdot \frac{\tilde{g}}{n}

裁剪保证任何单个样本对全局更新的贡献不超过 C(控制了”敏感度”),加噪则把个体”淹没”在噪声中——数据量越大、噪声相对越小,模型精度损失可控。把整个训练过程的隐私开销用RDP(Rényi Differential Privacy) 或 ** Moments Accountant(矩账户)** 逐轮累加,就能精确算出 T 轮训练后总消耗的 ε。Gboard 等产品正是用 DP-FedAvg 在保证 (ε, δ)-DP 的前提下训练输入法模型。

名词速览:敏感度(sensitivity) 衡量”加一条记录最多让结果改变多少”,是决定加噪量的关键;噪声越大 ε 越小,但模型也越难学——隐私与效用之间存在固有的 trade-off(权衡)。

安全聚合协议(Secure Aggregation)

Section titled “安全聚合协议(Secure Aggregation)”

差分隐私靠”加噪”防信息泄露,但会牺牲精度。安全聚合(Secure Aggregation, SecAgg) 走另一条路:用密码学保证服务器只能看到所有客户端更新之和、看不到任何单个客户端的明文更新,精度无损。

Bonawitz 等人(CCS 2017)提出的经典协议核心是成对掩码加和(pairwise masking + sum):

  1. 每对在线客户端 (i, j) 协商一个共享随机向量 s_ij(用 Diffie-Hellman 密钥交换)。

  2. 客户端 i 在上传自己的更新 x_i 时加上/减去所有与它配对的掩码:

    x~i=xi+∑j>isij−∑j<isij\tilde{x}_i = x_i + \sum_{j>i} s_{ij} - \sum_{j<i} s_{ij}

    即每个 s_ij 在客户端 i 处加一次、在客户端 j 处减一次,符号相反。

  3. 服务器收到所有 x̃_i 后求和,掩码两两抵消:

    ∑ix~i=∑ixi+∑(i,j)(sij−sij)=∑ixi\sum_i \tilde{x}_i = \sum_i x_i + \sum_{(i,j)} (s_{ij} - s_{ij}) = \sum_i x_i

    服务器得到了总和 Σ x_i,但任何单个 x_i 都被掩码盖住、无法还原。

配合秘密分享(secret sharing) 还能容忍部分客户端掉线——掉线方的掩码份额可由其他客户端拼出并抵消。后续的 SecAgg+ 把两两配对扩展为多组结构(支持上千客户端),Flamingo、G’Silver 等进一步降低通信轮数。安全聚合 + 差分隐私可以叠加:先在密文域上加噪再做安全聚合,得到既保密又可证明 DP 的方案。

同态加密(Homomorphic Encryption, HE) 允许在密文上直接做运算、解密后结果等于明文运算结果。联邦学习中用加法同态加密:客户端用服务器公钥加密自己的更新上传,服务器在密文上算加权和、再把密文结果交回(或广播),客户端用私钥解密。服务器全程看不到明文参数。CKKS/BFV 等方案支持打包(packing)批量参数降低开销,但通信量和计算量仍比明文高 1–2 个数量级,目前主要用于纵向联邦和跨机构小模型场景。

  • 横向联邦(Horizontal FL):各参与方数据特征相同但样本不同(多家医院都有同样的体检指标,但病人不同)——FedAvg 处理的就是这种,也是最成熟的范式。
  • 纵向联邦(Vertical FL):各参与方样本相同但特征不同(同一批用户,银行有财务数据、电商有购物数据)——需要先做隐私集合求交(PSI,Private Set Intersection)对齐样本 ID,再在加密下联合训练,代表方法如联邦逻辑回归(Federated LR)、联邦 XGBoost。

名词速览:PSI(隐私集合求交) 让双方在不暴露各自非交集部分的前提下算出共有的样本 ID 集合,是纵向联邦”对齐数据”的第一步。

PyTorch:模拟 FedAvg 的核心聚合步骤

Section titled “PyTorch:模拟 FedAvg 的核心聚合步骤”

下面这个最小示例展示 FedAvg 最关键的”本地训练 + 加权平均”两步。注意原版文档中嵌套的 ```text 代码块已修正为正常缩进:

import torch
import torch.nn as nn
# 模拟两个客户端各自在自己的数据上做了本地训练
model_template = lambda: nn.Linear(10, 2) # 简单线性模型
def local_train(model, X, y, epochs=3, lr=0.01):
"""客户端本地训练若干轮,返回训练后的参数(state_dict)。"""
opt = torch.optim.SGD(model.parameters(), lr=lr)
loss_fn = nn.CrossEntropyLoss()
for _ in range(epochs):
loss = loss_fn(model(X), y)
opt.zero_grad() # 清空上一轮残留梯度
loss.backward() # 反向传播,自动算出每个权重的梯度
opt.step() # 按梯度反方向更新权重
return model.state_dict()
# 每个客户端各自模拟数据并训练
c1 = local_train(model_template(), torch.randn(50, 10), torch.randint(0, 2, (50,)))
c2 = local_train(model_template(), torch.randn(30, 10), torch.randint(0, 2, (30,)))
# 中心做加权平均(数据量作为权重)
n1, n2 = 50, 30
global_state = c1
for key in global_state:
global_state[key] = (n1 * c1[key] + n2 * c2[key]) / (n1 + n2)
# 把 global_state 加载到全局模型即完成一轮 FedAvg

进阶:FedProx 加近端项抑制客户端漂移

Section titled “进阶:FedProx 加近端项抑制客户端漂移”

FedProx 在本地目标函数里加一个近端项(proximal term),把客户端权重拉向当前全局模型,缓解 Non-IID 下的漂移。本地更新公式变为:

wtk←wtk−η⋅(∇Fk(wtk)+μ⋅(wtk−wt))w_t^k \leftarrow w_t^k - \eta \cdot \left(\nabla F_k(w_t^k) + \mu \cdot (w_t^k - w_t)\right)

第二项 μ·(w_t^k − w_t) 是个”橡皮筋”,离全局模型越远拉力越大。对应的本地训练只需改一行:

def local_train_fedprox(model, X, y, global_state, mu=0.01, epochs=3, lr=0.01):
opt = torch.optim.SGD(model.parameters(), lr=lr)
loss_fn = nn.CrossEntropyLoss()
for _ in range(epochs):
loss = loss_fn(model(X), y)
# 加上近端项:μ/2 * ||w - w_global||^2
prox = 0.0
for name, param in model.named_parameters():
prox = prox + ((param - global_state[name]) ** 2).sum()
loss = loss + (mu / 2.0) * prox
opt.zero_grad(); loss.backward(); opt.step()
return model.state_dict()

进阶:给单步 SGD 套上差分隐私裁剪

Section titled “进阶:给单步 SGD 套上差分隐私裁剪”

下面演示 DP-SGD 里”逐样本梯度裁剪 + 加噪”的核心(用 Opacus 库会更工程化,这里手写以说明原理):

import torch
def dp_step(model, X, y, max_grad_norm=1.0, noise_mult=1.0, lr=0.01):
"""带差分隐私的一步 SGD:裁剪每个样本梯度后求和、再加高斯噪声。"""
loss_fn = torch.nn.CrossEntropyLoss(reduction='none') # 逐样本损失
losses = loss_fn(model(X), y) # shape: (batch,)
grads_per_sample = [
torch.autograd.grad(losses[i], model.parameters(), retain_graph=(i < len(losses)-1))
for i in range(len(losses))
]
# 1. 逐样本裁剪
clipped = []
for g in grads_per_sample:
norm = torch.sqrt(sum((t ** 2).sum() for t in g))
scale = max(1.0, (norm / max_grad_norm).item())
clipped.append([t / scale for t in g])
# 2. 求和并加噪(噪声标准差 = noise_mult * max_grad_norm)
agg = [torch.zeros_like(p) for p in model.parameters()]
for g in clipped:
for i, t in enumerate(g):
agg[i] += t
noise = lambda t: torch.randn_like(t) * noise_mult * max_grad_norm
agg = [a + noise(a) for a in agg]
# 3. 用加噪梯度更新权重
with torch.no_grad():
for p, g in zip(model.parameters(), agg):
p -= lr * g / len(losses)

用 Flower 框架跑一个真实联邦任务

Section titled “用 Flower 框架跑一个真实联邦任务”

手写聚合适合理解原理,真正跨设备/跨机构训练推荐用 Flower。最小可用脚本(服务端 + 客户端一体):

import flwr as fl
import torch
from torch import nn
model = nn.Linear(10, 2)
class FlowerClient(fl.client.NumPyClient):
def get_parameters(self, config):
return [p.detach().cpu().numpy() for p in model.parameters()]
def fit(self, parameters, config):
# 1. 载入中心下发的全局权重
fl.common.parameters_to_ndarrays # 占位说明:实际用 set_parameters
for p, w in zip(model.parameters(), parameters):
p.data = torch.tensor(w)
# 2. 本地训练(此处省略数据加载细节)
opt = torch.optim.SGD(model.parameters(), lr=0.01)
for x, y in dataloader: # 你的本地数据迭代器
loss = nn.functional.cross_entropy(model(x), y)
opt.zero_grad(); loss.backward(); opt.step()
# 3. 返回更新后的权重 + 本地样本数(作为聚合权重)
return self.get_parameters({}), len(dataset), {}
# 服务端用 FedAvg 策略,采 10 个客户端、每轮本地训 5 epoch
strategy = fl.server.strategy.FedAvg(
min_fit_clients=10, min_available_clients=10,
fit_metrics_aggregation_fn=fl.server.strategy.aggregate.weighted_average,
)
fl.server.start_server(config=fl.server.ServerConfig(num_rounds=50),
strategy=strategy)

Flower 会替你处理客户端采样、心跳、断线重连、序列化和加权平均,你只需实现 fit(本地训练)和 evaluate(本地评估)。

  • Non-IID 是最大痛点:真实场景中各客户端数据分布差异极大,直接 FedAvg 会出现客户端漂移(client drift)——模型在各方之间来回摇摆。缓解手段包括 FedProx(加近端项约束)、SCAFFOLD(用控制变量修正梯度偏差)、FedNova(按本地步数归一化)或个性化联邦(让各方保留个性化头,只共享 backbone)。
  • 通信优化是性能关键:模型大、网络慢时,用梯度压缩(Top-k 稀疏化只传最大的若干个梯度、量化把 float32 压成 int8)、模型蒸馏(上传小模型而非大模型)或异步聚合减少等待。联邦学习里通信成本往往占训练时间的大头。
  • 客户端采样:百万级客户端不可能全上,每轮随机采样几百到几千个。要保证采样比例与参与轮次公平,否则模型偏向活跃用户(比如总是开机的高端手机用户)。采样率过低还会让聚合方差变大、收敛变慢。
  • 隐私技术选型:差分隐私简单但引入精度损失(ε 调小则掉点明显);同态加密/安全聚合精度无损但通信与计算开销高。工业实践常组合使用——安全聚合保证传输隐私(服务器看不到明文更新),差分隐私保证最终模型隐私(即便模型公开发布也推导不出个人)。这种组合称为 DP-FL with SecAgg。
  • 联邦学习 ≠ 完全安全:仅靠”数据不出本地”并不能消除所有攻击——模型反演、属性推理、成员推理等攻击仍可能从模型更新或最终模型中泄露信息。对敏感场景务必配合差分隐私或加密手段,并对最终模型做隐私审计。
  • 跨设备 vs 跨机构:两种典型设定差异巨大。跨设备(cross-device) 指手机/IoT 这类海量(百万级)、不稳定、弱算力的客户端,注重采样与掉线容忍;跨机构(cross-silo) 指几家医院/银行,客户端少(个位数到几十)但稳定、数据量大,更注重纵向联邦和安全计算。选框架和算法时要分清场景。

联邦学习在 2024–2026 年最大的变化是与大语言模型(LLM)的深度融合,以及隐私增强技术(PETs)走向工程标准化。

  • 联邦大模型微调(FedLLM / FedPEFT):把参数高效微调(PEFT,如 LoRA、Prefix Tuning)和联邦学习结合,让多家机构在不共享数据、各自只有少量领域数据的前提下,联合微调同一个基座大模型。每方只训练并上传 LoRA 低秩适配器(几 MB~几十 MB),而非整个几十 GB 的模型,通信开销可承受。代表工作有 OpenLLDP 的 FedIT(联邦指令微调)、FATE-LLM、FedML 框架的 LLM 模块。这是 2025 年跨机构 AI 协作的主流范式——医疗、法律、金融领域尤为活跃。
  • 联邦 RAG(FedRAG):把检索增强生成(RAG)搬进联邦设定——各机构的知识库不外传,只在加密/聚合下联合训练检索器或共享生成策略,让大模型在不集中语料的前提下检索全联盟知识。2025 年开始在医疗问答、企业内部知识库场景出现早期落地。
  • 隐私增强技术(PETs)标准化与互操作:ISO/IEEE P3652.1 等联邦学习标准持续推进;NVIDIA FLARE、Flower、OpenFL 等框架在协议层(如安全聚合的 SecAgg+ 接口)走向互操作;FATE、Rhino Health 等在医疗真实世界证据(RWE)研究中落地跨机构联邦分析。差分隐私方面,RDP/Moments Accountant 的实现成熟,ε 的取值在工业实践中从早期的个位数逐步稳定到 1–8 区间并配以极小 δ。
  • 安全聚合协议升级:Flamingo、G’Silver、Eiffel 等新一代协议把安全聚合的通信轮数从多轮压到 1–2 轮,并支持上万客户端规模,使跨设备场景的密文聚合从理论可行走向可工程部署。同态加密靠 CKKS batching 与 GPU 加速持续降低开销,但仍比明文贵 1–2 个数量级。
  • 个性化联邦学习成熟:针对 Non-IID,个性化方案(如 FedRep 解耦表示与头部、FedRoD、pFedHN 元学习)从研究走向工业——各方共享一个通用 backbone,各自保留个性化分类头/适配器,兼顾群体知识与本地偏好。这在推荐、输入法、个性化医疗诊断中效果显著。
  • 联邦学习 + 设备端智能:随着端侧小模型(MobileLLM、Phi 系列、Gemma-2B 等)普及,联邦学习正与端侧推理结合——模型在云端联合训练/微调,在设备端推理,全程数据不出端,形成”联邦训练 + 端侧部署”的闭环。
  • 公平性与激励:跨机构协作中谁出力多、谁收益多成为焦点,Shapley 值(Shapley Value)等贡献度评估方法被纳入联邦框架用于收益分配;同时 FedFB、AgnosticFed 等方法保证全局模型不被数据量大的机构主导,照顾小机构的性能。
  • Google Gboard 输入法:联邦学习最早的大规模工业落地。数亿台安卓手机的键盘本地学习用户的输入习惯,只上传模型更新,联合训练出更好的下一个词预测模型——用户聊天记录从不离开手机。同时叠加差分隐私,是 DP-FedAvg 的标杆案例。
  • 医疗影像联合建模:多家医院因隐私法规无法共享患者数据,联邦学习让它们联合训练疾病诊断模型。NVIDIA 联合 20 家医院的 EXAM 项目用联邦学习训练 Covid-19 胸片预测模型,成果发在 Nature Medicine。2025 年这类跨机构联邦分析进一步扩展到基因组学、真实世界证据(RWE)研究。
  • 金融反欺诈联盟:各大银行有各自的欺诈样本,但出于合规无法互换数据。联邦学习(如微众银行 FATE 框架)让多家机构联合训练欺诈检测模型,各自保留用户交易明细。纵向联邦在此场景尤其常见(银行 + 电商共享同一批用户)。
  • 广告点击率预测:苹果 iOS 14 隐私新规后,跨 App 的广告归因受限;联邦学习让广告主在不收集用户原始行为的前提下,联合优化 CTR 模型。
  • 个性化推荐:新闻推荐、电商推荐中,用户行为高度敏感。联邦学习 + 个性化(联邦推荐)让推荐模型在用户设备上本地学习,服务端只聚合群体趋势。详见推荐系统。
  • 跨机构大模型微调:2025 年的新主力场景——多家医院/律所/银行各自拿领域数据,用 FedPEFT 联合微调同一个开源 LLM(如 Llama、Qwen),共享一个懂行的领域模型但各自的数据与提示词都不外泄。
类库语言说明
Flower (flwr)Python最流行的开源联邦学习框架,支持 PyTorch/TensorFlow/JAX,跨设备与跨机构均可,2025 年起原生支持 LLM 微调与 SecAgg+
NVIDIA FLAREPythonNVIDIA 的联邦学习平台,医疗与金融落地多,支持差分隐私、安全聚合与同态加密,2.x 版本主打可互操作的 PETs
FATE (Webank)Python微众银行开源,专注纵向联邦学习与多方安全计算,金融场景标杆;FATE-LLM 子模块支持联邦大模型微调
TensorFlow FederatedPythonGoogle 出品,TFF 框架,Gboard 等产品的技术底座
OpenFLPythonIntel 开源的联邦学习框架,与 OpenVINO 生态集成,注重跨机构医疗与工业场景
FedML / Rhino HealthPython跨设备/跨机构联邦学习与边缘训练平台,Rhino Health 主打医疗 RWE 联邦分析
OpacusPythonPyTorch 官方差分隐私库,常与联邦学习组合实现 DP-FedAvg,支持逐样本梯度计算与隐私账户
术语英文解释
联邦学习Federated Learning (FL)数据分散在各参与方本地、只交换模型更新的分布式训练范式
FedAvgFederated Averaging联邦学习开山算法,对各客户端本地训练后的模型做按样本量加权平均
客户端Client联邦学习中持有本地数据、执行本地训练的参与方
梯度Gradient损失函数对权重的偏导数,指明权重该朝哪个方向调整以降低误差
SGDStochastic Gradient Descent随机梯度下降,每次抽一小批样本算梯度更新权重的基础优化算法
独立同分布IID各客户端样本像来自同一总体的独立随机抽样;Non-IID 即此假设被打破,是联邦学习核心难点
非独立同分布Non-IID各客户端数据分布不一致的情况
客户端漂移Client DriftNon-IID 下各客户端更新方向差异过大导致全局模型震荡
差分隐私Differential Privacy (DP)通过裁剪和加噪、用 (ε, δ) 数学定义保证个体数据无法被推断的隐私保护技术
敏感度Sensitivity加/删一条记录最多让算法输出改变多少,决定加噪量
安全聚合Secure Aggregation (SecAgg)服务器只能获知所有客户端更新之和、不知个体贡献的密码学协议
同态加密Homomorphic Encryption (HE)允许在密文上直接做运算、解密后等于明文结果的加密方案
隐私集合求交Private Set Intersection (PSI)双方在只暴露交集的前提下求出共有样本 ID,纵向联邦的第一步
横向联邦Horizontal FL各参与方数据特征相同、样本不同的联邦学习场景
纵向联邦Vertical FL各参与方样本相同、特征不同的联邦学习场景
成员推理攻击Membership Inference通过模型输出判断某条数据是否在训练集中的隐私攻击
模型反演Model Inversion从模型参数/输出反向重建出训练输入样貌的攻击
联邦大模型微调FedLLM / FedPEFT把 LoRA 等参数高效微调与联邦学习结合,多方联合微调同一个基座大模型
参数高效微调PEFT (LoRA etc.)只训练极少量适配参数(如低秩矩阵)就能让大模型适应新任务,通信量小、适合联邦
个性化联邦Personalized FL各方共享通用表示、保留个性化头部,兼顾群体知识与本地偏好
Shapley 值Shapley Value博弈论中公平分配收益的方法,联邦中用于评估各参与方数据贡献度
跨设备Cross-device手机/IoT 等海量、不稳定、弱算力客户端的联邦设定
跨机构Cross-silo少数几家稳定机构(医院/银行)数据量大的联邦设定
  • FedAvg 开山作:McMahan et al., “Communication-Efficient Learning of Deep Networks from Decentralized Data”, AISTATS 2017. 联邦学习的奠基论文,提出 FedAvg 算法,定义了整个领域。
  • FedProx:Li et al., “Federated Optimization in Heterogeneous Networks”, MLSys 2020. 用近端项解决 Non-IID 与系统异构下的客户端漂移问题。
  • SCAFFOLD:Karimireddy et al., “SCAFFOLD: Stochastic Controlled Averaging for Federated Learning”, ICML 2020. 用控制变量修正客户端梯度偏差,显著加速 Non-IID 收敛。
  • DP-FedAvg:Abadi et al. 的差分隐私 SGD 工作及 McMahan 等的 “Learning Differentially Private Recurrent Language Models”, ICLR 2018. 把差分隐私正式融入联邦学习,Gboard 的隐私基石。
  • 安全聚合:Bonawitz et al., “Practical Secure Aggregation for Privacy-Preserving Machine Learning”, CCS 2017. Google 提出的实用安全聚合协议,让服务器无法看到单个客户端的更新。
  • 联邦学习综述:Kairouz et al., “Advances and Open Problems in Federated Learning”, Foundations and Trends in ML 2021. 100+ 页的全面综述,覆盖算法、系统、隐私、应用,入门必读。
  • 联邦大模型微调:Ye et al., “OpenFedLLM: Training Large Language Models on Decentralized Private Data via Federated Learning”, 2024. 系统总结 FedPEFT/FedIT 方法与基准,理解联邦 + LLM 的入门资料。
  • Flower 框架:Beutel et al., “Flower: A Friendly Federated Learning Framework”, MLSys 2020. 当前最流行的开源联邦框架,文档与示例覆盖跨设备/跨机构/LLM 场景。