【Day20240924】联邦学习中的方法 改进

news2024/9/25 2:43:17

文章目录

  • 前言
  • 一、FedAvg
  • 二、FedProx
  • 三、MOON
  • 四、FedDyn
  • 五、FedAsync
  • 六、PORT
  • 七、ASO-Fed
  • 八、FedBuff
  • 九、FedSA


前言

几种异步的方法:
FedAsync
PORT
ASO-Fed
FedBuff
FedSA
几种同步的方法:
FedAvg
FedProx
MOON
FedDyn

一、FedAvg

FedAvg基本步骤
①全局模型初始化:服务器初始化一个全局模型。
②客户端选择:在每一轮中,服务器随机选择一部分客户端(而非所有客户端)参与训练。
③本地训练:被选中的客户端在各自的本地数据集上运行若干轮的模型训练,更新模型参数。
④上传更新:各客户端将训练后的模型参数上传到服务器。
⑤参数聚合:服务器对所有客户端上传的模型参数进行加权平均(通常根据客户端的数据量进行加权),从而得到更新后的全局模型。
⑥广播全局模型:服务器将更新后的全局模型发送回客户端,进入下一轮训练

二、FedProx

FedProx是 FedAvg 的一种改进版本,专门设计用于处理联邦学习中的异构性问题(如各客户端之间的计算能力和数据分布差异)。FedProx 通过引入一个“近端正则化项”(Proximal term)来限制客户端模型更新的幅度,确保客户端的本地模型不偏离全局模型过多,从而**减轻客户端异质性对全局模型收敛的影响。**其目标是在本地优化目标函数时,增加一个与全局模型的差距度量,从而减少模型更新的波动
FedProx 的优化目标函数为:
在这里插入图片描述在这里插入图片描述
FedProx主要步骤
①全局模型初始化:与 FedAvg 类似,服务器初始化一个全局模型。
②客户端选择:在每一轮中,服务器随机选择部分客户端参与训练。
③本地训练各客户端在本地数据上最小化带有正则化项的损失函数,确保本地模型不会偏离全局模型过多
④上传更新:客户端将更新后的模型参数上传到服务器。
⑤参数聚合:服务器对客户端上传的模型参数进行加权平均,更新全局模型。
⑥广播全局模型:服务器将更新后的全局模型广播给客户端,进入下一轮。
FedProx 则是对 FedAvg 的改进版本,尤其适用于具有异构数据和客户端差异的场景。它通过引入正则化项来缓解客户端异质性对全局模型收敛的影响,更加适合实际中的异构联邦学习场景。

三、MOON

MOON(Model Contrastive Federated Learning,模型对比联邦学习)是一种针对联邦学习中的非独立同分布(Non-IID) 数据问题的学习方法,由 Li, He, 和 Song 于 2021 年提出。MOON 通过引入对比学习(contrastive learning)来改善联邦学习的性能,尤其是在客户端之间数据分布差异较大的情况下。
MOON 的主要目标是通过对比学习机制,使得客户端在本地训练过程中保持对全局模型的学习方向,避免各客户端的模型偏离全局模型过多,从而提高全局模型的泛化能力。在传统的联邦学习方法中(如 FedAvg),客户端本地数据的差异会导致本地模型和全局模型之间的差异增大,从而影响全局模型的训练效果。MOON 通过对比客户端当前模型与全局模型及其历史模型,减少这种偏差
对比损失===>在本地训练中,MOON 引入了 对比损失函数 来比较当前本地模型和全局模型的输出,目的是使本地模型的输出与全局模型的输出保持一致。具体而言,MOON 通过最大化当前模型与全局模型的相似性,最小化当前模型与其历史模型的相似性,以此来保持各个客户端的模型更新方向与全局模型一致。

四、FedDyn

FedDyn 通过在本地优化目标中加入一个 动态正则化项 来解决这个问题。这一正则化项基于客户端的过去训练历史和全局模型的状态,能够动态调整各客户端的本地优化目标,使其与全局优化目标更加一致,从而减少由于数据异构性导致的全局模型偏离。

