TFF联合学习,评估方法

时间:2020-06-11 11:46:14

标签: machine-learning tensorflow-federated

使用典型的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,以从可用客户端的域中随机采样?

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

1 个答案:

答案 0 :(得分:0)

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

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

在论文Improving Federated Learning Personalization via Model Agnostic Meta Learning中,有人认为对于个性化应用程序,应在每个客户端级别上对评估进行加权,而与每个客户端拥有多少数据无关。这种说法在直觉上是合理的:假设我们在移动应用程序中使用联合个性化,我们可能希望针对平均未来用户的体验进行优化,这可以通过按客户加权的平均数比按用户加权的平均值更好地建模。 -示例加权平均值。也就是说,我们不希望使我们的应用程序工作更好地适应那些使用的用户,而是希望使我们的应用程序在整个用户中的平均表现更好。此外,该参考文献采用四向拆​​分。客户首先被划分为训练和测试客户,然后每个客户上的数据被划分为用于个性化任务的数据和评估个性化模型的数据。

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

我认为其他问题设置也需要其他评估策略,例如客户之间的中位数准确性或客户之间的最低准确性。

就像在所有数据科学或ML应用程序中一样,我们应该在FL中认真思考要尝试优化的内容,并根据该指标定制评估。我认为FL的主要区别在于前端的此问题更清楚,我认为这是框架的功能。

在TensorFlow Federated中,可以通过更改tff.learning.Model上的federated_output_computation属性,然后传递此模型(或更确切地说是模型构建功能)来调整跨客户端计算/汇总指标的各种方法)到build_federated_evaluation_process