【指数机制代码实现】差分隐私代码实现系列(十)

写在前面的话

书上学来终觉浅,绝知此事要躬行

回顾

1、大多数隐私成本边界都是有上限的,但它们有时代表非常宽松的上限,即真正的隐私成本远低于上限。开发差分隐私的新变体的主要动机是实现更严格的隐私成本限制,特别是对于迭代算法,同时保持在实践中有用的隐私定义。

2、无论我们运行多少个查询,在 ϵ \epsilon ϵ-差分隐私下,我们都不会比顺序组合做得更好。这是因为顺序组合与矢量化查询一样好,我们不能做得比这更好。

3、在顺序组合的情况下,我们可以使用高级组合定理。所有这些加起来,在高级组合定理的情况下,界限要宽松得多。相比较而言"矢量化"版本增长得更慢。我们应该能够在顺序组合方面做得更好!

4、事实证明,差分隐私的定义可以直接用称为最大散度的东西来表示。在统计学中,散度是测量两个概率分布之间距离的一种方式 ,这正是我们想要为差分隐私做的事情。

5、Rényi差分隐私的主要优点是高斯机制的紧密组合,而这种组合优势不需要特殊的高级组合定理。

6、基于这个顺序组合定理,运行 ( α , ϵ ˉ ) (\alpha, \bar{\epsilon}) (α,ϵˉ)-RDP 机制 k k k次得到 ( α , k ϵ ˉ ) (\alpha, k\bar{\epsilon}) (α,kϵˉ)-RDP.对于给定的噪声水平(即 σ 2 \sigma^2 σ2的给定值),使用 RDP 的顺序组合限制重复应用高斯机制的隐私成本,然后转换为 ( ϵ , δ ) (\epsilon, \delta) (ϵ,δ)-差分隐私,通常会产生比直接在 ( ϵ , δ ) (\epsilon, \delta) (ϵ,δ)差分隐私中执行合成(即使使用高级合成)低得多的隐私成本。因此,Rényi差分隐私背后的思想已被用于在最近的许多迭代算法中大大改善隐私成本会计,包括Google的Detensorflow的差异私有版本。

7、zCDP这是一个比RDP更强的要求,因为它限制了许多阶数 α \alpha α的Rényi散度。但是,随着 α \alpha α的增长,边界会变得更加宽松。

8、对于添加的相同数量的噪声,RDP 和 zCDP 下的合成会导致 ϵ \epsilon ϵ的值变小。该算法在所有变体下都是相同的(即,它在每种情况下都会添加相同数量的噪声),因此这意味着RDP和zCDP为同一算法提供了更严格的隐私成本限制。

9、首先要注意的是,在 zCDP 或 RDP 下使用顺序组合比使用带有 ( ϵ , δ ) (\epsilon, \delta) (ϵ,δ)-差分隐私的高级组合要好得多。使用高斯机制构建迭代算法时,应始终使用这些变体。

10、这种差异的实际效果是,在使用RDP时必须仔细选择 α \alpha α,以便尽可能严格地约束隐私成本。这通常很容易做到,因为算法通常由 α \alpha α参数化。结果,我们可以简单地测试 α \alpha α的多个值,看看哪一个值导致最小的相应 ϵ \epsilon ϵ

指数机制

指数机制大家应该都略有了解,但是应该都停留在表面的理解上,这次我们来挖一挖指数机制的本质,如何去定义、实现和应用指数和报告噪声最大值机制。并且清楚在实践中应用指数机制的挑战和学习到的这些机制的优点。

发明指数机制的动机

到目前为止,我们看到的基本机制(拉普拉斯和高斯)都集中在数值答案上,并直接给答案本身增加噪声。

如果我们想返回一个精确的答案(即没有增加噪音),但仍然保留差分隐私,该怎么办?一种解决方案是指数机制,它允许从集合中选择"最佳"元素,同时保持差分隐私

分析人员通过指定一个评分函数来定义哪个元素是"最佳"的,该评分函数为集合中的每个元素输出一个分数,并定义要从中选取的事物集。该机制通过近似最大化它返回的元素的分数来提供差分隐私,换句话说,为了满足差分隐私,指数机制有时会从没有最高分数的集合中返回一个元素。

指数机制的描述

指数机制满足 ϵ \epsilon ϵ-差分隐私:

1、分析人员选择一组 R \mathcal{R} R的可能输出

