基于会话信息的多粒度循环神经网络推荐模型

2019-05-31 01:12岳新玉刘悦余志华
关键词:会话神经网络用户

岳新玉,刘悦,余志华

(1.中国科学院网络数据科学与技术重点实验室,北京 100190;2.中国科学院计算技术研究所,北京 100190;3.中国科学院大学,北京 100190)

0 引言

随着互联网时代的到来,人们所面临的信息呈爆炸式增长。面对互联网上海量的信息,传统的信息处理方式受到了极大的挑战,因此推荐系统受到了越来越多的关注。推荐技术从最初的基于内容的推荐方式,到后来的基于邻近的协同过滤的推荐方式,再到现在基于模型的协同过滤技术以及基于深度学习的推荐系统,推荐技术一直在快速地发展。而在信息的使用上,由最初利用用户行为信息,到现在的结合上下文信息(Context-Aware)的推荐技术,推荐系统使用的信息也越来越丰富。除此之外、冷启动、推荐多样性、新颖性、用户体验等众多方向均开始被人们所探索。因此在工业场景实际要求的推动下,推荐的场景变得越来越复杂,对于推荐技术的要求也越来越高。传统的推荐问题把用户的兴趣当作静态不变的方式已经不再适合当下的场景,越来越多的场景需要更实时的推荐模型。

近年来随着深度学习技术的发展,基于会话的推荐算法受到了越来越广泛的关注,也取得了一定的进展。但是大多数工作都主要关注如何更好地建模用户点击序列,而推荐场景中的一些特殊性则没有受到足够的关注。一些工作主要是参考深度学习在语言模型上的应用,利用网络去学习包含商品序列信息的商品的表达。例如利用类似Word2Vec的浅层模型来建模点击序列,再例如采用编码解码结构,通过循环神经网络去对整个点击序列进行编码。但是相比于语言模型或其他序列问题,推荐问题具有一定的特殊性。比如推荐场景中,物品的信息更为丰富,既可以获得更粗粒度的信息,例如类别信息,也可以获得更细粒度的信息,比如文本的字单位,同时,推荐场景中还可以获得丰富的上下文信息,例如商品的更多的属性等等。当然,推荐场景也面临着很多特定的问题,例如冷启动问题和长尾问题就是推荐场景中最显著的问题之一。这两种情况下,物品都会体现出欠曝光的现象,从而使得模型对这部分商品学习的不是很充分。而在一些特殊的问题场景中,这一问题显得更为严重,例如新闻推荐场景或视频推荐场景中,每天都会有大量的新物品产生,这使得大量的新物品可能无法得到充分的展现从而学习的不是很充分。当用户的点击序列包含这部分商品时,一方面会使得这部分商品影响整个序列的学习,另一方面使得序列无法充分地捕捉到这些商品所带来的信息。在很多推荐算法的实验当中,通过参考语言模型过滤低频词的方式,过滤掉一些展现低于一些阈值的冷门物品,但这就使得模型对于这部分商品的模型更为严重,从而加剧冷启动和长尾问题。

本文通过提出一种多粒度循环神经网络模型来解决上述问题,通过引入物品类别信息可以更好地提升模型的泛化性,另外本文还引入了注意力机制可以更好地捕捉用户的注意力信息,减少噪声数据的影响。

