基于困难感知元学习和用户冷启动的推荐系统研究*

2023-12-09 08:50许东升刘传才
计算机与数字工程 2023年9期
关键词:困难用户评分

许东升 刘传才

(南京理工大学计算机科学与工程学院 南京 210094)

1 引言

传统的推荐系统通常可以分为基于协同过滤、内容过滤和混合推荐系统。基于协同过滤推荐系统的研究由来已久,早在1992 年,研究人员利用协同过滤的方式解决垃圾邮件分类问题[1],其核心思想是:通过收集用户和物品的相关性数据构建评分矩阵,从而优先向新用户推荐评分较高的物品。然而基于协同过滤的推荐系统面临着一些难题,如数据稀疏性问题和冷启动问题[2]。数据稀疏性问题是指用户实际消费过的物品只占平台所有物品中很少一部分,这造成用户、物品评分矩阵的大部分是缺失的,从而形成一个高度稀疏的矩阵。冷启动问题是指当用户和推荐系统之间未发生任何关联时,用户、物品评分矩阵数据是缺失的,从而影响推荐系统的效果。基于内容过滤的推荐系统常被应用于电子商务平台[3],其核心思想是:通过收集用户历史行为、偏好记录或评分记录,将用户、物品的一些特征量化,例如年龄、性别、物品属性等数据。推荐系统通过学习用户这些偏好,将相似物品推荐给相似的目标用户。然而随着用户对隐私泄露担忧的加剧,通过挖掘用户历史数据以达到良好推荐效果的方法显得不合时宜。另外一些推荐系统的作法是将协同过滤和内容过滤两种方式进行结合,达到取长补短的目的[4~6]。

近年来,得益于深度学习的迅猛发展,一些基于深度学习的推荐系统被提出:Covington 等[7]将深度神经网络(DNN)融入到了视频推荐领域中,使用youtube 数据做仿真实验,能够在大量的数据中针对单个用户进行个性化推荐。Huang等[8]结合知识图谱和循环神经网络(RNN)建立了一种可以实时捕捉到用户兴趣点变化的序列化推荐系统,能够将多源异构数据(图形数据、文本数据和视觉数据)同时输入到模型,具有较强的融合能力。Van 等[9]提出了基于卷积神经网络(CNN)的推荐系统,有效地解决了音乐推荐领域面临的冷启动问题。与上述利用深度学习构建推荐系统的思路不同,一些研究人员尝试将元学习引入推荐系统中,并取得了良好的效果。通常来说,深度学习总是从零开始训练,通过在训练数据集上的大量训练,以期在测试数据集上获得同样良好的表现。这样做的缺点是比较耗时,并且当数据集规模较小时,难以获得理想的结果。元学习的通常做法是将规模较小的数据集以随机抽样的方式切分成许多个任务,经过测试集任务的训练后,模型能很好地适应和泛化新任务。由于这个过程类似于人类利用先验知识学习,因此元学习也被称为“Learning to learn”。推荐系统与元学习具有相似的特征,专注于使用少量数据预测用户的偏好。Lee等提出了基于元学习的冷启动推荐系统MeLU[10],通过学习用户的历史行为数据来预估新用户的偏好。然而该模型并未考虑任务间难易程度差异对元学习器的影响,导致元学习器训练阶段处理简单任务时表现良好,在处理困难任务时表现不佳。本文提出一种结合困难感知元学习的推荐系统,通过减轻简单任务的偏重,加重困难任务的偏重,避免系统被简单任务主导,导致“简单的任务被很好的学习,困难的任务被错误的分类”[11]。相较于调整前模型的性能得到了提升。

2 相关理论

2.1 MAML

MAML 模型训练过程如图1,通常由内循环和外循环两次循环构成[12]。模型从数据集按照设置的batch size 切分出对应数值的任务,被称为一批任务(batch tasks),再按照设置的比例将一批任务分为训练数据集Dtrain和验证数据集Dvar两部分,也被称作支持集(Support set)和查询集(Query set)。一批任务训练之后更新外循环θ为。在一批任务训练中,模型的随机初始化参数θ在支持集的任务Ti上经过训练学习更新为θi,将参数θi作用于查询集,通过损失函数衡量初始化参数在当前任务上的表现,计算∇ℒi对参数做梯度下降优化,从而完成一次训练过程。为了简化模型的计算过程,MAML使用查询集上的任务计算损失函数。

图1 MAML模型训练过程

图2 基于MAML的推荐系统MetaCS

Bharadhwaj 等提出了基于MAML 的冷启动推荐系统MetaCS[13]。主要思想是利用初始化参数θ,在每一个任务上进行学习,这里的任务表示单个用户和与之对应的历史行为数据。通过在所有任务上学习得到了一个较好的参数θ*,当遇到新的任务即冷启动用户时,参数θ*只需要少量的更新就可在处理新任务时拥有较强的泛化能力,冷启动用户也能获得良好的推荐效果。

