TensorFlow Federated 中的每个示例剪辑与 DP-FedAvg

Per example clipping in TensorFlow Federated with DP-FedAvg

我正在尝试使用 EMNIST 数据集训练差分隐私联合模型,我已将 DP-Query 附加到 aggregation_process。此外,我通过使用 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_size

我怎样才能在这里做类似的事情,并在联合设置中的批量裁剪和每个示例裁剪之间切换?

DPQuery只指定如何裁剪,没有指定裁剪什么。在联合上下文中,整个客户端更新都被剪掉了。您可以说每个客户端的更新功能类似于集中式(非联合)上下文中的微批处理。这提供了强大的“用户级”DP保证。将客户分组为“客户微批”没有多大用处。