FedDyn 的主要步骤

①全局模型初始化:服务器初始化一个全局模型,并广播给所有客户端。
②动态正则化项:每个客户端接收到全局模型后,会根据历史更新情况计算一个动态正则化项。该正则化项会引导客户端的本地模型更新与全局模型保持一致,从而减少由于数据差异导致的偏差。
FedDyn 的本地损失函数形式为:在这里插入图片描述
在这里插入图片描述
它和MOON的主要区别在于 正则化机制的不同:FedDyn 是基于动态正则化项的,MOON 是基于对比学习的。

五、FedAsync

①全局模型初始化:服务器初始化全局模型 𝑤𝑡,并将其发送给客户端。
②异步本地训练:每个客户端根据自己的速度独立进行本地训练,并在完成本地训练后,将更新后的本地模型 𝑤𝑖发送回服务器。
③异步全局模型更新:服务器在接收到任意客户端的模型更新后,不需要等待其他客户端完成训练,而是立即根据一个 衰减系数 来对全局模型进行更新。更新公式为在这里插入图片描述在这里插入图片描述
④广播更新后的全局模型:服务器在完成全局模型更新后,将新的全局模型发送回客户端,客户端可以根据自己的节奏继续下一轮本地训练。
局限性
1、模型收敛问题:异步更新虽然提高了效率,但可能导致全局模型的更新方向不一致,增加了模型不稳定的风险。如果某些客户端的数据分布与其他客户端差异较大,异步更新可能会导致全局模型偏离最优解。(所以现在很多,在异步的基础上再对模型更新方向的一致性加以控制)

2、过度依赖衰减系数:FedAsync 的收敛性依赖于衰减系数 𝜂𝑡的设置。如果衰减系数设置不当,可能导致模型收敛速度过慢或发散。因此,需要仔细调整该系数,以保证全局模型的稳定更新。

3、可能的客户端不公平性:由于客户端异步上传更新,更新频率较快的客户端可能对全局模型贡献更大,而更新频率较慢的客户端影响较小,可能导致某些客户端的贡献被忽略(确实,所以很多现在设置阈值)

六、PORT

PORT(Periodic Averaging and Reordering of Training)是 Su 和 Li 在 2022 年提出的一种联邦学习优化算法,主要针对客户端之间的 异构性(Non-IID 数据和计算能力差异) 问题。PORT 通过引入 周期性模型聚合 和 训练任务重排序 来改善联邦学习的效率和全局模型的性能,特别是在客户端计算资源不均衡和数据分布不均匀的环境中。

周期性模型聚合(Periodic Averaging):在传统的联邦学习方法(如 FedAvg)中,客户端在每一轮本地训练完成后都会上传更新,服务器进行模型聚合。而 PORT 采用了 周期性聚合 的方式,即客户端在本地多轮训练后再进行上传。这种方式减少了通信频率,适合通信带宽有限的场景。

任务重排序(Reordering of Training):PORT 在客户端本地训练时,引入了一种 重排序机制,即根据客户端的任务复杂度和计算能力,调整本地任务的优先级和顺序,以提高训练的效率。这种重排序机制可以在计算能力较低的客户端中减少不必要的计算资源浪费,从而提高整体性能。

PORT 的几个步骤:

①全局模型初始化:服务器初始化一个全局模型 𝑤0,并将其分发给客户端。

②本地训练:每个客户端接收到全局模型后,开始在本地数据集上进行多轮次的模型训练。与传统联邦学习算法不同,PORT 的客户端不会在每一轮训练后立即上传模型,而是根据一个 周期(periodic interval) 完成若干轮次的训练后才上传更新。

③任务重排序:客户端在进行本地训练时,会动态调整任务的顺序,根据任务的优先级、复杂性和计算资源进行重排序。具体来说,客户端会根据不同数据集的分布特性和任务需求来确定哪些数据块需要优先处理,从而提高模型的训练效率。

④周期性聚合:每当客户端完成一个周期的本地训练后,它会将模型更新上传到服务器,服务器根据所有客户端的更新进行模型聚合。服务器的全局模型通过这些周期性上传和聚合进行更新。