2、分析员指定一个具有全局敏感度 Δ u \Delta u Δu的评分函数 u : D × R → R u : \mathcal{D} \times \mathcal{R} \rightarrow \mathbb{R} u:D×RR

3、指数机制输出 r ∈ R r \in \mathcal{R} rR,其概率与以下值成正比:

exp ⁡ ( ϵ u ( x , r ) 2 Δ u ) \exp \Big(\frac{\epsilon u(x, r)}{2 \Delta u} \Big) exp(2Δuϵu(x,r))
指数机制和我们之前看到的机制(例如拉普拉斯机制)之间最大的实际区别是,指数机制的输出始终是集合 R \mathcal{R} R的成员。当从有限集合中选择项目时,当嘈杂的答案没有意义时,这非常有用。

日期的例子

我们可能希望为大型会议选择一个日期,该日期使用每个参与者的个人日历来最大化参与者的数量而不会发生冲突,同时为日历提供差分隐私。

在日期中添加噪音没有多大意义:它可能会将星期五变成星期六,并显着增加冲突的数量。

指数机制非常适合此类问题:它选择一个没有噪音的日期 。

指数机制的特点

指数机制很有趣,原因如下:

1、该机制的隐私成本只是 ϵ \epsilon ϵ,而不管 R \mathcal{R} R的大小如何 - 接下来将对此进行详细介绍。

2、它适用于有限和无限集合 R \mathcal{R} R,但是当 R \mathcal{R} R是无限时,构建一个从适当的概率分布采样的实际实现可能非常具有挑战性。

3、它代表了 ϵ \epsilon ϵ-差分隐私的"基本机制":所有其他 ϵ \epsilon ϵ-差分私有机制都可以根据指数机制进行定义,并具有评分函数 u u u的适当定义。

有限集合的指数机制

直接上代码~

%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import pandas as pd
import numpy as np

adult = pd.read_csv("adult_with_pii.csv")
def laplace_mech(v, sensitivity, epsilon):
    return v + np.random.laplace(loc=0, scale=sensitivity / epsilon)
def pct_error(orig, priv):
    return np.abs(orig - priv)/orig * 100.0
    
options = adult['Marital Status'].unique()#人口普查中婚姻情况的种类

def score(data, option):#评估函数
    return data.value_counts()[option]/1000

score(adult['Marital Status'], 'Never-married')#未婚的人数/1000的值

在这里插入图片描述
有限集合的指数机制首先要计算集合中所有元素的评估值,然后根据其评估值计算其可能性,再归一化,再基于可能性来选择元素。差分隐私体现在根据评估值计算可能性部分。

def exponential(x, R, u, sensitivity, epsilon):
    # Calculate the score for each element of R
    scores = [u(x, r) for r in R]
    
    # Calculate the probability for each element, based on its score
    probabilities = [np.exp(epsilon * score / (2 * sensitivity)) for score in scores]
    
    # Normalize the probabilties so they sum to 1
    probabilities = probabilities / np.linalg.norm(probabilities, ord=1)

    # Choose an element from R based on the probabilities
    return np.random.choice(R, 1, p=probabilities)[0]

exponential(adult['Marital Status'], options, score, 1, 1)#有限集合为人口普查中有婚姻情况的人,元素为各种婚姻情况,评分函数前面提到了,敏感度是1,隐私成本是1

在这里插入图片描述

r = [exponential(adult['Marital Status'], options, score, 1, 1) for i in range(200)]
pd.Series(r).value_counts()

在这里插入图片描述
在这里插入图片描述
从这两幅图可以看出每次得到的结果不一样。

报告最大噪声算法

写到这里不禁会问我们可以使用拉普拉斯机制恢复指数机制吗?

在有限集合 R \mathcal{R} R的情况下,指数机制的基本思想 :从具有差分隐私的集合中进行选择 。在拉普拉斯机制方面提出了一个朴素的实现:

1、对于每个 r ∈ R r \in \mathcal{R} rR,计算一个嘈杂的分数 u ( x , r ) + L a p ( Δ u ϵ ) u(x, r) + \mathsf{Lap}(\frac{\Delta u}{\epsilon}) u(x,r)+Lap(ϵΔu)

2、输出具有最大噪声分数的元素 r ∈ R r \in \mathcal{R} rR

