【问题标题】:Training loss or test loss?训练损失还是测试损失?
【发布时间】:2020-11-09 11:22:08
【问题描述】:

为了操纵我的模型的指标,我想知道,我看到 federated_train_data 的损失或 federated_test_data 的损失? 我读到了:

训练损失看起来比评估损失好得多:当使用联合平均(图像分类的联合学习教程中使用的优化算法)时,需要仔细解释指标,因为它们与集中模型训练有细微差别。尤其是训练损失,它是许多序列步骤或批次的平均值。这意味着在一轮之后,每个客户端可能已经很好地将模型与他们的本地数据拟合(获得了很高的准确性),但是在将这些更新平均到全局模型中之后,全局模型可能仍然远离“好”,导致测试准确率低。此外,10 轮可能太少;一篇关于联邦学习的原始学术论文展示了至少 20 轮,直到 99% 的准确率(McMahan 2016),以及非 IID 数据的 100 多轮。

所以我想知道哪个更适合使用此代码评估指标:

evaluation = tff.learning.build_federated_evaluation(model_fn)
    test_metrics = evaluation(state.model, federated_test_data)

或者这个:

evaluation = tff.learning.build_federated_evaluation(model_fn)
    metrics = evaluation(state.model, federated_train_data)

谢谢

【问题讨论】:

    标签: tensorflow-federated


    【解决方案1】:

    您概述的选项本身没有好坏之分。它基于不同的数据计算相同的指标。哪个“更好”真的取决于您需要它。


    引用的段落不是指您在下面概述的评估指标,而是指在联邦学习中在训练过程中计算出的指标。它警告您,训练损失的含义可能与您可能习惯于其他(非 FL)机器学习设置的含义略有不同。这是因为在局部训练期间的各个梯度步骤之间,针对不同的模型有效地计算了损失。因此,在通过监测训练损失得出结论时,您应该小心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 2019-11-29
      • 2015-10-28
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多