FedProto:跨异构客户端的联邦原型学习(论文阅读)

news2024/11/10 7:57:21

题目:FedProto: Federated Prototype Learning across Heterogeneous Clients

网址:http://arxiv.org/abs/2105.00243

 摘要

在联邦学习(FL)中,当客户端知识在梯度空间中聚集时,客户端间的异构性通常会影响优化的收敛和泛化性能。例如,客户端可能在数据分布、网络延迟、输入/输出空间和/或模型架构方面存在差异,这很容易导致其局部梯度的不对齐。为了提高对异构的容忍度,我们提出了一种新的联邦原型学习框架(federalprototype learning, FedProto),在该框架中,客户端和服务器端通过抽象类原型而不是梯度进行通信。FedProto将从不同客户端收集到的局部原型聚合在一起,然后将全局原型发送回所有客户端,以规范局部模型的训练。在每个客户端上进行训练的目的是使局部数据的分类错误最小化,同时使得到的局部原型与相应的全局原型足够接近。

补充(什么是局部梯度不对齐):
在联邦学习中,各个客户端拥有不同且分布不均的数据,这导致每个客户端训练出的局部模型和计算出的
梯度方向各不相同。当这些梯度被发送到中心服务器进行聚合时,如果差异较大,会使得全局模型难以收
敛或者性能较差

预备知识

异构联邦学习

异构一般分为模型异构和统计异构(也叫Non-IID问题)两部分,现有的方法都只关注了一个异构,且都使用了基于梯度的聚合方法,在通信效率和解决基于梯度的攻击方面存在缺陷

本文提出的FedProto方法同时考虑了模型异构和统计异构的问题,并且这种方法提出了基于原型聚合的FL框架,只有原型在服务器和客户端之间传输。所提出的解决方案不需要聚合模型参数或梯度,因此它具有成为各种异构FL场景的健壮框架的巨大潜力。

原型学习

Prototype-based learning(原型学习)是一种机器学习方法,它的核心思想是通过存储一组代表性的样本(原型),然后使用这些原型来进行分类、回归或聚类等任务,受原型学习的启发,在异构数据集上合并原型可以有效地集成来自不同数据分布的特征表示

例如,当我们谈论“狗”时,不同的人会有一个独特的“想象图片”或“原型”来代表“狗”这个概念。由于不同的生活经历和视觉记忆,他们的原型可能会略有不同。在人与人之间交换这些特定概念的原型可以使他们获得更多关于“狗”概念的知识。将每个FL客户端视为类人智能体,我们的方法的核心思想是交换原型而不是共享模型参数或原始数据,这可以自然地匹配人类的知识获取行为。

个人理解:相比于传统的联邦学习方法,Fedproto是基于原型也就是每个类别的特征在全局进行聚合,将来自每个client的特征进行合并得到一个更加全面的特征,然后在将这个特征分发给每个client,每个client在本地再进一步训练自己掌握的的特征向全局特征靠拢,这样就实现了每个client的模型优化,且在这个过程中每个client的异构是没有影响的,因为我们只关注原型。

具体方法

FedAvg

在联邦学习中,每个客户端都有一个从分布Pi(x, y)中提取的本地私有数据集Di,其中x和y分别表示输入特征和相应的类标签

FedAvg的目标函数为(1),在给定数据集和模型的情况下,通过调整参数ω来最小化加权损失函数,从而找到最佳拟合模型参数

其中,N为所有客户端的实例总数,F为共享模型(ω为全局模型的参数),Ls 表示损失函数,此目标函数用来最小化加权的客户端损失函数

真实异构联邦场景

在现实世界中,(统计异构)Pi因客户端而异,也就导致Di的Non-IID,例如不同客户机上的Pi可以是不同类子集上的数据分布,(模型异构)Fi因客户端而异。对于第i个客户端的训练过程是最小化损失函数,目标函数变为(2)

但由于Fi有不同的模型架构,所以ωi有不同的形式和大小,全局模型参数ω不能通过平均优化ωi来优化

基于原型的聚合

一般来说,基于深度学习的模型包括两个部分:

(1)表示层(即嵌入函数),用于将输入从原始特征空间转换到嵌入空间

(在fedproto中表示层就是起到一个特征提取的作用)

我们把i客户端上参数为 𝜙𝑖 的表示层运算(输入x)表示为 fi(𝜙𝑖 ; x)