与传统的推荐系统相比,基于会话的推荐系统主要关注如何利用用户当次会话内的点击序列信息提升推荐系统的效果。一方面能够快速地捕捉到用户短期兴趣从而推荐的商品更具有实时性,另外一方面该方法可以有效地解决用户长期信息缺失或者用户冷启动问题。目前而言,基于会话的推荐系统主要可以分为基于传统推荐模型方法[1-2]、基于序列的推荐的方法以及基于深度学习的方法三大类。第一类为基于Item-to-Item协同过滤的方法,该方法是应用在会话推荐场景中的最主要的方法之一,其不仅能够快速有效地召回物品完成推荐,同时由于其不需要利用用户信息,所以在很多缺失用户信息的场景中仍能发挥重要作用,也是早期工业界最常用的方法之一。例如Linden等人提出的用于亚马逊商品推荐系统的算法就是基于此[1]。在这一方法中,越频繁出现在同一个会话点击序列内的商品被认为相似性越高,并以此提前计算一个Item-to-Item相似矩阵,存储任意两个商品间的相似性。利用这一相似矩阵,找到用户最近点击的商品的最相似或Top-K相似的商品完成推荐。Sarwar等人分析了不同计算商品相似性的方法所带来的影响。在计算商品相似性的过程中,最基本的想法是先将对两个商品共同打分的用户取出来,再利用相似性计算方法在共同打分的用户基础上,去计算商品的相似性。第二类为基于序列的方法[3-6],在序列推荐问题中,多数方法利用马尔科夫链来建模用户的点击行为序列来完成用户的推荐。例如Zimdars等人利用马尔科夫链建模用户的点击序列,并基于此提出一种包含物品点击的序信息的实例表达方法[3]。利用这种表达方式代替原有的基于词袋的表达方式直接应用在传统的非时序推荐模型中,可以有效地提升推荐效果。Chen等人提出了LME(Latent Markov Embedding)模型,其首先利用一阶马尔科夫来建模歌曲间的转移概率矩阵,并提出将歌曲映射到隐空间中进行表示,要求两个歌曲在隐空间中的欧拉距离和两者对应的转移概率成正比[4]。其还在表达中加入了对表达的正则化限制,最后利用最大似然估计求解得到所有歌曲的表达。Shani等人利用马尔科夫决策过程去建模序列推荐问题[5]。马尔科夫决策过程可以定义为一个四元组,S表示状态集合,A表示动作集合,Rwd表示收益函数,对每一个状态动作组合进行收益得分计算,tr表示状态转移函数,表示状态间的转移概率大小。其中动作等价于推荐商品,而我们简化这一马尔科夫决策过程时,其等价于一阶马尔科夫链,并且可以简单地通过计算一阶转移概率的大小来选择推荐的物品。以上一些基于马尔科夫链的方法存在着不可忽视的问题,由于推荐场景下商品集往往都极大,并且存在冷启动、长尾效应等问题。所以即使是一阶MDP方法,其状态空间也无法完全计算,转移概率难以准确估计,这也导致了这一类方法在实际应用中效果有限。第三类为基于深度学习的方法[7-12],最早将循环神经网络应用在这一场景的是Hidasi等人[8-9]。这一方法将每个会话的点击序列作为输入,经过Embedding层以后,传入循环神经网络层,最后接多层全连接层,并用Softmax层作为输出层,将推荐问题当作多分类问题来处理,来预测下一个可能被点击的商品。在循环神经网络的改进结构的使用上,作者对长短期记忆模型(LSTM)[13]和门控循环单元(GRU)[14]结构进行了实验对比,并最终采用门控循环单元结构代替传统的循环神经网络结构。

Li等人提出了NARM(Neural Altentive Recurrent Model)模型[10],其认为在以前的基于会话的推荐方法的工作中,大多数只关注了对于用户会话点击序列的建模,但是并没有关注用户在点击序列中真实的兴趣。比如在用户的点击序列中,用户可能有一些误点,或临时的兴趣点,但是在传统的利用循环神经网络建模的方法中,大多数将整个序列等同对待,或者主要依靠用户最近的点击商品。因此其利用注意力机制在保证模型学习用户点击序列信息的同时能够捕获用户的真实兴趣信息来解决这一问题。

由于大多数工作都没有考虑用户信息,所以Donkers等人[11]提出了三种扩展门控循环单元的改进结构,将用户信息也输入到GRU结构当中,从而使得模型变为个性化时序模型。类似的Zhu等人对长短期记忆模型结构进行了修改,其通过引入时间间隔因素来提升模型的推荐效果。

除了基于循环神经网络的方法之外,Tang等人提出了一种基于卷积神经网络的Top-K序列推荐方法[12]。其认为大多数基于循环神经网络结构的方法只能建模或捕捉单点(Point-Level)对于后续行为的影响这种情况,却无法建模多个点击的共同作用效果。因此作者将用户的点击序列当作图片的形式去处理,利用卷积神经网络提取局部的一些模式来解决这一问题。

1 多粒度循环神经网络模型

1.1 问题定义

