【RS-Attack】Poisoning Attacks to Graph-Based Recommender Systems (ACSAC‘18)

Poisoning Attacks to Graph-Based Recommender Systems ACSAC’18

这篇文章虽然是攻击图推荐模型,但是实际攻击的是Random Walk算法

Random Walk

  1. 选择N步作为随机步数的总数,即停止的目标
  2. 从初始点开始( starting point),我们走得每一步都有一个概率,来决定我们继续或是重新开始(回到初始点)
  3. 当你决定要继续random walk时,你会统一(如果你的边是带有权重的,你可以做权重采样,比如rating)随机地从接下来的点(node)里选择一个邻居。接下来跳到选择的邻居那里。这样就完成了N步中的一步;
  4. 重复2、3
  5. 最后统计我们跳到同样的点的次数,最多次数的那个点就是我们的推荐内容

用随机游走给用户 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α)Qpu+α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 rv0n+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。

转换成优化问题有两个难点要解决:

  • 用户打分一般是12345整数,这里在优化求解中让假用户 v v v的评分是0~5的连续值 w v w_v wv,得到filler items之后,再生成整数的评分 r v r_v rv。但是注意这里 w v i w_{vi} wvi r v i r_{vi} rvi没有任何关系, w w w时为了优化问题选出filler items用的。但是为了攻击隐秘性,选出filler items之后的评分是从正常用户对其的评分分布得出的。这样可以模仿正常用户。
  • hit ratio作为优化目标,和 w v w_v wv建立起关系非常复杂,所以就用物品的“转移概率 p u p_u pu”来近似替代。

Loss Function

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=iLug(puiput)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=uSlu
那么我们的优化问题就是:
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)=wv22+λl subject to wvi[0,rmax]
这里我有个点不明白,为什么对w的l2正则化可以“躲避检测”

用PGD解决上式的优化问题,得到 w i w_i wi(fake user v 连接全部item的边的权重)

生成打分

  1. fake user对target打最高分
  2. 根据求出的 w i w_i wi,从高到低选出n个item作为filler items
  3. filler tiem的打分和 w i w_i wi无关,而是从正常用户为这个item打分的分布中sample一个数,离散化后作为打分。 w i w_i wi只是用来选filler item的。
【RS-Attack】Poisoning Attacks to Graph-Based Recommender Systems (ACSAC‘18)_第1张图片

你可能感兴趣的:(论文解读,推荐系统,对抗攻击,机器学习,深度学习,算法)