Yang's blog Yang's blog
首页
Java
密码学
机器学习
命令手册
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

xiaoyang

编程爱好者
首页
Java
密码学
机器学习
命令手册
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 传统机器学习

    • 机器学习前言
    • 数据预处理
    • 简单线性回归
    • 多元线性回归
    • 逻辑回归(一)
    • 逻辑回归(二)
    • K近邻法(k-NN)
    • k最近邻分类任务代码演示
    • 支持向量机(SVM)
    • 使用SVM进行二分类
    • 决策树
    • 随机森林
    • 什么是K-means聚类算法
    • 使用K-Means算法进行数据聚类:以鸢尾花数据集为例
  • 联邦学习

    • 联邦学习中的基础算法介绍
      • 1. FedAvg
      • 2. FedProx
      • 3. FedBN
      • 4. SCAFFOLD
      • 5. MOON
    • Advances and Open Problems in Federated Learning
    • Vertical Federated Learning Concepts,Advances, and Challenges
    • 机器学习中的并行计算
    • Boosted Trees 简介
    • SecureBoost:一种无损的联邦学习框架
    • FedGen & Data-Free Knowledge Distillation for Heterogeneous Federated Learning
    • Towards Personalized Federated Learning
    • Distilling the Knowledge in a Neural Network
    • FedMD & Heterogenous Federated Learning via Model Distillation
    • FedFTG & Fine-tuning Global Model via Data-Free Knowledge Distillation for Non-IID Federated Learning
    • MOON & Model-Contrastive Federated Learning
    • Knowledge Distillation in Federated Learning:A Practical Guide
    • DKD-pFed & A novel framework for personalized federated learning via decoupling knowledge distillation and feature decorrelation
    • pFedSD & Personalized Edge Intelligence via Federated Self-Knowledge Distillation
    • FedFD&FAug:Communication-Efficient On-Device Machine Learning:Federated Distillation and Augmentation under Non-IID Private Data
  • 机器学习
  • 联邦学习
xiaoyang
2024-10-28
目录

联邦学习中的基础算法介绍

# 联邦学习中的基础算法介绍

提示

联邦学习(Federated Learning)是一种分布式机器学习方法,通过将模型训练分散到多个客户端上,从而保护用户隐私。在联邦学习中,各客户端在本地训练模型,然后将更新结果传回服务器,由服务器聚合这些更新。本文将介绍联邦学习中一些重要的算法:FedAvg、FedProx、FedBN、SCAFFOLD 和 MOON。

# 1. FedAvg

Federated Averaging (FedAvg) 是联邦学习中的经典算法之一,也是许多后续算法的基础。FedAvg 的核心思想是:各客户端在本地数据上独立训练模型一段时间(多轮次迭代),然后将模型更新发送到服务器端,由服务器进行平均化聚合,从而生成全局模型。FedAvg 具有简单、高效的优点,但在客户端数据存在非独立同分布(non-IID)问题时,FedAvg 的效果会有所下降。

  • 原论文链接:Communication-Efficient Learning of Deep Networks from Decentralized Data (opens new window)

image-20241028144104898

给定参数:K个客户端,客户端索引为k;本地小批量大小为B,本地训练轮数为E,学习率为η。


服务器执行:

  1. 初始化w0
  2. 对于每一轮t=1,2,…做:
    1. m←max(C⋅K,1)

    2. St←随机选择的m个客户端

    3. 对于每个客户端k∈St并行地执行:

      wt+1k←ClientUpdate(k,wt)

    4. 计算聚合更新:

      wt+1←∑k∈StnknStwt+1k

      其中nk是客户端k的样本数,nSt是所有参与客户端的总样本数。

客户端更新过程 ClientUpdate(k, w): // 在客户端k上运行

  1. 将客户端k的数据Pk划分为批次,每批大小为B

  2. 对于本地轮次i=1到E做:

    对于每个批次b∈B进行梯度下降更新:

    w←w−η∇ℓ(w;b)
  3. 返回更新后的w给服务器

# 2. FedProx

为了解决 FedAvg 在非IID数据分布时的表现问题,Federated Proximal (FedProx) 在 FedAvg 的基础上引入了一个正则项(Proximal Term) μ2∥w−wt∥2 旨在控制当前模型参数 w 与上一轮全局模型参数 wt 之间的距离。通过限制模型更新的幅度,FedProx 可以防止客户端在训练过程中发生过度偏移,尤其是当数据分布差异较大时。这种控制能够确保客户端更新不至于偏离全局模型太远,从而保持全局模型的稳定性。

  • 原论文链接:Federated Optimization in Heterogeneous Networks (opens new window)

image-20241028144817342

输入: 客户端总数 K,总轮数 T,正则参数 μ,学习率 γ,初始模型参数 w0,客户端数 N,每个客户端被选中的概率 pk(k=1,⋯,N)


For 对于每一轮 t=0,⋯,T−1:

  1. 服务器随机选择一个大小为 St的客户端子集,其中每个客户端 k被选中的概率为 pk

  2. 服务器将当前模型参数 wt发送给所有被选中的客户端

  3. 每个被选中的客户端 k∈St计算一个 γt-近似解 wt+1k,使得:

    wt+1k≈arg⁡minwhk(w;wt)=Fk(w)+μ2∥w−wt∥2
  4. 每个客户端 k∈St将更新后的 wt+1k发送回服务器

  5. 服务器聚合更新的 w值,得到新的全局模型:

    wt+1=1K∑k∈Stwt+1k

End 结束循环

# 3. FedBN

Federated Batch Normalization (FedBN) 主要针对包含不同特征分布的多域数据,例如在医疗影像等场景中,各客户端的数据分布存在显著差异。FedBN 保持每个客户端的批归一化(Batch Normalization)层的独立性,仅聚合其他层的参数。这种方法能够很好地适应每个客户端的本地数据分布,同时保证全局模型的通用性。

  • 原论文链接:FedBN: Federated Learning on Non-IID Features via Local Batch Normalization (opens new window)

# 4. SCAFFOLD

SCAFFOLD 算法在 FedAvg 的基础上,通过引入控制变量来减少本地梯度更新中的差异,克服了在非IID数据下的偏差问题。每个客户端和服务器都维护一个控制变量,用于校正梯度更新中的偏差,从而加速收敛。

  • 原论文链接:SCAFFOLD: Stochastic Controlled Averaging for Federated Learning (opens new window)

image-20241028150045579

# 5. MOON

Model Contrastive Federated Learning (MOON) 是一种对比学习方法,旨在优化联邦学习中的局部模型和全局模型的相似度。MOON 通过对比学习的损失函数,使本地模型更新更接近全局模型的方向,避免了各客户端的更新偏差。

  • 原论文链接:MOON: Model Contrastive Federated Learning (opens new window)

image-20241028150856739

编辑 (opens new window)
上次更新: 2025/04/01, 01:48:12

← 使用K-Means算法进行数据聚类:以鸢尾花数据集为例 Advances and Open Problems in Federated Learning→

最近更新
01
操作系统
03-18
02
Nginx
03-17
03
后端服务端主动推送消息的常见方式
03-11
更多文章>
Theme by Vdoing | Copyright © 2023-2025 xiaoyang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式