基于会话的推荐问题主要是在给定用户当前会话的点击序列的条件下,预测用户下一次可能点击的商品,在大多数实际场景中,通常能够获得更多的商品信息,比如类别信息就是其中之一,例如音乐的音乐类别,商品的商品类别等等。因此形式化定义该问题为,令[x1,x2,…,xn]表示用户点击序列,其xi中表示第i个点击商品的商品ID,令ci表示点击序列中商品xi所对应的类别,则可以得到表示用户点击的类别序列[c1,c2,…,cn]。在给定用户点击序列x的情况下,通过模型预测得到结果y=[y1,y2,…,ym],其中m表示总商品集大小,yi表示对第i个商品得分。通常而言采取Top-K的推荐方式,选取打分最高的K个商品进行展示。

1.2 多粒度循环神经网络

在推荐问题中,往往存在着大量的欠曝光商品,例如冷启动物品和长尾商品。当这部分商品出现在用户的点击序列中时,一方面会由于这部分商品学习的不充分将影响模型对于整个会话的表示,但当忽略这部分商品时比如过滤掉这类商品会使得模型无法捕捉到这部分商品带来的影响,更加加重欠曝光商品的问题。结合推荐问题场景中,商品的类别信息,本文利用更粗粒度的信息对商品进行补充表示,从而使得缓解这一问题。

Fig.1 Schematic Diagram of Multi-Rate RNN Recommendation Model图1 多粒度循环神经网络推荐模型示意图

具体网络的设计如图1多粒度循环神经网络推荐模型示意图所示,首先将用户点击物品的对应的类别序列,经过Embedding层后,传给类别卷积网络中,得到输出序列。另外对于用户的会话点击序列,经过Embedding层后,和类别的输出变量拼合组成商品的新的表示序列。拼合方式的设计主要尝试了两种方式。第一种采用直接将两个向量拼接起来的最常用的方式,如下式所示。

第二种是参考Donkers等人的工作[11],利用一个简单的类似注意力模型的方式,通过计算两个向量间的关系来控制两者的组合方式,即

然后将新的物品的表示序列给到第二层循环神经网络中进行学习,并将最后一个节点的输出作为当前会话的点击序列的编码表示。解码部分采用多层全连接网络,并通过Softmax层得到最终的预测结果。

1.3 多粒度注意力循环神经网络

在1.2中提出的多粒度循环神经网络中建模用户的会话点击序列时,并没有对用户的注意力加以区分,例如在新闻推荐的场景中,用户实际可能同时阅读多个话题的新闻(如科技和军事)。这样在用户阅读一个科技新闻时,用户历史的点击序列中科技内容的点击起到较为重要的作用,因此模型需要更好地去捕捉用户实际的注意力信息来精确用户的兴趣表达。另外,对于一些展现不充分的商品,当表达学习不充分时,会对整个会话的表达产生一定的影响。因此在多粒度循环神经网络模型的基础上,本文引入了注意力机制,用来捕捉用户的注意力信息。

Fig.2 Schematic Diagram of Multi-Rate Attentive RNN Recommendation Model图2 多粒度注意力循环神经网络推荐模型示意图

其中权重系数计算如下式所示。

这里我们采用的是加性的注意力机制,主要起到了将两个隐向量映射到同一维度的空间的作用。

2 实验

2.1 数据集

本文在YOOCHOOSE和DIGINETICA这两个公开数据集上进行多种推荐方法的实验以及一些参数实验和结构实验。

YOOCHOOSE数据集[注]http:∥2015.recsyschallenge.com/challenge.html是在Recsys CHALLENGE 2015上发布的一个公开数据集,具体是英国的在线零售商提供的用户在2014年的行为记录,包括点击、购买等。数据集主要用于序列推荐任务,其中包含了9 249 729商品的共33 003 994条用户点击记录。每条记录包含了SessionID,商品ID,商品类别以及时间戳。由于部分基线算法的复杂度较高,本文仅使用了10%的数据用于实验验证模型的有效性。

DIGINETICA数据集[注]http:∥www.dtic.upf.edu/~ocelma/MusicRecommendationDataset/是在CIKM Cup 2016上发布的一个公开数据集,是DIGINETICA和其合作伙伴提供的包括用户搜索、点击、购买等在内的一些用户在线行为日志。本文仅使用了交易数据用于实验,其中包含了2016/01/01-2016/06/01的80万条用户的点击记录。

为了更好地验证模型的效果,本文均参考Hidasi等人的做法过滤了长度小于5的会话,并且对数据集按时间序排序,并按照9∶1的划分方式,取前90%的数据作为训练集,后10%的数据作为验证集,数据集的具体统计情况如表1数据集所示。

