崔煒榮 徐龍華 杜承烈 李 寶
1(安康學(xué)院電子與信息工程學(xué)院 陜西 安康 725000) 2(西北工業(yè)大學(xué)計算機學(xué)院 陜西 西安 710072)
當(dāng)今社會,互聯(lián)網(wǎng)中的各類信息都在以難以預(yù)知的速率爆炸式地增長,人類社會也隨之從“信息匱乏”狀態(tài)步入到“信息過載”狀態(tài)。越來越多的用戶在超過其處理能力的大量信息面前顯得無所適從,很容易迷失在信息的海洋中。為了解決“信息過載”這一問題,使得用戶可以在海量的數(shù)據(jù)中快速、準(zhǔn)確地得到有用的信息,推薦系統(tǒng)應(yīng)運而生。推薦系統(tǒng)能夠根據(jù)用戶的歷史行為構(gòu)建模型,預(yù)測用戶對特定物品的態(tài)度并根據(jù)其預(yù)測向用戶進行推薦。在推薦算法不斷成熟和推薦系統(tǒng)被廣泛應(yīng)用的同時,其面臨的隱私安全問題也日益凸顯[1]。本質(zhì)上,為了獲得滿意的推薦服務(wù),用戶需要向推薦系統(tǒng)提供個人信息。因此,相比其他網(wǎng)絡(luò)信息服務(wù),推薦系統(tǒng)更加具有天然的隱私不友好性。推薦系統(tǒng)面臨的隱私安全風(fēng)險主要在于:(1) 服務(wù)提供商可以直接利用用戶所提交的數(shù)據(jù)獲得用戶的個人信息,從而確認(rèn)用戶的身份、興趣愛好等敏感信息;(2) 由于推薦系統(tǒng)所收集的數(shù)據(jù)的稀疏特性,利用推薦系統(tǒng)發(fā)布的聚合數(shù)據(jù),攻擊者可以有效推測出用戶的敏感信息[1-2]。在如今人們越來越關(guān)心個人隱私安全的大背景下,如何在保證可用性的前提下引入合理的隱私保護機制也成為了有關(guān)推薦系統(tǒng)研究的熱點問題。
當(dāng)前,基于矩陣分解的協(xié)同過濾(Matrix Factorization Collaborative Filtering,MFCF)[3]是最為主流的推薦算法,該類算法從用戶-物品評分矩陣中挖掘出潛在的用戶特征向量及物品特征向量,并通過向量相似度預(yù)測用戶對物品的評價。相比其他方法,MFCF方法能夠提供更高的預(yù)測準(zhǔn)確度、更快的計算效率,以及更高的可擴展性。
本文針對MFCF推薦系統(tǒng)中的隱私保護問題展開研究, 提出一種基于分布式計算架構(gòu)和梯度混淆的隱私矩陣分解算法,稱之為DGCMF(Distributed Gradient Confusion Matrix Factorzation)。與現(xiàn)有的隱私保護MFCF方法相比,DGCMF不僅可以防止用戶評分和模型泄露,還可以防止用戶“評價行為”是否存在這一信息的泄露,從而為用戶隱私提供更強有力的保障。
在先前的研究中,在推薦系統(tǒng)中增強隱私保護的方式主要分為以下三類:
1) 混淆和擾動。該方式通過在用戶數(shù)據(jù)中增加偽造值以達(dá)到隱藏真實用戶數(shù)據(jù)的目的。文獻[4-5]中所提出的隱私保護推薦算法均基于該方式構(gòu)建,使得用戶可以對數(shù)據(jù)在本地進行加擾,從而對服務(wù)器隱藏真實的數(shù)據(jù)。但上述方法主要的問題在于:從安全性角度,上述加擾效果并未得到嚴(yán)格證明;從可用性角度上,上述方法在增強隱私保護的同時較大地犧牲了系統(tǒng)的推薦準(zhǔn)確度。
2) 差分隱私。差分隱私保護的本質(zhì)也是通過在計算過程中引入特定分布的噪聲以達(dá)到保護原始數(shù)據(jù)的效果。但與簡單的混淆和擾動不同,差分隱私保護可以提供能被度量和證明的隱私保障。文獻[6]首次將差分隱私保護的概念引入了推薦系統(tǒng),隨后多項研究在其基礎(chǔ)上展開[7-11]。
3) 同態(tài)加密。同態(tài)加密技術(shù)可以使得用戶在不必解密的情況下對密文內(nèi)容進行計算,被廣泛應(yīng)用于各類隱私保護場景中。文獻[11-13]所設(shè)計的推薦系統(tǒng)均基于同態(tài)加密技術(shù)方案實現(xiàn)了隱私保護。使用同態(tài)加密最大的障礙在于其相對較高的計算開銷。特別是當(dāng)數(shù)據(jù)量較大時,效率和能耗成為限制其可用性的關(guān)鍵因素。
上述文獻中的方法主要針對用戶評分和推薦模型的保護。然而,它們共同缺乏的是對“存在性”的保護。也就是說,即便是無法得知用戶的具體評分,服務(wù)器也依然可以在與用戶的交互計算過程中知道用戶對哪些物品進行了評價。利用這些信息,服務(wù)器仍然可以推測出用戶的偏好、個人特征等隱私信息。與上述方法相比,本文方法除了能夠?qū)崿F(xiàn)對用戶數(shù)據(jù)以及模型的保護外,也能夠?qū)崿F(xiàn)對用戶評分“存在性”的保護。
與本文最為相似的工作來自文獻[14],作者提出了名為SDMF的隱私保護矩陣分解方法。SDMF通過在梯度更新過程中引入隨機響應(yīng)機制實現(xiàn)對用戶評分、模型、存在性的保護。然而,這種方法在梯度下降優(yōu)化過程中造成梯度更新?lián)p失,降低了所生成模型的預(yù)測準(zhǔn)確性。與之相比,DGCMF中的梯度混淆是無損的,因此既能夠有效保護用戶隱私,也能夠保證系統(tǒng)的推薦準(zhǔn)確性。

