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,
\]
这个条件分别限制了
- 恶意用户数量;
- 每个用户的打分数量;
- 每个用户的打分的幅度,
以保证这些信息也是接近真实数据的.
此时, 我们其实需要通过求解如下问题来找寻合适的低秩矩阵:
\[\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}\) 的优劣.
\[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}),
\]
则这些恶意用户能够产生推荐不准的结果;
\[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\)) 的评分很高, 从而更容易被推荐.
\[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,
\]
于是可得
![](https://img2022.cnblogs.com/blog/1603215/202205/1603215-20220511165823491-1009487829.png)
其中
\[\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.
![](https://img2022.cnblogs.com/blog/1603215/202205/1603215-20220511165829298-1073706250.png)
![](https://img2022.cnblogs.com/blog/1603215/202205/1603215-20220511165834774-184482448.png)
注: 无意中看到了这篇文章的 review, 我感觉工作做的不错了, 不过审稿人还是觉得创新不是很够, NIPS 看来还是很难发啊.
注: 作者还讨论了 是否容易被检测的问题, 但是我不是特别关心, 就先不讲了.
代码
代码