表1 数据集

2.2 基线方法

本文将MRARR模型和Pop、ItemKNN、BPR-MF以及GRU4REC共四种方法进行对比实验。

POP:将整个数据集中最热门的商品进行推荐。尽管方法十分简单,但在某些场景中仍然十分有效,通常在一些推荐方法的研究工作中被选作最基本的基线方法。

ItemKNN:该方法通过召回和会话最相似的物品进行推荐。物品间的相似性可以由各个物品基于会话的表示向量间的Cosine值来定义。例如两个物品共同出现在同一会话的次数除以两个物品各自出现在会话中次数的积。同时在计算的时候,还使用正则项来防止稀有商品间的相似度虚高的情况。这一方法是工业界最常用的方法之一,也是一个较为有力的基线,具体可以参考Linden[1]或Davidson等人[15]的工作。

BPR-MF:该方法是目前最常用的矩阵算法之一,其主要通过随机梯度下降去优化pairwise的排序损失函数。矩阵分解的方法并不能直接应用到基于会话的场景中,因为矩阵分解无法为新的会话进行刻画。本文参考Hidasi等人的工作,对新会话中的物品的向量求平均值作为新会话的向量表示,这可以看作待计算物品和会话中的所有商品的相似性的平均值来反应待计算物品和会话之间的相似性。

GRU4REC[8]:该方法利用深度学习的方法对基于会话的推荐场景进行建模,利用循环神经网络建模用户的点击序列。该方法在原有的基于序列推荐算法的基础上,获得了大幅度的提升,是目前基于会话的推荐算法中,最强有力的基线算法。

2.3 评级指标

推荐场景中,大多数场景能够推荐的数量都受到一定因素的限制。所以目前大多数推荐问题都是Top-K推荐问题。因此我们采用以下两个评价指标对算法进行评价,这两个指标也是目前在基于Session的推荐场景中,最常用的评价指标之一。

Recall@20:召回率是推荐算法中最基本的评价指标之一,这一指标通常和线上的一些实际指标如点击率成正比,故也是常用的离线评价指标之一。Recall@20主要衡量的是前20个商品中是否召回用户感兴趣的商品,但这一指标并没有考虑到真实点击商品的位置因素。

MRR@20:Mean Reciprocal Rnak在召回率的基础上,进一步加入了召回商品的位置的影响。商品召回位置越靠前,该值越大,反之越小。MRR@20表示当商品并没有在前20个商品中召回时,该值为0。在一些位置因素对用户体验影响较大的场景,该指标起到重要的作用。

2.4 参数设置

本文模型中的所有参数均采用线搜索的方式进行选取,最终采用的参数设定如下。模型采用Adam优化方法对模型参数进行求解,初始学习率为0.001,衰减系数为0.97,训练的Batch大小为1 000,迭代轮数为15轮。另外,模型的循环神经网络层采用了Dropout的方式防止过拟合,具体Dropout率为0.5。类别向量的Embedding维度采用了25维,商品Embedding向量的维度为100维。另外用于类别的循环神经网络和用于商品层的循环神经网络均设置隐层节点个数为100。选取模型处理的最长商品点击序列长度为30,超过30个的序列将丢掉前面部分的点击,另外解码部分直接采用Softmax层,并未加入更多的全连接层。本文用的loss为cross-entropy loss,并没有采用排序损失函数TOP1和BPR,如果换成排序损失函数,可能效果会有所提升。

2.5 实验结果与分析

2.5.1 基线对比实验

GRU4REC是目前效果最好的算法之一,相比于GRU4REC,本文提出的MRARR方法主要在其原有的基础上,增加了粗粒度信息的建模,并将结果和原有的商品粒度信息相结合,这使得相比于GRU4REEC方法,MRARR模型具有更好的泛化性和鲁棒性。如表2所示,相对于GRU4REC算法,本文提出的MRARR算法有较为明显的提升,在YOOCHOOSE数据集上,Recall@20指标提升了5.3%,MRR@20指标提升了9.8%,在DIGINETICA数据集上也分别有14%和15%的提升,由此可见引入更粗粒度的如商品类别信息,可以有效地提升模型效果和泛化性。当商品的长尾商品和冷启动商品更多的时候,MRARR方法将具有更为明显的优势。另外可以看到基于会话的推荐模型如Item-KNN、GRU4REC以及MRARR模型均效果明显好于静态的推荐模型如POP、BPR-MF。一方面是因为数据集本身就是侧重于用户短期兴趣的数据,另外也说明用户短期兴趣在推荐场景中有较大的影响。

