2

在进行 PATE 分析时收到警告:

警告:可能没有使用足够的 l 值。增加“时刻”变量并再次运行。

from syft.frameworks.torch.differential_privacy import pate
data_dep_eps, data_ind_eps = pate.perform_analysis(teacher_preds=preds, indices=indices, noise_eps=0.1)
print("Data Independent Epsilon:", data_ind_eps)
print("Data Dependent Epsilon:", data_dep_eps)

在“pate.perform_analysis”分析函数中增加“moment”参数的值后,它已经消失了。但我想知道为什么会这样。

data_dep_eps, data_ind_eps = pate.perform_analysis(teacher_preds=preds, indices=indices, noise_eps=0.1,moments=20)
print("Data Independent Epsilon:", data_ind_eps)
print("Data Dependent Epsilon:", data_dep_eps)
4

1 回答 1

2

TL;DR:perform_analysis希望通过使用更细粒度的计算来仔细检查异常小的 epsilon 结果。

pate.perform_analysis函数遍历数据(技术上是隐私损失随机变量)并计算各种 epsilon。它使用moments参数来了解此迭代的粒度。使用默认值 8moments时,它将计算 8 个 epsilon。然后它返回计算出的 epsilon 的最小值,正如您在源代码中看到的那样。

当此函数返回一个非常小的数据相关 epsilon 时,可能是因为 A) 数据具有很高的一致性,或者 B) 计算不够精细,并且真正的 epsilon 更高。当仅计算 8 个 epsilon 时,它们可能恰好是数据中的异常,描绘了整个 epsilon 的过于乐观的图景!因此,该函数看到一个令人惊讶的小 epsilon 并警告您 - 可能希望增加moments变量以计算更多 epsilon 并确保您找到了真正的最小值。如果在增加moments参数时仍然得到相同的结果,那么您的数据可能具有很高的一致性,因此与数据无关的 epsilon 相比,它确实具有较小的数据相关 epsilon。

希望这对你在高层次上是有意义的。如果您想详细了解这背后的数学原理,可以查看启发源代码的研究论文

于 2019-10-27T20:26:31.817 回答