怎么实现联邦学习中的Non-IID?

article/2025/10/14 2:46:58

联邦学习的一大特点就是数据分布是Non-IID,Non-IID意为非独立同分布。那么怎么在实验中实现non-iid呢?这是我这篇博客想讨论的问题。

part 1:

在堪称联邦学习“开山之作”FedAvg这篇论文中,是这样描述的:

数据集是MNIST,MNIST是0到9这10个数的手写数据集,训练集大小是60000。

按照文章描述,Non-IID的设置是——先把它数据集按数字标签排序,然后按照300样本分成 200 shards(姑且译作碎片)。在系统中有100个clients用户,每个用户能分到2 shards,也就是600个样本。大多数用户获得的样本只有2类数字。

而如果是IID的设置,那么每个用户基本都能得到0-9这10类数字。

part 2:

此外,在一些论文中还出现了“degree of non-IID”这种设置。以2021年AAAI的一篇论文为例:

以q的概率将带有标签l的训练实例分配给第l组客户,并以(1-q)/9的概率将其分配给其余各组。

参数q控制着本地训练数据在客户端的分布,我们称q为Non-IID的程度。q = 0.1表示客户端的本地训练数据为IID分布, q越大表示Non-IID的程度越大。 

通俗来讲,我们有10类数据,0-9这10个分类标签。q=0.1的时候,标签1就有0.1的概率分配给第1个用户。有(1-q)/9=0.1的概率将其分配给其余各组。这种分配方式就符合理想情况下的每类数字在每个用户那均匀分布,就是IID的。

part 3

在一篇专门研究FL Non-IID settings的论文里指出:包含三类Non-IID:

label distribution skew:标签的偏分布

feature distribution skew:特征的偏分布

quantity skew:数量的偏分布

(读完论文再来更新)

(目前我留意到的论文中Non-IID设置方式就是这些,后续若有补充则继续更新~)


http://chatgpt.dhexx.cn/article/tTZVJ7I3.shtml

相关文章

【联邦学习】联邦学习量化——non-iid数据集下的仿真

文章目录 改进项目背景量化函数的改进non-iid数据集的设置Fedlab划分数据集的踩雷 改进项目背景 在前面的项目中,虽然对联邦学习中,各个ue训练出来的模型上传的参数进行了量化,并仿真的相关结果。但是仍有一些俺不是非常符合场景的情况&…

「隐语小课」联邦学习之Non-IID问题

更多干货内容,请移步公众号:隐语的小剧场 一、引言 本文针对联邦学习中遇到的Non-IID问题进行探讨,介绍Non-IID产生的原因,分析Non-IID对联邦学习的影响,以及调研了近年来针对该问题的解决方案,并进行分类…

联邦学习中的non-iid总结

最近研究联邦学习(federated learning,FL)中的non-iid的解决办法时遇到瓶颈,写成博客将最近的工作总结一下,希望有大佬看到这篇博客不吝赐教。 什么是non-iid 先从维基百科引出独立同分布的定义: 在概率论…

IID 与 Non-IID

数据独立同分布(Independent Identically Distribution,IID) 数据与数据之间都是独立的,但满足同一个分布。(独立:一个数据的出现不会影响另一个数据) 数据分布描述的是数据的统计情况&#x…

dy设备deviceid iid注册分析

清楚缓存,重新打开app, 点击同意按钮,会触发设备注册; 很明显是一个post包,device_register 可以看到请求体加密了 那么 请求体是什么呢? 很老版本思路:都是直接明文注册 较老版本思路:在反编译…

Redis 设计与实现: redisObject 数据结构,以及 Redis 的数据类型

