基于图神经网络和时间注意力的会话序列推荐

2020-11-03 00:59刘学军
计算机工程与设计 2020年10期
关键词:会话注意力向量

孙 鑫,刘学军,李 斌,梁 珂

(南京工业大学 计算机科学与技术学院,江苏 南京 211816)

0 引 言

在基于会话的推荐问题中,经典的协同过滤和矩阵分解[1,2]方法并不适用。近年来,大多数研究将循环神经网络(recurrent neural network,RNN)应用于基于会话的推荐系统中[3-6],取得了良好的效果。然而,这些算法仍然存在以下问题:①只使用用户点击序列对连续项目之间的单向转换建模,忽略了会话中的其它项目,即忽略了远距离项目之间的复杂转换。②忽略项目的浏览时间信息。人们普遍认为,用户倾向于花更多时间在他们感兴趣的项目上,而这些感兴趣的项目总是与用户当前的目标密切相关。因此,项目的浏览时间是会话序列推荐中的一个重要特征。③在基于会话的推荐中,会话大多是匿名的,而且数量众多,再加上在会话点击中涉及的用户行为通常是有限的,因此很难准确地估计每个会话的向量表示。为了解决上述问题,提出了一种基于图神经网络和时间注意力机制的会话序列推荐方法,称为GNN-TA-SR(graph neural networks with time attention mechanism for session-based reco-mmendations)。该方法利用门控图形神经网络,建模项目之间的复杂转换并得到项目隐含向量,然后,基于得到的项目隐含向量,利用一个时间注意力网络生成准确的会话向量表示。其中,时间注意力因子(time attention factors,TAF)是根据用户浏览过程中项目的持续时间信息创造性地计算出来的。

1 相关工作

1.1 传统的推荐方法

传统的基于会话的推荐方法主要包括基于项目的邻域方法和基于马尔可夫链的序列方法。

基于项目的邻域方法在会话期间根据项目的相似性矩阵来向用户推荐与当前点击的项目最相似的项目,其中项目相似性是根据同一会话中的共现计算的,即在会话中经常一起点击的项目被认为是相似的。这些方法难以考虑项目的顺序并仅基于最后点击生成预测。

然后,提出了基于马尔可夫链的序列方法,该方法基于先前的点击预测用户的下一步行为。基于马尔可夫链的序列方法将推荐生成作为序列优化问题处理,文献[7]采用马尔可夫决策过程(MDPs)作为解决方案。文献[8]基于马尔可夫链提出了一种个性化的序列推荐模型,将矩阵分解和马尔可夫链方法结合起来,同时适应长期和短期动态。这些方法的主要问题是,当试图包括用户所有可能选择的序列时,状态空间很快变得难以管理。

1.2 基于深度学习的方法

深度神经网络最近被验证在建模序列数据方面非常有效[9]。受自然语言处理领域最新研究进展的启发,已经开发了一些基于深度学习的解决方案。Hidasi等[3]首先提出了一种循环神经网络方法,然后通过数据增强技术和考虑用户行为的时间转换来改进模型[4]。Li等[6]提出一种基于RNN的编码器-解码器模型(NARM),它将来自RNN的最后隐藏状态作为序列行为,并使用先前点击的隐藏状态进行注意力计算,以捕获给定会话中的主要目的。Jannach和Ludewig[10]将循环方法和基于邻域的方法结合在一起,以混合顺序模式和共现信号。Tuan和Phuong[5]将会话点击与内容特征(例如项目描述和项目类别)结合起来,通过使用三维卷积神经网络生成推荐。Liu等[11]提出了一个短期注意优先模型(STAMP),通过采用简单的MLP网络和注意力网络来捕捉用户的一般兴趣和当前兴趣。

近年来,图神经网络(graph neural network,GNN)在社交网络、知识图谱、推荐系统,甚至生命科学等各个领域越来越受欢迎[12-15],它是一种直接在图结构上运行的神经网络。门控GNN[16]是GNN的一种改进,它使用门控循环单元,通过BPTT(back-propagation through time)计算梯度。最近,GNN被用于建模自然语言处理和计算机视觉应用的图形结构依赖性,例如,脚本事件预测[17]、情境识别[18]和图像分类[19]。图神经网络能够在考虑丰富节点连接的情况下自动提取会话图的特征,非常适合基于会话的推荐。

2 模型框架

2.1 公式化描述

2.2 总体框架

