在联邦学习中,模型精度是通过汇总来自去中心化客户端的性能指标并在保护数据隐私的同时进行评估的。每个客户端使用自己的测试数据在本地计算精度,然后中央服务器将这些结果结合起来以估计全局模型的性能。例如,在经过一轮训练后,服务器会将更新后的模型发送给所有客户端,客户端再使用本地数据集(例如,预留的 20% 数据)对其进行测试。服务器会计算跨客户端的平均精度或 F1 分数等指标,以评估整体有效性。这种方法避免了原始数据的集中化,但需要仔细处理数据分布和客户端参与方面的差异。
一个关键挑战是管理跨客户端的非独立同分布(non-IID)数据。例如,在联邦医疗场景中,一家医院可能专注于癌症数据,而另一家则侧重于心血管病例。如果每个医院只在自己的本地测试集上评估模型,汇总的精度可能会掩盖模型在代表性不足的病症上的糟糕表现。为了解决这个问题,一些框架采用分层抽样或根据数据集大小为客户端指标分配权重。例如,拥有 10,000 个样本的客户端对全局精度分数的贡献可能比拥有 100 个样本的客户端更大。此外,联邦评估等技术允许客户端在安全存储在服务器上的共享验证集上计算指标,但这需要仔细的隐私保护措施。
实际实现细节非常重要。优先考虑通信效率——客户端可能只发送汇总统计数据(例如,混淆矩阵)而不是原始预测结果,以减少开销。差分隐私等隐私保护方法可应用于汇总指标,以防止泄露关于单个测试样本的信息。TensorFlow Federated 或 PySyft 等工具提供了用于联邦评估的内置函数,可以自动化指标聚合等任务。例如,使用 TensorFlow Federated,开发者可以定义一个 tff.learning.build_federated_evaluation
函数,该函数遍历客户端数据集,计算指标,并对结果取平均值。然而,开发者仍需验证本地测试集是否具有代表性,以及客户端参与是否一致,以避免结果偏差。