圖1 系統(tǒng)模型
本文算法應(yīng)滿足如下隱私保護需求:
2) 評分保護:在模型的計算過程中,服務(wù)器無法獲知每個用戶的歷史評分。
3) 存在性保護:在模型的計算過程中,服務(wù)器無法獲知用戶是否對某個物品作出評分。
本文算法實現(xiàn)了分布式架構(gòu)下的貝葉斯概率矩陣分解。算法架構(gòu)如圖2所示,主要符號及其含義見表1。

圖2 算法框圖

表1 主要符號及含義

計算過程由初始化和迭代優(yōu)化兩部分組成。客戶端和服務(wù)器端分別對W和H完成初始化后便進入迭代優(yōu)化環(huán)節(jié)。本文算法采用了SGLD(Stochastic Gradient Langevin Dynamics)優(yōu)化算法。SGLD所增加的高斯噪聲為系統(tǒng)引入了差分隱私保障,能夠有效防止模型泄露。
在迭代優(yōu)化環(huán)節(jié)的每一輪迭代過程中,每一個用戶ui首先從服務(wù)器端下載更新后的H,之后根據(jù)自己的評分?jǐn)?shù)據(jù)ri計算和wi每一個hj(rij≠?)的更新梯度grad(wi)和grad(hj)。接著,ui利用grad(wi)對wi進行更新。對grad(hj)進行梯度混淆后將其發(fā)送至服務(wù)器端。服務(wù)器收到每一個用戶發(fā)來的梯度更新信息后,將其聚合并最終更新H。
由于每輪迭代中,服務(wù)器只收到用戶發(fā)來的物品隱藏因子向量梯度信息,從而防止了用戶評分泄露。梯度混淆的加入進一步隱藏了梯度信息中用戶和被評分物品的聯(lián)系,實現(xiàn)了“存在性”保護。
p(W,H|R,λr,Λw,Λh)∝
p(R|W,H,λr)p(W|Λw)p(H|Λh)
(1)
式中:λr為全局正則化參數(shù),Λw和Λh是基于Gamma分布生成的對角矩陣,用于隱藏因子向量wi和hj的正則化處理。采用正態(tài)分布假設(shè),則式(1)的對數(shù)形式為:
F(W,H)=lnp(R,λr,Λw,Λh)=
lnp(R|W,H,λr)+lnp(W|Λw)+
lnp(H|Λh)+C=
(2)
式中:C為常數(shù);N表示正態(tài)分布。為了求得W和H的最大后驗估計,本文采用SGLD優(yōu)化算法進行迭代求解。具體而言,在第t次迭代中:
(3)
(4)
(5)

(6)

(7)