由于评分函数 u u u x x x 中是 Δ u \Delta u Δu敏感的,因此步骤 1 中的每个"查询"都满足 ϵ \epsilon ϵ-差分隐私。 因此,如果 R \mathcal{R} R包含 n n n元素,则上述算法通过顺序组合满足 n ϵ n\epsilon nϵ-差分隐私。

但是,如果我们使用指数机制,则总成本将只是 ϵ \epsilon ϵ!为什么指数机制要好得多?因为它发布的信息较少。

我们对上面定义的基于拉普拉斯的方法的分析是非常悲观的。在步骤 1 中计算的整组噪声分数实际上满足 n ϵ n\epsilon nϵ-差分隐私,我们可以释放整个内容。步骤 2 中的输出满足 n ϵ n\epsilon nϵ-差分隐私遵循后处理属性。

但是指数机制只释放具有最大噪声分数的元素的标识 ,而不是分数本身或任何其他元素的分数。

上面定义的算法通常被称为报告噪声最大算法,它实际上满足 ϵ \epsilon ϵ-差分隐私,无论集合 R \mathcal{R} R有多大 - 特别是因为它只释放具有最大噪声计数的元素的恒等式。

报告噪声最大值很容易实现,并且很容易看出它产生的结果与我们之前实现的有限集合的指数机制非常相似。

def report_noisy_max(x, R, u, sensitivity, epsilon):
    # Calculate the score for each element of R
    scores = [u(x, r) for r in R]

    # Add noise to each score
    noisy_scores = [laplace_mech(score, sensitivity, epsilon) for score in scores]

    # Find the index of the maximum score
    max_idx = np.argmax(noisy_scores)
    
    # Return the element corresponding to that index
    return R[max_idx]

report_noisy_max(adult['Marital Status'], options, score, 1, 1)

在这里插入图片描述

r = [report_noisy_max(adult['Marital Status'], options, score, 1, 1) for i in range(200)]
pd.Series(r).value_counts()

在这里插入图片描述
在这里插入图片描述
因此,当集合 R \mathcal{R} R是有限的时,指数机制可以用报告噪声最大值替换,但是当它是无限的呢?

我们不能轻易地将拉普拉斯噪声添加到一组无限的集合中。在这种情况下,我们必须使用实际的指数机制。

然而,在实践中,对无限集合使用指数机制通常是具有挑战性或不可能的。虽然很容易写下该机制定义的概率密度函数,但通常情况下,不存在有效的算法来从中采样。因此,许多理论论文呼吁指数机制来证明具有某些理想属性的差分私有算法"存在",但其中许多算法在实践中是不可能使用的。

指数机制作为差分隐私的基本机制

我们已经看到,使用拉普拉斯机制加上顺序组合无法恢复指数机制,因为我们无法捕捉到这样一个事实,即我们设计的算法不会释放所有噪声分数。

反过来呢?我们能从指数机制中恢复拉普拉斯机制吗?事实证明,我们可以!

考虑一个具有敏感性 Δ q \Delta q Δq的查询 q ( x ) : D → R q(x) : \mathcal{D} \rightarrow \mathbb{R} q(x):DR 。 我们可以通过添加拉普拉斯噪声来释放一个 ϵ \epsilon ϵ-差分私有答案: F ( x ) = q ( x ) + L a p ( Δ q / ϵ ) F(x) = q(x) + \mathsf{Lap}(\Delta q / \epsilon) F(x)=q(x)+Lap(Δq/ϵ)。此差分私有版本的 q q q的概率密度函数为:

P r [ F ( x ) = r ] = 1 2 b exp ⁡ ( − ∣ r − μ ∣ b ) = ϵ 2 Δ q exp ⁡ ( − ϵ ∣ r − q ( x ) ∣ Δ q ) \mathsf{Pr}[F(x) = r] =\frac{1}{2b} \exp\Big(- \frac{\lvert r - \mu \rvert}{b}\Big)\\ =\frac{\epsilon}{2 \Delta q} \exp\Big(- \frac{\epsilon \lvert r - q(x) \rvert}{\Delta q}\Big) Pr[F(x)=r]=2b1exp(brμ)=2Δqϵexp(Δqϵrq(x))
考虑一下当我们将指数机制的评分函数设置为 u ( x , r ) = − 2 ∣ q ( x ) − r ∣ u(x, r) = -2 \lvert q(x) - r \rvert u(x,r)=2q(x)r时会发生什么。指数机制表示,我们应该从概率分布中抽样,与以下值成正比:

