Skip to content

联邦学习概述与核心概念

联邦学习(Federated Learning)由 Google 于 2016 年提出,是一种分布式机器学习范式,允许多个参与方在不暴露原始数据的情况下协同训练全局模型。

联邦学习概述

核心思想

传统集中式训练需要收集所有数据到中心服务器,而联邦学习将训练过程推送到数据所在位置:

传统:数据 → 中心服务器 → 训练模型
联邦:模型 → 各参与方 → 本地训练 → 上传梯度/参数 → 聚合

联邦学习分类

按数据分布划分

类型特征重叠样本重叠典型场景
横向联邦同行业不同用户群
纵向联邦同用户不同特征
联邦迁移学习跨领域迁移

按参与方规模划分

类型参与方数量网络条件典型场景
跨设备 (Cross-Device)百万级不稳定移动端输入法
跨机构 (Cross-Silo)数十级稳定医院联合建模

基本流程

python
# 联邦学习基本流程伪代码
def federated_learning(server, clients, num_rounds):
    global_model = server.initialize_model()

    for round in range(num_rounds):
        # 1. 服务端广播全局模型
        server.broadcast(global_model)

        # 2. 各客户端本地训练
        local_updates = []
        for client in clients:
            local_model = client.receive(global_model)
            update = client.local_train(local_model, num_epochs=5)
            local_updates.append(update)

        # 3. 服务端聚合更新
        global_model = server.aggregate(local_updates)

    return global_model

关键挑战

挑战描述影响
数据异构性Non-IID 数据分布收敛速度下降
通信效率带宽受限训练轮次增加
隐私保护梯度可能泄露信息需要额外机制
系统异构性设备算力差异延迟和掉线
恶意参与方投毒攻击模型质量下降

联邦学习适用条件

联邦学习适合以下场景:1) 数据无法集中(法规/商业限制);2) 数据量大但每方数据量小;3) 需要保护数据隐私;4) 参与方有训练能力。

联邦学习不是万能的

联邦学习的通信开销和收敛速度通常不如集中式训练。如果数据可以合法集中,集中式训练通常是更好的选择。

相关资源

最近更新