⑤重新广播全局模型:服务器完成模型聚合后,将更新后的全局模型发送给所有客户端,客户端根据新的全局模型继续进行下一周期的本地训练。

PORT 的局限性
延迟上传的潜在风险:虽然周期性上传减少了通信成本,但它也意味着客户端本地训练的结果在上传时可能已经过时,尤其是在数据变化较快的环境中。如果客户端的模型训练与全局模型之间存在较大差异,周期性聚合可能导致全局模型更新不及时,影响全局模型的收敛效果。

重排序机制的复杂性:任务重排序机制虽然提高了客户端的本地训练效率,但增加了系统的复杂性。在实际应用中,需要合理设计重排序算法,以确保任务分配的公平性和效率,这可能带来额外的实现难度。

对周期参数的依赖:PORT 的性能很大程度上依赖于周期参数的设置。如果周期设置过长,客户端的本地模型更新可能会偏离全局模型太远;如果周期设置过短,则无法充分发挥减少通信的优势。因此,周期参数需要根据具体场景进行合理调节。

七、ASO-Fed

ASO-Fed(Asynchronous Stochastic Optimization Federated Learning)是一种基于 异步随机优化 的联邦学习算法,由 Chen 等人在 2020 年提出。它的主要目的是通过 异步更新 和 随机优化策略 来解决联邦学习中的 通信延迟、客户端异构性 以及 Non-IID 数据分布 等问题。

ASO-Fed 通过以下步骤进行异步联邦学习

①全局模型初始化:服务器初始化全局模型参数 𝑤0,并将其分发给所有客户端。

②异步本地训练:每个客户端根据自身的计算能力和数据分布,独立进行本地模型训练。客户端不需要等待其他客户端,而是根据自身的进度,在本地数据集上进行多轮训练。

③本地更新上传:当客户端完成指定轮次的本地训练后,它会将更新后的模型参数上传至服务器。服务器不必等待所有客户端完成训练,只要收到某个客户端的更新,就立即更新全局模型。

④全局模型更新:服务器根据接收到的客户端更新,使用 异步优化策略 更新全局模型。ASO-Fed 的全局模型更新公式为:在这里插入图片描述
在这里插入图片描述
⑤随机优化与异步更新:为了减少客户端之间的异构性对全局模型的影响,ASO-Fed 采用了 随机优化 的策略,确保全局模型更新能够适应客户端之间的数据差异。同时,异步更新机制保证了即使某些客户端的训练速度较慢,也不会影响全局模型的更新频率。

⑥重新广播全局模型:服务器更新全局模型后,将其重新发送给所有客户端,客户端使用更新后的全局模型继续本地训练。

随机优化的核心机制

**随机客户端选择:**在每一轮训练中,服务器并不从所有客户端中收集模型更新,而是随机选择一部分客户端。这种随机选择策略能够避免某些客户端由于计算资源较差或者网络延迟较大,导致服务器更新速度变慢。

随机选择客户端 可以减少客户端之间的异构性影响,因为它确保了不同客户端的数据特性被随机融入全局模型中,降低了因为某些客户端的更新频率过高而导致全局模型偏离的可能性。

与传统的同步方法(如 FedAvg)相比,这种随机选择策略使得 ASO-Fed 在每一轮只利用部分客户端的更新,大大降低了通信负担。

异步更新中的随机模型优化

在异步联邦学习中,服务器在接收到客户端的更新时,可以立即进行全局模型的更新。但为了防止模型过度偏向某些客户端的数据,ASO-Fed 引入了 随机优化策略,在更新时进行随机扰动,避免全局模型向单一客户端的数据方向过度偏移。
在具体实现中,这种随机优化可以表现为在每次更新时,引入噪声或随机梯度,使得模型更新更加稳健。例如,在服务器更新全局模型时,公式可以表现为:
在这里插入图片描述在这里插入图片描述

随机梯度下降(SGD)优化:

