差分隱私的由來
想要在一個統計數據庫里面保護用戶的隱私,那么理想的隱私定義是這樣的:訪問一個統計數據庫而不能夠泄露在這個數據庫中關於個人的信息。也就是說統計數據庫應該提供一個統計值,但是對於個人的信息不應該被查詢到。
但是,這個理想的定義是不可行的,它並沒有考慮到輔助信息。比如這么一個例子:一個關於某個地區女性的身高的數據庫。可以從數據庫當中查詢到平均值,另外你根據輔助信息知道Alice的身高比平均身高高2cm,那么你就可以得到Alice的身高,即Alice身高信息被泄露了。
我們退而求其次,用一種隱私保護比較弱,但是很實用的方法來定義隱私:一個人隱私泄露的風險不應該因為這個人的信息加入統計數據庫而增加。這個定義就是差分隱私。
差分隱私的定義
給定一個隨機算法K,若對於任意的兄弟表$T_1$和$T_2$,以及任意的輸出$S\subseteq Range(K)$ 滿足:
$Pr[K(T_1) \in S] \leq e^{\epsilon} \times Pr[K(T_2) \in S] $
即:$\frac{Pr[K(T_1)\in \ S]}{Pr[K(T_1)\in \ S]} \leq e^{\epsilon}$
則算法K滿足$\epsilon$差分隱私。下面我來解釋這個定義:
首先是算法K,這是一個隨機算法,隨機算法意味着算法的輸出是隨機的,那么描述它就用概率里面的知識,比如概率密度函數,算法的輸出概率等。
$T_1$和$T_2$是兄弟數據表,意味着數據表里面只相差一個記錄,即一個數據表里面存在用戶的信息,另外一個表里面不存在用戶的信息。這是為了和上面的隱私定義相對應的,一個人的隱私泄露風險不應該因為這個人的信息在數據庫中而增加。
$S\subseteq Range(K)$ 而不是$S = Range(K)$,是因為在概率密度函數為了確定一個事件的概率,應該用一個范圍,而不是用一個點,在一點的概率總是0,這里表示的是輸出在一個范圍。
所以上面函數用概率的方法來進行度量,保證了在K在兄弟表上面,所有范圍內的輸出都很接近。
比如下面的Laplace分布,那么必須保證在整個算法的分布上面,兩個數據表的輸出都十分的接近,
敏感度
敏感度是衡量一個函數的指標。對於一個函數$f: D \rightarrow R^d$,其中D是數據庫,函數在數據庫上面進行查詢,返回一個d維矢量,L1敏感度定義如下:
$S(f) = \max \limits_{D_1, D_2} {\Vert f(D_1) – f(D_2) \Vert }_1$
當函數f返回的結果是一個數字的時候,即$f: D \rightarrow R$,那么L1敏感度為:
$S(f) = \max \limits_{D_1, D_2} \vert f(D_1) – f(D_2) \vert $
比如查詢函數:滿足特定條件下的記錄有多少條。那么這個函數返回的結果是一個數字,它的敏感度$S(f) \leq 1$,即:當查詢結果當中沒有一條滿足的時候,查詢的敏感度為0,當有一條或者多條滿足的時候,敏感度為1。
拉普拉斯噪聲當中$\lambda 、\epsilon 和S(f) $的關系
讓我們再來解釋一遍這三個參數 $\lambda$是拉普拉斯分布里面的重要參數,決定和分布的方差
$\epsilon$ 是差分隱私定義中用來控制隱私度的一個度量
$S(f) $是我們定義的函數的敏感度
我們知道函數f在數據庫D上面的輸出為f(D),加上拉普拉斯噪聲以后的概率密度為 $\frac{1}{2\lambda} exp(- \frac{\vert x-f(D)\vert}{\lambda})$.
那么它在一點a,取得的概率和該點的概率密度成正比,$Pr[K_f(D) =a] \propto exp(- \frac{\vert f(D)-a\vert}{\lambda})$
其中$K_f(D)$表示的是,函數f在數據D上面的輸出經過隨機函數K處理以后的值。
那么對於兄弟數據庫D和D’,有$\frac{Pr[K_f(D_1) =a] }{Pr[K_f(D_2) =a] } = \frac{ exp(- \vert f(D_1)-a\vert / \lambda) }{exp(- \vert f(D_2)-a\vert / \lambda)} = exp( \frac{ \vert f(D_2)-a\vert - \vert f(D_1)-a\vert }{\lambda} )$
那么根據絕對值不等式(三角不等式?)$\lvert a \rvert – \lvert b \rvert \leq \lvert a – b \rvert$,可以得到
$exp( \frac{ \vert f(D_2)-a\vert - \vert f(D_1)-a\vert }{\lambda} ) \leq exp( \frac{\lvert f(D_1) – f(D_2) \rvert }{\lambda} ) = exp( \frac{S(f) }{\lambda} )$
可以看出來,若函數f加上參數為$\lambda$的拉普拉斯噪聲,可以滿足$\frac{S(f)}{\lambda}$的差分隱私,
同理,若函數f加上參數為$\frac {S(f)}{\epsilon}$的拉普拉斯噪聲,可以滿足$\epsilon$的差分隱私,
直方圖差分隱私
直方圖的特點是這樣的:所有的數據划分為等寬的方格,修改數據庫里面的一條記錄只會影響到一個方格內部的數據,所以直方圖的查詢敏感度為1。因此在直方圖發布的時候直接加上$1/\epsilon$的拉普拉斯噪聲就可以滿足$\epsilon$的差分隱私。