Data Poisoning Attacks to Deep Learning Based Recommender Systems论文解读
1 摘要
在這項工作中,作者對基于深度學習的推薦系統的數據中毒攻擊進行了首次系統研究。攻擊者的目標是操縱推薦系統,以便向許多用戶推薦攻擊者選擇的目標項目。為了實現這一目標,作者將精心設計的評分注入到推薦系統中的假用戶。具體來說,作者將攻擊表述為一個優化問題,這樣注入的評分將最大化推薦目標項目的普通用戶的數量。然而,解決優化問題具有挑戰性,因為它是一個非凸整數規劃問題。為了應對這一挑戰,作者開發了多種技術來近似解決優化問題。作者在三個真實世界數據集(包括小型和大型數據集)上的實驗結果表明,作者的攻擊是有效的,并且優于現有的攻擊。此外,作者試圖通過對正常用戶和假用戶的評分模式進行統計分析來檢測假用戶。結果表明,即使部署了這樣的檢測器,作者的攻擊仍然有效并且優于現有的攻擊。
2 預備知識
2.1 Neural Collaborative Filtering (NCF)
[20] X. He, L. Liao, H. Zhang, L. Nie, X. Hu, and T.-S. Chua, “Neural collaborative filtering,” in Proceedings of the 26th international conference on world wide web. International World Wide Web Conferences Steering Committee, 2017, pp. 173–182.
問:為什么要對用戶和項目進行one-hot編碼呢?
答:這個地方進行one-hot編碼實際上是把用戶uuu和項目iii的下標進行one-hot編碼,用于利用MF和MLP方法對user-item對進行預測。
問:如何理解這個框架?
答:(1)MF首先隨機初始化一個user vector來表示用戶uuu,再隨機初始化一個item vector來表示項目iii,兩個向量進行element-wise product(兩個向量的分量對應分別相乘);(2)下圖是一個多層感知機MLP,將MLP User Vector和MLP Item Vector作為MLP的輸入,輸出為一個向量;(3)將MF和MLP的輸出拼接起來,作為NeuMF層的輸入,最后輸出為預測評分y^ui\hat{y}_{ui}y^?ui?;(4)用真實評分yuiy_{ui}yui?作為監督信息來反饋調整MF和MLP。
2.2 對推薦系統的已有攻擊方法
數據中毒攻擊: 數據中毒攻擊將虛假用戶注入推薦系統,從而修改推薦列表。
根據數據中毒攻擊是否針對特定類型的推薦系統,我們可以將其分為兩類:算法不可知(algorithm-agnostic)和算法特定(algorithm-specific)。
算法不可知:典型的就是先令攻擊類型,如隨機攻擊和潮流攻擊(bandwagon attacks)。例如,隨機攻擊只是從整個項目集中為假用戶隨機選擇評分項目,而潮流攻擊傾向于為假用戶選擇數據集中流行度高的某些項目。
算法特定:特定算法的數據中毒攻擊針對特定類型的推薦系統進行了優化,并已針對基于圖的推薦系統、基于關聯規則的推薦系統、基于矩陣分解的推薦系統和基于鄰域的推薦系統。隨著這些攻擊被優化,它們通常更有效。 然而,沒有針對基于深度學習的推薦系統的特定算法數據中毒攻擊的研究。 我們在本文中彌合了這一差距。
配置文件污染攻擊: 配置文件污染攻擊的關鍵思想是通過跨站點請求偽造(CSRF)污染用戶的配置文件(例如,歷史行為)。 例如,Xing等人對網絡服務中的推薦系統提出了配置文件污染攻擊,例如 YouTube、亞馬遜和谷歌。 他們的研究表明,所有這些服務都容易受到攻擊。 然而,配置文件污染攻擊有兩個關鍵限制:i) 配置文件污染攻擊依賴于 CSRF,這使得難以大規模執行攻擊,以及 ii) 配置文件污染攻擊不能應用于 item-to-item 推薦系統 因為攻擊者無法污染項目的配置文件。
3 問題描述(Problem Formulation)
3.1 威脅模型
攻擊目標: 攻擊者的目標是使其目標物品出現在盡可能多的普通用戶的top-K推薦列表中。(An attacker’s goal is to make its target item appear in the top-K recommendation lists of as many normal users as possible.)
我們注意到,攻擊者還可以將目標項目降級,使其出現在盡可能少的普通用戶的 top-K 推薦列表中。We note that an attacker could also aim to demote a target item, making it appear in the top-K recommendation lists of as few normal users as possible.
例如,攻擊者可能會降低其競爭對手的項目。 由于可以通過提升其他項目來實現降級目標項目,因此我們在這項工作中專注于提升。
攻擊背景知識: 我們假設攻擊者可以訪問用戶-項目交互矩陣 Y。在亞馬遜和 Yelp 等許多推薦系統中,用戶的評分是公開的。 因此,攻擊者可以編寫爬蟲來收集用戶的評分。 然而,在我們的實驗中,我們還將表明,當攻擊者可以訪問部分用戶-項目交互矩陣時,我們的攻擊仍然有效。 攻擊者可能會或可能不會訪問基于目標深度學習的推薦系統的內部神經網絡架構。 當攻擊者無法訪問目標推薦系統的神經網絡架構時,攻擊者通過假設一個神經網絡架構進行攻擊。 正如我們將在實驗中展示的那樣,我們的攻擊可以在不同的神經網絡之間轉移,即我們基于一種基于神經網絡架構的推薦系統構建的攻擊對于使用不同神經網絡架構的其他推薦系統也是有效的。
攻擊者的能力: 我們假設攻擊者的資源有限,因此攻擊者只能注入有限數量的假用戶。 我們用 mmm 表示假用戶數量的上限。 除了目標物品外,每個假用戶最多可以對 nnn 個其他物品進行評分,以逃避瑣碎的檢測。 我們稱這些項目為填充項目。 具體來說,正常用戶往往只對少量物品進行評分,因此對大量物品進行評分的虛假用戶是可疑的,很容易被發現。 我們假設攻擊者可以將虛假用戶的評分注入目標推薦系統的訓練數據集中,以操縱深度學習模型的訓練過程。
3.2 將攻擊制定為優化問題
我們將項目ttt的命中率定義為 HR?t\operatorname{HR}_tHRt?,表示在其 top-K 推薦列表中會收到項目ttt的普通用戶的比例。 換句話說,ttt的命中率表示ttt被推薦給普通用戶的概率。 攻擊者的目標是最大化目標項目 ttt 的命中率。 讓 y(v)\mathbf{y}_{(v)}y(v)? 表示假用戶 vvv 的評分向量,yviy_{vi}yvi? 表示假用戶 vvv 給項目 iii 的評分。
我們的目標是為虛假用戶制作評分,以使目標項目的命中率最大化。 正式地,根據之前的工作 [13],我們制定了偽造用戶的評分來解決以下優化問題:
max?HR?tsubject?to?∥y(v)∥0≤n+1,?v∈{v1,v2,…,vm}yvi∈{0,1,…,rmax?}(1)\begin{aligned} \max & \operatorname{HR}_{t} \\ \text { subject to } &\left\|\mathbf{y}_{(v)}\right\|_{0} \leq n+1, \forall v \in\left\{v_{1}, v_{2}, \ldots, v_{m}\right\} \\ & y_{v i} \in\left\{0,1, \ldots, r_{\max }\right\} \end{aligned} \tag1 max?subject?to??HRt?∥∥?y(v)?∥∥?0?≤n+1,?v∈{v1?,v2?,…,vm?}yvi?∈{0,1,…,rmax?}?(1)
符號說明:
∥y(v)∥0\left\|\mathbf{y}_{(v)}\right\|_{0}∥∥?y(v)?∥∥?0?:假用戶評分向量y(v)\mathbf{y}_{(v)}y(v)?中非0評分的個數;
nnn:填充項目的最大數量;
mmm:假用戶的最大數量;
{v1,v2,…,vm}\left\{v_{1}, v_{2}, \ldots, v_{m}\right\}{v1?,v2?,…,vm?}:假用戶構成的集合;
rmax?r_{\max}rmax?:評分最大等級,如5。
問:如何來理解這個優化公式?
答:該公式就是利用多個假用戶的虛假評分使得目標項目ttt的命中率最大化。
4 攻擊構建:解決優化問題
4.1 攻擊概述
由于公式(1)的優化問題是一個非凸問題,作者開發了多種啟發式方法來近似解決優化問題。
圖2描述了數據中毒攻擊的過程。
(1) 使用損失函數來近似命中率,其中較小的損失大致對應于較高的命中率。 給定損失函數,將優化問題轉化為一個易于處理的問題。
(2)基于設計的損失函數,構建了一個中毒模型來模擬基于深度學習的推薦系統。 特別地,首先預訓練中毒模型以確保它可以通過使用驗證數據集正確預測用戶的偏好,然后使用損失函數更新中毒模型,該損失函數是通過提取損失中與攻擊相關的部分導出的在第一步中獲得的函數,以接近受損目標推薦系統的預期狀態。
(3)根據中毒模型預測的評分向量和選擇概率向量為假用戶選擇填充項,其中項目的選擇概率向量會定期更新,以便為下一個假用戶選擇填充項。 重復第二步和第三步,直到為中毒攻擊生成了mmm個假用戶。
4.2 詳細過程
4.2.1 構建損失函數
又要開始啃公式了。。。。
lu=max?{min?i∈Lulog?[y^ui]?log?[y^ut],?κ}(2)l_{u}=\max \left\{\min _{i \in L_{u}} \log \left[\widehat{y}_{u i}\right]-\log \left[\widehat{y}_{u t}\right],-\kappa\right\} \tag2lu?=max{i∈Lu?min?log[y?ui?]?log[y?ut?],?κ}(2)
符號說明:
lul_ulu?:用戶uuu的損失;
LuL_uLu?:推薦給用戶uuu的推薦列表;
y^ui\widehat{y}_{ui}y?ui?:用戶uuu對項目iii的預測評分;
y^ut\widehat{y}_{ut}y?ut?:用戶uuu對項目ttt的預測評分;
κ≥0\kappa \geq 0κ≥0:可調參數,用于增強攻擊的魯棒性和可轉移性。
對數運算符的使用減輕了優勢效應,同時由于單調性而保留了置信度分數的順序。
通過最小化損失函數lul_ulu?,我們可以有更高的概率將目標項目 ttt 包含在用戶 uuu 的推薦列表中。
問:怎么來理解這個公式?
答:見下圖描述,分為兩種情況來討論:
(1)項目t∈Lut \in L_ut∈Lu?,則有min?i∈Lulog?[y^ui]≤log?[y^ut]\min _{i \in L_{u}} \log \left[\widehat{y}_{u i}\right] \leq \log \left[\widehat{y}_{u t}\right]mini∈Lu??log[y?ui?]≤log[y?ut?],即min?i∈Lulog?[y^ui]?log?[y^ut]≤0\min _{i \in L_{u}} \log \left[\widehat{y}_{u i}\right] - \log \left[\widehat{y}_{u t}\right] \leq 0mini∈Lu??log[y?ui?]?log[y?ut?]≤0,如果κ=0\kappa = 0κ=0,則lu=0l_u = 0lu?=0。
(2)項目t?Lut \notin L_ut∈/?Lu?,則有min?i∈Lulog?[y^ui]>log?[y^ut]\min _{i \in L_{u}} \log \left[\widehat{y}_{u i}\right] > \log \left[\widehat{y}_{u t}\right]mini∈Lu??log[y?ui?]>log[y?ut?],即min?i∈Lulog?[y^ui]?log?[y^ut]>0\min _{i \in L_{u}} \log \left[\widehat{y}_{u i}\right] - \log \left[\widehat{y}_{u t}\right] > 0mini∈Lu??log[y?ui?]?log[y?ut?]>0,如果κ=0\kappa = 0κ=0,則lu=min?i∈Lulog?[y^ui]?log?[y^ut]l_u = \min _{i \in L_{u}} \log \left[\widehat{y}_{u i}\right] - \log \left[\widehat{y}_{u t}\right]lu?=mini∈Lu??log[y?ui?]?log[y?ut?]。
從上面分析來看,κ\kappaκ參數只在情況(1)的時候有用。
由于我們的攻擊目標是將目標物品推廣給盡可能多的用戶,因此我們根據以下公式設計了所有用戶的損失函數:
l′=∑u∈Slu(3)l^{\prime}=\sum_{u \in S} l_{u}\tag3l′=u∈S∑?lu?(3)
符號說明:
SSS: 所有尚未對目標項目ttt 進行評分的普通用戶的集合。
在將離散變量松弛為連續變量并逼近命中率后,我們可以將優化問題逼近如下:
min?G[y(v)]=∥y(v)∥22+η?l′subject?to?yvi∈[0,rmax?](4)\begin{array}{c} \min G\left[\mathbf{y}_{(v)}\right]=\left\|\mathbf{y}_{(v)}\right\|_{2}^{2}+\eta \cdot l^{\prime} \\ \text { subject to } \quad y_{v i} \in\left[0, r_{\max }\right] \end{array}\tag4 minG[y(v)?]=∥∥?y(v)?∥∥?22?+η?l′?subject?to?yvi?∈[0,rmax?]?(4)
符號說明:
η>0\eta > 0η>0: 一個系數,以實現以有限數量的虛假用戶評分來提升目標項目ttt的目標;
y(v)\mathbf{y}_{(v)}y(v)?:虛假用戶vvv的評分向量;
G[y(v)]G\left[\mathbf{y}_{(v)}\right]G[y(v)?]:虛假用戶vvv的評分帶來的損失。
在這里,使用 2 范數代替公式 (1)中的 0 范數。為了便于梯度的計算和全局最優值的逐步逼近,因為0范數只能比較有限數量的填充項組合,不能連續變化,而1正則化生成稀疏評分向量,這將 減少虛假用戶所選填充項目的多樣性。 至于對填充項目數量的限制,可以通過基于最終評分向量 y(v)\mathbf{y}_{(v)}y(v)? 為假用戶 vvv 選擇有限數量的項目來實現。 因此,我們可以通過解決上面的優化問題來生成假用戶。
問:又如何理解公式(4)呢?
答:要使得G[y(v)]G\left[\mathbf{y}_{(v)}\right]G[y(v)?]最小,即要使得∥y(v)∥22\left\|\mathbf{y}_{(v)}\right\|_{2}^{2}∥∥?y(v)?∥∥?22?和∑u∈Slu\sum_{u \in S} l_{u}∑u∈S?lu?都要小才行。也就是說(1)虛假用戶的評分要少;(2)虛假用戶的評分使得攻擊目標項目ttt以最大概率接近推薦列表。
由于基于深度學習推薦系統中的用戶和項目完全具有離散標簽,當它們反向傳播到輸入層時梯度會消失。 因此,直接采用已經應用于攻擊圖像分類器的反向梯度優化方法是不可行的。 一個自然的想法是將假用戶 vvv 的評分向量 y(v)\mathbf{y}_{(v)}y(v)?作為自變量,并制定如下中毒攻擊:
min?y(v)G[y(v),w?]subject?to?w?=arg?min?wL[w,Y∪y(v)](5)\begin{aligned} \min _{\mathbf{y}_{(v)}} & G\left[\mathbf{y}_{(v)}, \mathbf{w}^{*}\right] \\ \text { subject to } & \mathbf{w}^{*}=\underset{\mathbf{w}}{\arg \min } \mathcal{L}\left[\mathbf{w}, \mathbf{Y} \cup \mathbf{y}_{(v)}\right] \end{aligned}\tag5 y(v)?min??subject?to??G[y(v)?,w?]w?=wargmin?L[w,Y∪y(v)?]?(5)
符號系統說明:
w?\mathbf{w}^{*}w?:模型參數;
L\mathcal{L}L:訓練目標推薦系統的原始損失函數。
問:又如何理解公式(5)呢?
答:我覺得這個公式還是很好理解的,直接翻譯公式的話就是:在模型參數w?\mathbf{w}^{*}w?下使得損失最小。實際上表達的就是兩層意思:(1)虛假用戶的評分要少;(2)在增加了虛假用戶評分的新數據集Y∪y(v)\mathbf{Y} \cup \mathbf{y}_{(v)}Y∪y(v)?上重新訓練的損失要小。
作者很快對這個問題的解決來了一瓢冷水:這是一個雙層優化問題,因為 w?\mathbf{w}^{*}w? 的下層約束也取決于 y(v)\mathbf{y}_{(v)}y(v)?。解決深度學習模型的這個優化問題非常具有挑戰性,因為一旦y(v)\mathbf{y}_{(v)}y(v)? 發生變化,需要通過重新訓練模型來更新模型參數 w?\mathbf{w}^{*}w?。這個過程會很耗時,因為如果我們直接計算關于y(v)\mathbf{y}_{(v)}y(v)?的高階梯度,并在我們逐漸更新評分向量y(v)\mathbf{y}_{(v)}y(v)?時在每次迭代中對整個數據集重復訓練過程,它需要生成足夠的假用戶。特別是,我們需要大量的迭代,甚至數千次迭代,才能在隨機初始化的評分向量上為每個假用戶積累足夠的變化,這對于現實世界中的大型推薦系統來說是不切實際的。此外,推薦系統使用的評分矩陣通常是稀疏的,在其上訓練的神經網絡可能會生成在一定范圍內變化的預測評分,這將誤導基于梯度的優化算法,因為它們的學習量很小,并且很容易干擾模型訓練的隨機性。
那我們就拭目以待,看看作者想出了什么妙招來解決上述問題吧。
4.2.2 構建中毒模型
具體在這一步中,我們構建了中毒模型,根據獲得的損失函數指導每個假用戶的填充項選擇,以便我們可以有效地構建攻擊。在這里,我們從新的角度研究和利用推薦系統本身的特性。對于基于深度學習的推薦系統,作為一種特殊類型的神經網絡,它在訓練過程中試圖減少用戶的預測得分向量和真實評分向量之間的熵。直觀上,在用戶 uuu 的預測評分向量中得分較高的項目比其他項目更有可能在現實中被用戶 uuu 以高分評分。如果我們能夠成功構建中毒模型來模擬中毒攻擊成功后原始推薦系統的預期狀態,我們就可以推斷出訓練數據集中什么樣的假用戶對當前推薦系統的貢獻最大。中毒模型源自初始目標推薦系統,在攻擊期間定期更新以逐漸接近我們的攻擊目標。然后我們可以使用中毒模型對假用戶的偏好進行預測,并選擇預測評分最高的項目作為假用戶的填充項目。
注意,中毒模型的內部結構和超參數設置與目標推薦系統一致。 而且,它的訓練數據集最初應該與目標系統的原始訓練數據集相同,并且可以一一插入假用戶來模擬攻擊結果。 為了使中毒模型朝著我們想要的目標變化,我們需要定義一個有效的損失函數來迭代更新模型。 根據公式(5)中優化問題,我們針對攻擊中的中毒模型提出如下損失函數:
l=L+λ?G[y^(v)](6)l=\mathcal{L}+\lambda \cdot G\left[\widehat{\mathbf{y}}_{(v)}\right]\tag6l=L+λ?G[y?(v)?](6)
符號系統說明:
L\mathcal{L}L:在訓練原始推薦系統過程中選擇的損失函數,例如整個訓練數據集的二元交叉熵;
G[y^(v)]G\left[\widehat{\mathbf{y}}_{(v)}\right]G[y?(v)?]:與我們的攻擊目標密切相關;
λ>0\lambda > 0λ>0:一個在模型有效性和攻擊目標之間權衡的系數,它允許我們生成接近正常情況下訓練的推薦系統的中毒模型,同時實現我們的攻擊目標。
在這里,有效性與L\mathcal{L}L 相關并衡量模型準確預測用戶對驗證數據集偏好的程度。我們使用假用戶 vvv 的預測評分向量 y^(v)\widehat{\mathbf{y}}_{(v)}y?(v)?來替換 vvv 的真實評分向量 y(v)\mathbf{y}_{(v)}y(v)?,這樣我們就可以避免非常耗時的高階梯度計算。請注意,如果中毒模型的有效性遠低于使用相同數據集和原始損失函數(即L\mathcal{L}L)正常訓練的模型的有效性,則中毒模型不太可能接近受感染的最終狀態目標推薦系統,因為目標推薦系統將始終使用驗證數據集來保證其在正常模型訓練過程中的最佳性能。因此,有必要在攻擊過程中保證中毒模型的有效性。為了使中毒模型更好地模擬中毒攻擊的結果,我們設計了兩個訓練階段:即預訓練和中毒訓練。
預訓練: 中毒模型將首先隨機初始化,并在其訓練數據集上使用與目標推薦系統相同的損失函數(即 L\mathcal{L}L)進行訓練。 經過足夠的迭代,中毒模型會和正常訓練得到的推薦系統相似,保證了模型的有效性。 我們可以利用這個模型隨后開始中毒訓練。
中毒訓練: 此階段的中毒模型將使用公式(6)作為損失函數,并使用反向傳播方法對其內部的所有模型參數進行重復訓練。 我們選擇初始 λ\lambdaλ,使得驗證數據集上中毒模型的損失和對攻擊有效性建模的損失大致處于同一數量級。 在訓練過程中,中毒模型會越來越接近我們的攻擊目標,最終成為目標推薦系統的理想狀態。 然后我們可以使用中毒模型來幫助虛假用戶的項目選擇過程。
4.2.3 選擇填充項目
現在我們可以根據上次中毒訓練過程中獲得的最終中毒模型生成的預測評分為每個假用戶選擇填充項。 請注意,推薦系統給出的用戶預測評分向量中得分較高的項目往往與用戶具有更大的相關性,因為系統在訓練過程中減少了用戶預測評分向量和真實評分向量之間的熵。 因此,只要我們得到一個合理的中毒模型,我們就可以根據模型得到假用戶 vvv 的預測評分向量 y^(v)\widehat{\mathbf{y}}_{(v)}y?(v)?,并且將選擇目標項 ttt 以外的 top-n 項作為假用戶vvv的填充項。
然而,由于推薦系統中使用的數據集通常非常稀疏,并且從數據中訓練出來的模型具有很高的隨機性,基于深度學習的推薦系統針對特定用戶和物品的推薦結果往往不穩定,這意味著從數據中獲得的假用戶 中毒模型可能不是很好的選擇。 因此,如果我們總是直接使用中毒模型的預測來為假用戶選擇填充項,我們更有可能逐漸偏離正確的方向。 為了避免這種情況,我們開發了一個選擇概率的概念,即一個項目被選為填充項目的概率。 我們將選擇概率向量定義為 p={p1,p2,…,pN}\mathbf{p}=\left\{p_{1}, p_{2}, \ldots, p_{N}\right\}p={p1?,p2?,…,pN?},其中的每個元素代表對應項目的選擇概率。 如果選擇第iii 項作為填充項,則 pip_ipi? 將發生如下變化:
pi=pi?δ(7)p_{i}=p_{i} \cdot \delta \tag7pi?=pi??δ(7)
符號系統說明:
0≤δ≤10 \leq \delta \leq 10≤δ≤1:降低所選項目的選擇概率的衰減系數。
一個項目被選擇作為填充項目的次數越多,它的選擇概率就越低。 請注意,p\mathbf{p}p 首先被初始化為一個所有元素值為 1.0 的向量。 如果中毒攻擊后 p\mathbf{p}p 中的所有元素都低于 1.0,則 p\mathbf{p}p 將再次初始化。
在中毒模型為假用戶 vvv 給出預測評分向量 y^(v)\widehat{\mathbf{y}}_{(v)}y?(v)?后,我們將其與 p\mathbf{p}p 結合以指導填充項選擇,如下所示:
rv=y^(v)pT(8)\mathbf{r}_{v}=\widehat{\mathbf{y}}_{(v)} \mathbf{p}^{\mathrm{T}} \tag8 rv?=y?(v)?pT(8)
根據公式(8),我們選擇在 rv\mathbf{r}_{v}rv? 中得分最高的項目作為假用戶 vvv 的填充項目,并使用公式(7)更新相應的選擇概率。選擇概率的使用避免了特定項目的重復選擇,并為更多候選項目提供了更大的被選中機會,這允許目標項目與更多其他項目建立潛在的相關性,使我們的攻擊更有可能在全局范圍內有效。 對于數據集較稀疏的推薦系統,推薦結果的不確定性較大,我們建議選擇較小的δ\deltaδ來加強系統內部的連通性,即目標項目可以關聯更多的其他項目,避免局部最優結果,提高 攻擊性能。 結合以上見解,我們可以有效地解決優化問題。
解決優化問題的啟發式方法如算法 1 所示。請注意,由于我們的攻擊不針對特定的深度學習推薦系統,可以推廣到任何基于深度學習的推薦系統。
我們的項目選擇遵循三個步驟。
首先,我們使用中毒模型來預測假用戶 vvv 的評分向量 y^(v)\widehat{\mathbf{y}}_{(v)}y?(v)?。
其次,我們計算 y^(v)\widehat{\mathbf{y}}_{(v)}y?(v)? 和選擇概率向量 p\mathbf{p}p 的元素乘積作為調整后的評分向量 rv\mathbf{r}_{v}rv? 。
第三,我們選擇具有最大調整評級分數的 nnn 個非目標項目作為 vvv 的填充項目。
對于 vvv 的每個填充項目 iii,我們通過乘以常數(例如,0.9)來降低其選擇概率 pip_ipi?,使得它不太可能被其他假用戶選為填充項。我們使用選擇概率向量來增加假用戶填充項目的多樣性,以便目標項目可以潛在地與更多項目相關聯。請注意,我們假設每個假用戶使用相同的 nnn。但是,攻擊者也可以為不同的假用戶使用不同數量的填充項。特別是,攻擊者可以使用我們的攻擊為假用戶一個一個地添加填充項,一旦目標項的命中率開始下降就停止添加填充項。最后,我們根據之前擬合的正態分布為每個填充項生成評分,以確保它們的評分與其他正態評分非常相似,這也可用于有效規避檢測。我們將在第六節詳細說明檢測性能。請注意,為了加快生成所有假用戶的過程,我們也可以選擇每次生成 s(s>1)s (s > 1)s(s>1) 個假用戶,代價是降低對攻擊有效性的細粒度控制。
問:如何來理解算法1?
答:實際上通過算法1我們可以大致了解作者具體攻擊的過程。我們以矩陣分解來這個攻擊過程:
對每一個虛假用戶做如下操作:
(1)初始化攻擊模型MpM_pMp?,假設YM×N≈UM×kVN×kT\mathbf{Y}_{M \times N} \approx U_{M \times k} V_{N \times k}^TYM×N?≈UM×k?VN×kT?,增加了mmm個虛假用戶后,[Y∪y(v)](M+m)×N≈U(M+m)×kVN×kT[\mathbf{\mathbf{Y} \cup \mathbf{y}_{(v)}}]_{(M+m) \times N} \approx U_{(M+m) \times k} V_{N \times k}^T[Y∪y(v)?](M+m)×N?≈U(M+m)×k?VN×kT?;
(2)增加(v,t,rmax?)\left(v, t, r_{\max }\right)(v,t,rmax?)到Y\mathbf{Y}Y,即每個虛假用戶都將目標項目ttt的評分設置為rmax?r_{\max }rmax?(我覺得這一步很關鍵);
(3)使用 L\mathcal{L}L 在 Y\mathbf{Y}Y 上預訓練 MpM_pMp?;
(4)重新訓練[Y∪y(v)](M+m)×N≈U(M+m)×kVN×kT[\mathbf{\mathbf{Y} \cup \mathbf{y}_{(v)}}]_{(M+m) \times N} \approx U_{(M+m) \times k} V_{N \times k}^T[Y∪y(v)?](M+m)×N?≈U(M+m)×k?VN×kT?得到最終的MpM_pMp?;
問:第(3)步和第(4)步的區別是什么?
答:這兩步最大的區別就是使用的損失函數不同,第(3)步使用矩陣分解的常規loss;而第(4)步采用的公式(6)對應的loss
(5)用MpM_pMp?預測用戶對所有項目的評分,得到評分向量y^(v)\widehat{\mathbf{y}}_{(v)}y?(v)?;
(6)利用公式(8)來計算rvr_vrv?;
(7)選擇 rv\mathbf{r}_vrv? 中 nnn個分數最高的 ttt 以外的這些項作為填充項;
(8)利用公式(7)更新 p\mathbf{p}p ;(說實話,這一步我也不知道怎么更新的)
(9)為選定的填充項生成評分,構成用戶 vvv 的評分向量 y(v)\mathbf{y}_{(v)}y(v)?;
(10)Y←Y∪y(v)\mathbf{Y} \leftarrow \mathbf{Y} \cup \mathbf{y}_{(v)}Y←Y∪y(v)?。
接下來就是代碼實現這個論文的idea。Fighting ~~
總結
以上是生活随笔為你收集整理的Data Poisoning Attacks to Deep Learning Based Recommender Systems论文解读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做数学题比统一世界更爽,你会怎么做呢?
- 下一篇: 对抗攻击(2)