随机梯度下降(SGD) 是随机优化中常用的优化方法,尤其是在非独立同分布(Non-IID)数据环境下,SGD 可以有效处理数据异质性问题。在 ASO-Fed 中,客户端本地的模型训练常采用随机梯度下降,即每个客户端在本地数据集上使用一个小批次的数据来计算梯度,从而减少计算开销并提高效率。

通过引入 SGD,本地模型训练不会因为所有数据差异过大而导致训练过于耗时或梯度波动过大。同时,SGD 还能在全局模型更新中起到平衡各客户端数据分布的作用,使全局模型更具鲁棒性。

动态调整学习率:

在 ASO-Fed 中,学习率通常是 动态调整 的,以适应不同阶段的模型训练。随着训练过程的进行,服务器可以根据全局模型的收敛情况,调整学习率 𝜂𝑡 ,从而确保模型更新不会过快或过慢。

具体来说,在早期阶段,较大的学习率可以帮助模型快速收敛;而在后期阶段,较小的学习率可以防止模型震荡或偏离最优解。这种动态调整学习率的策略,也是一种随机优化中的重要手段。

随机梯度噪声(Gradient Noise Injection):
在 ASO-Fed 中,有时会在本地或全局模型更新时引入随机噪声,用来增强模型的泛化能力。通过在每次更新时加入一些小的噪声,可以防止模型过拟合某些客户端的数据,特别是当客户端的数据分布不均匀时,噪声注入能有效提升全局模型的稳定性。
随机噪声的加入主要是为了确保模型不会因为某些客户端的更新频率过高而陷入局部最优,从而提升模型的收敛效果。

八、FedBuff

FedBuff 的创新点是引入了一个 缓冲区(buffer) 机制。服务器不会立即更新全局模型,而是将客户端的更新存储在缓冲区中,积累足够的更新后再一次性更新全局模型。这种策略能够在保证异步更新灵活性的同时,减少全局模型的震荡,提升模型的收敛性和鲁棒性。

FedBuff 的工作机制
①全局模型初始化:服务器初始化一个全局模型 𝑤𝑡 ,并将其发送给客户端。
②异步本地训练:每个客户端接收到全局模型后,在自己的本地数据集上进行训练,训练完成后,将更新后的模型参数发送回服务器。客户端训练是异步进行的,即每个客户端根据自己的计算能力和数据大小,独立完成训练并上传模型。
③客户端更新存入缓冲区:当服务器接收到客户端的更新时,服务器不会立即更新全局模型,而是将这些更新存储到一个 缓冲区(buffer) 中。缓冲区中存储的更新包括每个客户端的局部模型参数或梯度信息。
④定期聚合缓冲区更新:当缓冲区中的更新达到预定的 阈值(buffer size) 或经过一段时间后,服务器将从缓冲区中提取更新,并执行一次 聚合操作 来更新全局模型。这个过程类似于同步联邦学习中的参数聚合,但在 FedBuff 中,它是在异步收集了足够多的更新后再进行的。
更新聚合的方式通常采用加权平均,将缓冲区中不同客户端的更新加权合并。
⑤全局模型广播:全局模型更新后,服务器将更新后的模型广播给所有客户端,客户端可以继续在新模型的基础上进行本地训练。

九、FedSA

在联邦学习中,尤其是当客户端的数据分布存在明显差异时(即 Non-IID 数据),各客户端的本地模型更新可能会偏离全局模型的最优方向,导致全局模型收敛困难。为了应对这种不确定性,FedSA 借鉴了模拟退火的思想,通过逐步减少系统的“温度”来控制模型更新的幅度,逐渐减少全局模型的波动,从而使模型更加稳健地收敛到全局最优。

模拟退火 是一种优化算法,常用于解决复杂的优化问题,它通过引入一个逐步降低的“温度”参数,允许在高温状态下进行较大的搜索范围,以避免陷入局部最优解,而随着“温度”降低,搜索范围逐渐缩小,最终收敛到全局最优。

在 FedSA 中,模拟退火的概念被引入到全局模型的聚合过程中,通过调节全局模型的更新权重,使得模型在早期阶段能够灵活适应各客户端的更新,而在后期阶段趋向于稳定和收敛。

