【问题标题】:TFF Federated Learning, Evaluation ApproachTFF 联邦学习,评估方法
【发布时间】:2020-06-11 11:46:14
【问题描述】:

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

将评估函数与 TFF 结合使用,您应该在个人客户级别还是全局级别进行验证。即

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

例子,

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 从可用客户端的域中随机抽样。?

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

【问题讨论】:

    标签: machine-learning tensorflow-federated


    【解决方案1】:

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

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

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

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

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

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

    在 TensorFlow Federated 中,可以通过更改 tff.learning.Model 上的 federated_output_computation 属性来调整跨客户端计算/聚合指标的各种方法,然后将此模型(或者更确切地说,模型构建函数)传递给 @987654323 @。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      相关资源
      最近更新 更多