推荐系统中的带辅助信息的变分自编码器
刘卫东, 刘亚宁     
清华大学 计算机科学与技术系, 北京 100084
摘要:变分自编码器是一种非常简洁有效的非监督学习方法,应用在推荐系统领域也能取得极佳的性能。推荐系统的主要工作之一是对缺失的数据进行估计并补全,变分自编码器通过对已有数据的学习和抽象能够挖掘出数据间隐式的关联因子,并基于此完成对缺失数据的预测。该文将额外的辅助信息加入到变分自编码器中以提高预测的准确度,并通过在包括高考成绩及电影评分等在内的实际数据集测试中验证了辅助信息的有效性,当辅助信息充足时在高考成绩数据集上最多可以降低31%的均方根误差。
关键词推荐系统    变分推理    自编码器    协同过滤    
Variational autoencoder with side information in recommendation systems
LIU Weidong, LIU Yaning     
Department of Computer Science and Technology, Tsinghua University, Beijing 100084, China
Abstract: The variational autoencoder (VAE) unsupervised learning method can provide excellent results in recommendation systems. Recommendation systems seek to accurately identify a missing value with the VAE learning a latent factor from the input and then predicting when to use this for reconstructing the result. Side information was added to the VAE to improve the predictions with tests on datasets including MovieLens and grades data showing that it can significantly improve the prediction accuracy by up to 31% with enough side information with the grades dataset.
Key words: recommendation systems     variational inference     autoencoder     collaborative filtering    

2017年中国高考制度随着进一步改革有了新的变化:采用了选考科目制度,即对于所有考生,除了语文、数学、外语3门必考科目以外,政治、物理等其他科目变成了选考科目。每一名考生需要在参加考试之前任意选定3门选考科目作为自己的高考选考科目,并参加这3门的考试获得高考成绩,而最终的高考总成绩由3门必考科目和3门选考科目成绩加总决定。这意味着报考同一学校的考生之间可能选择的考试科目并不相同,但是决定考生排名的仍然是这些科目的总分。考虑到每一门科目的难度不一样,于是选考科目成绩并非卷面成绩,而是根据实际卷面成绩在该科目的排名进行一个类似于正态分布的归一化后给定的分数。但是考虑到考生们的兴趣方向也可能不一样,这样直接加总的方法可能并不公平。例如,当各科都比较优秀的考生普遍都选择科目A而非科目B时,在科目A拿分的难度就会大大高于科目B,基于此大部分的普通考生选择科目A的概率就会降低(实际情况中类似于科目A的物理学科的选考率已经明显降低),致使考试对于优秀人才的选拔的目的难以达到。所以在考试制度不变的情况下,需要更好的评分方法来通过考试判断学生的实际能力并基于此做出选科引导。

本文通过分析当前考生的考试成绩来尝试对考生未考科目进行预测以了解考生的实际能力,并依据全科或文理科成绩重新计算考生排名,根据排名的变化分析评分制度的差异,帮助后续找出更好的评分制度。这是一种类似与电影评分预测的推荐系统应用场景,需要使用性能优秀的推荐系统算法。

推荐系统中最重要的工作之一就是补全缺失数据[1-2],例如给用户尚未评分的电影预测一个可能的分数。在这一领域主流的算法是协同过滤算法[3],是一种考虑用户与用户间或者是物品与物品间相似性的评分预测算法。其中基于内存的协同过滤算法通常可以被分为2类:基于用户的协同过滤算法和基于物品的协同过滤算法[4-5]

另一种形式的协同过滤算法是被称为基于模型的协同过滤算法。基于模型的协同过滤算法是先离线计算用户和物品的隐因子得到模型,然后根据模型在线地预测缺失值。这其中,矩阵分解[6]是最为经典的方法,能够很容易地获得非常优秀的效果。不过在矩阵非常大且非常稀疏时准确度会下降较多;并且由于矩阵分解是线性的算法,因此无法提取输入数据中的非线性信息。近些年来,深度学习算法如变分自编码器在推荐系统及其他许多领域都显示出了强大的能力。作为自编码器的一个变种算法,变分自编码器在无监督机器学习领域表现非常出色。尽管如此,变分自编码器与其他许多算法一样也仍然面临冷启动等问题,具有提高的空间。

本文提出了一种添加了辅助信息的新的变分自编码器模型,通过辅助信息帮助提高缺失数据预测的准确度,并且在MovieLens-1M数据集及高考成绩数据集上进行了验证,证实了该模型确实能够提高预测准确度并且在高考成绩数据集上效果显著。

