这篇文章虽然是攻击图推荐模型,但是实际攻击的是Random Walk算法
用随机游走给用户 u u u推荐物品时,从节点 u u u出发,每次有 1 − α 1-\alpha 1−α的概率跳转到邻居节点,也有 α \alpha α的概率回到初始 u u u节点。所有物品会得到一个转移概率,转移概率大的物品应该推荐给用户 u u u。
公式化描述就是:
p u = ( 1 − α ) ⋅ Q ⋅ p u + α ⋅ e u Q x y = { r x y ∑ z ∈ Γ x r x z if ( x , y ) ∈ E 0 otherwise p_{u}=(1-\alpha) \cdot Q \cdot p_{u}+\alpha \cdot e_{u} \\ Q_{x y}=\left\{\begin{array}{ll} \frac{r_{x y}}{\sum_{z \in \Gamma_{x}} r_{x z}} & \text { if }(x, y) \in E \\ 0 & \text { otherwise } \end{array}\right. pu=(1−α)⋅Q⋅pu+α⋅euQxy={∑z∈Γxrxzrxy0 if (x,y)∈E otherwise
攻击目标是提高target item在正常用户推荐列表的hit rate。
m个fake user,每人n个items,称之为filler items。所以攻击者要做的就是决定这m个fake user点击哪些filler items、打多少分:
max h ( t ) subject to ∣ r v ∣ 0 ≤ n + 1 , ∀ v ∈ { v 1 , v 2 , ⋯ , v m } r v i ∈ { 0 , 1 , ⋯ , r m a x } , ∀ v ∈ { v 1 , v 2 , ⋯ , v m } \begin{array}{l} \max h(t) \\ \text { subject to }\left|r_{v}\right|_{0} \leq n+1, \forall v \in\left\{v_{1}, v_{2}, \cdots, v_{m}\right\} \\ r_{v i} \in\left\{0,1, \cdots, r_{m a x}\right\}, \forall v \in\left\{v_{1}, v_{2}, \cdots, v_{m}\right\} \end{array} maxh(t) subject to ∣rv∣0≤n+1,∀v∈{v1,v2,⋯,vm}rvi∈{0,1,⋯,rmax},∀v∈{v1,v2,⋯,vm}
其中 { v 1 , v 2 , ⋯ , v m } \left\{v_{1}, v_{2}, \cdots, v_{m}\right\} {v1,v2,⋯,vm}是fake users list。
转换成优化问题有两个难点要解决:
target item肯定推荐排名越靠前越好,相应地其他物品排名越靠后越好,即 p u t p_{ut} put越大越好,那么对于单个用户的loss:
l u = ∑ i ∈ L u g ( p u i − p u t ) g ( x ) = 1 1 + exp ( − x / b ) l_{u}=\sum_{i \in L_{u}} g\left(p_{u i}-p_{u t}\right) \\ g(x)=\frac{1}{1+\exp (-x / b)} lu=i∈Lu∑g(pui−put)g(x)=1+exp(−x/b)1
其中 L u L_u Lu是用户u的推荐列表。
所以所有没有点击目标物品的正常用户的loss:
l = ∑ u ∈ S l u l=\sum_{u \in S} l_{u} l=u∈S∑lu
那么我们的优化问题就是:
min F ( w v ) = ∥ w v ∥ 2 2 + λ ⋅ l subject to w v i ∈ [ 0 , r max ] \begin{array}{l} \min F\left(w_{v}\right)=\left\|w_{v}\right\|_{2}^{2}+\lambda \cdot l \\ \text { subject to } w_{v i} \in\left[0, r_{\max }\right] \end{array} minF(wv)=∥wv∥22+λ⋅l subject to wvi∈[0,rmax]
这里我有个点不明白,为什么对w的l2正则化可以“躲避检测”
用PGD解决上式的优化问题,得到 w i w_i wi(fake user v 连接全部item的边的权重)