3

使用典型的 AI/ML 模型进行验证取决于本地可用的所有数据。将数据拆分为例如 80/20% 拆分、80% 数据用于训练和 20% 用于测试/评估。这种情况不适用于 FL 范式。

使用带有 TFF 的评估函数,您应该在单个客户端级别还是在全局级别进行验证。IE

下一个词预测示例场景:从解决方案开发人员的角度来看,您可能希望评估更多用户的模型准确性,但从单个用户的角度来看,您希望为您的下一个词预测模型执行个人需求。

例子,

Eval Loop.
NUM_ROUNDS = 10
for round_num in range(1, NUM_ROUNDS+1):
...
  federated_test_data = random_clients(emnist_test.client_ids,10)
  test_metrics = evaluation(state.model, federated_test_data)
  print('Validation round {:2d}, metrics={}'.format(round_num, test_metrics))
...

您在哪里有一个先前定义的函数 random_clients 从可用客户端的域中随机抽样。?

您是针对单个客户还是针对多个客户进行评估?

4

1 回答 1

1

这是一个很好的问题,并突出了联邦设置的一些复杂性。

简而言之,不幸的是,这里没有唯一的答案,除了:这取决于。让我们举几个例子。

通过模型不可知元学习改进联邦学习个性化的论文中,有人认为对于个性化应用程序,评估应该在每个客户端级别上加权,而与每个客户端拥有多少数据无关。这个论点在直觉上是合理的:假设我们在移动应用程序中使用联合个性化,我们可能希望针对未来用户的平均体验进行优化,每个客户端的加权平均值比每个示例的加权平均值更好地建模。也就是说,我们不希望让我们的应用程序更好地为那些使用更多的是,我们希望让我们的应用程序在用户之间平均运行得更好。此外,该参考论文采用了 4 路拆分;首先将客户端划分为训练和测试客户端,然后将每个客户端上的数据划分为用于个性化任务的数据和用于评估个性化模型的数据。

这可能与不同问题域中存在的问题根本不同。例如,在跨筒仓 FL 设置中,人们可能会想象样本来自相同的分布,但由于某种原因,一个筒仓比其他筒仓拥有更多的数据。可以在这里想象一个医学环境(做出相当不切实际的假设,即这里没有潜在因素),我们假设例如医学图像是从相同的分布中采样的,但是更大的提供者只是拥有更多的图像。在这种情况下,我认为我们将评估我们在每个示例上训练的模型是合理的在此基础上,随着用户-客户端映射发生故障,我们希望为其部署模型的用户在此处映射到“示例”而不是“客户端”(在此设置中,客户端映射当然是孤岛)。

我认为其他问题设置需要其他评估策略,包括跨客户端的中值准确度或跨客户端的最低准确度。

就像在所有数据科学或 ML 应用程序中一样,我们应该在 FL 中认真思考我们正在尝试优化的确切内容,并根据该指标调整我们的评估。我认为 FL 的主要区别在于这个问题在前端更加清晰,在我看来这是框架的一个特性。

federated_output_computation在 TensorFlow Federated 中,跨客户端计算/聚合指标的各种方法tff.learning.Model可以通过更改build_federated_evaluation_process.

于 2020-06-12T18:27:36.803 回答