表2 基线对比实验结果

另一方面本文的方法并没有太多对模型优化的一些技巧,比如Batch Normalization、预训练、排序损失函数,利用Bi-Linear解码代替Softmax等,如果在MRRR的基础上引入这些方法将有可能带来进一步提升,但由于本文主要侧重于粗粒度信息带来的收益,所以并没有在这些方面进行太多的实验。

在模型中还尝试使用双向的GRU代替单向的GRU,结果略微提升,并没有带来特别显著的效果;使用多层Stacking GRU来提取多种序列不同时间粒度关系结果也并没有明显的提升。在解码结构中引入多层全连接层并没有在测试集中带来明显收益,验证集有所提升,但可能更复杂的结构一定程度导致了模型过拟合。

2.5.2 结构对比实验

本文首先对如何拼接商品向量和利用粗粒度信息学到的向量进行了实验,一种方式是直接对两个向量进行拼接。另外一种是参考Donkers等人的工作中,利用门控网络的思想,利用粗粒度信息作为控制信号决定商品向量和粗粒度信息向量如何拼接,具体实验结果如表3所示。采用门控网络类似的结构有一定的提升,在YOOCHOOSE数据集上Recall@20指标能够带来1.8%的提升,MRR@20也有2.7%的提升,在DIGINETICA数据集上,Recall@20和MRR@20分别有7%和11%的提升,由此可见门控网络可以有效捕捉两种信息各自的重要性信息。

表3 向量拼接方式实验结果

另外本文还对如何提取用户的表达做了实验对比。其中包括是否加注意力机制,取最后一个、取平均等等,实验结果如表4所示。实验表明,注意力机制的引入可以有效地提升模型的效果。YOOCHOOSE数据集上,Recall@20提升3.6%,MRR@20提升5.8%。DIGINETICA数据集上,Recall@20和MRR@20分别提升3.3%和12%。通过结果表明GRU4REC中,利用循环神经网络最后的隐节点作为整个序列的输出有一定的局限性,用户的注意力可能不完全是按照时间信息决定的,引入注意力机制可以有效地捕捉用户的注意力,但是通过对比其他方式不难发现用户尾部的点击对于用户的下一次点击影响较大,可以更好地反应用户的短期兴趣。

表4 会话编码方式实验结果

3 结论

本文提出了一种基于会话的多粒度注意力循环神经网络推荐模型。在实际的推荐场景中,往往通常会遇到商品的冷启动问题和长尾问题,这部分商品由于缺乏足够展示在模型的学习中往往表达不够充分。因此当序列中出现这样的商品时往往会导致两种情况,一是由于商品的表达学习不够充分从而影响对整个序列的建模,这相当于引入了部分噪声,从而影响表达的准确性。另外一方面是由于商品的表达学习不充分,导致无法很好地捕捉这部分商品所带来的信息,因此模型会更加的趋热,使得冷启动商品或长尾商品的展现更加困难。基于此问题,本文通过引入商品的更粗粒度的信息如类别信息来解决这一问题。商品的类别信息对于商品有聚合作用,因此可以更好地提升模型的泛化能力。本文利用多粒度循环神经网络模型,先通过一层循环神经网络学习商品的类别表达,再通过将类别表达和商品的Embedding做拼合传入下一层循环神经网络,对商品的整个序列进行建模。还通过Tensorflow实现了这一模型,并在YOOCHOOSE数据集上验证了模型的有效性,相比于目前效果最好的GRU4REC模型,MRARR模型在YOOCHOSS数据集上,Recall@20指标获得了5.3%的提升,而MRR@20指标获得了9.8%的提升。

猜你喜欢
会话神经网络用户
QQ和微信会话话轮及话轮转换特点浅析
神经网络抑制无线通信干扰探究
基于神经网络的中小学生情感分析
基于集群节点间即时拷贝的会话同步技术研究①
关注用户
关注用户
关注用户
基于神经网络的拉矫机控制模型建立
基于支持向量机回归和RBF神经网络的PID整定
如何获取一亿海外用户