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

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

part 1:

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

怎么实现联邦学习中的Non-IID?_第1张图片

数据集是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的一篇论文为例:

怎么实现联邦学习中的Non-IID?_第2张图片

以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设置方式就是这些,后续若有补充则继续更新~)

你可能感兴趣的:(联邦学习)