张晓晖,马慧芳,王文涛,高子皓
(西北师范大学 计算机科学与工程学院,兰州 730070)
近年来,基于会话的推荐(Session-Based Recommendation,SBR)方法受到学术界和工业界的广泛关注[1-3]。与传统的推荐算法不同,会话推荐侧重于根据用户当前正在进行的会话学习用户的最新偏好,以推荐下一个项目。因此,通过预测用户的最新偏好以推荐下一个项目是SBR 的核心任务。由于SBR 具有很高的实用价值,因此研究人员提出了许多推荐方法[4-5]。尽管这些方法取得了较好的推荐效果,但大多都仅基于当前会话建模用户偏好,忽略了跨会话信息和项目知识。而事实上,其他会话的交互数据和知识图谱中丰富的实体和关系信息有助于捕获项目之间的依赖关系、缓解数据稀疏问题等。
马尔可夫链(Markov Chain,MC)是最早被用于会话推荐的模型,其依据会话序列中用户的前一个行为预测下一个行为,取得了较好的会话推荐效果[6]。然而,用户行为往往受多步依赖关系的影响,仅从相邻项目的转换中捕获信息,不足以建模用户感兴趣的演化过程。为了挖掘这种多步依赖的影响关系,研究人员提出基于循环神经网络(Recurrent Neural Network,RNN)的会话推荐方法[7-8]。其中,GRU4REC[9]利用多层门控循环单元(Gated Recurrent Unit,GRU)捕获完整的会话序列信息。NARM[10]在RNN 上利用注意力机制捕捉用户的序列行为特征,该方法将数据简单地视为时间序列,存在预测偏差的问题。因此,文献[11]利用注意力网络来代替循环编码器,通过多层感知机(Multi-Layer Perceptron,MLP)和注意力网络来捕获用户的一般兴趣和当前兴趣。尽管该方法取得了一定进展,但采用的线性序列结构表达能力不强,难以表示与建模项目之间复杂的非序列依赖关系。
近年来,图神经网络(Graph Neural Network,GNN)广泛应用在包括会话推荐在内的各种任务中[12-14],在空间上建模项目之间的转换模式,有助于捕获项目间复杂的依赖关系[15-16]。其中,SR-GNN[17]将GNN应用到会话推荐任务中,并设计门控图神经网络(Gated Graph Neural Network,GGNN)模型来捕获复杂的项目转换关系。此外,文献[18]在SR-GNN 基础上,采用多层自注意力机制获得用户的长期兴趣。然而,以上方法仅基于当前会话来建模用户偏好,忽略了跨会话信息对当前会话重要性的影响。因此,文献[19]结合不同的会话信息设计一个广泛连接的会话图,并使用多头注意力机制学习每个项目的表示。尽管该方法考虑了其他会话的信息,但其忽略了知识图谱中的项目知识,并难以缓解数据稀疏和冷启动问题,具有次优推荐性能。
针对以上问题,本文综合考虑跨会话信息、知识图谱中丰富的实体和关系信息,设计基于跨会话知识图谱的图注意力网络推荐方法ARCK。基于会话数据和知识图谱构建跨会话知识图谱,利用知识感知的注意力机制捕获跨会话的项目转换信息和知识图谱中的项目知识来更新项目节点表示,采用注意力网络和GRU模型建模目标用户的长、短期兴趣。在生成预测时,通过跨会话知识图谱获得语义信息更加丰富的项目嵌入,从而得到更精确的会话推荐结果。
本文设S={s1,s2,…,s|S|}为项目集合V={v1,v2,…,v|V|}上的会话集合。第t个匿名会话是按时间顺序排列的项目列表,其中∈V为第j个被点击的项目,n为会话st的长度。st可能包含重复的项目。为了缓解数据稀疏问题,ARCK 模型考虑关于项目的侧信息(如项目属性和外部知识)。这些侧信息由真实世界的实体和它们之间的关系组成。例如,一首歌可以由它的歌手、语言和流派来描述。本文以知识图谱的形式组织项目的侧信息,给定知识图谱GK={(h,r,t)|h,t∈E,r∈R},其中E表示所有的实体节点,R表示所有节点的关系,每一个三元组都描述了从尾实体t到头实体h之间存在一类关系r。例如,三元组(昨日重现,歌手,Carpenters)描述了Carpenters 是歌曲《昨日重现》的歌手。此外,本文给定项目-实体对齐集A={(v,e)|v∈V,e∈ε},其中(v,e)表示项目v可以与知识图谱中的实体e对齐。
本文主要符号描述如表1 所示。
表1 本文主要符号描述 Table 1 Description of main symbols in this paper
本文提出的ARCK 方法架构如图1 所示。其流程主要分为4 个步骤:1)基于跨会话图GC和知识图谱GK构建跨会话知识图谱GCK;2)通过知识感知的注意力机制在跨会话知识图谱GCK上学习项目相关性,并将其编码到项目表示中;3)将用户行为序列视为GC中的子图,并利用GRU 和注意力网络学习会话嵌入;4)在预测层将学习到的会话嵌入、项目嵌入拼接后输入至MLP,最终得到目标会话-项目对的预测分数。
图1 本文方法架构Fig.1 Framework of the proposed method
为了充分捕获跨会话信息和项目知识来缓解数据稀疏问题,本文将会话数据和知识图谱中丰富的实体和关系信息进行图数据建模,并利用知识感知的注意力机制对其他会话的项目转换信息和知识图谱中的项目属性进行编码,从而获得项目嵌入矩阵。
2.1.1 跨会话知识图谱构建
本文给定跨会话图GC、知识图谱GK及项目-实体对齐集A,构建跨会话知识图谱GCK={(v,r,e)|v∈V,e∈E′,r∈R′},其中E′=V∪E,R′=R∪{transition}。
2.1.2 项目嵌入学习
知识图谱嵌入是一种将实体和关系作为向量表示进行参数化的有效方法,同时还可以保留图的结构信息。然而,在真实数据集中的项目通常由索引标识组成,而这些原始索引表示能力非常有限。因此,受文献[20]的启发,本文首先选择广泛使用的TransR[21]方法来学习跨会话知识图谱上每个项目节点v、实体节点e和关系r的原始嵌入,即ev,ee,er∈Rd。通过将原始嵌入向量输入到嵌入传播层,即知识感知的注意力机制,生成每个项目的知识嵌入。设项目知识嵌入矩阵I=[v1,v2,…,v|V|],其中|V|为跨会话知识图谱中的项目节点数,vk∈Rd表示项目vk的知识嵌入,d为嵌入维度。具体地,本文给定跨会话知识图谱GCK,对于图中的项目节点v,三元组集合Nv={(v,r,e)|(v,r,e)∈GCK}称为项目v的自我中心网络[12]。为了获得项目v的l阶表示,项目v的自我中心网络的线性组合计算如式(1)所示:
其中:π(v,r,e)为区分实体邻居重要性的注意力分数,表示每条边(v,r,e)上传播的衰减因子,控制有多少信息在关系r的条件下从e传播到v。具体地,π(v,r,e)由知识感知的 注意力机制计算,并利用Softmax 函数对与v相连的所有三元组系数进行归一化,如式(2)所示:
其中:Wr∈Rd×d为可学习的权重矩阵。由于距离更近的实体能传播更多的信息,因此该方法使得注意力分数依赖于关系r空间中ev和ee之间的距离。
为了获得节点v的知识嵌入,本文对执行l层嵌入传播操作获得的项目节点v的l个表示进行拼接,以实现层聚合操作,如式(4)所示:
其中:l为知识感知的注意力机制层数;“||”为拼接操作。由此得到项目v的最终特征向量,即项目级嵌入。通过上述传播过程获得项目集V中每个项目的知识嵌入,即得到融合跨会话信息和项目知识的项目知识嵌入矩阵I∈R|V|×Ld。
尽管项目嵌入捕获了跨会话信息和项目知识,但其未揭示特定会话的上下文信息。已有研究表明,会话推荐模型应充分利用当前会话来反映用户最近的偏好[19]。因此,通过学习会话级嵌入来保留原始会话st的信息并获取用户当前偏好的做法是十分必要。本文给定目标会话,会话嵌入学习包含两个任务:1)执行嵌入查找操作,从项目知识嵌入矩阵I中提取出st特定的会话嵌入矩阵Is=[v1,v2,…,vn],其中Is∈Rn×Ld,vk∈RLd为会话st中第k个项目的知识嵌入;2)根据Is生成会话st当前偏好和全局偏好表示。
GRU 克服了RNN 中存在的梯度消失问题,其比长短期记忆(Long Short-Term Memory,LSTM)网络模型效率更高[23]。因此,本文采用GRU 来建模目标会话的当前偏好scurrentt,如式(5)所示:
其中:hn为会话st在GRU 中的第n步所输出的隐藏状态(向量);φGRU为GRU 中待学习的参数。该隐藏状态的计算基于vn和第n-1 步的隐藏状态hn-1。
通过聚合会话图Gst中所有节点向量来得到目标会话的全局偏好,如式(6)所示:
其中:vi为会话图Gst中项目节点的知识嵌入。鉴于st中的项目可能具有不同的重要性,因此采用注意力网络为每个项目分配相应的权重ai,n,如式(7)所示:
其中:ai,n为会话st中第i个项目与最后一个项目之间的相似性分数。
最后,将目标会话的当前偏好与全局偏好拼接生成最终的会话嵌入st,如式(8)所示:
如果一个项目和目标会话越相似,那么该项目对于推荐就越重要。因此,利用目标会话的最终嵌入st与候选项目vk∈V的嵌入vk计算得到,如式(9)所示:
对于会话推荐主任务,本文将损失函数定义为模型预测结果和真实数据的交叉熵,如式(10)所示:
其中:yst,vk为真实数据中项目的one-hot 编码向量。
此外,TransR 的训练考虑了有效三元组和无效三元组之间的相对顺序,本文通过成对排名损失对其进行区分。成对排名损失函数如式(11)所示:
其中:T={(h,r,t,t′)|(h,r,t)∈GCK,(h,r,t′)∈GCK};(h,r,t′)为通过随机替换有效三元组中的尾实体而构造的无效三元组;σ(·)为Sigmoid 函数。
考虑到以上两种角度的损失,最后结合式(10)和式(11)得到模型中联合优化的目标函数,如式(12)所示:
其中:Θ为模型参数集;λ为超参数;为L2正则化项,以防止模型出现过拟合现象。
ARCK 算法流程如下:
算法1ARCK 算法
本文在两个真实数据集上设计实验,验证ARCK方法的性能优势,跨会话知识图谱的构建对ARCK 的性能影响,以及不同会话长度和不同超参数的选取对ARCK 性能的影响。
为验证本文所提方法的有效性,本文选取两个真实数据集进行验证:1)KKBOX数据集(https://www.kaggle.com/c/kkbox-music-recommendation-challenge/data),包含用户在特定时间段内听音乐的历史记录,根据用户行为频率,将会话的持续时间阈值设置为2 000 min,将音乐及音乐属性(如艺人(歌手)、类型、语言和发行年份)视为知识图谱中的实体;2)JDATA 数据集(https://www.kaggle.com/c/kkbox-music-recommendationchallenge/data),收集自京东,其中包含两个月内的用户历史记录,根据用户在京东上的行为频率,将会话的持续时间阈值设置为1 h,并将产品及产品属性(如品牌、商店、类别和发布年份)视为项目知识。
根据文献[17]的设置,过滤掉长度为1 的会话和在数据集中出现次数少于3 次的项目。对于每个数据集,本文选择前90%的用户行为训练模型,剩下10%用来测试模型性能。两个数据集的统计信息如表2所示。
表2 数据集信息统计 Table 2 Information statistics of dataset
3.2.1 基线方法
本文对ARCK 方法与基线方法进行对比,以验证ARCK 方法的有效性。基线方法主要有:1)GRU4REC[9],通过堆叠多个GRU层,将用户序列编码到最终状态;2)STAMP[11],采用注意力机制代替之前工作中的RNN 编码器,以捕获用户的当前兴趣和一般兴趣;3)SR-GNN[17],将会话数据建模为图,并利用GGNN 来捕获会话内复杂的项目转换关系,但该方法未考虑跨会话信息和项目知识;4)FGNN[19],将会话序列构建为全局图,并使用图注意力网络来学习项目节点表示,但该方法仅基于会话信息进行推荐,没有考虑项目知识。
3.2.2 评价指标
本文使用SBR 评估中的两个指标来验证模型的性能。这两个指标分别是Hit@k和MRR@k,此处设定k=20。
Hit@k(top-k项目的命中率)是top-k排名列表中命中样本与测试集中所有样本的比例,如式(13)所示:
其中:N表示测试集中项目的个数;Number of Hits@k表示计算候选项目在排名列表中处于前k位的个数。Hit@k值越高,推荐性能越好。
MRR@k(按top-k项目计算的平均倒数排名)是正确推荐项目排名倒数的平均值,如式(14)所示:
MRR@k得分越高,推荐性能越好。
3.2.3 实验设置
为保证实验结果的可靠性,本文实验采用五次五折交叉验证法来评价ARCK 方法的性能。
在ARCK 方法的训练阶段,本文将知识感知注意力机制迭代的层数l设置为3,批量大小固定为256,初始学习率设 为0.001,L2 正则化系数λ在{10-5,10-4,10-3,10-2,10-1}中进行调优。实验使用Xavier[24]初始化所有参数,并使用Adam 优化器[25]来优化。为了公平起见,将所有模型的嵌入尺寸设置为100,基线方法除了嵌入维度以外均使用原始论文中默认的超参数设置。此外,实验所用操作系统为Windows10 64位,显卡为NVIDIA GTX1080-8G,内存为16 GB,实验代码通过Python3.6.5 由PyTorch1.6进行实现。本文实验显示模型在其最佳超参数设置下的平均结果。
本节将ARCK 方法与上文所提的基线方法进行对比,通过评估Hit@20 和MRR@20 得分来表示ARCK的整体性能。在KKBOX 和JDATA 数据集上不同方法的评价指标对比如表3 所示。其中,加粗数据表示基线方法中的最佳性能,带星号的加粗数据表示所有方法中的最佳性能,Improve.表示带星号的加粗数据与加粗数据的差值。
表3 不同会话推荐方法的评价指标对比 Table 3 Evaluation indicators comparison among different session recommendation methods
从表3 可以看出,ARCK 性能最佳,其原因在于ARCK 方法相比SR-GNN 进一步考虑了跨会话的信息,并对知识图谱中丰富的实体和关系信息进行建模,提升了会话推荐的性能。
FGNN 通过构建连接不同会话的广泛连接会话图来捕获跨会话信息,因此性能表现较佳。SR-GNN将会话序列转换为会话图,并使用GGNN 改进项目嵌入,其会话推荐结果相对传统的GRU4REC 和STAMP 较准确,但由于SR-GNN 仅基于当前会话建模用户偏好,因此性能表现不如FGNN 方法。传统的GRU4REC 和STAMP 在两个数据集上的性能都较差,这表明仅使用神经网络而不考虑会话中项目之间的转换关系,不足以建模用户偏好。
为了进一步验证将跨会话信息和项目知识整合到会话推荐的重要性,本节设计了消融实验以评估三个ARCK 变体方法的性能。ARCK-GCK是从ARCK 模型中去除跨会话知识图谱,即不考虑跨会话信息和项目知识,仅从会话图中学习项目嵌入。ARCK-GC是从ARCK 模型中去除跨会话图,即不考虑跨会话信息,仅通过会话图和知识图谱学习项目嵌入。ARCK-GK是从ARCK 模型中去除知识图谱,即不考虑项目侧信息,仅通过跨会话图学习项目嵌入。
跨会话知识图谱的消融实验结果如表4 所示。从表4 可以看出:原始ARCK 方法的性能优于三种变体方法,说明在ARCK 方法中,跨会话信息和项目知识对性能提升均起到积极作用,特别是在较小的数据集KKBOX上,ARCK 相对于ARCK-GCK有很大程度的性能提升,进一步验证了跨会话知识图谱的构建对于缓解数据稀疏性问题是很有必要。
表4 跨会话知识图谱的消融实验结果 Table 4 Ablation experimental results of the cross-session knowledge graph
ARCK-GCK的性能略优于最佳基线FGNN,表明在会话图上利用TransR 的方法学习项目初始嵌入,并利用知识感知的注意力机制学习项目嵌入,能够有效提升模型性能。
3.5.1 会话长度分析
为评估ARCK 方法处理不同会话长度的能力,根据文献[19]的设置,本文将KKBOX 和JDATA 中的会话划分为两组,分别为“短”会话和“长”会话。“短”表示每个会话的长度小于等于5,“长”表示每个会话的长度大于5。本文选择中间值5 是由于其为最接近所使用数据集中平均会话长度的整数。图2 和图3 所示为不同方法在两个数据集上的Hit@20 平均评估结果。
图2 在KKBOX 数据集上不同会话长度对方法性能的影响Fig.2 Influence of different session lengths for methods performance on KKBOX dataset
图3 在JDATA 数据集上不同会话长度对方法性能的影响Fig.3 Influence of different session lengths for different methods performance on JDATA dataset
从图2 和图3 可以看出,随着会话长度的增加,所有模型的性能都会随着噪声信号的引入而下降。其中STAMP 降幅最大,这表明仅将会话数据建模为时间序列,更容易受到长会话噪声的干扰。SR-GNN仅基于单独的会话建模用户的长期和短期兴趣,因此在长会话上性能会有所下降。由于FGNN 考虑了跨会话的信息,因此其在不同长度会话上的性能相较于SR-GNN 较优,但在长会话上性能略差。与此同时,随着会话长度的增加,ARCK 方法对于不同长度的会话均表现出稳定的性能。因此,ARCK 方法可以有效建模不同长度的会话。
3.5.2 超参数研究
损失函数中的L2 正则化系数λ是影响ARCK 模型推荐准确度的主要超参数。本文实验的L2 正则化系数λ取{10-5,10-4,10-3,10-2,10-1},分别计算MRR@20和Hit@20。在MRR@20 和Hit@20上,超参数λ对ARCK性能的影响分别如图4和图5所示。从图4和图5可以看出,ARCK 方法的MRR@20 和Hit@20 随着λ的增大而增大,但在KKBOX数据集上当超参数λ超过10-3时,在JDATA数据集上超过10-2时,MRR@20和Hit@20呈下降趋势。当超参数λ较小时,ARCK 方法会发生过拟合现象;当超参数λ较大时,方法的性能发生退化。因此,在10-3和10-2附近选择超参数λ是合适的,在不使模型退化的情况下防止过拟合现象的发生。
图4 在MRR@20 上超参数λ 对ARCK 性能的影响Fig.4 Influence of hyperparameter λ on ARCK performance in terms of MRR@20
图5 在Hit@20 上超参数λ 对ARCK 性能的影响Fig.5 Influence of hyperparameter λon ARCK performance in terms of Hit@20
本文提出基于跨会话知识图谱的图注意力网络推荐方法ARCK。通过构建跨会话知识图谱来全面捕获跨会话信息和项目知识,同时利用知识感知的注意力机制捕获复杂的项目转换模式。此外,采用注意力网络和门控循环单元网络建模用户的长短期兴趣。在KKBOX 和JDATA 两个真实数据集上的实验结果表明,该方法能有效地增强会话推荐的性能。下一步将尝试同时考虑用户间的社交关系和项目侧信息,构建异质知识图谱,并在异质知识图谱上学习细粒度的项目嵌入,以增强会话推荐性能。