2.2 MeLU

Lee 等提出了基于MAML 的推荐系统MeLU[14]抽象如图3,模型对用户和电影评分数据做向量化操作,作为网络的输入层。衡量用户的属性包括性别、年龄、职业以及邮政编码。衡量电影的属性包括发行年份、评级、类型、导演和主演。该模型对输入的数据做了Task2Vec,将用户数据和对应的电影评分数据做了连接处理。经过网络的学习,给出新用户所推荐的电影列表。

图3 MeLU模型网络结构

图4 MeLU模型更新过程

MeLU 模型利用嵌入过程来提取用户、电影评分记录中的特征,对于输入的用户数据,假定衡量用户的属性维度为p,那么用户i的嵌入向量Ui表示如式(1)。

eip表示用户i的某个属性特征对应的独热码(one-hot code),cip表示系数;假定衡量电影的属性维度为q,那么电影j的嵌入向量Mj表示如式(2)。

ejq表示电影j的某个属性特征对应的独热码,cjq表示系数。由于不同用户的电影评分记录长度不一致,从而导致用户的嵌入向量Ui和电影j的嵌入向量Mj的维度可能是不相等的。因此,MeLU 将决策层构建为N层全连接神经网络,而不是使用需要相等嵌入维度的广义矩阵分解层。输出层是决策层的后续层,用来输出用户偏好的预测数据,在MeLU 模型中,对应的是电影的评分数据。图3网络表示如式(3)。

x0表示输入数据,Wi和bi表示第i层网络的权重和偏置,Wo和bo表示输出层网络的权重和偏置,ŷij表示模型对于用户i对电影j的偏好预测,MeLU 模型使用线性整流函数(ReLU)[15]作为激活函数a,线性函数作为激活函数σ。式(1)和式(2)里的参数用θ1表示,式(3)里的参数使用θ2表示,θ1、θ2的初始化由随机数完成。

与MAML 模型内外两次循环类似,MeLU 模型的更新分为局部更新和全局更新。为了确保学习用户偏好过程中的稳定性,局部更新期间不更新用户和物品的输入数据,这意味着模型认为用户和物品没有发生变化。模型根据用户独特的历史行为数据更新决策层和输出层中的参数θ2,使用式(4)所示的损失函数ℒi对更新后参数θ2进行评估。

Hi表示用户i电影评分集合,yij表示用户i对电影j的实际评分,ŷij表示模型对于用户i对电影j的偏好预测。模型在局部更新期间对用户个性化的偏好进行学习,训练过程中局部更新次数可以设置为一次或多次。局部更新完成之后,模型将更新后的参数在查询集计算损失函数,全局更新参数θ1和θ2。模型重复上述过程直到θ1和θ2收敛。

2.3 调整MeLU模型中任务偏重

元学习在处理分类任务、推荐领域取得了不错的性能,但存在一个基本问题:如何更有效地将先前任务中学到的全局知识,用于处理新的任务。针对上述问题,研究人员提出了不同的改进方案。Li等[11]提出了更加专注于处理困难任务的模型DAML,该作者认为由于元训练阶段任务的差异性特征,将导致模型在元训练阶段简单的任务被很好地学习,困难的任务学习不足。作者利用任务的测试损失值的大小衡量任务困难与否,即将测试损失值较大的任务视为困难任务,反之亦然。因此,作者调整了查询集中任务偏重,通过降低简单任务的偏重,增加困难任务的偏重,使得模型相比调整前更擅长处理困难任务。Muhammad 等[16]提出了任务无偏的模型TAML,该作者认为由于元训练阶段任务的差异性特征,当模型在处理新任务时难以保持一致的性能,将导致元学习器在更新参数时难以给出足够好的更新方案,可能导致在新任务上泛化能力不够理想。因此,作者采用最大熵方法和差异最小化方法使任务尽可能达到无偏的效果。Liu等提出了任务自适应推荐模型TaNP[14],通过引入一种新的任务自适应机制,直接将观察到的每个用户的交互映射到预测分布,回避了基于梯度的元学习模型中的一些训练问题,使模型能够学习不同任务的相关性,并将全局知识定制为与任务相关的解码器参数,以估计用户偏好,实证结果表明,TaNP 对几个最先进的元学习推荐器产生了一致的改进。

DAML 模型利用困难感知的方式提升元学习模型学习的有效性,即动态的减轻简单任务的偏重,加重困难任务的偏重,使得元学习器更擅长处理困难任务,任务偏重调整方法如式(5)。