对于基于会话的推荐,首先从历史会话序列构造有向图。基于会话图,GNN能够捕获项目的转换并相应地生成精确的项目隐含向量,这是以前的序列方法难以做到的,如基于马尔可夫链和基于RNN的方法。基于准确的项目隐含向量,所提出的GNN-TA-SR可以构造更可靠的会话表示,并且可以推断出下一次点击项目。

图1为所提出的GNN-TA-SR方法的总体框架。首先,所有会话序列都被建模为有向会话图G =(V,ε), V 是节点的集合,由项目空间所有且唯一的项目组成,一个项目就是有向图中的一个节点v,ε是有向边的集合,v→v′∈ε是有向边,表示用户在会话s中点击项目v之后又点击了项目v′。其中每个会话序列可以被视为子图,如图1会话图中虚线框部分所表示的会话序列s=[v3,v1,v3,v5,v7]。然后,依次对每个会话图进行处理,通过门控图神经网络得到每个图中涉及的所有节点的隐含向量。之后,将每个会话表示为全局偏好和该会话中用户的当前兴趣的组合,其中全局偏好向量和用户当前兴趣均由节点的隐含向量组成。最后,对于每个会话,模型预测每个项目成为下一个点击的概率。

图1 GNN-TA-SR的总体框架

2.3 在会话图上学习项目隐含向量

每个会话序列s=[v1,v2,…,vn]都可以被视为有向图G的子图Gs= (Vs,εs),在此会话图中,每个节点代表一个项目vi∈V。每条边(vi,vi+1)∈εs表示用户在会话s中的vi之后点击项目vi+1。由于会话序列中可能出现多个重复点击的项目,所以需要给每条边分配一个归一化加权值,该值被计算为该边的出现次数除以该边的起始节点的出度。将每个项目v∈V映射到一个统一的嵌入空间中,节点向量hv∈d表示通过图神经网络学习的项目v的隐含向量,其中d是维度。

具体地,对于图Gs的节点vi,节点向量的学习更新函数如下

(1)

(2)

(3)

(4)

(5)

其中,H∈d×2d控制权重,hvi表示节点vi的隐含向量,矩阵A∈n×2n决定图中的节点如何相互通信。以会话序列s=[v5,v6,v4,v6,v4,v6,v7]为例,如图2所示,图(a)是会话s对应的会话图,图(b)是展开的一个时间步,实线边对应于图(a)中的有向边,虚线边对应于有向边的反向边,每条边的权重分别对应于图(c)矩阵A中的非零参数。A定义为两个邻接矩阵Aout和Ain的串联,它们分别表示会话图中输出和输入边的加权连接。Ai:∈1×2n是矩阵A中对应于节点vi的一行。对于每个会话图Gs,门控图神经网络同时处理节点。在矩阵A给出的限制条件下,等式(1)是在图的不同节点之间通过传入和传出的边传递信息的步骤,式(2)~式(5)类似于门控循环单元(gated recurrent unit,GRU)的更新,它们包含来自其它节点和前一个时间步的信息,以更新每个节点的隐藏状态。其中,z和r是更新门和重置门,σ(·)是sigmoid函数,⊙是点乘运算符。通过对会话图中所有节点进行更新直至收敛,可以获得最终的节点向量。

图2 会话s=[v5,v6,v4,v6,v4,v6,v7]

2.4 计算时间注意力因子

在浏览过程中,用户总是倾向于在感兴趣的项目上花费更多的时间,而对于不喜欢的项目或者无意间点击的项目,他们可能只会浏览很短的时间。此外,用户的下一个浏览项目总是与用户当前的兴趣相关联。因此,我们使用项目浏览时间来计算时间注意力因子,它可以反映之前点击的项目与用户当前兴趣的联系。这些计算出的注意力因子将被添加到时间注意力网络中用于生成会话向量表示。图3显示了时间注意力因子的计算过程。计算过程分为4个步骤:项目浏览时间的计算、设置浏览时间的阈值、z分数变换和归一化操作。

图3 时间注意力因子的计算过程

从数据集中每个事件的时间戳,可以获得每个项目的浏览时间。图4显示了RecSys Challenge 2015数据集中的项目浏览时间分布,只有约1%项目的浏览时间超过1500 s。这些长时间的浏览可能是由于浏览行为被某些东西打断,并且在他(或她)离开之前浏览页面没有关闭。为了避免异常的长时间浏览的影响,应该设置一个时间阈值Tth。假设在正常情况下,每个项目的浏览行为都可以在Tth时间范围内完成,如果用户对一个项目的浏览时间超过该阈值,则视为异常行为并设置浏览时间为Tth。Tth的具体取值取决于实际应用的需要,根据RecSys Challenge 2015数据集的特点,下面的分析将Tth设置为1500 s。

