个人总结:本文主要通过构造一个毒药模型——用于预测假用户的评分项目,从而构造m个假用户,将假用户注入到推荐系统中,达到影响推荐系统对普通用户的推荐项目(让一个项目能尽可能多的出现在普通用户的推荐列表中)
攻击的最终目的是推广自己的项目到普通用户,让自己的项目的推荐率达到最大。
不是直接让假用户生成需要的评分项目,需要训练出一个代理的毒药模型模拟基于深度学习的目标推荐系统。然后用这个模型预测每个假用户的评分向量,然后处理预测出来的评分向量,用以辅助选择每个假用户的评分项目,从而有效实现目标。每个假用户除了要给目标项目评分外,还需要给其他一些项目评分,这些其他项目被称为填充项目
摘要
推荐系统在帮助用户在亚马逊、YouTube和谷歌News等各种网络服务中找到他们感兴趣的信息中扮演着至关重要的作用。各种推荐系统,从基于邻域、基于关联规则、基于矩阵分解到基于深度学习的,已经在工业中开发和部署。其中,基于深度学习的推荐系统因其优越的性能而越来越受欢迎。在这项工作中,我们对基于深度学习的推荐系统的数据中毒攻击进行了系统研究。攻击者的目标是操作推荐系统,使攻击者选择的目标项目被推荐给许多用户。为了实现这一目标,我们的攻击将虚假用户注入精心设计的评级。具体来说,我们将攻击表述为一个优化问题,这样注入的评级将最大限度地提高推荐目标项目的正常用户的数量。然而,由于优化问题是一个非凸整数规划问题,因此解决优化问题具有挑战性。为了解决这一挑战,我们开发了多种技术来近似地解决优化问题。我们在三个真实世界的数据集上的实验结果,包括小数据集和大数据集,表明我们的攻击是有效的,并且优于现有的攻击。此外,我们试图通过对正常用户和虚假用户的评分模式进行统计分析来检测虚假用户。我们的结果表明,即使部署了这样的探测器,我们的攻击仍然是有效的,并且优于现有的攻击。
介绍
在数据爆炸的时代,人们在日常生活中经常遇到信息超载的问题。例如,当他们在网上购物、阅读新闻、听音乐或观看视频时,他们经常面临从大量候选人中选择自己感兴趣的物品的挑战。推荐系统通过挖掘历史用户-项目交互数据,帮助人们轻松地找到他们感兴趣的项目。因此,推荐系统在现实世界中得到了广泛的应用,带来了巨大的经济效益。与向所有用户推荐相同项目的非个性化推荐系统不同,我们在这项工作中关注的个性化推荐系统使用用户的历史行为(例如,评级或点击)来建模他们的偏好,并为每个用户的提供个性化的推荐。在一个典型的个性化推荐系统设置,我们得到一组用户,一组项目,和日志用户的历史交互(例如,评级),目标是推荐每个用户列表根据用户偏好从历史交互。传统的推荐系统包括基于邻域的、基于关联规则的、基于矩阵分解(a.k.a潜在因子模型)和基于图的。近年来,随着深度学习技术的快速发展,深度神经网络已被应用于增强推荐系统。此外,由于传统技术无法实现的非线性变换和表示学习等各种优势,深度学习正逐渐成为推荐系统领域的一种技术趋势。
同时,多项研究表明,推荐系统容易受到数据中毒攻击,即[12]、[13]、[27]、[28]、[32]、[45]、[46](a.k.a先令攻击[18])。特别是,在数据中毒攻击中,攻击者将精心设计的虚假用户注入推荐系统,这样推荐系统就会根据攻击者的意愿提出建议,例如,向许多正常用户推荐攻击者选择的目标项目。数据中毒攻击对推荐系统的可信度构成严重威胁,并可能操纵互联网意见。例如,如果攻击者操纵一个新闻推荐系统,从而总是将一种特定类型的新闻推荐给用户,那么攻击者可能能够操纵用户的意见。然而,现有的数据中毒攻击要么对推荐系统算法[27]、[32]不可知,要么针对传统的推荐系统算法,如基于关联规则的[46]、基于图的[13]和基于矩阵分解的[12],[28]。尽管基于深度学习的推荐系统得到了越来越多的关注,并在工业中部署,但它们对数据中毒攻击的安全性在很大程度上是未知的。
在这项工作中,我们的目标是弥补这一差距。具体来说,我们提出了针对基于深度学习的推荐系统进行优化的数据中毒攻击。我们认为攻击者的目标是在基于深度学习的推荐系统中推广目标项目,即向大量用户推荐攻击者选择的目标项目。为了实现这一目标,攻击者向推荐系统向虚假用户注入精心设计的评级。由于在一次攻击中资源有限,我们假设攻击者只能注入有限数量的假用户,每个假用户评分有限数量的项目(包括目标项目和其他非目标项目),以逃避琐碎的检测。构建攻击的关键挑战是为每个假用户选择评级项目。为了解决这一挑战,我们将攻击制定为一个优化问题的目标函数,最大化目标项目的命中率,其中一个项目的命中率是推荐给该项目的正常用户的比例。
然而,优化问题是难以解决的原因如下:i)问题的输入,即用户的数据和项目在基于深度学习的推荐系统,是离散变量,ii)深度神经网络的训练过程是耗时的,这使得它不可能为任何方法需要大量的训练迭代来解决问题。因此,我们发展了启发式方法来近似地解决优化问题。我们没有直接为虚假用户生成期望的评分项目,而是训练了一个称为毒药模型的代理模型,并仔细修改它,以模拟基于目标深度学习的推荐系统。然后,我们利用这个毒药模型来预测每个假用户的评分得分向量,然后我们对该向量进行处理,以帮助选择每个假用户的评分项目,从而有效地实现我们的目标。
我们评估了我们的攻击,并将其与现有的数据中毒攻击进行比较,使用三个不同大小的真实数据集,即电影镜头-100K[19],Last.fm[2]和电影镜头-1M[19]。我们的结果表明,我们的攻击可以有效地促进目标项目,并显著地在白盒设置下超过基线攻击。例如,通过只插入5%的虚假用户,我们的攻击可以使不受欢迎的目标项目在Last.fm数据集中推荐给正常用户的52.6倍左右。此外,在较大的movielens-1M[19]数据集上,当仅注入5%的虚假用户时,我们的攻击对随机目标项目的命中率达到0.0099,约为基线攻击达到的最佳命中率的1.2倍。我们进一步探讨了在两种不同的部分知识设置下,部分知识对我们的中毒发作的影响。我们观察到,在这些设置中,我们的攻击仍然有效,并且显著优于基线攻击。例如,当攻击者只知道30%的评级在原始用户项评级矩阵,我们的攻击获得命中率0.0092随机目标项目注入5%的假用户MovieLens-1M数据集,这是至少1.3倍的命中率的基线攻击。此外,我们的攻击还可以转移到基于结构未知的深度学习的推荐系统中。特别是,即使我们不知道目标推荐系统使用的确切神经网络架构,我们的攻击仍然使得在movielens-100k数据集中注入5%的假用户时,随机目标项目推荐给正常用户的5.5倍。研究结果表明,我们的攻击对基于深度学习的推荐系统构成了严重的安全威胁。
此外,我们通过对假用户的评级模式的统计分析来探索检测假用户,并衡量在这种检测下的攻击有效性。这种检测背后的直觉是,假用户可能具有在统计上与正常用户不同的评级模式,因为它们是根据特定的规则生成的。特别是,对于每个用户,我们从其评级中提取多个特性。然后,我们训练一个二值分类器,基于特征值来区分假用户和正常用户,并利用SVMTIA[51]方法来检测潜在的假用户。服务提供商在培训推荐系统之前,会删除检测到的虚假用户。实验结果表明,该方法能够有效地检测现有攻击产生的虚假用户。然而,该方法错误地识别了我们的攻击所构建的很大一部分(如30%)的假用户为正常用户。因此,即使部署了这种检测方法,我们的攻击仍然有效的,并且显著优于现有的攻击。
本文对基于深度学习的推荐系统的数据中毒攻击进行了首次系统的研究。
•我们将我们的攻击表述为一个优化问题,并开发了多种技术来近似地解决它。
•我们评估了我们的攻击,并将其与三个真实数据集上的现有数据集进行了比较。
•我们通过统计虚假用户的评级并分析其对数据中毒攻击有效性的影响来检测虚假用户。
在本节中,我们将简要介绍推荐系统和现有的数据中毒攻击。
A. 推荐系统
我们考虑了一个典型的基于协同过滤的推荐系统设置,其中我们有M个用户和N个项目,并且我们得到了一个用户过去的用户-项目交互的记录{u,i,yui},其中yui表示用户u对项目i的偏好。观察到的用户-项目交互{u,i,yui}可以表示为用户-项目交互矩阵Y∈RM×N。通常,Y是非常稀疏的,也就是说,平均每个用户将只与所有N个项目中的一小部分进行交互。我们使用Y的行向量,表示为y(u)(即y(u)={yu1,yu2,…,yuN})来表示每个用户u,以及Y的列向量,表示为y(i)(即y(i)={y1i,y2i,…,yMi})来表示每个项目i。然后,将推荐系统的任务转化为基于Y的完整预测交互矩阵bY,其中bY中的byui表示yui的预测分数。.然后使用推断的交互矩阵bY向用户推荐一个用户还没有体验过的项目列表。具体来说,如果我们想推荐K项用户u,我们选择前K项(1)他们没有被用户评价,和(2)他们有最高的预测行向量by(u)(即by(u)={ybu1,ybu2,……,ybuN})的bY
根据如何分析用户-项交互矩阵,传统的基于协同过滤的推荐系统大致可以分为四类,基于邻域的[38]、基于关联规则的[10]、基于矩阵因子分解(a.k.a潜在因子模型)[26]和基于图形的[14]。矩阵分解(MF)由于在合成更复杂的模型方面具有良好的性能和灵活性,已成为其中应用最广泛的方法。
近年来,随着深度学习技术的快速发展,深度神经网络已被应用于推荐系统,并被发现在各个方面都优于传统的推荐方法。基于深度学习的推荐系统使用不同的神经网络结构来建模用户-项目交互,以提高推荐性能[50]。例如,将多层感知器(MLP)[20]、[21]、自动编码器(AE)[5]、对抗网络(AN)[17]和深度强化学习(DRL)[30]、[50]等技术应用于推荐系统,以提高推荐精度。
在本文中,我们在不失一般性的情况下,关注一个通用的基于深度学习的推荐系统框架,即神经协同过滤(NCF)[20]。NCF探索了深度神经网络来建模复杂的非线性用户-项目交互。请注意,基于mf的推荐方法假设一个潜在因子向量来表示每个用户和每个项目,并在用户和项目向量上应用一个简单的线性模型来捕获用户与项目之间的交互。相比之下,NCF使用深度神经网络通过多层感知器向用户和项目潜在因素向量(MLP)来捕获非线性的用户-项目交互。NCF的输出层是对用户-项目交互yui的预测。
特别地,我们考虑神经矩阵分解(NeuMF)[20],NCF的一个实例,来建模用户-项目交互。如图1所示,NeuMF是MF和MLP的融合,这允许它们学习单独的嵌入,然后通过连接它们最后的隐藏层来结合这两个模型。输入层由两个二值化的稀疏向量组成,分别对用户u和项目i进行单热编码。这些稀疏向量分别投影到四个密集的潜在向量,即MF用户向量,MF项目向量,MLP用户向量和MLP项目向量,其中两个是嵌入用户和项目MF模型,和其他是MLP模型。然后有两部分分别处理潜在向量。一个是线性MF部分,它使用MF层计算内积MF用户向量和MF项目向量,另一个是非线性MLP部分,添加了一个标准MLPX层连接潜在向量学习用户u之间的非线性交互,其中X是MLP层的数量和MLP层的激活函数是relu.最后,将MF部分和MLP部分的最后一个隐藏层连接起来,并完全连接到输出层上,以预测byui。该模型在使用观察到的用户-项目交互进行训练后,可以预测原始稀疏交互矩阵Y中缺失的条目,构成预测的交互矩阵bY,进一步用于构建每个用户的推荐列表。
在GMF部分是将user的Embedding和item的Embedding对应元素相乘,MLP部分是将user的Embedding和item的Embedding直接拼接,最后在输出部分将模型两部分输出再次拼接
B.对推荐系统的攻击
现有的研究表明,推荐系统容易受到各种[1]、[27]、[28]、[46]的安全攻击,这些攻击欺骗了推荐系统,例如,促进目标项目,并向尽可能多的用户推荐它。粗略地说,这类攻击有两类,即数据中毒攻击(a.k.a先令攻击)[11]-[13],[18],[27],[28],[46]和档案污染攻击[45],它们分别在训练和测试中危及推荐系统。具体来说,数据中毒攻击的目的是通过向推荐系统注入虚假用户,欺骗推荐系统,提出攻击者想要的建议,而档案污染攻击则打算污染正常用户的历史行为,从而操纵他们的建议。
数据中毒攻击。数据中毒攻击将虚假用户注入到推荐系统中,从而修改推荐列表。具体来说,要构建中毒攻击,攻击者首先需要在与推荐系统相关联的web服务中注册一些虚假用户。每个假用户为选定的项目子集生成精心制作的评分。这些假数据将被包含在目标推荐系统的训练数据集中,然后污染训练过程。根据数据中毒攻击是否集中于特定类型的推荐系统,我们可以将其分为算法无关攻击和算法特定两类。前者(例如,先令攻击的类型,如随机攻击[25]、[31]和潮流攻击[25]、[35])不考虑推荐系统所使用的算法,因此效果往往有限。例如,随机攻击只是从虚假用户的整个项目集中随机选择评分项目,而潮流攻击倾向于选择某些对虚假用户在数据集中高度流行的项目。针对特定算法的数据中毒攻击优化到特定类型的推荐系统,针对基于图的推荐系统[13]、基于关联规则的推荐系统[46]、基于矩阵分解的推荐系统[12]、[28]和基于邻域的推荐系统[4]。当这些攻击得到优化后,它们通常会更有效。然而,目前还没有针对基于深度学习的推荐系统进行算法的数据中毒攻击的研究。我们在本文中弥合了这一差距。
配置文件污染攻击。
配置文件污染攻击的关键思想是通过跨站点请求伪造(CSRF)[49]污染用户的配置文件(例如,历史行为。例如,兴氏等人。[45]提出了档案污染攻击的推荐系统,如YouTube、Amazon和谷歌。他们的研究表明,所有这些服务都很容易受到攻击。然而,配置文件污染攻击有两个关键的限制:i)概要文件污染攻击依赖于CSRF,这使得很难执行大规模的攻击,和ii)概要文件污染攻击不能应用于项目到项推荐系统,因为攻击者不能污染一个项目的概要文件[46]。
在本节中,我们首先提出我们的威胁模型,然后我们将中毒攻击作为一个优化问题。
攻击者的能力。我们假设攻击者的资源有限,因此攻击者只能注入有限数量的假用户。我们用m来表示假用户数量的上界。除了目标项目,每个假用户可以多达n个其他项目,以逃避琐碎的检测。我们称这些项目为填充项目。具体来说,普通用户通常对少量的物品进行评分,因此对大量物品进行评分的虚假用户是可疑的,很容易被发现。我们假设攻击者可以将假用户的评级注入目标推荐系统的训练数据集,从而操纵深度学习模型的训练过程.
B. 将攻击制定为一个优化问题
我们定义一个项目t的命中率,记为HRt,作为在他们的顶级k推荐列表中收到项目t的普通用户的比例。换句话说,t的命中率表示t被推荐给一个正常用户的概率。攻击者的目标是最大化目标项目t的命中率。设y(v)表示假用户v的评分得分向量,yvi表示假用户v对项目i的评分得分。评级分数是一组整数{0,1,……,rmax},其中yvi=0意味着假用户v没有评分项目i,yvi>0表示假用户v给项目i的偏好评分。例如,在许多推荐系统中的rmax=5。我们的目标是为虚假用户制作评级,从而使目标物品的命中率最大化。形式上,根据之前的工作[13],我们制定虚假用户制定评级来解决以下优化问题:
式中,ky(v)0是假用户v的评分分数向量y(v)中的非零条目数,n是填充项的最大数量,m是假用户的最大数量,{v1,v2,……,vm}是m个假用户的集合。
IV.攻击构造:解决最优化问题
A.所提出的攻击方案的概述
数据中毒攻击本质上是为了解决等式中的优化问题 (1).然而,由于优化问题是一个非凸整数规划问题,在计算上难以棘手。为了解决这个挑战,我们开发了多种启发式方法来近似地解决优化问题。我们的启发式方法是受到了[13]之前关于攻击基于图的推荐系统的工作的启发。图2显示了我们的数据中毒攻击的概述。首先使用损失函数来近似命中率,其中较小的损失大致对应于较高的命中率。给定损失函数,我们将优化问题转化为可处理的问题。其次,基于设计的损失函数,我们构建了一个毒药模型来模拟一个基于深度学习的推荐系统。特别是,我们首先预训练毒药模型,以确保它可以正确地预测用户的偏好使用验证数据集,然后使用损失函数更新毒药模型,这是通过提取攻击相关部分的损失函数获得第一步,接近妥协目标推荐系统的预期状态。第三,根据毒药模型预测的评分分数向量和选择概率向量,为一个假用户选择填充项目,其中定期更新项目的选择概率向量,为下一个假用户选择填充项目。我们重复第二步和第三步,直到有m个假用户生成中毒攻击。
B. 近似的Hit Ratio
我们在等式中表述的优化问题(1)在计算上是棘手的,因为评分是{0,1,领域的整数变量。由于推荐系统的复杂性,命中率是评分的高度非线性不可微函数。为了解决计算上的挑战,我们设计了多种技术,将优化问题转换为计算上易于处理的问题。
放松的评级分数,以获得连续的变量。对于Y和bY的评分分数,我们可以将它们视为攻击过程中的连续变量。具体来说,在建立在隐式数据集上的推荐系统中,预测的评分分数范围从0.0到1.0,可以看作是用户和项目之间的相关性。在从目标推荐系统获得最终评分后,必要时可以将其投影为离散整数。
接近命中比。命中率HRt是前k推荐列表中包含目标项目t的普通用户的比例。由于HRt是用户评分分数的一个高度非线性的不可微函数,我们建议使用一个损失函数来近似它。特别是,较小的损失大致相当于较高的命中率。通常,推荐系统使用预测的用户-项目交互矩阵bY对用户提出推荐。因此,我们建议使用以下步骤来转换如等式中所示的优化问题 (1).
针对每个用户的1)损失功能。我们在每个用户的预测得分向量上利用一个损失函数lu来增加目标项目t的命中率。直观地看,如果目标项目t已经包含在用户u的推荐列表Lu中,则无需进一步改进该推荐。否则,我们应该在lu中反映用户u的要求,并推广目标项目t,以便在所有项目中获得更好的排名。我们对用户u应用以下损失函数:
其中,κ≥0是一个可调的参数,可用于增强我们的攻击的鲁棒性和可转移性。对数算子的使用减少了优势效应,同时由于单调性而保留了置信分数的顺序。如我们所见,如果目标项目t在Lu中,则当κ=为0时,lu将为0。否则,如果大于ybui,但小于lu中ybui的最小值,则会大于lu的正值。.κ可以确保目标项目与Lu中评级最低的项目保持一定距离。因此,通过最小化损失函数lu,可以有更高的概率将目标项t包含在用户u的推荐列表中。
为所有用户提供相应的损失功能。现在,我们为所有用户构建了一个损失函数。由于我们的攻击目标是将目标项目推广给尽可能多的用户,所以我们根据等式设计了一个针对所有用户的损失函数(2)如下:
其中,S是所有尚未评价目标项目t的正常用户的集合。
转换最优化问题。在将离散变量放宽到连续变量并逼近命中率后,我们可以逼近优化问题如下:
其中η>0是在虚假用户的评分下推广目标项目t的系数。在这里,我们使用`2范数来代替等式中的`0范数(0范数,向量中非零元素的个数, 2范数,就是通常意义上的模),为了便于梯度的计算和全球最优值的逐步近似,因为`0规范只能比较有限数量的填充项目组合和不能不断改变,而`1正规化生成稀疏评级得分向量,这将减少选择的选择填充项目假用户。对于填充项数量的限制,我们可以根据假用户v的最终评分向量y(v)为假用户v选择有限数量的项来实现。因此,我们可以通过求解上述的优化问题来生成假用户。
由于基于深度学习的推荐系统中的用户和项目完全具有离散的标签,梯度会当它们反向传播到输入层时就消失了。因此,直接采用反向梯度优化方法来攻击图像分类器[33]是不可行的。一个自然的想法是将假用户v的评分向量y(v)作为自变量,并表述中毒攻击如下:
其中,w∗表示模型参数,L为训练目标推荐系统的原始损失函数。这是一个双层优化问题,因为w∗的低层约束也依赖于y(v)。对于深度学习模型来说,解决这个优化问题是相当具有挑战性的,因为一旦y(v)发生变化,需要通过重新训练模型参数来更新。这个过程会耗时间,因为如果我们直接计算高阶梯度w.r.t.,它需要产生足够的假用户y(v),当我们逐步更新评分向量y(v)时,在每次迭代中对整个数据集重复训练过程。.特别是,我们需要大量的迭代,甚至数千次迭代,来为每个假用户在随机初始化的评分向量上积累足够的变化,这对于现实世界中的大型推荐系统是不现实的。此外,推荐系统使用的评分矩阵通常是稀疏的,和神经网络训练可能生成预测评分分数变化在一定范围内,这将误导基于梯度的优化算法,因为他们与学习率小,可以很容易地干扰模型训练的随机性。
C. 构建中毒模型
具体地说,在这一步中,我们构建了毒药模型,根据所得到的损失函数来指导每个假用户的填充项的选择,从而能够有效地构建攻击。在此,我们从一个新的角度来研究和利用一个推荐系统本身的特点。对于一种基于深度学习的推荐系统,作为一种特殊类型的神经网络,它在训练过程中试图减少用户的预测得分向量与真实评分得分向量之间的熵值。直观地看,在用户u的预测评分向量中得分较高的项目比其他项目更有可能被用户u评分较高。如果我们能成功地构建一个毒药模型来模拟原始推荐系统在中毒攻击成功后的预期状态,我们就可以推断出训练数据集中哪些什么样的假用户对当前推荐系统的贡献最大。由初始目标推荐系统导出的毒药模型在攻击过程中定期更新,逐步接近攻击目标。然后,我们可以使用毒药模型对虚假用户的偏好进行预测,并选择预测得分最高的项目作为虚假用户的填充项目。
请注意,毒药模型的内部结构和超参数设置与目标推荐系统相一致。此外,其训练数据集最初应与目标系统的原始训练数据集相同,并且可以逐个插入假用户来模拟攻击结果。为了使毒药模型朝着我们所期望的目标改变,我们需要定义一个有效的损失函数来迭代更新模型。根据等式中的优化问题(5),我们对攻击中的毒性模型提出了以下损失函数:
L是损失函数选择训练过程中原始推荐系统,例如,二进制交叉熵在整个训练数据集,G[(v)]强烈与我们的攻击目标,和λ>0系数权衡模型有效性和攻击目标,这允许我们生成毒药模型接近推荐系统训练在正常情况下,同时实现我们的攻击目标。在这里,效度与L相关,并衡量了模型准确预测用户对验证数据集的偏好的程度。我们利用假用户v的预测评分向量,根据它们之间的相关性替换v的真实评分向量y(v),从而避免高阶梯度计算,这是非常耗时的。注意,如果毒模型的有效性远低于模型正常训练相同的数据集和原始损失函数(即L),不太可能毒模型近似的最终状态妥协目标推荐系统因为目标推荐系统总是使用一个验证数据集来保证其最佳性能在正常模型训练过程。因此,有必要在攻击过程中确保毒性模型的有效性。为了使中毒模型更好地模拟中毒攻击的结果,我们设计了两个阶段的训练:预训练和中毒训练。
预训练
首先对毒药模型进行随机初始化,并在其具有与目标推荐系统相同的损失函数(即L)的训练数据集上进行训练。经过足够的迭代后,毒药模型将与正常训练得到的推荐系统相似,保证了模型的有效性。我们可以利用这个模型在随后开始毒药训练。
毒药训练。
本阶段的毒药模型将使用等式(6)作为损失函数,用反向传播的方法对其内部的所有模型参数进行重复训练。我们选择初始λ,使验证数据集上的毒药模型的损失和模型攻击有效性的损失大致在相同的数量级上。在训练过程中,毒药模型将更接近我们的攻击目标,最终成为目标推荐系统的理想状态。然后,我们可以使用毒药模型来帮助虚假用户的物品选择过程。
D. 选择填料项目
现在,我们可以根据所获得的最终毒药模型生成的预测评分,为每个假用户选择填充项。需要注意的是,推荐系统给出的用户预测评分向量中得分较高的项目往往与用户的相关性更大,因为系统在训练过程中减少了用户预测评分向量与真实评分向量之间的熵。因此,只要我们得到一个合理的毒药模型,根据模型,我们可以通过(v)得到假用户v的预测评分向量,并选择除目标项目t以外的前n个项目作为假用户v的填充项目。
然而,作为推荐系统中使用的数据集通常非常稀疏和模型训练的数据有很高的随机性,基于深度学习的推荐系统的推荐结果为特定用户和项目往往是不稳定的,这意味着假用户从毒药模型可能不是好的选择。因此,如果我们总是直接使用毒药模型的预测来为虚假用户选择填充物,我们就更有可能逐渐偏离正确的方向。为了避免这种情况,我们发展了一个选择概率的概念,即一个项目被选择为填充项目的概率。我们定义一个选择概率向量为p={p1,p2,……,pN},其中每个元素代表对应项目的选择概率。如果选择项目I作为填充项目,个人价格指数将改变如下:
其中,0≤δ≤1为衰减系数,降低了所选项目的选择概率。选择一个项目作为填充项目的次数越多,其选择概率就越低。注意,p首先被初始化为一个所有元素值都为1.0的向量。如果p中的所有元素在中毒攻击后都低于1.0,p将重新初始化。在毒药模型给出(v)的预测评分向量后,我们将其与p结合,指导填充项的选择如下:
根据等式(8),我们选择这些假用户v在rv中n分最高的项目作为填充项目,并使用等式更新相应的选择概率 (7).选择概率的使用避免了特定项目的重复选择,并提供了更大的候选项目被选择更多的机会,这允许目标项目与更多的其他项目建立潜在的相关性,使我们的攻击更有可能在全球有效。对于数据集稀疏的推荐系统,推荐结果的不确定性更大,建议选择较小的δ来加强系统内部连接,即目标项可以关联更多的其他项,从而避免局部最优结果,提高攻击性能。结合以上见解,我们可以有效地解决优化问题。
解决优化问题的启发式方法见算法:1、由于我们的攻击并不是针对特定的深度学习推荐系统,而是可以推广到任何基于深度学习的推荐系统,因此该算法可以选择解决各种系统中的问题。我们的项目选择遵循三个步骤。首先,我们使用毒药模型来预测一个假用户v的评分向量。其次,我们计算by(v)和一个选择概率向量p的元素级乘积,作为一个调整后的评分分数向量rv。第三,我们选择n个调整评分最大的非目标项目作为填充项目v。对于v的每个填充项i,我们通过将其乘以一个常数(例如,0.9)来降低其选择概率pi,这样它就不太可能被其他假用户选择为填充项。我们使用选择概率向量来增加虚假用户的填充项目的多样性,从而使目标项目可以成为潜在的与更多的项目相关。注意,我们假设对每个假用户使用相同的n。但是,攻击者也可以对不同的虚假用户使用不同数量的填充项。特别是,攻击者可以使用我们的攻击为一个假用户逐个添加填充项目,并在目标项目的命中率开始下降时停止添加填充项目。最后,我们根据每个填充项之前的拟合正态分布为其生成评分,以确保它们的评分与其他正常评分非常相似,也用于有效地逃避检测。我们将在第六节中详细说明检测性能。请注意,为了加快生成所有假用户的过程,我们还可以选择每次生成s(s>1)假用户,但代价是降低对攻击有效性的细粒度控制。
实验部分:
数据集:MovieLens-100K , MovieLens- 1M and Last.fm
两种不同类型的典型推荐系统数据集。MovieLens-100K是一个经典的电影数据集,它包括943个用户,1682部电影和10万部电影,评分从1到5。每个用户在这个数据集中至少有20个评级。
类似地,MovieLens-1M是一个更大的电影数据集,包括6040个用户,3706部电影和1000,209个收视率,从1到5不等。Last.fm是一个音乐数据集,它包含1,892名用户,17,632名音乐艺术家和186,479个标签分配。用户可以为音乐艺术家分配一个标签,这可以被看作是他们之间的积极互动。
Last.fm是一个纯隐式数据集,因为标签分配不能用数值进行量化。应用了几种数据处理策略,使其适合于我们的实验。
数据处理:将它们的交互作用二值化,即积极的交互作用为1.0,其他的交互作用为0.0,这可以看作是隐性评级。其次,我们在数据集中删除重复项,因为一个用户可能会为一个艺术家分配多个标记。第三,由于获得的数据集仍然是稀疏的,迭代地过滤数据集,以确保数据集中的剩余部分对每个用户和项目(即艺术家)至少有10个评级,以避免“冷启动”问题。最终得到了701个用户的数据集,1,594个项目和36,626个评分。
使用隐式训练数据集为我们的目标推荐系统(即NeuMF),所以我们也预测评级在MovieLens-100K和MovieLens-1M到1.0,当他们大于0和0.0。对于二进制隐式评分分数,1.0表示用户已经对该项目进行了评分,但它并不一定表示用户喜欢该项目。同样地,隐含的评分分数为0并不一定表示用户不喜欢该项目。我们的攻击也可以应用于基于显式评级的推荐系统,因为在对这些数据集进行训练之前,评级可以在0到1之间进行归一化。
baseline:
1) Random Attack:攻击者为每个假用户随机选择n个填充项。如果训练数据集是显式的,攻击者将在初始用户-项目交互矩阵上拟合正态分布,为填充项目生成新的连续评分分数。如果有必要,这些评级分数将被投影到离散的整数中。即使训练数据是隐式的,如果推荐系统收集的数据集的初始形式是显式的,攻击者仍然需要使用相同的方法为填充项生成评分,以逃避检测。
2) Bandwagon Attack: 物品的流行在填充物的选择中起了作用。我们使用该项目的平均得分来表示它在显式数据集上的受欢迎程度,以及该项目的频率来表示它在隐式数据集上的受欢迎程度。我们从最受欢迎的10%项目中随机选择n个×10%的项目,在左侧未选择的项目中选择n个×90%的项目来构成所有填充项目。然后在随机攻击中使用相同的方法生成填充项的评分。
此外,我们观察到所有攻击方法的攻击性能都随着插入的假用户数量的增加而增加。例如,在ML-100K数据集注入0.5%的虚假用户后,我们的攻击命中率达到0.0034,而注入5%的虚假用户时,命中率增加到0.0151。结果是合理的,因为当插入更多的虚假用户时,目标项目在中毒的训练数据集中出现更多,从而对推荐系统的影响更大。
为了进一步研究δ对攻击效果的影响,我们改变了δ的值,并在ML-100K数据集上注入了5%的假用户。结果如图5所示。首先,我们观察到δ对我们的方法对ML-100K数据集的攻击有效性有显著影响。当δ增加时,目标项的命中率并不总是会上升,而ML-100K数据集的最佳δ约为0.9。第二,与δ=1时的目标项目命中率相比,即生成假用户后不需要改变选择概率向量,δ有助于提高δ<1时的攻击效果。第三,在大多数情况下,我们的攻击仍然优于其他攻击方法,这证明了我们的攻击的鲁棒性。
由假用户评价的目标项目的影响。
我们假设每个假用户肯定会对攻击中的目标项进行评级,包括我们的攻击和基线攻击。它的灵感来自于观察,最有效的方法是在训练数据集中分配较高的评分,因为用户的真实评分和预测评分之间有很强的相关性。为了准确地评估由假用户评级的目标项目的影响,我们现在考虑在各种中毒攻击中,如果目标项目没有被假用户默认评级。请注意,我们在这里设置δ=1.0,并选择调整预测评分最高的(n+1)项目作为我们攻击中假用户评分的项目,基线攻击遵循自己的规则为假用户选择(n+1)评分的项目。我们在ML-100K数据集中选择随机的目标项来进行实验。实验结果见表四。与表I中的结果相比,我们可以观察到,当默认情况下不选择目标项目时,所有攻击方法的有效性都显著降低。然而,我们的方法仍然有效,因为当注入5%的虚假用户时,目标项目的命中率仍然增加了1.6倍,而其他基线攻击在这种情况下是无效的。