1

我一直在尝试使用 TF Federated 在图像分类的联邦学习笔记本教程中描述学习过程(准确性和损失)。

通过修改 epoch 超参数,我看到了收敛速度的重大改进。从 5、10、20 等更改 epoch。但我也看到训练准确度的大幅提高。我怀疑正在发生过度拟合,但我评估测试集的准确性仍然很高。

想知道发生了什么。?

我的理解是 epoch 参数控制每轮训练每个客户端的前/后道具的数量。这个对吗 ?因此,即 10 轮训练 10 轮的 10 轮训练将是 10 轮 X 10 客户端 X 10 轮。意识到需要更大范围的客户等,但我希望在测试集上看到更差的准确性。

我能做些什么来看看发生了什么。我可以使用带有学习曲线之类的评估检查来查看是否发生过拟合吗?

test_metrics = evaluation(state.model, federated_test_data) 似乎只给出一个数据点,我怎样才能得到每个验证的测试示例的单独测试准确性?

4

1 回答 1

0

增加客户端 epoch 的数量确实可以提高每轮收敛速度;但是您绝对正确,存在过度拟合的风险。

在联邦平均算法中,客户端 epoch 的数量决定了每个客户端在更新全局模型之前所做的“连续进步”(或学习)的数量。更多的时期将导致每轮更多的局部进展,这可以表现为更快的每轮收敛速度。然而,将其与在所有客户端上看到的示例数量进行对比可能会显示出更相似的收敛速度。

在联合优化设置中,存在新的过度拟合风险,这可能与每个客户端数据集的非IID程度相关。如果每个客户端数据集具有与全局数据分布相同的分布,则可以使用用于非联合优化的相同做法。每个客户端数据集与“全局”数据集的相似性越低,在后续轮次中使用大量客户端 epoch 时,就越有可能出现“漂移”(客户端收敛到不同的最佳点)。在此设置中,训练准确度仍然很高,因为每个客户端在本地训练期间都很好地适应了自己的本地数据。然而测试准确性不太可能提高,因为全局模型平均值可能会平均非常小(不同的客户端局部最优点相互抵消)。普拉内思等。al对此进行了一些讨论。

于 2020-05-29T12:54:36.033 回答