Laplace 噪聲是一種特定概率分布(拉普拉斯分布)產生的隨機擾動。它是差分隱私(Differential Privacy, DP)中最核心、最常用的噪聲機制之一。它的核心作用是在不泄露個體信息的前提下,允許從包含敏感數據的數據庫中提取有用的統計信息。目的:?直接保護數據庫中的個體記錄不被推斷出來。即使攻擊者擁有除目標個體之外的所有其他數據,也無法通過查詢結果確認該目標個體是否在數據庫中或其具體屬性值。
1. 原理
-
通過在查詢結果(如計數、求和、平均值等)上添加精心設計的、符合拉普拉斯分布的噪聲,使得查詢輸出對數據庫中任何單一個體記錄的加入或移除變得“不敏感”。這種“不敏感”的程度由隱私參數
ε
嚴格控制。 -
提供可量化、可證明的隱私保證。
ε
值越小,添加的噪聲越大,隱私保護強度越高(但數據可用性會降低)。
2. Laplace 噪聲實現原理(核心:差分隱私)
Laplace 噪聲在差分隱私中的運用原理:
-
鄰近數據集:?考慮兩個僅在一條個體記錄上存在差異的數據集
D
和D'
。它們被稱為“鄰近數據集”。 -
查詢函數:?定義一個查詢函數
f
(例如,“數據集中有多少人患有某種疾病?”,“工資總和是多少?”)。該函數作用于數據集并輸出一個實數?f(D)
?或實數向量?f(D)=(f?(D),f?(D), ..., f?(D))
。 -
全局敏感度:??Laplace機制的核心參數。
-
定義:對于一個查詢函數?
?(輸出 k 維實數向量),其?
L1
?全局敏感度?Δf
?定義為在所有鄰近數據集(D,D')
上,f(D)
和f(D')
的?L1
?距離的最大值: -
意義:?
Δf
?衡量了查詢函數f
的輸出結果,在任意一條記錄改變時,最大可能改變多少。例如:-
計數查詢:?“數據集中滿足某條件的人數”。改變一條記錄最多只能讓計數改變?
1
?(滿足條件的記錄加入或移除)。所以Δf=1
。 -
求和查詢:?“數據集中某數值型屬性的總和”。假設單個記錄的最大可能值是?
M
,那么改變一條記錄最多能讓總和改變M
(一個值為M
的記錄加入或移除)。所以Δf=M
。
-
-
-
Laplace 機制:
-
目標:?保護鄰近數據集
D
和D'
上的查詢結果f(D)
和f(D')
在概率分布上非常接近,使得攻擊者難以區分查詢是基于D
還是D'
進行的。 -
方法:?對于查詢
f
的(標量或向量)輸出f(D)
,添加獨立生成的拉普拉斯噪聲:
M(D)=f(D)+(Y?, Y?, ..., Y?)
其中每個Y?
是獨立同分布的隨機變量,服從拉普拉斯分布Lap(0,b)
,其概率密度函數為: -
尺度參數
b
的選擇:?尺度參數b
直接決定了噪聲的大小。為了滿足ε
-差分隱私,b
必須設置為:
b=Δf/ε
-
ε
:隱私預算,由數據所有者設定。ε
越小,要求的隱私保護越強。 -
Δf
:查詢函數的全局敏感度。
-
-
原理證明(直觀):?拉普拉斯分布的特性(指數衰減)使得添加噪聲后的輸出?
M(D)
?和?M(D')
?的概率密度比值??被有界地控制在?
?以內。這正是ε
-差分隱私的數學定義所要求的。Δf
決定了噪聲的尺度b
,從而保證了即使f(D)
和?f(D')
差異最大(達到Δf
)時,這個比值也不會超過e^ε
。
-
3. 生成 Laplace 噪聲的步驟 (編程實現)
要在代碼中生成服從Lap(0,b)
分布的噪聲Y
,可以使用以下方法:
-
生成均勻分布隨機數:?生成兩個獨立的、在
[0,1)
區間上均勻分布的隨機數U?
和U?
。通常使用標準庫的隨機數生成器(如?Math.random()
?in JS,?random.random()
?in Python,?rand()
?in C++)。 -
生成標準均勻分布隨機數:?將
U?
轉換為(-1,1)
區間上的均勻分布。一種常見方法是:
U=U?*2-1
?(現在U
在[-1,1)
?上均勻分布) -
生成標準拉普拉斯噪聲:?利用均勻分布隨機數的反函數變換:
Y_standard=-sign(U)*ln(1-|U|)
-
sign(U)
是U
的符號(U>=0
時為1,
U<0
時為-1
)。 -
ln(1-|U|)
是自然對數。 -
Y_standard
服從標準拉普拉斯分布Lap(0,1)
。
-
-
縮放:?將標準拉普拉斯噪聲
Y_standard
乘以尺度參數b
,得到最終需要的噪聲:
Y=b*Y_standard
這個Y
就服從Lap(0,b)
分布。