(8)
用戶ui發(fā)送gradui(hj)至服務(wù)器。由于服務(wù)器僅得知梯度信息,因此防止了用戶隱藏因子向量的泄露。
采用上述架構(gòu),雖然在迭代優(yōu)化過程中服務(wù)器僅能從客戶端得到H的加擾梯度更新信息且無法從中推斷出用戶的隱藏因子向量,然而服務(wù)器依然可以根據(jù)這些信息獲知用戶對哪些物品進行了評價。例如當(dāng)服務(wù)器收到來自用戶ui的梯度更新信息gradui(hj)時,根據(jù)hj和物品vj的對應(yīng)關(guān)系,可知用戶ui一定對vj進行了評價。為了避免這種“存在性”用戶信息泄露,本文基于安全求和思想設(shè)計了梯度混淆過程。
在梯度混淆的過程中,對于每一個計算出的梯度更新信息gradu(hj),用戶u以一定概率選擇將其值發(fā)送給隨機選取的另一用戶,并隨后將其置零。收到gradu(hj)的用戶u′將其與自身的gradu′(hj)相加。舉例而言,假設(shè)用戶u計算出的梯度值分別為gradu(hj1),gradu(hj2),…,gradu(hjq),SG為空集,則u依據(jù)算法1實施混淆。
算法1梯度混淆
fort=j1tojq
據(jù)概率f選取gradu(ht)
ifgradu(ht)被選中then
SG←SG∪{gradu(ht)}
gradu(ht)←0
end if
end for
經(jīng)過上述的梯度混淆處理后,u將篩選出來的梯度更新值集合SG發(fā)送給隨機選取的用戶u′。收到SG后,對于每一個gradu(hj)∈SG,u′將其與自身的對應(yīng)梯度更新值進行合并,即計算混淆梯度:
(9)
圖3描述了這一個過程。其中行向量表示用戶在第t次迭代過程中所計算并分解的梯度更新信息。值為0表示用戶并未對hj進行過單類評價。曲線箭頭表示以一定的概率選取并發(fā)送。以u2為例,在該輪迭代中,其根據(jù)概率fu2選取了梯度更新值gradu2(h1),并將其發(fā)送至隨機選取的用戶u1。同時,u1根據(jù)概率fu1選取了梯度更新值gradu1(h3),將其發(fā)送給u2。u3根據(jù)概率fu3選取了梯度更新值gradu3(h2),也將其發(fā)送給了u2。最終,u2生成混淆梯度(0,gradu3(h2),gradu2(h2)+gradu1(h3),0)。每輪迭代完成后,u2將混淆后的梯度更新值發(fā)送至服務(wù)器。

圖3 梯度混淆過程

(10)
h3=h3+grad(h3)
(11)

基于分布式架構(gòu),本文算法由客戶端算法client(u,t)和服務(wù)器端算法server兩部分組成,流程分別如算法2和算法3所示。
算法2client(u,t)
輸入:Ri,η0,r,Λw,Λh。
1. ift=0 then初始化wi
2. ift>0 then
3. 從服務(wù)器下載H
5.count▽u←0
//count▽u用來對值不為0的Rij進行計數(shù)


9. ifR≠0 then

11.count←count+1

13. end if
14. end for
16. 生成概率參數(shù)f∈[0,1]





22. end if
23. end if
24. end for
26. for每一個收到的來自其他用戶的SG:


29. end for
30. end for
32. end if
算法2中,用戶首先更新了學(xué)習(xí)速率(第7行);接著根據(jù)評分向量Rij、wi和H計算出wi的更新梯度和被評分物品對應(yīng)的hj的更新梯度(第8至14行);之后更新wi(第15行)并進行梯度混淆(第16至29行);最后將經(jīng)過混淆的梯度值發(fā)送給服務(wù)器(第31行)。
算法3server
輸出:物品隱藏因子矩陣H。
1. 初始化H
2.t←0

4. 遠(yuǎn)程調(diào)用client(ui,t)
5. end for
6.t←1
7. while 沒有收斂 do:



11. 遠(yuǎn)程調(diào)用client(ui,t)
12. end for
13. while Ture do:



18. end for
20. break
21. end if
21. end while


24. end for

26.t←t+1
27. end while
算法3中,服務(wù)器在初始化H之后,遠(yuǎn)程啟動每個客戶端的初始化過程(第1至5行)。之后進入迭代優(yōu)化環(huán)節(jié)。在每輪迭代中,首先下發(fā)H并調(diào)用客戶端的梯度更新方法(第10至12行)。待全部用戶完成更新計算并回傳物品隱藏因子向量梯度更新值后,對其進行聚合并完成H的更新(第13至25行)。
根據(jù)2.2節(jié)所述,本文算法應(yīng)當(dāng)滿足模型、評分和存在性三方面的隱私保護需求。

與采用集中式架構(gòu)的MF算法不同,在本文中,作為最為重要的隱私數(shù)據(jù)的用戶歷史評分并沒有被服務(wù)器所收集,而是分別被保存在各個客戶端。在迭代計算過程中,用戶ui的歷史評分ri只參與了預(yù)測誤差eij的計算,且服務(wù)器無法從接收到的混淆梯度更新信息中推導(dǎo)出ri。根據(jù)以上分析,在模型的計算過程中,服務(wù)器無法獲知每個用戶的歷史評分。