(2)决策层,为给定的学习任务做出分类决策

决策层通常指神经网络的最后一层,那么表示层则代表除了最后一层之外的其他层

原型

原型的表示是基于类别的,第i个客户端中第j类别的原型表示为(3),Di,j是本地数据集Di中j类别数据组成的子集,原型是类j中实例的嵌入向量的平均值

本地模型更新

在局部损失函数的基础上加入正则化项(局部原型和全局原型的L2距离),使局部原型接近全局原型,同时最小化分类误差的损失

LS: 监督学习的损失函数,其作用是衡量模型预测结果与真实标签之间的差距

LR: 用于衡量本地原型C(j)与相应的全局原型C¯(j)之间的距离(使用L2距离),

损失函数就由这两部分组成

注意: 根据文章,这里是通过试验和调整来确定λ的最佳值

全局原型聚合

全局原型是由局部原型加权平均得到的。具体来说,对于每个类别j,服务器会从拥有该类别的客户端中收集原型,然后对这些原型进行加权平均,得到该类别的全局原型C¯(j)。

算法

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

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

相关文章

携手AI人才 共赢智算未来丨誉天人工智能AI大模型首期班火热报名中

在数字化浪潮汹涌澎湃的今天,人工智能已成为推动社会进步与产业升级的关键力量。 回顾人工智能历史,自1956年诞生以来,历经三次发展热潮和两次低谷期。五十年代符号主义和逻辑推理的出现标志着人工智能的诞生,引发第一次发展浪潮&…

自动驾驶AVM环视算法–全景和标定全功能算法实现和exe测试demo

参考:全景和标定全功能算法实现和exe测试demo-金书世界 1、测试环境 opencv310vs2022 2、使用的编程语言 c和c 3、测试的demo的获取 更新:测试的exe程序,无需解压码就可以体验算法测试效果 百度网盘: 链接:http…

开发一个自己的chrom插件

