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

文章目录

  • 前言
  • 一、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.xdnf.cn/news/1544557.html

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

相关文章

大模型开发应用实战:真实项目实战对标各类大厂大模型算法岗技术

一、引言 在人工智能领域,大模型已经成为推动技术进步和应用创新的重要力量。随着技术的不断发展,各大厂商纷纷投入大量资源研发大模型,并尝试将其应用于各种实际场景中。为了培养具备大模型开发与应用能力的高级技术人才,我们组织…

cuda算子优化-transpose

transpose 参考链接 方法一:每个线程负责一个元素的转置 cuda代码实现 ncu分析(矩阵维度采用m1024,n512;grid和block维度见下图最上方) 这种方法对读global mem比较友好,可以做到合并访存,但…

知识产权 ABS 企业融资新渠道

在当今知识经济时代,知识产权作为企业的核心资产,其价值日益凸显。知识产权资产证券化(Intellectual Property Asset-Backed Securitization,简称知识产权ABS)作为一种创新的金融工具,为企业盘活知识产权资…

Cpp类和对象(下)(6)

文章目录 前言一、初始化列表概念使用注意实际运用explicit关键字初始化列表的总结 二、static成员static成员的概念static成员的特性static的一个实用场景 三、友元友元函数友元类 四、内部类概念特性 五、匿名对象六、再次理解封装和面向对象总结 前言 Hello,本篇…

【Oauth2整合gateway网关实现微服务单点登录】

文章目录 一.什么是单点登录?二.Oauth2整合网关实现微服务单点登录三.时序图四.代码实现思路1.基于OAuth2独立一个认证中心服务出来2.网关微服务3产品微服务4.订单微服务5.开始测试单点登录 一.什么是单点登录? 单点登录(Single Sign On&…

权威期刊Cell Discovery新成果!上海交大洪亮团队提出CPDiffusion模型,超低成本、全自动设计功能型蛋白质

蛋白质是生命活动的主要执行者,其结构与功能之间的关系一直是生命科学领域研究的核心议题。近年来,随着深度学习的兴起,借助其强大的数据处理能力,让模型学习蛋白质序列、结构及其功能之间的映射关系,设计出具备更高稳…

prithvi WxC气象模型

NASA发布了prithvi WxC气象模型发布 Prithvi是NASA开源的模型,被誉为全球最大的开源地理空间大模型。昨天晚上逛X平台,我看到Prithvi模型又来了新成员:prithvi WxC。 NASA和IBM创建了一个基于MERRA-2数据的天气和气候AI基础模型—Prithvi Wx…

数据库事务索引视图、存储过程

目录 文章目录 一、数据库事务 事务概述: 事务特征: 提交回滚 隔离级别 二、索引 索引创建原则: 存储引擎 单列索引 组合索引 全文索引 空间索引 三、视图 四、函数和存储过程 1.函数的创建 2.存储过程 3.调用格式 4.两者…

初识爬虫8

1.selenium的作用和工作原理 2. 使用selenium,完成web浏览器调用 # -*- coding: utf-8 -*- # 自动化测试工具,降低难度,性能也降低 from selenium import webdriverdriver webdriver.Edge()driver.get("https://www.itcast.cn/")…

高德2024全民出行节启动,联合生态伙伴发放百亿补贴

临近十一黄金周,高德地图宣布启动“2024全民出行节” ,致力于打造出门好生活体验,让用户十一出行“和囧途说ByeBye”。今年十一黄金周期间,高德地图联合生态伙伴在百大行业推出百亿补贴,涵盖吃、住、行、游、购、娱。同…

netty编程之那么多的网络框架为啥非选你?

写在前面 java nio框架不止一种,为啥非选netty?本文来看下。 1:正文 网络io框架,除了netty外,还有mina,sun grizzly,cindy等,为啥独选netty。 mina netty和mina作者同属一人&…

CAN协议一致性测试——深入浅出理解CAN协议(四)

本系列是在同公司硬件设计、验证的同事1、在完成了CANFD硬件接口IP开发 2、熟悉ISO-11898系列、ISO16845、CAN2.0协议、CANFD协议等以及大量学习资料 3、深入研究其他家CANFD IP(NXP、BOSCH)4、独立开发了对应底层驱动 5、通过CANoe和周立功CAN分析仪完成…

类的难疑点

一、知识点 1、类的属性和对象属性(实例属性) shuxing"123" self.shuxing"123" 2、类的对象 self.loginMyclass() loginMyclass() 3、访问类属性和方法的操作 通过“类名.属性”访问:Myclass.shuxing 通…

筋膜炎能自愈吗

筋膜炎能否自愈,主要取决于病情的严重程度以及患者的自我管理和治疗情况。 一、轻微筋膜炎的自愈可能性 对于轻微筋膜炎患者,通过合理的日常护理和适当的运动锻炼,有很高的自愈可能性。这包括: 1、充分休息:避免过度…

【BetterBench博士】2024华为杯C题:数据驱动下磁性元件的磁芯损耗建模 Python代码实现

题目 【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析 【BetterBench博士】2024年中国研究生数学建模竞赛 E题:高速公路应急车道紧急启用模型 问题分析 【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动…

React 理解 re-render 的作用、概念,并提供详细的例子解释

一、什么是 re-render 在 React 中 re-render(重新渲染) 是经常发生的行为,主要确保视图要时刻保持最新的数据来呈现。 但每次发生 re-render 也是有代价的,比如数据状态、focus 焦点、表单数据、都得重置, 遇到代码…

Linux ping c实现

linux下ping程序的c实现 #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdint.h> #include <netdb.h> #include <arpa/inet.h> #include <unistd.h> #include <st…

LoongArch 个人赛一级评测(前递旁路+load阻塞)

目录 LoongArch 个人赛一级评测&#xff08;前递旁路load阻塞&#xff09;声明测试说明 代码修改thinpad_top.vconver_ram.vIF_stage 测试自动评测在线实验 踩坑记录读写使能控制inout类端口的使用方法Vivado生成Bit流文件时出现[Synth 8-91] ambiguous clock in event control…

file zilla server安装以后,client连接,账号登录成功,但是读取目录失败的处理

1、下载 2、连接 开始一直报错&#xff0c;server1.9.1的版本&#xff0c;后来直接下载了汉化版本进行安装&#xff1a; 服务端 - FileZilla中文网 3、报错&#xff1a;登录正常&#xff0c;但是读取目录失败&#xff0c;一开始也是这个错误&#xff0c;后来改成安装低版本的&a…

python之装饰器、迭代器、生成器

装饰器 什么是装饰器&#xff1f; 用来装饰其他函数&#xff0c;即为其他函数添加特定功能的函数。 装饰器的两个基本原则&#xff1a; 装饰器不能修改被装饰函数的源码 装饰器不能修改被装饰函数的调用方式 什么是可迭代对象&#xff1f; 在python的任意对象中&#xff…