图4 RecSys Challenge 2015数据集中的项目浏览时间分布

在GNN-TA-SR模型中,我们不关心项目浏览时间的绝对值,而关心的是每个项目浏览时间所占的比例。例如,在会话s1中,用户在项目v1、v2、v3上的浏览时间分别为30 s,60 s和180 s,而在另一条会话s2中,用户在v1、v2、v3上的浏览时间分别为250 s、168 s和180 s。显然,在第一条会话中用户喜欢v3的程度要大于在第二条会话中用户喜欢v3的程度,尽管他们在v3上的浏览时间相同。如果直接使用项目的浏览时间作为它们的注意力因子,系统可能会错误地认为项目v3对会话s1和会话s2同等重要。为了避免这个错误,更准确地衡量会话序列中每个项目的重要性,使用项目的浏览时间信息和它所属会话的全局信息计算项目的z分数。z分数值定义如下

(6)

为了使每条会话的兴趣表示保持一致,通过使用sigmoid函数将计算得到的z分数进行归一化。项目的时间注意力因子由下式表示

(7)

2.5 生成会话向量表示

基于节点向量,每个会话s可以表示为一个嵌入向量hs,该向量由该会话中涉及的节点向量直接表示。为了更好地预测用户的下一次点击,我们制定了几种策略以结合会话的全局(长期)偏好和当前兴趣,并将此混合向量用作会话向量。

GNN-SR-AVE:将会话中点击的项目视为同等重要,忽略浏览时间差异,sg表示用户在当前会话的长期偏好,被定义为节点向量的平均值,st表示该会话中用户的当前兴趣,在该方法中,将最后一次点击vn视为的用户当前兴趣

(8)

st=hvn

(9)

GNN-SR-TAF:考虑在一个会话中,用户对每个项目的喜爱程度不同,或者点击某个项目是属于意外点击,这些情况大都可以根据项目浏览时间反映出来,因此,引入时间注意力因子来计算用户在当前会话的长期偏好和当前兴趣

(10)

st=αtnhvn

(11)

GNN-SR-TAF0:为了控制变量,对比在计算当前会话的长期偏好和当前兴趣引入时间注意力因子对推荐性能的影响,令

(12)

st=hvn

(13)

GNN-TA-SR:考虑会话中每个点击的项目对整条会话和最后一次点击的贡献度不同,给每个项目赋予不同的权重

αi=qΤσ(W1hvi+W2hvn+W3sg′+c)

(14)

其中,令

(15)

从等式(14)可以看出,会话序列中每个项目的注意力系数是基于目标项目vi、最后点击vn和会话全局偏好的初步表示sg′来计算的。

则用户在当前会话的全局偏好

(16)

用户的当前兴趣

st=αtnhvn

(17)

其中,参数q∈d、W1,W2,W3∈d×d用于控制项目向量的权重。

最后,以上3种策略均通过sg和st向量的串联进行线性变换来计算混合向量hs

hs=W4[sg;st]

(18)

其中,矩阵W4∈d×2d将两个组合向量映射到潜在空间d中。

2.6 生成推荐

(19)

(20)

对于每个会话图,损失函数定义为预测值与真实值的交叉熵,然后使用BPTT算法来训练模型

(21)

其中,y是真实的会话序列中下一个点击项目的one-hot向量。注意,在基于会话的推荐场景中,大多数会话的长度相对较短。因此,建议选择相对较少的训练步骤来防止过拟合。

3 实验与分析

在本节中,首先描述了实验中使用的数据集,数据预处理和评价指标。然后,将提出的GNN-TA-SR与其它方法进行了比较。最后在不同的实验设置下对GNN-TA-SR进行了详细的分析。

3.1 数据集和数据预处理

GNN-TA-SR模型在RecSys Challenge 2015发布的公开数据集Yoochoose中进行训练和评估,该数据集包括从电子商务网站收集的6个月的点击流,其中训练集仅包含会话事件。从文献[20]中分析,该数据集中约90%的会话有7个或更少的事件,最长的会话包含262个事件。所有项目的平均交互次数为23,其中最受欢迎的项目在数据集中被点击162 622次。

首先,从Yoochoose数据集中过滤掉长度为1的会话和点击次数小于5次的项目,并划分出Yoochoose数据集最后一天的会话数据作为测试集,之前的会话数据分别作为训练集,然后从测试集中删除那些不曾出现在训练集中的项目。最终,Yoochoose数据集保留了7 966 257条会话和37 483个项目,共计31 637 239次点击。

