【问题标题】:TFF : test accuracy fluctuateTFF : 测试精度波动
【发布时间】:2021-02-18 12:10:21
【问题描述】:

我用 TFF 训练了一个 ResNet50 模型,我使用测试数据上的测试准确率进行评估,但是我发现很多波动,如下图所示,请问如何避免这种波动?

【问题讨论】:

    标签: tensorflow-federated federated-learning


    【解决方案1】:

    我会说这样的行为通常是随机优化的预期行为。固有的差异会导致您在好的解决方案周围摇摆不定。在查看准确度指标时,优化目标的方差和属性的大小控制着波动的幅度。

    对于普通 SGD,降低学习率会降低方差并减慢收敛速度。

    对于联邦学习的优化方法,情况有点复杂,但是降低客户端学习率,或者减少本地步骤的数量(同时保持其他事情相同)可能会有类似的效果,通常包括减慢收敛速度。更多详细信息可以在https://arxiv.org/abs/2007.00878 中找到,其他答案中也提到了。潜在地降低跨轮的客户学习率也可以奏效。详细信息也可能会有所不同,具体取决于您使用的优化方法。

    【讨论】:

      【解决方案2】:

      测试准确率是如何计算的?客户端训练了多少个本地 epoch?

      如果在一组保留的示例上测试全局模型,则客户端可能会在本地训练期间出现有害的过度拟合。随着全局模型趋于收敛,每个客户端最终都会训练出一个对他们来说效果很好的模型,但可能会偏离最佳全局模型(有时称为客户端漂移https://arxiv.org/abs/1910.06378)。当客户端的本地数据集的分布与全局分布非常不同时,可能会发生这种情况,并且更有可能发生在客户端学习率较高时 (https://arxiv.org/abs/2007.00878)。

      降低客户端学习率、减少步骤/批次的数量以及其他导致客户端在每轮通信轮次中做更少“工作”的方法可能会减少波动。

      【讨论】:

      • 感谢您的回答,我可以根据曲线决定轮数吗?
      猜你喜欢
      • 2021-06-19
      • 2020-07-25
      • 1970-01-01
      • 2020-06-04
      • 2019-02-10
      • 2020-12-17
      • 2018-12-30
      • 2020-07-08
      • 2016-10-01
      相关资源
      最近更新 更多