FedSA 的工作机制

①全局模型初始化:服务器初始化全局模型参数 𝑤0并分发给客户端,开始第一轮联邦学习。
②异步或同步本地训练:各客户端在接收到全局模型后,利用本地数据集进行本地训练。客户端可以根据自身的资源异步或同步地将更新后的模型上传至服务器。此时,不同客户端的数据分布可能存在较大差异,导致各客户端的模型更新方向不同。
③模拟退火过程中的动态聚合:FedSA 在全局模型聚合时,引入了 模拟退火过程。具体来说,服务器在聚合客户端上传的模型更新时,会根据当前的“温度”动态调整全局模型的更新幅度。温度 𝑇随着时间逐渐降低,模拟退火过程通过如下公式更新全局模型:在这里插入图片描述
在这里插入图片描述
④全局模型的逐步收敛:随着温度 𝑇的逐步降低,FedSA 系统会越来越注重模型更新的稳定性,全局模型的更新幅度逐渐减小,直至模型在最优解附近收敛。
⑤温度更新与学习率调整:模拟退火的温度 𝑇会随着训练过程不断更新,通常是逐步降低。学习率 𝜂𝑡也可以根据模型的收敛情况进行调整,以确保模型在训练的不同阶段有适当的更新步长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2162186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 中存储过程参数的设置与使用

《MySQL 中存储过程参数的设置与使用》 在 MySQL 数据库中,存储过程是一组预先编译好的 SQL 语句集合,可以接受参数并返回结果。使用存储过程可以提高数据库的性能和可维护性,同时也可以减少网络流量和代码重复。那么,如何在 MyS…

UEFI EDK2框架学习 (一)

01 Shell界面打印 执行qemu指令后 qemu-system-x86_64 -drive ifpflash,formatraw,fileOVMF.fd -nographic -net none出现shell界面 02 在UEFI shell中创建APP 创建SimplestApp文件夹以及SimplestApp.c、SimplestApp.inf cd edk2 mkdir SimplestAppuuidgen // generate …

ABB 机器人与 Profinet 转 EthernetIP 网关的高效连接

Profinet转EthernetIP网关在工业自动化领域发挥着至关重要的作用。它主要的功能就是实现不同网络协议之间的数据交互,为各种设备的连接与协同工作搭建了桥梁。 以连接ABB机器人为例,Profinet转EthernetIP网关能够将ABB机器人高效地接入到不同的网络系统…

transformer模型写诗词

加入会员社群,免费获取本项目数据集和代码:点击进入>> 1. 项目简介 该项目是基于A035-transformer模型的诗词生成系统,旨在通过深度学习技术实现古诗词的自动化创作。项目的背景源自当前自然语言处理领域的迅速发展,特别是…

工业交换机故障快速排查的方法有哪些

在现代工业自动化的环境中,工业交换机作为网络连接的重要设备,其稳定性和可靠性至关重要。然而,实际使用过程中难免会遇到各种故障,这对生产线和系统的正常运作造成了影响。为了有效应对这些问题,下面将介绍一些工业交…

第P8周:YOLOv5-C3模块实现

本文为🔗365天深度学习训练营 中的学习记录博客原作者:K同学啊 本次将利用YOLOv5算法中的C3模块搭建网络。 我的环境: ●操作系统:ubuntu 22.04 ●GPU显卡:RTX 3090(24GB) * 1 ●语言环境:python 3.12.3 ●编译器&…

鸿蒙开发的基本技术栈及学习路线

