我正在尝试使用高斯自适应裁剪几何方法实现一个差分私有FL二进制分类模型。
aggregation_factory = tff.aggregators.DifferentiallyPrivateFactory.gaussian_adaptive(
noise_multiplier=0.6,
clients_per_round=10,
initial_l2_norm_clip=0.1,
target_unclipped_quantile=0.8,
learning_rate=0.2)我知道initial_l2_norm_clip是根据target_unclipped_quantile值更新的裁剪规范的初始值。
对于特定的模型,我们如何确定合适的initial_l2_norm_clip值?
当我将它(initial_l2_norm_clip)设置为0.1时,我得到的AOC值非常低(大约0.4),但是当我将它设置为更高的值1.0时,我得到了一个更好的AOC值(大约0.8),在这两种情况下,迭代过程记录的'clip‘度量都会增加(即从0.1到0.3和1.0到1.2)
我的模型运行了13轮,每轮有10个客户端,这有区别吗?
发布于 2021-06-03 14:17:41
我要指出的一件事是,一般来说,13轮训练相对较少。如果您运行更长时间的训练,我预计剪辑规范最终将稳定在相同的值附近,而不考虑初始值。
裁剪范数的自适应选择的要点是,初始范数的超参数配置不应该那么重要。如果您看到指标中报告的裁剪规范在训练期间增加,这意味着相对于运行时实际看到的值的target_unclipped_quantile,initial_l2_norm_clip很小。因此,你可以增加初始范数,它应该更快地匹配目标分位数。如果您想花时间调优此参数,还可以使用gaussian_fixed构造函数,并在整个训练过程中保持裁剪规范常量。
但是,请注意,如果您对不同的隐私感兴趣,较大的裁剪规范可能会降低您可以获得的保证。因此,需要探索权衡,以及训练模型的总轮数。
https://stackoverflow.com/questions/67810671
复制相似问题