【问题标题】:Norm clipping technique in TFFTFF 中的范数裁剪技术
【发布时间】:2021-05-21 09:06:13
【问题描述】:

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

Learning Differentially Private Recurrent Language Models

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

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

【问题讨论】:

    标签: tensorflow-federated federated-learning


    【解决方案1】:

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

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

    有关如何在一般学习算法中使用它的指导,请参阅教程:Tuning recommended aggregations for learning

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

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

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

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

    【讨论】:

    • 对于每层裁剪,您可以构造一个 tensorflow_privacy nested_query 并将其传递给 DifferentiallyPrivateFactory 初始化程序。也就是说,我个人对每层剪辑的经验是它的性能不佳。对于给定的噪声水平,这意味着给定的总范数界限,每层剪裁更积极,导致更多偏差。例如,对于两个向量和范数限制为 1,最好将联合范数裁剪为 1,而不是将每个向量裁剪为 1/sqrt(2)。如果规范是 (.8, .4),则联合剪裁根本不会剪裁。向量越多,情况就越糟。
    • @GalenAndrew,感谢您的跟进,关于adaptive clipping 策略,是否有任何经验推荐值可以开始试验参数initial_l2_norm_cliptarget_unclipped_quantileclipped_count_budget_allocation 和@987654338 @ for EMNIST 数据集?
    • 是的,您使用tff.learning.dp_aggregator 获得的默认值是Thakkar et al., 2020 证明的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2018-09-04
    • 1970-01-01
    • 2014-07-16
    • 2014-06-13
    • 2010-10-14
    相关资源
    最近更新 更多