此外,由于每一個用戶在每一輪迭代末都依據(jù)實時隨機生成的選擇概率f進行了混淆(算法2第16行)。因此服務(wù)器無法從所收集的用戶梯度更新值序列中推測出用戶是否對某一物品進行過評價,從而實現(xiàn)了存在性保護。
在算法2和算法3的基礎(chǔ)上,使用Python開發(fā)了系統(tǒng)原型。為了評估系統(tǒng)的可用性,將其與文獻[15]中提出的SDMF方法進行了對比。
協(xié)議原型基于Python3.6+TensorFlow2.0開發(fā),主要由Server類和User類組成,Sever類是對服務(wù)器的模擬,其中主要包含的屬性有物品隱藏因子矩陣H,主要包含的方法有聚合梯度更新(針對H)。User類是對用戶的模擬,其中主要包含的屬性有用戶ID、評分向量r和隱藏因子向量w,主要包含的方法有梯度更新和梯度混淆方法。梯度更新方法中調(diào)用了TensorFlow框架Stochastic Gradient Langevin Dynamics模塊實現(xiàn)SGLD優(yōu)化過程。
模擬運行的每一輪迭代中,服務(wù)器實例依照算法3依次調(diào)用每一個用戶實例的梯度更新方法。每一個用戶實例依照算法2進行w梯度更新,并將經(jīng)過混淆后的h梯度傳回給服務(wù)器實例,由服務(wù)器實例進行聚合并調(diào)用梯度更新方法更新H。
使用了3個公共評分?jǐn)?shù)據(jù)集進行實驗,具體包括:兩個MovieLens數(shù)據(jù)集(ML-100K和ML-1M),一個Netflix數(shù)據(jù)子集(包含10 000個用戶和5 000個物品)[16]針對上述每一個數(shù)據(jù)集,將其隨機劃分為占比80%的訓(xùn)練集和占比20%的測試集,訓(xùn)練集中的20%作為驗證集。具體的超參數(shù)設(shè)置為:k=50,r=0.6,(Λw,Λh)~Gamma(1,100)。初始學(xué)習(xí)速率η0分別為5×10-6(ML-100K)、5×10-7(ML-1M)、5×10-7(Netflix)。對于SDMF,選取了(εI=0.25,εg=4)和(εI=0.25,εg=1)作為兩組差分隱私配置參數(shù)。
在ML-100K、ML-1M和Netfilx數(shù)據(jù)集上的學(xué)習(xí)曲線如圖4所示。

圖4 實驗結(jié)果
可以清楚地看到,對于SDMF而言,參數(shù)ε值越小,則系統(tǒng)可以提供越強的差分隱私保障,但其預(yù)測準(zhǔn)確度就越低。此外,盡管SDMF和DGCMF都可以實現(xiàn)模型保護、用戶評分保護和存在性保護,但可以看出,DGCMF所生成的模型預(yù)測準(zhǔn)確性明顯高于SDMF所生成的模型。這是由于本文所設(shè)計的DGCMF和SDMF在存在性保護方面采取了不同的混淆機制。SDMF采用基于隨機響應(yīng)的方式模糊用戶的評價行為。在每輪迭代中,用戶根據(jù)一定的概率設(shè)定,選擇是否計算某一已打分物品的隱藏因子向量梯度。此外,用戶還有可能偽造未打分物品的隱藏因子向量梯度。這種混淆方式本質(zhì)上是有損的,因此會對系統(tǒng)的準(zhǔn)確性造成負(fù)影響。而DGCMF所采用的方式能夠在隱藏“存在性”的同時確保其混淆行為是無損的,從而在實現(xiàn)隱私保護的同時最大限度地保障推薦準(zhǔn)確度。
針對協(xié)同過濾推薦系統(tǒng)中的隱私保護問題,本文設(shè)計DGCMF算法。在DGCMF中,矩陣分解過程由各個客戶端和服務(wù)器共同配合完成。由于服務(wù)器只能收到來自客戶端的物品隱藏因子向量梯度,從而避免了用戶評分和模型的泄露。此外,客戶端對所要上傳給服務(wù)器的梯度更新信息進行了混淆,實現(xiàn)了對用戶評分“存在性”的保護。與現(xiàn)有方法相比,DGCMF的梯度混淆過程不會造成梯度更新?lián)p失,在實現(xiàn)隱私保護的同時能夠提供更好的推薦準(zhǔn)確度。今后,將針對如何進一步提高模型的準(zhǔn)確度和生成效率展開研究,以期在安全性和效率兩方面達(dá)到更優(yōu)的權(quán)衡。