为了公平比较,遵循文献[4]对会话序列进行拆分处理,对于会话s=[v1,v2,…,vn],拆分成序列和相应的标签([v1],v2), ([v1,v2],v3),…,([v1,v2,…,vn-1],vn)。因为Yoochoose训练集非常大,并且根据文献[6]的实验,在距离测试集较近的数据的训练会产生比在整个数据集的训练更好的结果,因此,实验中使用距离测试集时间最近的1/64和1/4的训练序列。两个数据集的统计数据见表1。

表1 实验数据集统计

3.2 评价指标

P @ 20 (Precision)被广泛用作基于会话的推荐领域中预测准确度的度量。它代表前20项中正确推荐的项目的比例。

MRR @ 20(mean reciprocal rank,MRR)是正确推荐项目的倒数排名的平均值。当排名超过20时,倒数排名被设置为0。MRR度量是范围[0,1]的归一化分数,考虑推荐排名的顺序,其中较大的MRR值表示正确的推荐位于排名列表的顶部,这表明相应推荐系统的性能更好。

3.3 参数设置

通过对所有数据集进行广泛的网格搜索来优化超参数,并且通过基于验证集上的P @ 20得分的早期停止来选择最佳模型,验证集是训练集的随机10%子集。网格搜索的超参数范围如下:隐含向量维度d:{50,100,150,200},学习率η:{0.001,0.005,0.01,0.1,1}。根据平均性能,在本研究中,两个数据集隐含向量的维度d设置为100。所有参数都使用均值为0、标准差为0.1的高斯分布初始化,并使用小批量Adam优化器对这些参数进行优化,其中初始学习率η设置为0.001,每3个周期后衰减0.1。此外,批量大小和L2 正则化参数分别设置为100和10-5。

3.4 与相关方法比较

为了验证所提出算法的整体性能,将GNN-TA-SR算法同以下8种现有的解决会话型推荐问题的算法——POP、S-POP、Item-KNN、FPMC、GRU4Rec、GRU4Rec+、NARM、STAMP[7]进行了比较:

POP和S-POP分别推荐训练集和当前会话中的前N个频繁项目。

Item-KNN推荐与会话中先前点击的项目类似的项目,其中相似性被定义为会话向量之间的余弦相似度。

FPMC是一种基于马尔可夫链的序列预测方法。

GRU4Rec[3]使用RNN对基于会话的推荐的用户序列进行建模。

GRU4Rec+[4]进一步研究了RNN在基于会话推荐领域的应用,提出了一种数据增强技术,并改变输入数据的数据分布,用于改进模型的性能。

NARM[6]采用具有注意机制的RNN来捕获用户的主要目的和序列行为。

STAMP[11]捕捉用户当前会话的一般兴趣和最后一次点击的当前兴趣。

表2展示了所有算法在两个数据集上P@20和MRR@20的总体性能。由于内存不足,无法初始化FPMC,所以没有报告Yoochoose 1/4的性能[6]。

表2 实验结果对比

基于图神经网络的会话序列推荐算法将分离的会话序列聚合到图结构数据中,通过门控图神经网络得到项目隐含向量。从表2可以看出,GNN-TA-SR在Yoochoose1/64和Yoochoose1/4数据集上以P@20和MRR@20实现了最先进的性能,验证了所提模型的有效性。在该模型中,考虑了项目之间的复杂转换并利用了项目浏览时间信息,综合考虑了会话的全局偏好和当前兴趣。在本文所提出的4种混合策略中,GNN-TA-SR性能最佳,GNN-SR-TAF次之,GNN-SR-TAF0又优于GNN-SR-AVE,这表明将会话中的所有项目视为同等重要是不合理的,通过添加时间注意力因子,以及计算每个项目对整条会话和最近点击项目的贡献度来得到会话的全局偏好可以提高推荐性能。此外,GNN-SR-TAF0略优于GNN-SR-AVE表明,在当前兴趣st引入时间注意力因子,对最后点击的项目赋予一个权重,也可以提高推荐性能。

对于POP、SPOP、Item-KNN和FPMC等传统方法,其性能相对较差。这种简单的模型仅基于重复的共同点击的项目或连续的项目进行推荐,这在基于会话的推荐场景中是有问题的。即便如此,S-POP仍然优于POP和FPMC等,验证了会话上下文信息的重要性。与基于马尔可夫链的FPMC相比,Item-KNN具有更好的性能。Item-KNN仅利用项目之间的相似性而不考虑序列信息,这表明传统的基于马尔可夫链的方法主要依赖的连续项目的独立性假设是不现实的。此外,这样的全局解决方案可能耗费时间和内存,使得它们无法扩展到大规模数据集。

