与DP FedAvg联合的TensorFlow中的每个示例剪辑
我试图使用EMNIST数据集训练一个差异私有的联邦模型,我将与DP FedAvg联合的TensorFlow中的每个示例剪辑,tensorflow,tensorflow2.0,tensorflow-federated,Tensorflow,Tensorflow2.0,Tensorflow Federated,我试图使用EMNIST数据集训练一个差异私有的联邦模型,我将DP查询附加到aggregation\u过程。此外,我使用SGD作为客户端和服务器优化器,将服务器学习率设置为1,从而与DP-FedAvg算法类似 查询是: dp_query = tff.utils.build_dp_query( clip=0.6 noise_multiplier=1.2, expected_total_weight=100, adaptive_clip_learning_rate=0,
DP查询
附加到aggregation\u过程
。此外,我使用SGD
作为客户端和服务器优化器,将服务器学习率设置为1,从而与DP-FedAvg
算法类似
查询是:
dp_query = tff.utils.build_dp_query(
clip=0.6
noise_multiplier=1.2,
expected_total_weight=100,
adaptive_clip_learning_rate=0,
target_unclipped_quantile=0.5,
clipped_count_budget_allocation=0.1,
expected_clients_per_round=100
)
此查询执行哪种类型的剪裁,是批剪裁还是按示例剪裁
在TFP
中,使用每个示例剪辑的选项是将num_microbatches
设置为None
,因此默认为batch_大小
如何在联邦设置中执行类似操作,并在批处理剪裁和每个示例剪裁之间切换?DPQuery只指定如何剪裁,而不指定剪裁的内容。在联合上下文中,整个客户端更新都被剪裁。可以说,每个客户端的更新功能类似于集中式(非联邦)上下文中的微批处理。这提供了强大的“用户级”DP保证。将客户端分组为“客户端微批次”不会有太大用处。您可能需要查看
tff.aggregators.differentilyprivateFactory.gaussian\u fixed
,这是一种使用您正在使用的选项构建聚合过程的更简单方法。