1 相关工作

很多之前的工作已经尝试使用深度学习模型进行协同过滤,包括最早的基于受限Boltzmann机的协同过滤算法[7],以及基于自编码器的协同过滤算法[8-10],而且后者由于通过直接优化均方根误差,只需要更少的参数因而更不容易过拟合。

文[11]基于栈式降噪自编码器的协同过滤算法,通过在自编码器上栈式地堆叠更多层,使得网络能够轻易地变得更深;并且也提出在自编码器中添加辅助信息以缓解冷启动的问题,并达到当时最优的性能。

协同变分自编码器是第一种尝试将多媒体信息的内容结合进来的变分自编码器,这主要是归功于它的变分Bayes推断基础[12]

2 带有辅助信息的变分自编码器

本节提出把辅助信息加入到经典的变分自编码器中,并将该模型作为协同过滤模型应用在推荐系统中以提高预测的准确度。

2.1 注记

m是物品(科目)的总数,n是用户(考生)的总数, 并且n远远大于m。对于每一个用户i,向量ui表示的是该用户的所有物品评分(科目成绩),而向量oi表示的是该用户的辅助信息。同理向量vj表示的是所有用户对物品j的评分。uivj信息有缺失但是oi信息完整。

2.2 变分自编码器

变分自编码器可以看作是自编码器的一个升级版本,两者的主体结构大致相似,都是由一个编码器和一个解码器组合而成。所不同的是,变分自编码器是将输入编码成一组的Gauss分布而不是一个简单的隐因子向量,而后变分自编码器从这组分布中随机取出一个样本并将其作为解码器的输入得到一个近似于原始编码器输入的输出结果。这样做的目的是通过假设隐因子的概率分布来降低每个隐因子的刚性误差。

变分自编码器算法的基本思想是:对每个输入数据点xkui来说都有一个隐变量zk来替代。因此,最终输出${{\widetilde{x}}_{k}} $可以由某种概率分布(xk |zk)生成,这种概率分布在本文中根据常理被假设为Gauss分布。解码器函数fθ (zk)能够生成最终的生成分布的参数, 并且其本身由一组统一的参数θ约束。与此同时,编码器函数 (xk)能够生成每一个概率分布q(zk|xk)的参数,同时也被参数θ约束。这一编码过程是对输入的抽象,因此也被称作识别模型。

变分推导指出需要找出一个近似分布p(zk)来替代分布q(zk |xk)。两个分布的相似性度量通常使用一种叫做Kullback-Leibler(KL)散度的函数来度量。因此单个输入点的置信下界(evidence lower bound, ELBO)目标函数如下所示:

$ \begin{align} &L(\theta , \varnothing ;{{x}_{k}})=-{{D}_{\text{KL}}}[{{q}_{\varnothing }}({{z}_{k}}|{{x}_{k}})||p({{z}_{k}})]+ \\ &\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {{E}_{q}}[\text{log}{{p}_{\theta }}({{x}_{k}}|{{z}_{k}})]. \\ \end{align} $ (1)

式(1)的第1项散度函数DKL( )可以被看作是一个正则化项,而第2项期望Eq( )可以被看作是期望的自编码重建误差。从分布q(zk |xk)中取S个样本,以样本的均值来近似期望Eq会使得计算更为简单。

$ \begin{align} &L(\theta , \text{ }\varnothing ;\text{ }{{x}_{k}})=-{{D}_{\text{KL}}}[{{q}_{\varnothing }}({{z}_{k}}|{{x}_{k}})||p({{z}_{k}})]+ \\ &\ \ \ \ \ \ \ \ \ \ \ \ \int{{{q}_{\varnothing }}({{z}_{k}}|{{x}_{k}})\text{log}{{p}_{\theta }}({{x}_{k}}|{{z}_{k}})d{{z}_{k}}\approx }\text{ } \\ &\widetilde{L}(\theta , \text{ }\varnothing ;{{x}_{k}})=-{{D}_{\text{KL}}}[{{q}_{\varnothing }}({{z}_{k}}|{{x}_{k}})||p({{z}_{k}})]+ \\ &\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \frac{1}{S}\sum\limits_{s=1}^{S}{\text{log}{{p}_{\theta }}({{x}_{k}}|z_{k}^{(s)}).} \\ \end{align} $ (2)

其中zk(s)S个样本中的一个。由于p(zk)是一个Gauss分布,于是可以采用重参量化(reparemerization)来简化运算,即对于样本zk(s)来说,不从正态分布N(μ, δ)中而从分布N(0, 1)中取得一个小变量ε,然后利用期望μ和标准差δ计算得到:

