联邦学习中的non-iid总结

最近研究联邦学习(federated learning,FL)中的non-iid的解决办法时遇到瓶颈,写成博客将最近的工作总结一下,希望有大佬看到这篇博客不吝赐教。

什么是non-iid

先从维基百科引出独立同分布的定义:

在概率论与统计学中,独立同分布(英语:Independent and identically distributed,缩写为IID)是指一组随机变量中每个变量的概率分布都相同,且这些随机变量互相独立。

一组随机变量独立同分布并不意味着它们的样本空间中每个事件发生概率都相同。例如,投掷非均匀骰子得到的结果序列是独立同分布的,但掷出每个面朝上的概率并不相同。

那么non-iid的意思即变量之间非独立,或者非同分布。

  • 非独立:对象之间存在关系。例如以某人的行为为随机变量,在某时刻观测到行为behavior1,某时刻观测到行为behavior2,这两个行为之间可能有某种联系。例如一个人走在路上,淋雨了(behavior1),撑开伞(behavior2),它们之间有时序关系。
  • 非同分布:两次观测的概率分布相同。例如某变量服从均匀分布,我们进行了一次观测;过一会服从正态分布,我们又进行了一次观测。这两次观测的变量就是非同分布

什么是FL中的non-iid

在联邦学习中,non-iid的意思一般是值不符合同分布的情况,因为数据的分布肯定是独立的,但是它们不一定服从同一采样方法。例如全集中有100类图片,某设备中都是风景类图片,某设备中都是人物类及植物类图片,前者是一种分布(1/100),后者是另一种分布(2/100)。反之,如果某设备中有这100类图片,其他设备中也有这100类图片,那么它们就是同分布的。看看下面的例子:

where we first sort the data by digit label, divide it into 200 shards of size 300, and assign each of 100 clients 2 shards. This is a pathological non-IID partition of the data, as most clients will only have examples of two digits. [1]

The training data are non-iid, that is, a device’s local data cannot be regarded as samples drawn from the overall distribution. The data available locally fail to represent the overall distribution. [2]

For the non-IID setting, each device still owns 600 samples, yet 80% of which come from a dominant class and the remaining 20% belong to other classes. For example, a “0”-dominated device has 480 data samples with the label “0”, while the remaining 120 data samples have labels evenly distributed among “1” to “9”[3]

For non-IID setting, the data is sorted by class and divided to create two extreme cases: (a) 1-class non-IID, where each client receives data partition from only a single class, and (b) 2-class non-IID, where the sorted data is divided into 20 partitions and each client is randomly assigned 2 partitions from 2 classes[4]

Non-identical client distributions:[5]

  • Feature distribution skew (covariate shift):同一类别,有不同的表现形式,如同样的数字,不同人的写法不一样
  • Label distribution skew (prior probability shift):同样的标签,有不同的表现形式,
  • Same label, different features (concept shift):
  • Same features, different label (concept shift)
  • Quantity skew or unbalanced:

可以发现它们的共同点:每个设备中的数据分布不能代表全局数据分布,即每个设备中类别是不完备的。可以任意设定哪些比例的设备拥有哪些比例类别的样本。例如10分类问题中,5%的设备有3类样本,10%的设备有5类样本,30%的设备有10类样本……哪些比例的设备、哪些比例的样本类别都是可以改变的参数,从而决定了non-iid的程度。此外,每个类别样本的数量也会影响non-iid程度,但数量上的不同一般描述为unbalanced。

如何衡量non-iid的程度

[2]给出了non-iid的一个评价方法,即全局目标函数的最小值与本地目标函数最小值之和。设想non-iid程度最小,即每个设备中分布都一样,那么本地目标函数最小值的加权和就是全局目标函数的最小值。现在由于non-iid从中作梗,每个本地目标函数优化方向都出了偏差,最小值是最适合本地那两类数据的(如手写数字1和2),它们加权平均在一起,不等于全局目标函数的最小值。

在这里插入图片描述
在这里插入图片描述
下图是异构程度的量化:
在这里插入图片描述
解释:
F∗=∑k=1NpkFk(w∗) {F^*} = \sum\limits_{{\rm{k}} = 1}^N {{p_k}{F_k}({w^*})} F=k=1NpkFk(w)
那么
Γ=∑k=1NpkFk(w∗)−∑k=1NpkFk∗ \Gamma = \sum\limits_{{\rm{k}} = 1}^N {{p_k}{F_k}({w^*})} - \sum\limits_{{\rm{k}} = 1}^N {{p_k}{F_k}^*} Γ=k=1NpkFk(w)k=1NpkFk
即使用一个参数的全局模型的目标函数与使用n个参数的本地模型的目标函数之和 的差。

