2

我正在使用“DP-FedAvg”算法训练一个 DP 联合学习模型,该算法基于以下论文:

学习差分私有循环语言模型

本文提出了两种规范裁剪技术“平面裁剪”和“逐层裁剪”,然后使用“逐层裁剪”进行实验。

在 TFF 的情况下,当将 DP 查询和聚合过程附加到联合模型时,默认实现哪种裁剪技术?有没有办法指定使用的剪辑技术?

4

1 回答 1

3

您可以使用 获得基本的推荐设置tff.learning.dp_aggregator,并将其用作

iterative_process = tff.learning.build_federated_averaging_process(
    ...,
    model_update_aggregation_factory=tff.learning.dp_aggregator(...))

有关如何在一般学习算法中使用它的指导,请参阅教程:调整推荐的学习聚合

使用的默认剪裁方法对应于“平面剪裁”,如您链接到的论文中所述。但是,裁剪规范不是固定的,而是根据前几轮训练中看到的值自动调整。有关详细信息,请参阅文档和论文Differentially Private Learning with Adaptive Clipping

如果您想使用固定的裁剪规范my_clip_norm,您可以查看实现并查看可以修改哪些组件。我相信你应该能够简单地使用:

tff.aggregators.DifferentiallyPrivateFactory.gaussian_fixed(..., clip=my_clip_norm)

如果您想使用某种形式的逐层裁剪,则需要编写自己的聚合器。实施tff.aggregators.DifferentiallyPrivateFactory可能是一个好的开始,另请参阅教程实施自定义聚合

于 2021-05-21T10:25:17.863 回答