$ z_{k}^{(s)}=\delta \varepsilon +\mu , $ (3)
$ \begin{align} &\widetilde{L}(\theta , \text{ }\varnothing ;{{x}_{k}})=-{{D}_{\text{KL}}}[{{q}_{\varnothing }}({{z}_{k}}|{{x}_{k}})||p({{z}_{k}})]+\text{ } \\ &\ \ \ \ \ \ \ \ \ \ \ \ \ \frac{1}{S}\sum\limits_{s=1}^{S}{\text{log}{{p}_{\theta }}({{x}_{k}}|{{\varepsilon }^{(s)}}\delta +\mu ).} \\ \end{align} $ (4)

至此,所有参数都可以使用随机梯度下降(stochastic gradient descent, SGD)的方法来优化了。

2.3 辅助信息

对于电影评分预测与考试成绩预测来说,并不只是依赖于评分矩阵,也可以依赖于用户及物品各自具有的辅助信息矩阵,比如对于电影来说它还具有类型、上映时间等可能会影响到用户对其评分结果的信息。于是在输入时需要将辅助信息一并考虑进去,期望能够使得预测精度更高,并且能够帮助优化冷启动的问题。

$ \begin{align} &L\left( \theta , \text{ }\varnothing ;\mathit{\boldsymbol{X}}, \mathit{\boldsymbol{T}} \right)=-{{D}_{\text{KL}}}[{{q}_{\varnothing }}\left( \mathit{\boldsymbol{Z}}|\mathit{\boldsymbol{X}} \right)||p\left( \mathit{\boldsymbol{Z}} \right)]+\text{ } \\ &\ \ \ \ \ \ \ \ \ \ \ \ \ {{E}_{q}}[\text{log}{{p}_{\theta }}\left( \mathit{\boldsymbol{X}}|\mathit{\boldsymbol{Z}} \right)+\text{log}{{p}_{\theta }}\left( \mathit{\boldsymbol{T}}|\mathit{\boldsymbol{Z}} \right)]. \\ \end{align} $ (5)

其中X是某个用户ui的评分向量,而T表示的是该用户的辅助信息,对于输入T同样采用重参量化的方式来优化。

2.4 其他改进

负反馈是推荐系统领域常常需要考虑的一个问题,即有评分的电影往往是用户比较偏爱的电影,而那些没有评分的电影从直观上来说都不值得用户去评分甚至去看。因此本文将负反馈加入考虑,即将用户在某项目上是否有评分作为辅助信息的一部分。

3 实验

本节将所提出的模型sVAE在2种数据集下进行实验测试其性能,并与其他模型进行对比以证明模型的有效性。

3.1 数据集

第1个数据集是MovieLens-1M的数据集,是MovieLens最小的数据集,包括了来自6 000名用户对于4 000部电影的100 000条评分记录,评分矩阵相当稀疏。每个电影包括名字、上映时间及标签3种辅助属性,而每名用户包括年龄、性别、职业3种辅助属性。

第2个数据集是高考中采集到的数据集,其中包括约25万名学生在包括7门选考科目(7选3)和3门必考科目在内的10门科目的成绩(每名考生实际有6门成绩)。除此之外,数据集中还包括了约400万条考生志愿,平均每名考生拥有15.9条志愿信息。考生志愿指的是考生自愿选择想要报考的学校及专业。另外每名考生还具有一些个人信息:性别、毕业中学、地区、外语语种以及所有10门科目的学考成绩(即高考参考之前的学业考试成绩),学考成绩只有粗略的A到D的等级评价。考生志愿、学考成绩及其他个人信息构成数据集的用户辅助信息。

3.2 评价指标

本文实验中,精确地预测缺失数据是最重要的目标,因此使用均方根误差(root mean squared error, RMSE)作为评价指标:

$ \text{RMSE}=\sqrt{\frac{1}{\left\| M \right\|}\sum\limits_{{{r}_{ij}}\in M}{{{({{r}_{ij}}-{{{\hat{r}}}_{ij}})}^{2}}.}} $ (6)

其中: M表示输入数据中的所有缺失项的集合,rij是真实值,而$ {{{\hat{r}}}_{ij}} $是模型预测出来的测试值。

3.3 基线及实验设计

本文提出的模型sVAE与以下模型进行实验对比:

1) 矩阵奇异值分解(singular value decomposition, SVD):矩阵奇异值分解[13]是推荐系统领域一个非常经典有效的方法,是矩阵分解的一个代表;

