孙肖依 刘华锋 景丽萍 于 剑
(交通数据分析与挖掘北京市重点实验室(北京交通大学) 北京 100044)(北京交通大学计算机与信息技术学院 北京 100044)(sunxiaoyi@bjtu.edu.cn)
随着互联网上的信息快速增长,推荐系统在信息过载的时代变得越来越不可或缺.推荐系统的主要目的是帮助用户在大量的物品中选择出他们可能感兴趣的物品.一些推荐系统中还包括了对前N个物品(top-N)推荐,这些方法被广泛应用于生成用户的个性化推荐列表.例如在电子商务或者在线教育领域,系统通常只为用户推荐一部分商品或课程,并根据系统推荐的前N个物品表现对推荐系统进行评估.
在已有的研究当中,协同过滤方法[1]由于只依赖于用户过去的行为数据而在推荐系统中得到了广泛的应用.其中基于隐因子模型(latent factor model, LFM)[2-5]的协同过滤方法因为其具有对隐藏的因果关系建模的能力而在诸多方法中备受关注.然而由于这些模型本质上都是线性模型,所以其建模能力有限.文献[6]证明了在隐因子模型中添加非线性特征能够显著提高推荐的效果.所以在近些年,越来越多的方法提出将深度神经网络应用到协同过滤中[7-12].然而与一般的深度模型相比,基于深度生成概率模型具有更强的灵活性,在推荐上取得了更好的效果.例如Mult-VAE[13]是一个具有多项式条件似然的深度生成模型,并使用贝叶斯推断进行参数估计.然而,上述大多数模型并没有为隐式反馈数据生成个性化的排序推荐列表.
因此本文提出了一个将列表级排序学习应用到深度生成模型上的方法去解决上述问题.我们用深度生成方法在隐式反馈数据上为每个用户生成评分向量,并通过直接优化信息检索中常用的评价指标归一化折损累积增益(normalized discounted cumulative gain, NDCG)对评分进行建模.对于向用户推荐有序的推荐列表来说,NDCG是对推荐结果度量非常重要的评价指标.
本文的主要贡献有3个方面:
1) 提出了一种将列表级排序学习方法应用到深度生成模型上的方法,在隐式反馈数据上为用户生成个性化排序推荐列表;
2) 利用一个平滑函数来近似NDCG评价指标,解决了NDCG评价指标是非平滑函数不能直接求导的问题;
3) 在3个不同领域的数据集上进行实验验证.结果表明我们所提出的模型相比于现有的一些推荐方法,能够使用户潜在感兴趣的物品排在前面,从而提供更好的用户体验.
项目推荐的研究重点是预测用户最喜欢的一组项目的个性化排名列表,其中协同过滤[1]是最常用的方法之一.在协同过滤方法的框架下,大多数推荐系统都致力于预测评分.隐因子模型LFM[2-5]是一种基于矩阵分解(matrix factorization, MF)方法的模型,已被证明在评分预测问题上有显著的效果.这种隐表示建模对于表示用户的历史行为偏好非常有效.这些工作将推荐任务表述为一种回归或多分类问题,推荐系统从训练数据当中学习回归或分类函数后对项目进行评分.这些方法统称为点级推荐方法,与其不同的是,某些对项目推荐的研究方法着重于直接优化每个用户的项目个性化排名.文献[14]提出了一种贝叶斯个性化对级排序学习方法(Bayesian personal ranking, BPR),该方法根据用户对于成对物品的相对偏好来优化模型;文献[15]提出了一种通过整合用户购买评分信息来推荐前N个物品的稀疏线性方法.不同于传统的对级排序方法;文献[16]通过直接最大化平均倒排名(mean reciprocal rank, MRR)评价指标来提升top-N推荐的性能.
近些年来的研究主要集中在非线性的特征学习,尤其是深度学习方面.相较于传统方法,非线性模型能够突破线性模型建模能力的限制.在一些早期基于深度模型的推荐方法中,例如基于神经网络的协同过滤方法集中于利用用户显示反馈数据作为训练集对物品做评分预测[8-9,17-18].Wide & Deep[19]是一个基于上下文的推荐模型,它利用多层感知机(multi-layer perceptron, MLP)来获得隐表示.神经协同过滤(neural collaborative filtering, NCF)则将协同过滤中用户和物品的隐表示之间点乘的操作,扩展成非线性的交互.文献[7]在NCF的框架下提出了NeuMF,将MF和MLP统一在一个模型中,解决了MLP在获取低秩关系时效率较低的问题.该模型以用户嵌入和项目嵌入的组合作为MLP模型的输入来进行预测.相比于NeuMF,NNCF[20]则在NCF框架的基础上额外引入了用户和物品的信息作为输入.
与上述模型相比,深度生成模型可以有效结合线性隐因子模型与非线性深度网络模型,因此我们可以探索由神经网络驱动的非线性概率隐变量模型.文献[18]提出了受限制玻尔兹曼机(restricted boltzmann machine, RBM),它是一种随机递归神经网络,本质上是二分图结构的无向图模型;文献[21]提出E-RBM模型,它为每个用户计算出top-N的物品推荐列表,弥补了RBM缺乏对推荐结果的可解释性问题;文献[22-23]利用堆栈式去噪自编码器(stacked denoised autoencoder, SDAE)分别扩展了概率矩阵分解和逻辑回归方法,并提出了统一的协同深度学习.最近,变分自编码器(variational autoencoder, VAE)框架[24-25]在推荐系统中的应用使深度模型和隐变量模型关系更加紧密.协同变分自编码器(CVAE)[26]将用户和物品的低维表示与VAE生成的物品隐表示相结合,以获得用户的偏好矩阵.Mult-VAE[13]通过将原始的高斯似然替换为多项式似然来模拟隐式反馈数据的生成过程.然而,大多数深度生成推荐模型仅仅以重构偏好数据为目的,而无法显式地为每个用户学习个性化排序推荐列表.
本文提出了一个基于列表级排序方法的深度生成推荐模型.用平滑的函数近似NDCG,并使用随机梯度下降方法完成深度生成模型的训练过程.该模型能够为用户生成个性化排序推荐列表,具有很大的实际应用价值.
基于列表级排序的深度生成推荐方法包括点级隐式反馈数据生成和列表级排序列表生成2部分.模型结构如图1所示.之后我们将介绍用来近似NDCG的平滑函数.
Fig. 1 The architecture of the proposed model图1 本文所提出模型结构图
本文考虑使用隐式反馈数据进行学习,并将用户的点击矩阵作为用户与物品的交互矩阵进行二值化.文中用u∈{1,2,…,U}表示用户,i∈{1,2,…,I}表示物品.zu是二进制向量,它索引了用户在每个物品上点击的历史记录.
我们提出的深度生成概率模型由VAE组成.每个VAE都利用编码器将输入压缩为变分分布,然后解码器通过接受从后验概率分布中采样的隐变量来获得生成分布进行预测.
2.1.1 编码器
为已观测数据构建一个生成隐变量模型,首先假设用户与物品交互数据点击历史eu=fφ(xu)可以从用户的隐变量rj(在d维隐空间),其中zu可以从以标准高斯分布为先验分布中采样得到:
zu~N(0,Id).
(1)
1) 对于每个用户u,重构一个已观测数据的向量表示eu:
eu=fφ(xu).
(2)
2) 参数化用户隐变量zu的变分分布:
(3)
其中,非线性函数fφ为适用于观测数据的神经网络,lφ为计算变分分布参数的线性变换,φ为fφ和lφ的参数集合.
2.1.2 解码器
通过隐变量来生成预测的概率分布并且重构观测数据,解码器的生成过程为:
πu∝exp(fθ(zu)).
(4)
3) 从多项式分布中生成重构观测数据xu:
xu~Mult(Nu,πu).
(5)
(6)
因为xu是从概率为πu的多项式分布中采样得到的,所以用户u的对数似然为
(7)
多项式分布中的概率分布值πu可以看作是用户u对所有物品的喜好程度,因此它可以被用于为每个用户构建所有物品的列表级排序列表.
我们可以通过最大化排序评价指标NDCG来构建列表级排序.但由于NDCG不可导,不能直接使用评价指标来作为损失函数进行优化求解,所以我们用连续可导的损失函数对评价指标进行近似.
具体来说,NDCG@k是一种用于评估排名列表前k个位置推荐效果的评价指标,它的定义为
(8)
(9)
由此可以看到NDCG评价指标是基于位置的,但是在训练过程中,物品的位置会不断发生变化,这使得对NDCG的处理变得更加困难.为了解决这个问题,我们需要使用索引重新定义NDCG.将NDCG重写成:
(10)
其中,r(x)表示物品x的相关程度,r(x)越大表示物品越相关,等于0时为不相关物品.s(x)表示物品x当前的位置.但由于s(x)函数是非连续、不可导的,所以我们需要对它进行近似.利用深度生成模型得到的概率分布πu来重新表示s(x):
(11)
其中,πux,y=πux-πuy.即位置可以看作是排名函数的输出.但由于指数函数也是非连续不可导的,所以用逻辑函数来近似指示函数1{πux,y<0}:
(12)
其中,α>0是一个度量常数.然后我们可以用近似后的函数来表示位置函数s(x):
(13)
(14)
按照文献[27]的标准,我们使用变分推断来学习隐变量模型,取数据的对数边际似然的下界.这就形成了寻求最大化用户u的目标,而数据集总体的目标函数是通过对所有用户的目标函数求平均得到的:
logp(xu;θ)≥Eqφ(zu|xu)[logpθ(xu|zu)]-
KL(qφ(zu|xu)‖p(zu))≅L(xu;θ,φ),
(15)
不等号右边即为变分下界(evidence lower bound, ELBO).ELBO是参数为θ和φ的函数,我们可以通过采样zu~qφ来获得ELBO的无偏估计,然后通过随机梯度下降法进行优化.也可以从另外一个角度来解读ELBO:第1项可以解释为重构误差,第2项KL散度可以看作是参数的正则化项.那么我们可以为正则化项加上度量参数β来进行约束.这样得到点级隐式反馈生成模型的目标函数:
LG(xu;θ,φ)=Eqφ(zu|xu)[logpθ(xu|zu)]-
β×KL(qφ(zu|xu)‖p(zu)).
(16)
为了建立个性化排序模型,我们定义了负的列表级排序模型的损失函数:
(17)
目标是最小化ELBO式(16)和排序损失式(17),可以通过最小化最终的目标函数来实现:
(18)
这里参数γ控制列表级排序学习对整体模型的影响程度.整体模型的训练通过随机梯度下降法来完成.
本节通过在3个真实数据集上的一系列实验衡量我们所提出的基于列表级排序的深度生成推荐模型的表现,并将其与其他方法做对比.
我们在3个来自不同领域的真实数据集上进行了实验:
MovieLens-100k(ML-100k).该数据集包含多个用户对多部电影的评分.我们将用户评分大于等于4的视为用户偏好置为1,其余置为0.并且我们只保留至少看过5部电影的用户.
XuetangX[28].该数据来自于中国最大的MOOC平台之一的学堂在线,其中包括了用户和他们学习过的课程.我们只保留了至少学习过5门课程的用户.
Jester.这些数据包含了Jester笑话推荐系统中用户对笑话的匿名评分.我们将这些评分映射到0~5的区间上,并且同ML-100k一样划分评分并保留至少评过5次分的用户.
表1总结了实验中使用的3个数据集的统计信息.
Table 1 Statistics of the Datasets表1 数据集的统计信息
用户u的Recall@R表示为
(19)
其中,min(,)表示R和用户点击物品数目的最小值.当用户所有点击的物品都排在前R个位置,Recall@R将达到最大值为1.
DCG@R的表示为
(20)
NDCG@R是DCG@R的归一化版本,所以NDCG@R的取值范围在[0,1]之间.当用户所有点击的物品都排在前R个位置,NDCG@R将达到最大值为1.
我们随机将所有用户分为训练集、验证集和测试集,采用训练集用户的全部点击历史来训练模型.为了对模型进行评估,通过获取留出用户(验证和测试)的点击历史来学习模型的必要用户级表示,然后通过对留出用户和其未被观测到的点击历史进行排序来计算度量结果.表1的最后一列列出了每个数据集的留出用户数量.对于每个留出用户,随机选取80%的点击历史记录来学习必要的用户级表示,并使用其余的点击历史记录来进行预测.
我们通过在验证集用户上评估NDCG@1来选择模型的超参数和结构.对于所提出的模型,用于编码器和解码器的神经网络具有对称的体系结构,有3层感知机与结构[m→600→d→600→m],这里m表示物品的个数.在实验中,我们将根据不同的数据集来选择d的值.基于交叉验证实验,在3个数据集上都设置了α=10.使用tanh作为神经网络层之间的激活函数.采用dropout[29]以0.5的概率应用于输入层,并且不对任何部分应用权重衰减.使用Adam[30]对模型进行训练,在ML-100k数据集上,设置批大小为150个用户,在XuetangX和Jester数据集上设置批大小为2 000个用户,在3个数据集上分别对模型训练200次.
我们将所提出模型的实验结果与3种类别的推荐模型做对比,包括传统模型、深度神经网络模型和深度生成模型:
1) 传统模型.WMF[31]是用于隐式反馈的线性低秩模型;SLIM[24]也是一种学习稀疏物品到物品相似矩阵的线性模型,满足了top-N推荐系统所要求的高质量和高效率.
2) 深度神经网络模型.NCF[7]通过神经网络探索用户和物品之间的非线性交互;CDAE[9]是第一个将去噪自编码器应用于top-N推荐问题的模型,它通过在输入中加入每个用户的潜在因子来提高降噪自编码器的标准.
3) 深度生成模型:Mult-VAE[13]是一个具有多项式似然的生成模型,利用贝叶斯推断进行参数估计,将变分自编码器应用于隐式反馈的协同过滤.
首先进行一系列实验来测试不同参数设置对模型结果的影响;其次定量地比较了我们所提出的方法与各种基线模型的排序估计.
3.5.1 参数影响
第1个实验调查了隐空间大小d对推荐结果的影响.图2显示了在3个数据集上,d的大小从50变化至300时对Recall@10和NDCG@10结果的影响.正如我们所预期的,在一开始随着d的增加,我们所提出的模型在每个数据集上的性能均会提高,并且ML-100k和XuetangX数据集在d=100,Jester数据集在d=150时分别达到最好的结果.当d的值在ML-100k和XuetangX数据集上超过100,在Jester数据集上超过150时,模型的表现就会下降.较大的d表示将在较高维的空间中表示用户,但当较低维度的空间有足够能力捕获隐属性时,增大d则会降低模型的泛化能力,不利于推荐性能的提高.
Fig. 2 Effect of the latent space size d in terms of NDCG@10 and Recall@10图2 隐空间大小d对NDCG@10和Recall@10的影响
图3显示了正则化系数β在3个数据集上对Recall@10和NDCG@10评价指标的影响.结果表明随着β值大小的增加,模型的表现变得更好,并且当ML-100k数据集上β=0.2,XuetangX数据集上β=0.03和Jester数据集上β=0.1时,模型结果最优,在此后随着β的增大,模型的表现也随之下降.这是因为较小的β可以充分利用zu的先验和后验之间的关系,而较大的β可能过于关注能力的限制,从而降低推荐的有效性.
Fig. 3 Effect of egularization coefficient β in terms of NDCG@10 and Recall@10图3 正则化系数β对NDCG@10和Recall@10的影响
图4显示了排序损失系数γ在3个数据集上对Recall@10和NDCG@10评价指标的影响.结果表明了随着γ值的增加,模型表现变得更优,并且当ML-100k数据集上γ=0.3,XuetangX数据集上γ=0.002和Jester数据集上γ=0.01时模型结果最好,在此后随着γ的增大,模型的表现也随之下降.结果表明,当γ增加时,我们所提出的个性化排名损失对于生成一个用户的排序列表是有效的.但是当γ过大时模型性能会下降,这说明过大的γ会使个性化排名在模型的学习过程中占主导地位.
Fig. 4 Effect of ranking loss coefficient γ in terms of NDCG@10 and Recall@10图4 排序损失系数γ对NDCG@10和Recall@10的影响
3.5.2 性能分析
本节将所提出的模型与3.4节提到的5个模型进行了实验对比.我们在不同数量的推荐列表长度中计算了Recall和NDCG的结果,并记录在表2~4中.最佳和次佳的结果分别用加粗和下划线标记出来.从实验结果可以看出,包括我们所提出的模型在内的多数深度模型(Mult-VAE,CDAE,NCF)比传统模型(SLIM,WMF)在大多数实验结果上表现得更好,这表明非线性的特征能够有助于提升推荐效果.然而SLIM在ML-100k数据集上的实验结果上好于一些深度模型,因为SLIM对稀疏数据上的top-N推荐更有效.此外,在大多数实验结果中,包括我们所提出的模型和Mult-VAE在内的深度生成模型表现要优于其他深度模型CDAE,NCF,这表明了点级数据匹配的生成过程有助于学习更有效的用户隐表示.我们所提出的模型在所有实验上优于其他的深度方法Mult-VAE,CDAE,NCF,这表明了同时考虑隐式反馈数据生成和列表级排序可以提高推荐的有效性.
Table 2 Comparison Between Various Baselines and Our Proposed Method for ML-100k Dataset表2 在ML-100k数据集上基线模型与我们所提出的方法的对比
Table 3 Comparison Between Various Baselines and Our Proposed Method for XuetangX Dataset表3 在XuetangX数据集上基线模型与我们所提出的方法的对比
Table 4 Comparison Between Various Baselines and Our Proposed Method for Jester Dataset表4 在Jester数据集上基线模型与我们所提出的方法的对比
本文提出了一种将列表级排序学习方法应用到深度生成推荐模型中,生成隐式反馈数据的个性化排序推荐列表的方法.该模型可以作为联合深度生成方法,采用多项式分布对隐式反馈数据进行特征描述,利用列表级排序模型对排序列表进行学习.实验表明,该模型在一些场景下具有为用户生成个性化排名列表的能力,例如课程、电影推荐.在所有实验情况下,该模型在3个实际数据集上的表现均优于现有的一些排序模型.