non-iid带来的问题

降低模型表现[4]:
the accuracy of convolutional neural networks trained with F edAvg algorithm can
reduce significantly, up to 11% for MNIST, 51% for CIFAR-10 and 55% for keyword spotting (KWS)datasets, with highly skewed non-IID data.如下图红线所示。
在这里插入图片描述

证明FedAvg在non-iid情况下收敛

[2]证明了部分设备参与、全部设备参与情况下的收敛性。其中定理3说明要达到指定的准确率ε,需要通信的轮数T/E等于
在这里插入图片描述
在这里插入图片描述

还有一些参数的定义请参考原文。这个公式告诉我们,non-iid也是能收敛的,要减少通信轮数,可以从哪些变量入手:

  1. E
    E太小意味着系统轮次(通信次数)大,造成通信负担;E太大意味着系统较低的收敛率。需要调整E,在通信效率和收敛速度之间做一个权衡
  2. K
    一个足够大的K是必要的,能加速收敛。但是无须在每轮训练中将K设置得尽可能大(如接近N)
  3. η
    为了抵消本地训练中E步的SGD带来的bias,学习率η必须递减,否则即使是在全部梯度下降中,收敛率也会变成Ω(η),不一定能收敛到最优值

这篇文章的证明过程非常详尽,我只看懂了部分,后面有兴趣再研究。

如何缓解non-iid带来的挑战


引用

[1] McMahan B, Moore E, Ramage D, et al. Communication-efficient learning of deep networks from decentralized data[C]//Artificial Intelligence and Statistics. PMLR, 2017: 1273-1282.
[2] Li X, Huang K, Yang W, et al. On the convergence of fedavg on non-iid data[J]. arXiv preprint arXiv:1907.02189, 2019.
[3] Wang H, Kaplan Z, Niu D, et al. Optimizing Federated Learning on Non-IID Data with Reinforcement Learning[C]//IEEE INFOCOM 2020-IEEE Conference on Computer Communications. IEEE, 2020: 1698-1707.
[4] Zhao Y, Li M, Lai L, et al. Federated learning with non-iid data[J]. arXiv preprint arXiv:1806.00582, 2018.
[5] Kairouz P, McMahan H B, Avent B, et al. Advances and open problems in federated learning[J]. arXiv preprint arXiv:1912.04977, 2019.

