摘要
作者对基于深度学习的推荐系统实施了投毒攻击。
主要针对的推荐系统是:使用了**神经协同过滤框架(NCF)(采用了MLP深度学习算法)**的基于深度学习的推荐系统
通过构造一个毒药模型——用于预测假用户的评分项目,从而构造假用户,然后把假用户注入到推荐系统中,达到影响推荐系统对普通用户的推荐项目(让一个项目能尽可能多的出现在普通用户的推荐列表中)
主要工作
- 首次对基于深度学习的推荐系统的数据投毒攻击进行了系统研究
- 将攻击问题描述成一个最优化的问题,并且开发了多种技术来实现
- 评估了这种攻击方法,并且和现有的攻击方法在数据集上的结果进行了比较
- 通过统计分析用户的评级检测假用户,并且对研究提出的攻击进行了有效性分析
具体思路
因为:①用户的数据和评分项目都是离散变量;②深度神经网络的训练过程很耗费时间
所以:不能通过注入大量的训练数据来完成这个投毒攻击
因此:通过把投毒攻击转换成一个最优化问题:怎样让项目$i$对用户$u$的推荐率达到最大
不是直接给假用户生成需要的评分项目,而是训练出一个代理的毒药模型,用来模拟基于深度学习的目标推荐系统。然后用这个毒药模型预测每个假用户的评分向量,然后处理预测出来的评分向量,用以辅助选择每个假用户的评分项目,从而有效实现目标。
每个假用户除了要给目标项目评分外,还需要给其他一些项目评分,这些其他项目被称为填充项目
背景知识
NCF(神经协同过滤)
针对复杂的非线性用户项的神经网络建模互动
使用MLP(多层感知器)获取到的用户和项目潜在因子向量,投入到深度神经网络中,然后捕获非线性用户项
NCF的输出层是对用户项交互$y_{ui}$的预测
针对推荐系统的两种投毒攻击
- 数据投毒攻击
- 针对深度学习的训练过程
- 通过投入假用户来影响推荐系统
- profile污染攻击
- 针对深度学习的测试过程
- 重点是通过CSRF(跨站请求伪造)污染用户的profile(比如历史行为)
- 限制:
- 依赖于CSRF,攻击很难大范围实施
- 无法应用于item-to-item的推荐系统,因为无法污染item
算法不可知攻击和算法特定攻击
算法不可知攻击(如先令攻击)和随机攻击、随波逐流攻击一样不考虑推荐系统所用的具体算法是什么,所以攻击有效性有限
算法特定攻击针对不同类型的推荐系统进行了攻击的优化,所以攻击有效性更好
使用的方法
算法特定攻击
多重启发式算法来近似求解优化问题
具体实现过程
- 首先,我们使用损失函数来近似命中率,其中较小的损失大致对应于较高的命中率。在给定损失函数的情况下,我们将优化问题转化为易于处理的问题。
- 其次,基于我们设计的损失函数,我们构造了一个毒药模型来模拟一个折衷的基于深度学习的推荐系统。
- 我们首先使用验证数据集对毒药模型进行预训练,以确保其能够正确地预测用户的偏好,然后使用损失函数(是通过提取第一步得到的损失函数中与攻击相关的部分得到的)来更新毒药模型,以逼近受损目标推荐系统的预期状态。
- 根据毒药模型中预测的假用户的评分向量和一个选择概率向量,为假用户选择填充项目。其中,项目的选择概率向量会为了给下一个假用户选择填充项目而周期性更新
- 重复第二步和第三步直到m个假用户生成完毕
近似命中率
- 放松评分以获得连续变量:
- 在攻击过程中把$Y$和$\widehat{Y}$中的评分看作是连续变量
- 在基于隐式数据集的推荐系统中,预测的评分范围为0.0到1.0,可以将其视为用户和项目之间的关联。
- 在从目标推荐系统获得最终评分后,如果需要,我们可以将其投影成离散整数。
- 近似命中率:
-
给每个用户使用的损失函数:利用每个用户的预测得分向量上的损失函数$l_u$来增加目标项目$t$的命中率。当目标项$t$已经在用户$u$的推荐列表中,就没有必要再用损失函数来提高目标项$t$的命中率
-
Eq(2),其中k≥0,用于增强攻击的健壮性和可转移性。LOG运算符的使用减少了显性效应,同时由于单调性而保持了置信度分数的顺序。k可以保证目标项目与Lu中评分最低的项目保持一定距离。
-
给所有用户使用的损失函数:其中$S$是所有没有项目$t$的普通用户的集合
-
转换优化问题:
-
在将离散变量松弛为连续变量并近似命中率之后,我们可以将优化问题近似如下。其中η>0是用来自虚假用户的有限数量的评分来实现推广目标项目$t$的目的的系数。这里,我们用l2范数代替方程(1)中的l0范数。由于正则化只能比较有限的填充项组合且不能连续变化,为了便于梯度的计算和全局最优值的逐步逼近,而li正则化生成稀疏的评分评分器,这将减少虚假用户选择的填充项的多样性;对于填充项数量的限制,我们可以根据假用户的最终评分向量y(v)选择有限的填充项来实现
中毒攻击公式:
-
由于基于深度学习的推荐系统中的用户和项目完全是离散的,当它们反向传播到输入层时,梯度就会消失,因此直接采用已应用于攻击图像分类器的反向梯度优化方法是不可行的,一个自然的想法是将虚假用户v的评分向量y(v)作为自变量,并将中毒攻击公式如下所示。
-
其中w表示模型参数*,L是训练目标推荐系统的原始损失函数,由于w的下层约束也依赖于y(v),这是一个双层优化问题。对于深度学习模型来说,求解这个优化问题是很有挑战性的,因为一旦y(v)发生变化,模型参数w就需要通过重新训练模型来更新。如果我们直接计算高阶梯度w.r.t,那么这个过程将非常耗时,因为它需要生成足够多的伪用户。Y(v),当我们逐渐更新评分向量(V)时,在每次迭代中重复整个数据集的训练过程。特别地,我们需要大量的迭代,甚至数千次的迭代,以便为每个虚假用户积累足够的随机初始化的评分向量的变化,这对于现实世界中的大型推荐系统是不现实的。
-
此外,推荐系统使用的评分矩阵通常是稀疏的,在其上训练的神经网络可能会产生在一定范围内变化的预测评分,这对于基于梯度的优化算法来说是有误导性的,因为它们的学习率很小,而且容易受到模型训练的随机性的干扰。
构建毒药模型:
-
通过毒药模型模拟中毒攻击成功后原始推荐系统的与其状态,推测出训练数据集中哪些假用户对这个推荐系统的贡献最大。
-
毒药模型需要在攻击中不断更新
-
用毒药模型预测假用户的喜好,并选择预测得分高的项目作为假用户的填充项目
-
毒药模型的内部结构、超参数设置和内部结构与目标推荐系统一致
-
攻击中的损失函数:
L是在训练原始推荐系统的时候选择的损失函数,例如整个训练数据集上的二进制交叉熵。 G[y(v)]与我们的攻击目标有很强的相关性,λ>0是模型有效性和攻击目标之间的折衷系数,它允许我们在实现攻击目标的同时生成接近正常情况下训练的推荐系统的毒物模型。 这里的有效性和L相关,有效性测量模型准确预测用户对验证数据集的偏好的程度。 用假用户v的预测评分向量来代替v的真实评分向量y(v),再根据它们之间的相关性避免高阶梯度计算 如果毒药模型的有效性远低于使用相同数据集和原始损失函数正常训练的模型的有效性,那么这个毒药模型不太可能接近受损目标推荐系统的最终状态
**预训练:**把毒药模型训练成和目标推荐系统相似的系统
**投毒训练:**用公式(6)作为损失函数,用反向传播方法反复训练内部所有的模型参数
选择填充项目
因为推荐系统中使用的数据集通常很分散,通过数据训练出来的模型也会不稳定。所以从毒药模型得出的假用户的选择不一定是很好的。所以我们不能总是直接使用毒药模型预测出来的评分为假用户选择填充项目
提出一个新概念——选择概率:就是选择这个项目作为填充项目的概率
一个项目被选为填充项目的次数越多,这个项目的选择概率就越小
σ越小,项目间的关联性就越大
当所有的项目的选择概率都小于1时,所有选择概率会被重新初始化
通过Eq(8)计算出$r_v$最大的前n个项目就是用户v的填充项目
实验
用的推荐系统
使用NeuMF推荐算法(是NCF的一个实例)的推荐系统
使用的数据集
- MovieLens-100K
- MovieLens-1M
- Last.fm
处理Last.fm
Last.fm是一个纯隐式数据集,因为标签赋值不能用数值来量化。 我们采用了几种数据处理策略,使其适用于我们的实验。 首先,我们将他们的互动(给艺术家贴tag)二值化为积极的1.0和不积极的0.0,这可以被视为隐含评分。(1.0就表示这个用户评分了,0.0表示没评分) 其次,我们删除数据集中的重复项,因为一个用户可能会将多个标签分配给一个艺术家。 第三,由于获得的数据集仍然是稀疏的,我们迭代地过滤数据集,以确保数据集中的剩余部分对于每个用户和项目(即艺术家)至少有10个评分,以避免“冷启动”问题。 我们最终获得了701名用户、1,594个项目和36,626个评分的数据集。
基线攻击 Baseline Attack
随机攻击
攻击者随机选择每个假用户的填充项目
如果训练数据集是显式的,攻击者将在初始用户-项目交互矩阵上拟合正态分布,以生成填充物项目的新的连续评级得分。
如有必要,这些评级分数将被投影为离散整数。
流行攻击
从前10%流行的项目中选择$n\times10\%$的填充项目,再从剩下的项目中选择$n\times90\%$的填充项目
之后就可以用随机攻击中的方法给填充项目选择评分
对基于MF的推荐系统的中毒攻击(MF攻击)
使用PGA攻击作为基线MF攻击
评估指标
通过对比攻击前后项目t在用户TOP-K的推荐列表中所出现的比例来看攻击是否有效
参数设置