2) 变分自编码器(variational autoencoder, VAE):没有辅助信息的单纯变分自编码器[14-15]是本文对比的基线,目的是测试辅助信息的加入是否能给预测准确度带来明显的提升。

实验的目的是利用数据集中的评分矩阵(或成绩矩阵)及辅助信息预测矩阵中缺失部分的结果,使用10折交叉验证的方法,将1/10的评分作为测试集并将其遮挡为缺失值,不过与真实缺失值不同的是这些项的反馈是正的。

对于第1个数据集, 本文将用户和物品分别作为输入, 在有辅助信息和没有辅助信息的情况下进行测试。

对于第2个数据集, 首先需要对原始数据进行一些处理,清洗掉那些6科成绩并不全的考生。这一步中去掉了不到1 000条考生记录。同时也尝试了使用数据集中的一部分数据作为小规模样本进行测试,包括随机选取以及按照总成绩划分成块的方法采样。

对于模型SVD及VAE,首先进行实验寻找最优的参数配置:当隐向量维度K设为20以及随机梯度下降参数α =0.000 4且β=0.02时,第2个数据集的SVD结果最优。对于VAE,发现当参数值αβK分别为0.1、0.02、80时在第1个数据集上性能最优,分别为1、0.01、20时在第2个数据集上性能最优。VAE和sVAE均使用sigmoid函数作为激活函数并且使用随机梯度下降的方法进行参数优化。因为有较多的辅助信息,所以选择性地将其部分加入到实验中以测试辅助信息的有效性。

3.4 实验结果

表 1表示的是不同模型在MovieLens-1M数据集上计算得到的RMSE,其中:前缀s表示带有辅助信息,后缀u表示以物品为一行作为输入,后缀i表示以用户为一行作为输入。

表 1 不同模型在MovieLens数据集上的RMSE
模型 RMSE
VAE-u 0.916 8
sVAE-u 0.892 3
VAE-i 0.915 5
sVAE-i 0.909 9

表 1可以看出,MovieLens-1M数据集中用户和物品两者规模类似,无论以谁作为输入其误差都相差不大,在加入了辅助信息后误差确实都有了一定的减少。不过因为辅助信息量较少,减小的幅度并不大。其中以物品做输入时加入辅助信息减少的误差比以用户做输入时加入辅助信息减少的误差更为明显,幅度达到了2.7%。这可能是由于用户的辅助信息中的特征更少。但总的来说辅助信息的加入在该数据集上提升了变分编码器预测的准确性。

图 1表示不同模型在高考成绩数据集的不同输入上计算得到的RMSE,其中: “随机X%”表示的是从全数据集中随机采用的一部分数据作为输入得到的测试结果;“前X%”与中间“X%”表示的是根据考生总成绩排位后,取前面一部分或者中间一部分的数据作为输入得到的测试结果; sVAE表示加入了全部辅助信息,sVAE-a表示去掉了考生志愿信息。

图 1 不同模型在高考成绩数据集上的均方根误差

图 1可知无论输入如何,sVAE的RMSE都比VAE和SVD的有明显的降低,尤其是在使用前5%输入数据的情况下,相比VAE最多降低31%,这充分证明了加入辅助信息的变分自编码器能够带来预测准确度提升。

输入全数据集时,全部辅助信息的加入使得sVAE的RMSE相比VAE的0.079 2降低到了0.058 9,相对降低了26%。从图 1中可以看出考生志愿没有带来更多额外可以挖掘的信息。另外,无论是否有辅助信息,变分自编码器的RMSE都显著低于SVD的,这可能是由于变分自编码器能够发现非线性的隐藏特征,而SVD只能处理线性的情形。

表 2可知,即使输入均为全数据集,随着辅助信息的不同,sVAE的实验结果也不同。除了维度较大的志愿信息外,只加入1种辅助信息并不能对实验结果产生明显的影响。这是因为模型能够发掘出成绩与辅助信息背后的特征,并且随着辅助信息的增加,辅助信息之间的关系也可能被模型发掘出来,因此能够更加准确地进行预测。结合图 1表 2可以看出,对于考生样本不再局限于全数据集时,结论稍有所不同:对于总成绩排名前5%的考生而言,即使有了其他所有的辅助信息,考生志愿仍然能够提供额外可供挖掘的信息,将RMSE从0.506相对降低5%至0.483。这应当是由于排名靠前的考生会对自己有更加清晰的认知并且反映在考生志愿当中。另外,当使用了大多数的辅助信息时,即使不加入考生志愿信息仍能取得比较好的效果。

