联邦学习中数据异质性对全局模型影响
基于开源的easyFL,本文介绍几种常见的模拟联邦学习时划分数据集的方法并做实验观察联邦学习中数据非独立同分布对全局模型的影响。实验用的数据集MNIST数据集,模拟10个客户端进行50轮训练。
划分数据集
- 划分的数据集与原数据集数据独立同分布;
- 划分的数据集服从$|{D_i(Y)}|=K$, 即划分后的每个数据集都只有$K$个标签种类的数据;
- 划分的数据集服从狄利克雷分布,$D_i$~$Dirichlet(\alpha P)$,其中$\alpha$越大,划分的数据集与原数据集分布越接近;
- 使用对数正态分布来确定每个客户端的数据数量,Log-Normal Distribution。
划分数据集的可视化
划分数据集的代码。
1 | num_clients = 10 |
可视化结果划分结果,独立同分布如图1所示。
图1 划分后的数据集与原数据集独立同分布
|
|
|
图2 从左到右分别为当$\alpha$为0.1,1.0,5.0时,狄利克雷分布划分的数据集
|
|
|
图3 从左到右$K$分别等于1,5,9划分的数据集划分结果
实验
在划分的数据集上训练模型
模型选用CNN,代码如下。
1 | from torch import nn |
训练代码如下。
1 | import flgo.algorithm.fedavg as fedavg |
其中训练的参数选项如图4所示。
图4 训练参数选项
绘制训练结果
绘制训练结果的代码如下。
1 | import flgo.experiment.analyzer as al |
实验结果如图5所示,可以看出当客户端的数据非独立同分布的程度很大时,模型收敛性受到了很大的影响。
图5 实验结果