P r [ F ( x ) = r ] =    exp ⁡ ( ϵ u ( x , r ) 2 Δ u ) = exp ⁡ ( ϵ ( − 2 ∣ q ( x ) − r ∣ ) 2 Δ q ) = exp ⁡ ( − ϵ ∣ r − q ( x ) ∣ Δ q ) \mathsf{Pr}[F(x) = r] =\; \exp \Big(\frac{\epsilon u(x, r)}{2 \Delta u} \Big)\\ = \exp \Big(\frac{\epsilon (-2 \lvert q(x) - r \rvert)}{2 \Delta q} \Big)\\ = \exp \Big(- \frac{\epsilon \lvert r - q(x) \rvert}{\Delta q} \Big)\\ Pr[F(x)=r]=exp(2Δuϵu(x,r))=exp(2Δqϵ(2q(x)r))=exp(Δqϵrq(x))
因此,有可能从指数机制中恢复拉普拉斯机制,并且我们得到相同的结果(直到常数因子,指数机制的一般分析并非在所有情况下都很严格)。

指数机制是非常通用的,通常可以根据评分函数的定义 u u u重新定义任何 ϵ \epsilon ϵ- 差分私有机制。如果我们能够分析这个评分函数的灵敏度,那么差分隐私的证明是免费的。

另一方面,应用指数机制的一般分析有时以更宽松的边界为代价(如上面的拉普拉斯示例),并且根据指数机制定义的机制通常很难实现。指数机制通常用于证明理论下限(通过表明存在差分隐私算法),但实际算法通常使用其他方法复制相同的行为(如上面的报告噪声最大值的情况)。

总结

1、指数机制的理解:分析人员通过指定一个评分函数来定义哪个元素是"最佳"的,该评分函数为集合中的每个元素输出一个分数,并定义要从中选取的事物集。该机制通过近似最大化它返回的元素的分数来提供差分隐私,换句话说,为了满足差分隐私,指数机制有时会从没有最高分数的集合中返回一个元素。

2、指数机制和我们之前看到的机制(例如拉普拉斯机制)之间最大的实际区别是,指数机制的输出始终是集合 R \mathcal{R} R的成员。当从有限集合中选择项目时,当嘈杂的答案没有意义时,这非常有用。

3、由于评分函数 u u u x x x 中是 Δ u \Delta u Δu敏感的,因此步骤 1 中的每个"查询"都满足 ϵ \epsilon ϵ-差分隐私。 因此,如果 R \mathcal{R} R包含 n n n元素,则上述算法通过顺序组合满足 n ϵ n\epsilon nϵ-差分隐私。但是,如果我们使用指数机制,则总成本将只是 ϵ \epsilon ϵ!为什么指数机制要好得多?因为它发布的信息较少。

4、指数机制只释放具有最大噪声分数的元素的标识 ,而不是分数本身或任何其他元素的分数。上面定义的算法通常被称为报告噪声最大算法,它实际上满足 ϵ \epsilon ϵ-差分隐私,无论集合 R \mathcal{R} R有多大 - 特别是因为它只释放具有最大噪声计数的元素的恒等式。

5、我们不能轻易地将拉普拉斯噪声添加到一组无限的集合中。在这种情况下,我们必须使用实际的指数机制。然而,在实践中,对无限集合使用指数机制通常是具有挑战性或不可能的。虽然很容易写下该机制定义的概率密度函数,但通常情况下,不存在有效的算法来从中采样。因此,许多理论论文呼吁指数机制来证明具有某些理想属性的差分私有算法"存在",但其中许多算法在实践中是不可能使用的。

6、指数机制是非常通用的,通常可以根据评分函数的定义 u u u重新定义任何 ϵ \epsilon ϵ- 差分私有机制。如果我们能够分析这个评分函数的灵敏度,那么差分隐私的证明是免费的。另一方面,应用指数机制的一般分析有时以更宽松的边界为代价(如上面的拉普拉斯示例),并且根据指数机制定义的机制通常很难实现。指数机制通常用于证明理论下限(通过表明存在差分隐私算法),但实际算法通常使用其他方法复制相同的行为(如上面的报告噪声最大值的情况)。

  • 13
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

粥粥粥少女的拧发条鸟

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值