ℒTi表示模型在支持集更新后的参数在查询集上计算的损失函数值,η表示缩放系数,ε表示使得max(ε,1-ℒTi)>0 成立的最小正整数,ℒdaml表示经过任务偏重调整后重新计算的损失函数值。由于作者使用对数函数和指数函数对原始的任务损失函数进行调整,造成调整前后数据的非线性。导致在一批任务损失函数值相差不大的情况下,难以有效的区分简单任务和困难任务。鉴于此,本文提出利用式(6)对任务偏重进行调整,流程简述如下:选取一批任务,将初始参数θ1和θ2输入,在每个任务上,根据任务在支持集上的交叉熵损失对θ2进行更新,得到对应每个任务的θ2',然后计算θ2' 在查询集任务上对应的测试损失,利用式(6)对测试损失进行动态缩放得到ℒd,然后利用ℒd更新参数θ2。上述方法通过动态地削减简单任务所占的不当份额,避免了模型被简单任务主导,将更多的注意放到处理困难任务中去。

ℒTi表示模型在支持集更新后的参数在查询集上计算的损失函数值,η表示缩放系数,ℒˉTi表示模型在查询集计算出的损失函数平均值,ℒd表示经过任务偏重调整后重新计算的损失函数值。

3 实验

3.1 MovieLens数据集

本文采用的数据集为MovieLens 数据集,MovieLens 数据集包括MovieLens1M、MovieLens 10M、MovieLens 20M 三个不同的版本。这里采用MovieLens 1M 数据集进行测试。MovieLens 数据集经常用来作为推荐系统、机器学习的测试数据集。数据集包含了用户个人信息和有关电影的相关评分数据,数据集的一些详细信息如表1所示。

表1 数据集的相关数据

实验数据随机抽取数据集中80%的用户作为现有用户,其余的作为新用户。每个用户的电影评分记录长度在13~100 之间,在用户的电影历史评分记录中随机选取10 个作为查询集,其余的数据作为支持集,每一名用户的电影评分记录长度从3到90 不等,它将用于模型学习用户的偏好。本文采用归一化折损累计增益(nDCG)对算法性能进行比较,计算方式如式(7)和(8)所示。

其中Rir表示用户i对排名r商品的真实评分,U表示测试数据中用户集合,表示用户i最好的。

3.2 实验结果

为了凸显调整任务偏重策略对模型性能的影响,本文实验中模型的关键参数设置和MeLU 原模型一致。决策层为2 层,每层有64 个节点,嵌入向量的维度设置为32,超参数α和β的步长设置借鉴MeLU模型实验结果,分别为5×10-6和5×10-5,局部更新的次数为1 次和5 次,batch size 和epoch数分别设置为32和30。

本文实验采用nDCG@1 和nDCG@3 作为评估指标。为了比较不同因子对于实验结果的影响,实验中模型局部更新次数分别在1次和5次的条件下开展。同时,在局部更新次数保持一致的条件下验证了缩放因子η的取值对实验结果的影响。从表2可以看出,在采用相同评估指标计算的前提下,模型局部更新次数为5次相比局部更新1次性能有小幅度下降,分析原因是由于模型过拟合导致的,也说明了通过增加局部更新次数提升模型性能的做法不显著。在模型局部更新次数保持一致条件下,随着任务偏重调整系数η的增大,实验结果与Me-LU 模型结果相比有了明显的提升,在任务偏重调整系数η取4 的条件下,此时的nDCG@1 表现最佳为0.7827;可以看出,结合了困难感知的推荐系统相较于原系统性能提升明显,分析原因是由于元学习器通过在困难任务中学习,在新任务良好泛化导致的。在局部更新次数为5 次,任务偏重调整系数η取3 的条件下,此时的nDCG@1 表现最佳为0.7815;通过分析实验结果,可以得出:在相同的实验条件下,通过增加任务偏重调整系数η,模型评价指标呈现先上升后下降的趋势。显然不可能通过一味的增大任务偏重调整系数η从而期望模型性能递增不减,因为元学习器的参数在收敛后,性能提升将变得困难。在局部更新次数保持一致的情况下,nDCG@3 的结果好于nDCG@1,说明随着推荐列表的增加,推荐模型的性能表现更稳定。

表2 模型评分结果

4 结语

针对元学习推荐模型MeLU 在元训练阶段未对任务间的差异化做出相应的处理,本文提出了一种较为可行的任务偏重调整方法,减轻了简单任务的偏重,增加了困难任务的偏重。避免了元学习器在训练阶段处理简单任务时表现较好,处理困难任务时学习效果不佳。在Movielens 数据集上测试表明,结合了任务偏重调整的MeLU 模型相比改进前在处理用户冷启动场景下的推荐问题时性能提升明显。

猜你喜欢
困难用户评分
困难中遇见团队
困难我不怕
我给爸爸评分
Castleman disease in the hepatic-gastric space: A case report
An Optimal Resources Configuration Scheme for Caching-Based Content Distribution in Backhaul-Limited Small Cell Networks
选择困难症
关注用户
关注用户
关注用户
如何获取一亿海外用户