1. 程式人生 > 其它 >Data Poisoning Attacks on Factorization-Based Collaborative Filtering

Data Poisoning Attacks on Factorization-Based Collaborative Filtering

目錄

Li B., Wang Y., Singh A. and Vorobeychik Y. Data poisoning attacks on factorization-based collaborative filtering. In Advances in Neural Information Processing Systems (NIPS), 2016.

本文想通過構建一些惡意的使用者互動行為, 使得采用這些資料訓練所估計出的評分矩陣會偏向某些特定的 items.

主要內容

本文主要考慮補全得分矩陣

\[M \in \mathbb{R}^{m \times n} \]

的問題 (\(m\) 個users, \(n\) 個items). 並令

\[\Omega = \{(i, j): M_{ij} \text{ is observed}\}, \]

表示已觀測部分.

矩陣插補演算法

通常我們希望找到一個低秩的近似滿足

\[\min_{X \in \mathbb{R}^{m \times n}} \: \| \mathcal{R}_{\Omega} (M - X) \|_F^2, \: \text{s.t.} \: \text{rank}(X) \le k, \]

其中 \([\mathcal{R}_{\Omega}(A)]_{ij} = A_{ij}, \: (i, j) \in \Omega\)

否則為0.

對於上述非凸問題, 作者針對下面的兩種優化方式.

alternating minimization

\[\tag{1} \min_{U \in \mathbb{R}^{m \times k}, V \in \mathbb{R}^{n \times k}} \Bigg\{\|\mathcal{R}_{\Omega}(M - UV^T)\|_F^2 + 2 \lambda_U \|U\|_F^2 + 2\lambda_V \|V\|_F^2 \Bigg\}. \]

nuclear-norm minimization problem

\[\tag{2} \min_{X \in \mathbb{R}^{m \times n}} \Bigg\{\|\mathcal{R}_{\Omega}(M - X)\|_F^2 + 2 \lambda \|X\|_* \Bigg\}. \]

攻擊模型

我們通過構造一些惡意的使用者行為 $ \widetilde{M} \in \mathbb{R}^{m' \times n}$, 其滿足

\[m' = \alpha m, |\widetilde{\Omega}_i| \le B, \|\widetilde{M}\|_{\infty} \le \Lambda, \]

這個條件分別限制了

  1. 惡意使用者數量;
  2. 每個使用者的打分數量;
  3. 每個使用者的打分的幅度,

以保證這些資訊也是接近真實資料的.

此時, 我們其實需要通過求解如下問題來找尋合適的低秩矩陣:

\[\min_{X \in \mathbb{R}^{m \times n}, \widetilde{X} \in \mathbb{R}^{m' \times n}} \: \| \mathcal{R}_{\Omega} ([M, \widetilde{M}] - [X, \widetilde{X}]) \|_F^2, \: \text{s.t.} \: \text{rank}([X, \widetilde{X}]) \le k, \]

這裡 \([A, B]\) 是做一個上下拼接.

alternating minimization

\[\tag{P1} \min_{U, \widetilde{U}, V} \Bigg\{\|\mathcal{R}_{\Omega}(M - UV^T)\|_F^2 + \|\mathcal{R}_{\widetilde{\Omega}}(\widetilde{M} - \widetilde{U}V^T)\|_F^2 + 2 \lambda_U( \|U\|_F^2 + \|\widetilde{U}\|_F^2) + 2\lambda_V \|V\|_F^2 \Bigg\}. \]

nuclear-norm minimization problem

\[\tag{P2} \min_{X, \widetilde{X}} \Bigg\{\|\mathcal{R}_{\Omega}(M - X)\|_F^2 + \|\mathcal{R}_{\widetilde{\Omega}}(M - \widetilde{X})\|_F^2 + 2 \lambda \|[X, \widetilde{X}]\|_* \Bigg\}. \]

我們假設 (1), (2) 解出的結果為 \(\bar{M}\), 而新增惡意使用者後 (P1), (P2) 的結果為 \(\hat{M}\). 文中提出了三種效用用於評估惡意矩陣 \(\widetilde{M}\) 的優劣.

  • Availability attack:
\[R^{av}(\hat{M}, \bar{M}) = \|\mathcal{R}_{\Omega^C}(\hat{M} - \bar{M})\|_F^2. \]

顯然如果

\[\widetilde{M} = \mathop{\arg \max} \limits_{\widetilde{M}} R^{av} (\hat{M}(\widetilde{M}), \bar{M}), \]

則這些惡意使用者能夠產生推薦不準的結果;

  • Integrity attack
\[R^{in}_{J_0, w} (\hat{M}, \bar{M}) = \sum_{i=1}^m \sum_{j \in J_0} w(j) \hat{M}_{ij}. \]

顯然最大化此效用, 則這些惡意使用者資料會導致某些 items (\(J_0\)) 的評分很高, 從而更容易被推薦.

  • Hybrid attack 則是二者的混合:
\[R^{hybrid}_{J_0, w, \mu} (\hat{M}, \bar{M}) = \mu_1 R^{av} (\hat{M}, \bar{M}) + \mu_2 R^{in}_{J_0, w} (\hat{M}, \bar{M}). \]

注: \(\Omega^C\), 即未觀測到的部分, 即預測的部分.

求解

作者採用 PGD (projected gradient ascent) 來求解:

\[\widetilde{M}^{(t+1)} = \text{Proj}_{\mathbb{M}} (\widetilde{M}^{(t)} + s_t \cdot \nabla_{\widetilde{M}} R(\hat{M}, \bar{M})). \]

現在的問題就是, \(R\) 關於\(\widetilde{M}\)的梯度包含了一個優化的過程, 顯然直接求是辦不到的.
首先將其拆分為

\[\nabla_{\widetilde{M}} R(\hat{M}, \bar{M}))= \nabla_{\widetilde{M}} \hat{M} \nabla_{\hat{M}} R(\hat{M}, \bar{M})) \]

對於前者作者則是用一個 KKT 條件求解.

以 (P1) 為例, 其 KKT 條件為

\[\lambda_U \bm{u}_i = \sum_{j \in \Omega_i} (M_{ij}, - \bm{u}_i^T\bm{v}_j ) \bm{v}_j \\ \lambda_U \tilde{\bm{u}}_i = \sum_{j \in \widetilde{\Omega}_i} (\widetilde{M}_{ij}, - \tilde{\bm{u}}_i^T\bm{v}_j ) \bm{v}_j \\ \lambda_V \bm{v}_j = \sum_{i \in \Omega_j'} (M_{ij} - \bm{u}_i^T \bm{v}_j) \bm{u}_i + \sum_{i \in \widetilde{\Omega}_j'} (\widetilde{M}_{ij} - \tilde{\bm{u}}_i^T \bm{v}_j) \tilde{\bm{u}}_i, \]

於是可得

其中

\[\Sigma_U^{(i)} = \sum_{j \in \Omega_i \cup \widetilde{\Omega}_i} \bm{v}_j \bm{v}_j^T, \Sigma_V^{(j)} = \sum_{i \in \Omega_j \cup \widetilde{\Omega}_j} \bm{u}_i \bm{u}_i^T, \]

有了 \(U, V\) 關於 \(\widetilde{M}\)的導數, 前者的導數自然也可以得到.

注: (P2) 的求解需要用到 subgradient.

注: 無意中看到了這篇文章的 review, 我感覺工作做的不錯了, 不過審稿人還是覺得創新不是很夠, NIPS 看來還是很難發啊.

注: 作者還討論了 是否容易被檢測的問題, 但是我不是特別關心, 就先不講了.

程式碼

程式碼