<think>嗯,用户的问题是想了解"Non-IID"的含义和定义。从对话历史来看,用户之前可能接触过联邦学习相关的资料,引用了FedGAN、联邦遗传编程和Dirichlet划分等内容,这些都和非独立同分布数据有关。 用户提到的几个引用很有意思: 引用[1]关于FedGAN在非IID数据下的鲁棒性,提到了用λ和σ参数模拟不同程度的数据分布差异。引用[2]讨论了客户端数量对非IID联邦学习的影响,还提到可视化展示误差变化。引用[4]则给出了用Dirichlet分布划分Non-IID数据的代码实现。这些其实都是Non-IID问题的具体应用场景。 考虑到用户可能是联邦学习领域的研究者或工程师,需要从概率统计基础讲起。Non-IID的核心在于打破传统机器学习的数据假设,需要重点解释两点:为什么真实场景数据往往是非IID的,以及这对分布式学习带来的挑战。 上次回答关于Non-IID定义时已经建立了四个维度的分析框架(分布、时空、相关、量级),这次可以延续这个结构但更聚焦定义本身。特别要强调Dirichlet划分的数学表达,因为用户展示的代码正是基于这个原理,用$p(x_i,y_i) \neq p(x_j,y_j)$这样的概率不等式可能更直观。 用户引用的材料里提到DAM机制应对Non-IID问题,这个细节值得展开,但当前问题集中在定义层面,更适合作为补充说明。可视化部分提到的误差折线图和客户端贡献网络图,其实是Non-IID影响的具体表现,可以留到后续讨论影响时展开。 </think>在机器学习和统计学中,**Non-IID(非独立同分布)** 指数据样本既不相互独立(Independent),也不服从相同分布(Identically Distributed)。理解其定义需拆解两个核心属性: 1. **非独立(Non-Independent)** 样本之间存在相关性或依赖关系。即: $$P(x_i, x_j) \neq P(x_i)P(x_j) \quad (i \neq j)$$ 例如:时间序列数据中相邻时刻的观测值、社交网络中关联用户的行为数据。 2. **非同分布(Non-Identically Distributed)** 样本来自不同的概率分布。即: $$P(x_i) \neq P(x_j) \quad (i \neq j)$$ 例如:不同医院收集的医疗数据(设备/人群差异)、不同地区用户的购物偏好。 --- ### 🔍 Non-IID 的典型表现 在联邦学习场景中(引用[1][2][4]),Non-IID 常表现为以下形式: | **维度** | **表现举例** | **影响** | |----------------|-----------------------------------------------------------------------------|-----------------------------------| | **标签分布偏斜** | 客户端A主要含"猫"图片,客户端B主要含"狗"图片(引用[4]的Dirichlet划分) | 局部模型偏向本地数据,全局聚合困难 | | **特征分布偏斜** | 客户端A的图片多来自白天场景,客户端B多来自夜间场景 | 模型泛化能力下降 | | **时序相关性** | 同一客户端的血糖监测数据具有时间依赖性(引用[2]的误差变化分析) | 破坏数据独立性假设 | | **数据量差异** | 客户端A有10,000条数据,客户端B仅有100条(引用[2]客户端贡献可视化) | 小数据客户端贡献被淹没 | --- ### ️ Non-IID 的生成方法(引用[4]) 通过 **Dirichlet 分布** 可模拟不同程度的标签偏斜: ```python import numpy as np def dirichlet_distribution_noniid(dataset, num_clients, alpha): class_indices = [[] for _ in range(10)] # 按标签分类 for idx, (_, label) in enumerate(dataset): class_indices[label].append(idx) client_indices = [[] for _ in range(num_clients)] for indices in class_indices: # 对每个类别划分 np.random.shuffle(indices) proportions = np.random.dirichlet([alpha] * num_clients) # Dirichlet采样 split_points = (np.cumsum(proportions) * len(indices)).astype(int)[:-1] splits = np.split(indices, split_points) # 划分到客户端 for i in range(num_clients): client_indices[i].extend(splits[i]) return client_indices ``` - **参数 `alpha` 控制偏斜程度**: $ \alpha \to 0 $ 时数据高度非IID(客户端仅含1-2类) $ \alpha \to \infty $ 时趋近IID分布 --- ### ⚡ Non-IID 的挑战与应对(引用[1][2]) 1. **模型漂移(Model Drift)** - 问题:各客户端优化方向冲突 → 全局模型收敛困难 - 解法:FedGAN的动态聚合权重(DAM)机制,根据优化难度调整权重[^1] 2. **客户端贡献不均衡** - 问题:数据量小的客户端被大客户端主导 → 网络图边权失衡(引用[2]可视化) - 解法:联邦遗传编程中优化客户端数量选择,平衡数据分布[^2] 3. **泛化性下降** - 问题:局部模型过拟合本地数据 → 在新客户端表现差 - 解法:通过生成对抗网络(GAN)合成跨域数据弥补分布差异[^1] --- ### 💎 核心总结 **Non-IID = 数据依赖性 + 分布差异性**,其本质是现实世界数据复杂性的体现(如医疗、金融场景)。联邦学习中的关键技术(如动态聚合、Dirichlet划分、贡献可视化)均致力于解决由此引发的模型分裂与公平性问题[^1][^2][^4]。 --- ### ❓ 相关问题 1. **Dirichlet分布参数 $\alpha$ 如何影响联邦学习的模型性能?**[^4] 2. **动态聚合权重(DAM)在FedGAN中是如何计算客户端权重的?**[^1] 3. **为什么客户端数量增加反而可能导致全局模型性能下降(引用[2]柱状图现象)?** 4. **如何设计实验可视化Non-IID数据下的客户端贡献差异(如网络图)?**[^2] [^1]: FedGAN的动态聚合机制缓解Non-IID影响 [^2]: 客户端数量与数据分布对联邦遗传编程的影响 [^4]: Dirichlet分布划分Non-IID数据的方法
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值