所有的神经网络基线都明显优于传统模型,从而验证了深度学习技术在该领域的有效性。GRU4Rec+通过使用将单个会话拆分为多个子会话的数据增强技术来进行训练,以提高GRU4Rec的性能。虽然GRU4Rec+不修改GRU4Rec的模型结构,但它们都只考虑了序列行为,这可能会遇到用户兴趣漂移的困难。NARM在基线中实现了比较好的性能,因为它不仅使用具有GRU单元的RNN来建模序列行为,而且还使用注意力机制来捕获主要目的,这表明主要目的信息在推荐中的重要性。这是合理的,因为当前会话中的项目的一部分可能反映用户的主要目的并且与下一个项目相关。而STAMP通过使用最后点击的项目来改进短期内存。这些方法显式地对用户的全局行为偏好进行建模,并考虑用户以前的动作和下一次点击之间的转换,从而获得优于这些传统方法的性能。然而,它们的性能仍然低于所提出的方法。与NARM和STAMP等最先进的方法相比,GNN-TA-SR进一步考虑了会话序列项目之间的复杂转换,从而将每个会话建模为一个图,它可以捕获用户点击之间更复杂和隐式的连接。而在NARM和GRU4Rec中,它们显式地为每个用户建模,并通过分离的会话序列获得用户表示,而忽略了项目之间可能的交互关系。因此,本文所提出的模型对会话行为的建模能力更强。

此外,GNN-TA-SR采用时间注意力机制生成会话向量表示,该会话向量可以自动选择最重要的项目转换,并忽略当前会话中的噪声和无效的用户动作。相反,STAMP仅使用最后点击的项目和先前的动作之间的转换,这可能是不够的。其它的RNN模型,如GRU4Rec和NARM,在传播过程中也不能选择有效的信息。它们使用先前所有的项目来获得一个表示用户一般兴趣的向量。当用户的行为漫无目的,或者他的兴趣在当前会话中快速变化时,传统的模型无法处理嘈杂的会话。

3.5 会话向量不同组成部分之间的比较

为了分析会话向量的不同组成部分对推荐性能的影响,将GNN-TA-SR与以下4种方法进行了比较:①只考虑用户的当前兴趣 (GNN-SR-L),即只考虑用户最后点击的项目;②只考虑平均池化的全局偏好向量(GNN-SR-AVEG);③引入时间注意力因子的全局偏好向量(GNN-SR-TAFG);④通过时间注意力网络得到的全局偏好向量(GNN-TA-SRG),即GNN-TA-SR的全局偏好向量。图5给出了对比结果。

图5 会话向量不同组成部分之间的比较

从图5中可以看出,混合向量方法GNN-TA-SR在两个数据集上都获得了最佳结果,这证实了将当前会话兴趣与长期偏好相结合的重要性。图5中还显示了在两个数据集上带时间注意力因子的GNN-SR-TAFG的性能明显优于平均池化的GNN-SR-AVEG,这表明考虑项目浏览时间是有效的。项目浏览时间在一定程度上反映了不同项目在会话中的重要性不同,引入时间注意力因子有利于识别会话中用户真正喜欢的项目,也可以在一定程度上弱化意外点击等噪声行为对获取会话向量表示的影响。此外,GNN-TA-SRG的性能优于GNN-SR-AVEG,表明GNN-TA-SRG更有助于从会话数据中提取重要行为来构建长期偏好;GNN-SR-L的性能优于GNN-SR-AVEG和GNN-SR-TAFG,并且性能仅次于GNN-TA-SRG,这表明当前兴趣和长期偏好对于基于会话的推荐都是至关重要的。

4 结束语

在用户偏好和历史记录难以获取的情况下,基于会话的推荐是必不可少的。本文提出了一种基于图神经网络和时间注意力机制的会话序列推荐算法,不仅考虑了会话序列项目之间的复杂结构和转换,将每个会话建模为一个有向图来捕获用户点击之间更复杂和隐式的连接,而且考虑项目的浏览时间信息,提出了一种结合会话的长期偏好和当前兴趣的策略,以更好地预测用户的下一步动作。综合实验结果表明,所提出的算法优于其它最先进的方法。

猜你喜欢
会话注意力向量
向量的分解
让注意力“飞”回来
聚焦“向量与三角”创新题
QQ和微信会话话轮及话轮转换特点浅析
“扬眼”APP:让注意力“变现”
基于集群节点间即时拷贝的会话同步技术研究①
A Beautiful Way Of Looking At Things
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线
年龄大小的种种说法