文章目录
- 1. 引入
- 2. 差分隐私的核心思想:加噪声
- 3. 直观原理
- 4. 如何设计满足差分隐私的算法?
- 拉普拉斯机制
- 什么是"拉普拉斯分布"?
- “拉普拉斯分布”公式的理解
- 那如何确定这个λ呢?
1. 引入
假设你是一个老师,想统计班里的平均身高:
这当然很简单,比如10个同学,那把所有人的身高加起来除10即可
但是这样存在一个问题:
如果班里有 10 个学生,你公布了平均身高,再随便去掉一个学生,别人可以通过"两次平均值的差"推算出那个被去掉的学生的身高。
比如全班 10 人平均身高 170cm,总和 1700cm
去掉小明后,9 人平均身高 168cm,总和 1512cm
小明身高 = 1700 - 1512 = 188cm
隐私泄露了! 这就是"统计查询"的隐私问题。
差分隐私要解决的核心问题就是:
让你发布统计结果的同时,任何人都无法从结果中推断出某一个人的具体信息。
2. 差分隐私的核心思想:加噪声
如果想解决上面的问题,可以在公布平均值之前,先加一点随机噪声。
不加噪声:公布"170.0cm" → 攻击者能反推出小明的身高
加噪声后:公布"170.3cm" → 攻击者反推的身高变成 188.3cm 或者 187.7cm,无法确定
但是关键问题是:加多少噪声?
加太少 → 攻击者还是能反推
加太多 → 统计结果没意义了
差分隐私就是一套数学框架,告诉你"加多少噪声刚刚好"。
3. 直观原理
假设现在有个数据集D,里面有个人叫Alice
现在对这个数据集做一点修改
把Alice替换成一共原本并不存在数据集中的人,把新的数据集叫做D ′
然后我们从任意一个数据集中发布一些信息,让攻击者去分辨,这些信息是从D中拿出来的还是从D’中拿出来的?
两个数据集唯一的差别就是Alice的数据,如果攻击者不知道信息O属于哪个数据集,那自然就不知道Alice的数据在不在信息O中,那自然就无法对Alice的隐私数据做任何有用的推断!
差分隐私要求任何被发布的信息都应当与上图中的信息 O 类似,以此避免让攻击者分辨出任何具体的个人数据!
为此,差分隐私要求被发布的信息需经一个随机算法所处理,且该随机算法会对信息做一些扰动:
“相邻”指两个数据集在内容上只相差一条记录。
中间是两个概率的比值,分子的意思是以一个数据集D为这个算法A的输入的时候,算法输出O的概率,这个O是任意可能的输出。
当ϵ足够小的时候,两个数据集的输出分布(当你对同一个问题问很多次,每次得到的答案会形成一个概率分布)就非常接近
那攻击者就很难区分信息属于哪一个数据集,也就无法推断出某个人的信息。
论文里的 ϵ-DP 定义是这样的:
翻译成人话:
攻击者看到输出 Z,他无法判断这个结果来自 x 还是 x ′ ——因为两者的输出分布几乎一样。
所以差分隐私只是一种思想,关键在于如何实现一个算法满足差分隐私。
4. 如何设计满足差分隐私的算法?
那么问题来了,我们如何才能设计出像这样满足差分隐私的算法呢?
直观的来说,这就要求算法的输出不能过分依赖某一个人的数据!
比如有一个病人的数据集,我们肯定不能直接发布某个特定病人的数据信息,因为这样就太依赖具体某一个人的数据了,只有改掉这个特定人的数据,所发布的信息就会有非常大的改动,那肯定就不满足这个不等式
那应该如何做呢?
下面我们来举个例子:
拉普拉斯机制
看这样一个场景:
发布数据库中糖尿病患者的人数(假设100人),如果直接发布,会存在一些问题:
攻击者能用"两次查询"反推出个人隐私
解决方案:不告诉他真实数字,告诉他"假数字"
问题来了:我"乱改"的数字,应该怎么改?改成 +3 还是 -20 还是 +100?
这就是拉普拉斯机制要解决的问题——告诉你"怎么科学地乱改"。
如果我们修改D中任意一个病患的数据,上述查询结果最多会改变多少?
答:最多改变1
所以,如果我们能够用噪声“掩盖”这种不大于一的改变,就能满足差分隐私。
具体来说,我们可以往查询结果中加一个服从拉普拉斯分布的噪声:
即不能乱加,得有个章法,这个章法,就是“拉普拉斯分布”。
什么是"拉普拉斯分布"?
拉普拉斯分布就是一套"随机改数字的规则"。
想象你有一个特殊的骰子,这个骰子不是出 1~6,而是出"要加多少噪声"(可以是正数、负数、0)。
中间高,两边低,像一个山峰。这就是"拉普拉斯分布"。
关键点:
大部分时候摇出来的是 0 或者 ±1(山峰附近)→ 改得不多,结果还有用
偶尔摇出来 ±5 或者 ±10(山腰)→ 改得多一点
极少时候摇出来 ±50(山脚)→ 改得离谱,但这是"保险"
为什么非要用这个"山峰形状",不能用其他形状?
假设你换一种规则:
所以拉普拉斯分布是"隐私"和"可用性"之间的最佳平衡。
“拉普拉斯分布”公式的理解
来看这个公式:
我们把它拆解成“加噪声的规则”:
你摇出来的随机数(噪声),大概率是在 0 附近(山峰的顶点)。
摇出一个特别大的正数(比如+100)或者特别大的负数(比如-100)的概率非常非常小(两边的尾巴)。
而且,加正数和加负数的概率一模一样(图形是对称的,所以你在真实结果上加上假噪声,长期来看不会把平均值拉偏)。
参数 λ 是什么?
图片中说
用最直观的方式理解
所以公式 λ=1/ϵ 的含义:
山峰的胖瘦 = 1 ÷ 隐私要求
这个公式告诉我们:想要多少隐私,就要付出多少噪声代价,两者成反比。
那如何确定这个λ呢?
要算出 λ,你需要用到两个东西:敏感度(Δf) 和 隐私预算(ϵ)。
什么是敏感度 Δf?
什么是隐私预算 ϵ?
终极公式推导:
为什么上面是λ = 1/ϵ ,因为上面场景的敏感度是1