执行PATE分析时收到警告:
Warning: May not have used enough values of l. Increase 'moments' variable and run again.
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)
TL;DR:
perform_analysis
希望通过使用更细粒度的计算对异常小的epsilon结果进行双重检查。函数
pate.perform_analysis
遍历数据(技术上称为隐私丢失随机变量),并计算各种ε。它使用moments
参数来了解此迭代的粒度。当使用默认的8moments
时,它将计算8个ε。然后返回计算得到的ε的最小值,如in the source code所示当这个函数返回一个非常小的依赖于数据的ε时,可能是因为a)数据有很高的一致性,或者B)计算不够精细,实际ε更高。当只计算8个ε时,它们可能恰好是数据中的异常,描绘了一幅总体ε的过于乐观的画面!因此,函数会看到一个小得惊人的epsilon,并警告您-可能需要增加
moments
变量来计算更多的epsilon,并确保找到真正的最小值。如果在增加moments
参数时仍然得到相同的结果,则数据可能具有较高的一致性,因此与数据无关的ε相比,它确实具有较小的数据依赖ε希望这对你在高水平上是有意义的。如果您想了解这背后的数学细节,可以查看源代码的灵感来源the research paper
相关问题 更多 >
编程相关推荐