问题描述
我使用具有 6 个类的人类活动识别 (HAR) 数据集,使用联邦学习 (FL)。在这种情况下,我通过将 (1) 每个类数据集分配给不同的 6 个工人,(2) 两个类分配给 3 个不同的工人,以及 (3) 三个类分配给 2 个不同的工人来实现非 IID 数据集。
当我运行 FL 过程时,场景 (3) > (2) > (1) 的验证准确性。我希望所有场景都能获得几乎相同的验证准确度。对于每个场景,我都使用相同的超参数设置,包括批量大小、shuffle 缓冲区和模型配置。
非 IID 数据集在 FL 中很常见,还是我的结果有问题?
解决方法
每个工人只有一个(和所有)一个标签的场景可以被认为是联合平均的“病态不良”非 IID。
在这种情况下,每个工人可能只学习预测它拥有的标签。该模型不需要区分任何特征:如果一个工人只有第 1 类,它可以预测第 1 类并获得 100% 的准确率。每一轮,当所有的模型更新被平均时,全局回到一个模型,只以 1/6 的概率预测每个类。
每个worker的示例分布越接近全局分布(或彼此之间,即客户端数据集的IID越大),其本地训练将产生与全局模型相同方向的更新越接近平均更新,导致更好的训练结果。