表 2 sVAE在高考成绩数据集不同的辅助信息下的RMSE
辅助信息 RMSE
性别 0.079 2
中学 0.078 7
地区 0.079 3
学考成绩 0.069 3
考生志愿 0.073 6
性别+中学+地区+外语语种 0.074 2
以上所有除考生志愿 0.059 3
以上所有 0.058 9

图 2可知辅助信息维度越多,优化收敛速度越慢,当全部30维的辅助信息都加入时,收敛时间增加了15%。不过相比误差的减小,这样的时间损耗是值得的。

图 2 在高考成绩数据集上不同辅助信息维度下的模型优化收敛时间

4 结论

本文通过加入辅助信息改进了变分自编码器,并将其应用在推荐系统领域。经过MovieLens及高考成绩2个数据集的测试,发现带有辅助信息的变分自编码器能够有效提高预测的准确度,尤其是在辅助信息较多的高考成绩数据集上效果更加明显。在有限降低了收敛速度的情况下,模型较为精确地预测出了考生成绩。

参考文献
[1]
NELWAMONDO F V, MOHAMED S, MARWALA T. Missing data:A comparison of neural network and expectation maximisation techniques[J]. Current Science, 2007, 93(11): 1514-1521.
[2]
RESNICK P, VARIAN H R. Recommender systems[J]. Communications of the ACM, 1997, 40(3): 56-58. DOI:10.1145/245108.245121
[3]
BREESE J S, HECKERMAN D, KADIE C. Empirical analysis of predictive algorithms for collaborative filtering[J]. Uncertainty in Artificial Intelligence, 1998, 98(7): 43-52.
[4]
HERLOCKER J L, KONSTAN J A, TERVEEN L G, et al. Evaluating collaborative filtering recommender systems[J]. ACM Transactions on Information Systems (TOIS), 2004, 22(1): 5-53.
[5]
SARWAR B, KARYPIS G, KONSTAN J, et al. Item-based collaborative filtering recommendation algorithms[C]//Proceedings of the 10th International Conference on World Wide Web. New York: ACM, 2001: 285-295.
[6]
KOREN Y, BELL R, VOLINSKY C. Matrix factorization techniques for recommender systems[J]. Computer, 2009, 42(8): 30-37. DOI:10.1109/MC.2009.263
[7]
SALAKHUTDINOV R, MNIH A, HINTON G. Restricted Boltzmann machines for collaborative filtering[C]//Proceedings of the 24th International Conference on Machine Learning. New York: ACM, 2007: 791-798.
[8]
STRUB F, GAUDEL R, MARY J. Hybrid recommender system based on autoencoders[C]//Proceedings of the 1st Workshop on Deep Learning for Recommender Systems. New York: ACM, 2016: 11-16.
[9]
OUYANG Y, LIU W, RONG W, et al. Autoencoder-based collaborative filtering[C]//Proceedings of the 21st International Conference on Neural Information Processing. Berlin: Springer, 2014: 284-291.
[10]
SEDHAIN S, MENON A K, SANNER S, et al. Autorec: Autoencoders meet collaborative filtering[C]//Proceedings of the 24th International Conference on World Wide Web. New York: ACM, 2015: 111-112.
[11]
SUZUKI Y, OZAKI T. Stacked denoising autoencoder-based deep collaborative filtering using the change of similarity[C]//Proceedings of the 31st International Conference on Advanced Information Networking and Applications Workshops (WAINA). Piscataway: IEEE, 2017: 498-502.
[12]
LI X P, SHE J. Collaborative variational autoencoder for recommender systems[C]//Proceedings of the 23rd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. New York: ACM, 2017: 305-314.
[13]
BRAND M. Incremental singular value decomposition of uncertain data with missing values[C]//Proceedings of the 7th European Conference on Computer Vision. Berlin: Springer, 2002: 707-720.
[14]
SØNDERBY C K, RAIKO T, MAALØE L, et al. Ladder variational autoencoders[C]//Proceedings of the 29th Annual Conference on Neural Information Processing Systems. Cambridge, Massachusetts: MIT Press, 2016: 3738-3746.
[15]
WANG H, SHI X J, YEUNG D Y. Collaborative recurrent autoencoder: Recommend while learning to fill in the blanks[C]//Proceedings of the 29th Annual Conference on Neural Information Processing Systems. Cambridge, Massachusetts: MIT Press, 2016: 415-423.