redisObject 数据结构,以及 Redis 的数据类型 redisObject 是 Redis 类型系统的核心, 数据库中的每个键、值,以及 Redis 本身处理的参数, 都表示为这种数据类型。 redisObject 的定义位于 redis.h : /** Redis 对象…

(五)、Redis的RDB持久化---Redis设计与实现读书笔记

两个用于生成RDB文件的命令 save:会阻塞Redis服务器进程,直到RDB文件创建完毕,在阻塞期间,服务器不能处理任何命令请求bgsave:会派生出一个子进程,然后由子进程负责创建RDB文件,服务器经常(父进…

《redis设计与实现》 读书笔记

《redis设计与实现》 作者:黄健宏 读书笔记 一、前言 什么是redis: Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。简而言之redis就是放在远程网络上的一个key-va…

《Redis设计与实现》阅读:Redis底层研究之简单动态字符串SDS

除仅用于字符串字面量的情况外,对于可以被修改值的字符串的表示,Redis底层并没有采用C语言传统的字符串表示,即以空字符结尾的字符数组,而是采用专门为其设计的简单动态字符串作为其默认字符串表示,其英文全称为Simple…

Redis秒杀功能设计与实现

前言 抢购问题不仅是电商类项目中一个重要的业务,也是许多开发人员在进阶过程中绕不开的问题,关于抢购,如果理清了前后的逻辑和里面涉及到的几个关键性的问题,问题就迎刃而解了 抢购中的几个常见问题 如何设计抢购功能?(表结构,以及整体的抢购思路)不借助中间件如何实…

Redis设计与实现阅读总结(一)数据结构和对象

Redis设计与实现阅读总结(一)数据结构和对象 最近团队几个人和我聊了下,加上我自己平时的反思,我发现自己问题确实很多 其中一个问题就是,自己学习东西没有系统性,没有总结 这次的博客算是一个总结的开始。…

(六)、Redis的AOF持久化---Redis设计与实现读书笔记

redisServer关于AOF的数据结构 /***Redis 服务器类*/ struct redisServer{...//AOF缓存区sds aof_buf;... }当服务器执行完一个写命令后,会一协议格式将被执行的写命令追加到服务器类的aof_buf缓存区的末尾。 AOF文件的写入、同步 写入、同步概念 写入&#xff…

Redis | 第8章 发布订阅与事务《Redis设计与实现》

第8章 发布订阅与事务 前言1. 发布订阅1.1 频道的订阅与退订1.2 模式的订阅与退订1.3 发送消息1.4 查看订阅消息 2. 事务2.1 事务的实现2.2 WATCH 命令的实现2.3 事务的 ACID 性质 最后 前言 参考资料:《Redis设计与实现 第二版》; 第三部分为独立功能…

AOF -- Redis 设计与实现

Redis 分别提供了 RDB 和 AOF 两种持久化机制: RDB 将数据库的快照(snapshot)以二进制的方式保存到磁盘中。AOF 则以协议文本的方式,将所有对数据库进行过写入的命令(及其参数)记录到 AOF 文件&#xff0c…

Redis设计与实现学习总结

Redis设计与实现学习总结 本文主要对Redis的设计和实现原理做了一个介绍很总结,有些东西我也介绍的不是很详细准确,尽量在自己的理解范围内把一些知识点和关键性技术做一个描述。如有错误,还望见谅,欢迎指出。 这篇文章主要还是参…

Redis的设计与实现(1):5种基本数据结构的底层实现

一、简单的动态字符串(SDS) Redis没有直接使用C语言传统的字符串表示,而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SDS作为Redis默认的字符串表示。 在Redis里,C字符…

Redis设计与实现总结

本文总结自《Redis设计与实现》一书,只打算总结Redis底层数据结构的实现。Redis的使用参考我的另一篇笔记Redis操作指南。 1 Redis概览 Redis是一个C语言编写的开源、非关系型内存数据库。它底层属于单线程、全内存操作,提供对象共享、引用计数和对象回…

Redis设计与实现

文章目录 第一部分:内部数据结构简单动态字符串(simple dynamic string)双端链表字典跳跃表 第二部分:内存映射数据结构整数集合intset压缩列表 redis数据类型对象处理机制(redisObject)字符串string哈希表hash列表list集合set有续集zset 第四部分&#…

redis的设计与实现

redis的设计和实现 第一部分、数据结构与对象 一、简单动态字符串: 在大多数情况下redis只会使用c字符串作为字面量,在大多情况下,redis使用SDS作为字符串表示。 比起C字符串,SDS具有五种优点: SDS结构里面会有一…

虚拟IP注册Nacos的问题

虚拟IP注册Nacos的问题 问题: A服务器有两个网卡,网卡 lo 绑定了 127.0.0.1 和一个虚拟IP,网卡 eth0 绑定了本地公网IP和一个虚拟IP。同样B服务器的网卡也是相同的配置,A、B服务器拥有的虚拟IP都是同一个地址。 当将A、B服务器部…