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

问题描述

我正在尝试使用 EMNIST 数据集训练差异私有联合模型,我已将 DP-Query 附加到 aggregation_process。此外,我通过使用 DP-FedAvg 作为客户端和服务器优化器并将服务器学习率设置为 1 来类似于 SGD 算法。

查询是:

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 保证。将客户端分组为“客户端微批次”并没有多大用处。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...