开发一个自己的chrom插件 一、创建一个文件夹 二、配置文件manifest.json 创建名字为:manifest.json的配置文件,模板如下: {"manifest_version": 3,"name": "Hello World Extension","version": …

Go 语言 UUID 库 google/uuid 源码解析:UUID version7 的实现

google/uuid 库地址 建议阅读内容 在阅读此篇文章之前,建议先了解 UUIDv1 的构成、UUIDv4 的 API 以及掌握位运算。 了解 UUIDv1 的构成可以参考Go 语言 UUID 库 google/uuid 源码解析:UUID version1 的实现 或 RFC 9562。 了解 UUIDv4 的 API 可以看…

【数据结构】非线性表----树详解

树是一种非线性结构,它是由**n(n>0)**个有限结点组成一个具有层次关系的集合。具有层次关系则说明它的结构不再是线性表那样一对一,而是一对多的关系;随着层数的增加,每一层的元素个数也在不断变化&…

算法——双指针(day3)

611.有效三角形的个数 611. 有效三角形的个数 - 力扣(LeetCode) 题目解析: 三角形的判定很简单,任意两边之和大于第三边即可。按照正常情况,我们得判断3次才可以确认是否构成三角形。 因为c在本来就是最大的情况下与…

安全测试必学神器 --BurpSuite 安装及使用实操

BurpSuite是一款功能强大的集成化安全测试工具,专门用于攻击和测试Web应用程序的安全性。适合安全测试、渗透测试和开发人员使用。本篇文章基于BurpSuite安装及常用实操做详解,如果你是一名安全测试初学者,会大有收获! 一、BurpS…

C++ Qt 登录界面 Login

效果: 核心代码: #include "simpleapp.h" #include "ui_simpleapp.h" #include <QMessageBox>SimpleApp::SimpleApp(QWidget *parent): QMainWindow(parent), ui(new Ui::SimpleApp) {ui->setupUi(this); }SimpleApp::~SimpleApp() {delete ui; …

ROS、pix4、gazebo、qgc仿真ubuntu20.04

一、ubuntu、ros安装教程比较多&#xff0c;此文章不做详细讲解。该文章基于ubuntu20.04系统。 pix4参考地址&#xff1a;https://docs.px4.io/main/zh/index.html 二、安装pix4 1. git clone https://github.com/PX4/PX4-Autopilot.git --recursive 2. bash ./PX4-Autopilot…

MQTT服务端EMQX开源版安装和客户端MQTTX介绍

一、EMQX是什么 EMQX 是一款开源的大规模分布式 MQTT 消息服务器&#xff0c;功能丰富&#xff0c;专为物联网和实时通信应用而设计。EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条&#xff0c;单服务器的传输与处理吞吐量可达每秒百万级 MQTT 消息&#xff0c;同时保证毫秒…

C语言函数:编程世界的魔法钥匙(2)

引言 注&#xff1a;由于这部分内容比较抽象&#xff0c;而小编我又是一个刚刚进入编程世界的计算机小白&#xff0c;所以我的介绍可能会有点让人啼笑皆非。希望大家多多包涵&#xff01;万分感谢&#xff01;待到小编我学有所成&#xff0c;一定会把这块知识点重新介绍一遍&a…

Django前后端打通

跨域问题 【 0 】前言 ​ ​ 同源策略&#xff08;Same Origin Policy&#xff09;是浏览器安全策略的重要组成部分&#xff0c;它限制了来自不同源的网页之间的数据交互&#xff0c;以防止恶意攻击。当一个网页尝试执行与它的源&#xff08;即协议、域名和端口&#xff09…

Re:从零开始的C++世界——类和对象(下)

文章目录 前言1.再谈构造函数&#x1f34e;构造函数体赋值&#x1f34e;初始化列表&#x1f34e;特性&#x1f34c;特性一&#x1f34c;特性二&#x1f34c;特性三&#x1f34c;特性四&#x1f34c;特性五 &#x1f34e;explicit 关键字 2.static成员&#x1f34e;概念&#x1…

node.js动漫论坛-计算机毕业设计源码09947

摘 要 随着移动互联网的飞速发展&#xff0c;智能手机和移动互联网已经成为人们日常生活中不可或缺的一部分。在这样的背景下&#xff0c;微信小程序应运而生&#xff0c;凭借其无需下载安装、即用即走的特点&#xff0c;迅速成为连接用户与服务的桥梁。动漫作为一种深受年轻人…

《0基础》学习Python——第十六讲 __文件读写

<文件读写> 一、什么是文件读写 文件读写是指在Python程序中对文件进行读取和写入操作。通过文件读写&#xff0c;可以读取文件中的数据&#xff0c;或者向文件中写入数据。 Python提供了多种文件读写的方式&#xff0c;其中最常用的方式是使用open()函数打开一个文件&a…

ssrf复习(及ctfshow351-360)

1. SSRF 概述 服务器会根据用户提交的URL发送一个HTTP请求。使用用户指定的URL&#xff0c;Web应用可以获取图片或者文件资源等。典型的例子是百度识图功能。 如果没有对用户提交URL和远端服务器所返回的信息做合适的验证或过滤&#xff0c;就有可能存在“请求伪造"的缺陷…

huawei USG6001v1学习---信息安全概念

目录 1.什么是分布式&#xff1f; 2.什么是云计算&#xff1f; 3.APT攻击 4.安全风险能见度不足 5.常见的一些攻击 6.交换机转发原理&#xff1f; 7.各层攻击类型 7.1链路层&#xff1a; 7.2网络层&#xff1a; 7.3传输层&#xff1a; 7.4应用层&#xff1a; 1.什么…

mybatis plus json 格式转换踩坑记录

项目中有个字段存的是json数据。 我对应的实体类用的 fastjson2 中的 JsonObject 对象。 实体类&#xff1a; Data Accessors(chain true) TableName(value "plugin_template", autoResultMap true) public class PluginTemplateDo {TableId(type IdType.AUTO)p…

Mybatis<collection>实现一对多

时隔多年又用到这样的查询方式了,提前声明一下分页最后返回的数据会小于每页条数&#xff0c;废话不多说直接上代码&#xff01; Data public class PbcUserTargetTaskPageVO {ApiModelProperty("个人绩效指标id")private Long id;ApiModelProperty("月份"…

Modbus通讯接口选择分析

Modbus通讯接口选择分析 Modbus通讯接口的选择涉及到多个方面的考量&#xff0c;包括但不限于通讯距离、数据传输速率、成本、设备兼容性以及应用场景等。下面将从这些角度出发&#xff0c;对Modbus通讯接口的选择进行详细的分析。 Ip67防水面板法兰插座 通讯距离 Modbus通讯…