python - 如何在联邦学习中为客户权重添加噪音(差异隐私)?

我想在客户端的渐变中添加噪点。我将 tf.keras.optimizers.Adam() 修改为 DPKerasAdamOptimizer(),但它不起作用。

iterative_process = tff.learning.build_federated_averaging_process(
        model_fn=Create_tff_model,
        client_optimizer_fn=lambda: DPKerasAdamOptimizer(1,1.85))

错误是

AssertionError: Neither _compute_gradients() or get_gradients() on the differentially private optimizer was called. This means the training is not differentially private. It may be the case that you need to upgrade to TF 2.4 or higher to use this particular optimizer.

我可以使用 tff.learning.model_update_aggregator.dp_aggregator(noise_multiplier, client_per_round) 在服务器端添加噪音,但是如何在客户端添加噪音?

回答1

首先,看一下教程 https://www.tensorflow.org/federated/tutorials/federated_learning_with_differential_privacy,它展示了使用 tff.learning.dp_aggregator 的简单高斯机制。

如果您想自定义机制的细节,您可以查看 dp_aggregator 是如何实现的,特别是 tff.aggregators.DifferentiallyPrivateFactory 被 TensorFlow 隐私对象参数化,或者编写一个 https://www.tensorflow.org/federated/tutorials/custom_aggregators 从头开始。

请注意,使用 DPKerasAdamOptimizer 作为客户端优化器可能不是正确的路径,因为通常有趣的部分是将离开客户端的任何数据私有化,但客户端的中间步骤并不重要。

相似文章

sql-server - SQL 查询选择语法

假设我有一个table列客户和工作。我有行:客户1,作业1客户1,作业2客户1,作业3客户2,作业1客户2,工作2客户2,工作3客户3,工作1客户3,工作2客户3,工作3我有一个查询:Select*f...

sorting - 用于电池组装的锂电池分选机

我需要对具有k长度和尽可能相等的“块”总和的N个子向量(或块上的原始向量分段)上的向量进行排序。附言我知道repackr.com之类的网站,但我的课程作业需要此代码,不幸的是我无法更改主题。你可以说我...

随机推荐

最新文章