随着智能终端设备的不断普及与技术的进步,华为推出的鸿蒙操作系统(HarmonyOS)迅速引起了全球的关注。作为一个面向多种设备的分布式操作系统,鸿蒙不仅支持手机、平板、智能穿戴设备等,还支持IoT(物联网&…

python安装本地的.whl文件报错:Neither ‘setup.py’ nor ‘pyproject.toml’ found

前言 本文章所说的是笔者安装时遇到了报错,查阅相关资料后解决了这个问题,不一定会解决大家的问题。 正文 我参考了这篇文章,但还是没有解决问题。之后我尝试把该.whl文件放到anaconda文件夹中(D:\Anaconda\envs)&a…

干货 | 图像分割概述 ENet 实例

本文为 AI 研习社编译的技术博客,原标题 : Image Segmentation Overview & ENet Implementation 作者 | Aviv Shamsian 翻译 | sherry3255、alexchung 校对 | 邓普斯杰弗 审核 | 酱番梨 整理 | 立鱼王 原文链接: https://medium.com/mist…

Rolling Update

滚动更新是一次只更新一小部分副本,成功之后在更新更多的副本,最终完成所有的副本的更新,滚动更新的最大好处是零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性 部署三副本的应用,初始镜像为…

Qt_事件的介绍

目录 1、理解事件 2、处理事件QEvent 3、键盘事件QKeyEvent 4、鼠标事件QMouseEvent 4.1 鼠标点击事件 4.2 鼠标释放事件 4.3 鼠标移动事件 5、滚轮事件QWheelEvent 6、定时器事件QTimerEvent 7、窗口事件QMoveEvent 8、事件分发器event 9、事件过滤器even…

C语言练习:通讯录

简单版代码讲解: 这个版本不涉及文件操作以及动态内存分配,有助于理解代码。 文件管理 这里我们分了三个文件,.h 文件里给出类型声明和函数声明,contact.c 文件是具体的实现,test.c文件里是游戏的实现逻辑。 test.c…

怎么一键更换PPT模板?2个做PPT必备的办公神器推荐!

在主打快节奏的当下,一份精美的PPT演示文稿往往能够为你赢得更多的关注和机会。但不可否认的是,制作一份高质量的PPT并非易事,特别是当你需要频繁更换PPT模板以应对不同场合时,根本抽不出时间来逐一修改。 本文将为大家介绍2款强…

ATTCK实战系列-Vulnstack靶场内网域渗透(二)

ATT&CK实战系列-Vulnstack靶场内网域渗透(二) 前言一、环境搭建1.1 靶场下载地址1.2 环境配置1.2.1 DC域控服务器:1.2.2 WEB服务器:1.2.3 PC域内主机:1.2.4 攻击者kali: 1.3 靶场拓扑图 二、外网渗透2.…

SpringCloud微服务实现服务熔断的实践指南

Spring Cloud是一套分布式系统的微服务框架,它提供了一系列的组件和工具,能够使我们更容易地构建和管理微服务架构。在实际开发中,由于各个服务之间的通信依赖,一旦某个服务出现故障或负载过高,可能会导致整个系统的性…

Growthly Quest 增长工具:助力 Web3 项目实现数据驱动的增长

作者:Stella L (stellafootprint.network) 在瞬息万变的 Web3 领域,众多项目在用户吸引、参与和留存方面遭遇重重难关。Footprint Analytics 推出 Growthly,作为应对这些挑战的全方位解决方案,其中创新性的 Quest(任务…

Maya学习笔记:物体的层级关系

文章目录 父子关系设置父子关系同时显示两个大纲视图 组 父子关系 设置父子关系 设置父子物体: 方法1 先选择子物体,按住shift再选中父物体,按P或者G键 方法2 在大纲视图中按住鼠标中间,拖动一个物体到另一个物体上 取消父子关…

HC32F460JETA使用串口DMA循环传输数据时遇到问题,只传输了一次就停止传输,如何解决??

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

物联网实践教程:微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制 远程上报和接收数据——STM32代码实现篇

STM32代码实现 开启本章节需要完成下方的前置任务: 点击跳转: 物联网实践教程:微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制 远程上报和接收数据——汇总 目标 1.连接OneNET:STM32使用串口与ESP8266/01s连接发送…

基于Vue3组件封装的技巧分享

本文在Vue3的基础上针对一些常见UI组件库组件进行二次封装,旨在追求更好的个性化,更灵活的拓展,提供一些个人的思路见解,如有不妥之处,敬请指出。核心知识点$attrs,$slots 需求 需求背景 日常开发中,我们经…