Machine learning TFF联合学习、评估方法

Machine learning TFF联合学习、评估方法,machine-learning,tensorflow-federated,Machine Learning,Tensorflow Federated,使用典型AI/ML模型进行验证是基于本地可用的所有数据。 将数据拆分为80/20%的拆分、80%的培训数据和20%的测试/评估数据。 这种情况不适用于FL范式 使用TFF的评估函数,您应该在个人客户级别或全局级别进行验证。i、 e 下一个单词预测示例场景: 从解决方案开发人员的角度来看,您可能希望评估更多用户的模型准确性,但从单个用户的角度来看,您希望执行下一个单词预测模型以满足您的个人需求 例如 Eval Loop. NUM_ROUNDS = 10 for round_num in range

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

使用TFF的评估函数,您应该在个人客户级别或全局级别进行验证。i、 e

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

例如

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向分割法;首先将客户机划分为训练和测试客户机,然后将每个客户机上的数据划分为用于个性化任务的数据和用于评估个性化模型的数据

这可能与不同问题领域中存在的问题有根本的不同。例如,在交叉思洛存储器FL设置中,可以想象样本来自相同的分布,但由于某些原因,一个思洛存储器比其他思洛存储器保存更多的数据。我们可以在这里想象一个医疗环境(做出一个相当不现实的假设,即这里没有潜在因素),我们假设,例如,医疗图像是从同一个发行版中采样的,但更大的提供商只是拥有更多。在这个设置中,我认为我们可以根据每个示例来评估我们培训的模型,因为用户-客户机映射发生故障,并且我们希望为其部署模型的用户映射到“示例”比这里的“客户机”更好(当然,在这个设置中,客户机映射到思洛存储器)

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

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

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