基于图注意力网络的下一个购物篮推荐
2023-09-04潘春雨赵朋朋
潘春雨 赵朋朋
(苏州大学计算机科学与技术学院人工智能研究院 江苏 苏州 215006)
0 引 言
随着电子商务的迅猛发展,越来越多的公司建立网上购物平台方便用户购物,比如亚马逊、淘宝和京东商城等。这些购物平台有着品类繁多的商品供用户选择,然而种类多样的商品会使用户面临选择困难,从而影响用户购物体验。所以电子商务推荐的一项重要任务就是根据用户的历史购物信息,挖掘用户的购物行为模式进而推荐下一个购物篮,给用户更好的体验。将用户的购物历史记录表示为一系列购物篮,可以将下一个购物篮推荐形式化为序列预测问题。传统基于序列的推荐[1-2]是以单个物品为序列给出预测。不同于传统序列预测任务,下一个购物篮推荐是给定一系列的购物篮(物品集合),预测用户接下来将要购买的购物篮[3-5]。
用户历史购买的物品存在着某些联系,其中一种就是时序信息[1]。随着时间的推移,用户购买的物品会包含很多信息,反映着用户潜在的偏好,这些偏好也为将来的购买提供依据。比如,那些喜欢听乡村音乐的人往往对这种音乐风格的新歌也感兴趣;喜欢吃甜食的客人,也可能会偏爱糕点、甜品。在下一个购物篮推荐问题上,还存在着另一个显著的特点。用户每个购买的篮子内,有着一个或多个物品,它们在某些属性方面体现着共有的内在联系,同时也反映着用户的偏好。图1可以说明用户篮子中的物品存在一些联系。如图1所示,用户1的篮子内有手机、保护壳、平板电脑和牙刷,它们同在一个购物篮内,两两之间存在着联系,但是从物品的属性上看,如手机、保护壳、平板电脑这些都属于电子产品,它们之间联系较强,相较而言,牙刷与它们的联系就比较弱。同时牙刷在另外两个用户的购物篮内出现,并且同属生活用品,洗面奶、衣架、杯子以及牙膏通过牙刷这个物品维持强相关性。因此,充分利用购物篮内物品的相关性信息就显得更加重要。
图1 用户篮子物品关系
近年来,图神经网络(Graph Neural Network,GNN)[6-8]因其广泛的适用性和优秀的性能受到各个领域欢迎。图神经网络自然地集成节点信息和拓扑结构,在学习图数据方面具有强大的功能。其中图注意力网络(Graph ATtention Network,GAT)[9]是图神经网络的一种,该算法有效地引入注意力机制,在网络迭代更新节点特征时分配不同权重到邻居节点进而有选择地聚合邻居信息。后来图门控注意力网络(Gated Attention Networks,GaAN)[10]创新性引入门控单元和多头注意力网络提升算法精度。异构图神经网络[11](Heterogeneous Graph Neural Network,HAN)进一步引入语义级别的注意,以获得不同元路径的重要性。
目前在下一个购物篮推荐任务上已经有一些有效工作。一种方法是只根据用户最近的一个篮子信息来预测下一个购物篮[3-4]。它们侧重的是用户的短期偏好,没有从长远角度考虑用户的兴趣。因此,研究者们着眼于这一研究思路,用基于循环神经网络(Recurrent Neural Network,RNN)的方法[12]捕捉序列长期依赖。然而,这些方法仅基于它们与过去购物篮的对应关系而独立地给出下一个购物篮推荐,却忽略了推荐的物品之间的集合关联。基于这个问题,Le等[5]采集所有购物篮内物品成对出现的频率建立一个物品相关性矩阵。他们认为篮子是一个包含相关物品的集合,而不是关乎独立的物品集合。但是他们忽视了不同篮子内物品的联系,不能就某一物品捕获与其相关联的路径上邻居物品的依赖关系。如图1所示,用户2篮子内的洗面奶与牙刷有联系,用户3的篮子内牙刷和牙膏有联系,直觉上洗面奶同牙膏就有了联系。Le等[5]的方法因为只考虑了篮子内的物品联系,所以该方法就不能捕捉洗面奶和牙膏之间的关系。Hu等[13]通过调整编码器RNN-解码器RNN以对短期偏好和用户的重复行为进行建模。后来,Peng等[14]提出一种结合混合用户偏好捕获购物篮转换模式和篮子内部物品转换模式的方法。本文提出的基于图神经网络的下一个购物篮推荐能够通过多层GAT建模复杂的物品-物品的关系,并且在GAT层聚合邻居节点时设置一个聚合节点的阈值,减少图中其他节点对模型的噪声。为了捕获用户的短期行为模式,本文设计一个大小固定的滑动窗口,使窗口滑动到特定时刻融合用户数个先前的购物篮信息。
本文的贡献主要有以下几点:
(1) 发现现有购物篮推荐算法还未充分考虑物品关系的建模问题,提出在构建购物篮物品图的基础上使用图注意力网络对图物品节点的非结构化的信息推理,捕获网络中物品节点存在的依赖关系,获得信息更加丰富的物品嵌入表示。
(2) 在对用户序列进行信息编码时,采用一个大小固定的滑动窗口,沿着时间轴动态融合用户最近几个交互(购物篮)的兴趣特征,捕获用户短期的购物偏好,提高了推荐效果。
(3) 在两个公开数据集上进行了充分的实验,验证了所提出的推荐方法的有效性。
1 相关工作
下一个购物篮推荐是一个典型的序列推荐任务。这部分将简要地从如下两个方面回顾与之相关的工作:序列推荐和图神经网络。
1.1 序列推荐
序列推荐可以分为两类:基于马尔可夫链(Markov Chain,MC)和基于循环神经网络(RNNs)。
1.1.1基于马尔可夫链的方法
Rendle等[3]提出经典的下一个购物篮推荐方法(Factorizing Personalized Markov Chains,FPMC),该方法基于因子机和马尔可夫链,在任意一对连续的篮子之间建立个性化的物品-物品过渡矩阵模型,并利用计算得到的条件概率生成最终的推荐列表。Wang等[4]提出了一个相似的马尔可夫链模型。不同于使用张量分解,他们建议使用池化来聚合最近一个篮子中的物品作为最近一个篮子的表示,并根据聚合表示来预测下一个购物篮。Ying等[15]增强了引用[4]中的结构,并且用注意力机制代替池化操作。注意机制可以专注于最相关的物品,从而提高性能。同样,他们将历史物品分为两组,最近一个篮子中的商品代表短期组合,而它之前一个篮子中的商品代表长期组合。在这两个集合上都应用了注意力分散机制,以生成混合用户表示。该预测基于混合用户表示和物品嵌入。
1.1.2基于循环神经网络的方法
基于MC方法的假设是下一个购物篮主要由最近(或者最近几个)篮子决定。由于这个假设,基于MC的方法不能捕获来自长时间的高阶依赖关系。为了捕获整个历史篮子信息,学者们转向使用RNNs建模用户的这个历史序列。Yu等[12]编码每一个篮子,使用RNN单元学习序列表示,不仅学习了用户的动态表示,而且还从商品购买历史中建模全局序列特征。Le等[5]观察到篮子内部的物品之间有个一定的联系,于是将所有篮子内物品成对出现的频率用相关性矩阵表示,再将该矩阵与用户购物篮的二元向量表示放入相关性敏感的购物篮编码器中得到篮子表示。Hu等[13]提出一个集合到集合(Sets2Sets)的模型,使用注意力机制来聚焦最相关的篮子。Peng等[14]引入用户全局偏好、存在物品中和篮子的转换模式提高模型的性能。
1.2 图注意力网络
随着图神经网络的快速发展,许多学者将GNN[7,16]引入推荐算法捕捉用户-物品、物品-物品的复杂交互关系。此外,注意力机制在很多领域都显示出了它的有效性,比如图像分类[17]、视频标题[18]和机器翻译[19]等。注意力机制使模型将重点放在具有不同权重目标的最重要的部分上,同样也被应用到图神经网络。图注意力网络[9](GAT)寻求一种聚合函数来融合图中的邻居节点、随机游走和候选模型以学习新的表示形式。关键区别在于图注意力网络采用注意力机制,该机制将更大的权重分配给更重要的节点、行走或模型。为了学习不同子空间中的注意力权重,GAT使用多头注意力。图门控注意力网络[10](GaAN)还利用多头注意力来更新节点的隐藏状态。但是,GaAN并没有为每个头部分配相等的权重,而是引入了一种自我注意机制,该机制会为每个头部计算不同的权重。后来,异构图神经网络[11](HAN)进一步引入了语义级别的注意,以获得不同元路径的重要性。在本文工作中,考虑到添加其他信息的复杂性,将专注于物品节点级别的注意力。
2 准备工作
本节将问题形式化,并介绍物品关系图的建立。表1中为主要符号定义。
表1 符号定义
2.1 问题描述
在模型输出方面,对于测试序列B={B1,B2,…,Bt},本文的目标是预测出下一个购物篮Bt+1,把它作为推荐。因为Bt+1的真实大小是未知的,所以近似为给定常数K作为篮子推荐的大小。
2.2 图的构建
为了更好地表示Bi,本文构建了篮子内物品的同源关系图,用它在对Bi内物品使用图注意力网络进行聚合表示的时候,能够自动对物品邻居节点信息进行有选择的融合。通过这样的操作,篮子的表示能够更加体现物品的相关性。具体地说,在训练集中所有篮子进行物品关系处理时,当篮子内出现大于或等于2种不同的物品,就对它们两两配对,如物品a、b(a≠b)都在Bi中,那么就在G中添加a、b节点,并且在a、b之间加边连接。
3 整体框架
本节介绍基于图注意力网络的下一个购物篮推荐方法,使用GAT的方法获取篮子表示,并在循环神经网络中应用滑动窗口捕捉特定时刻的短期兴趣,图2是本文模型的框架。
图2 框架图
3.1 模 型
本文利用一个大小固定的滑动窗口捕获用户的短期购物篮偏好,并且使用GAT获得含有丰富物品关系的购物篮表示,经过RNN单元处理后再结合用户短期以及全局购物篮偏好得到预测。
3.1.1篮子编码和用户篮子偏好
已有文献[13,20]表明用户的交互很大程度会受他们的总体偏好影响。因此,为用户建模全局偏好,使用每个用户与之交互的物品的频率来代表用户的全局偏好。给定用户的历史篮子,用户全局偏好表示为向量g=[g1,g2,…,gn]∈Rn,其中gi表示该用户与物品在其所有的交互记录中总的交互次数(购买次数),其计算式为:
(1)
基本假设是,如果用户与某个物品有很多交互,则该用户对该物品具有很高的偏好。另外,基于这一假设,对用户的篮子序列进行同样的操作,得到对应的篮子频率序列P=[p,p2,…,pt]。
3.1.2窗口化偏好
本文,考虑到用户的短期偏好一定程度上会受相近的一个或多个篮子影响,设计了一个大小为l的滑动窗口(如对应图2中的大小为3),对长度为t的P上滑动,每个移动一个时间单位,聚合一次物品频率窗口,再喂入一个全连接层得到该用户的短期偏好qi∈Rd,在i时刻表示为:
(2)
式中:Φ∈Rn×d可学习的权重矩阵,λ是一个预先设置的超参,表示对过往信息的衰减。如果式(2)中l>i,则l=i。
3.1.3图神经网络聚合物品和建模篮子序列
嵌入表示能够将物品嵌入两个连续的低维空间,增强表示能力。为此,学习一个物品嵌入矩阵E∈Rn×d,其中每一行都是一个物品的嵌入表示。GAT层的输入是物品节点特征的集合,就需要篮子物品的嵌入表示,E′={e1,e2,…,en},Φ∈Rn×d,en∈Rd,N是节点的数量。采用GAT[9]的聚合方式,节点更新如下:
(3)
式中:‖表示对向量进行横向拼接;X是GAT的多头数目;σ是sigmoid函数;s表示网络GAT网络层数;Ni是节点i的邻居节点;βx(·)是在GAT第x头中节点的注意力函数,Wx∈Rd×d,H∈R(X×d)×d是网络可学习的参数β(·)具体表示为:
(4)
式中:A∈R2d是权重参数,T表示转置。最后得到新的物品节点特征:
(5)
Es是经过GAT层得到的物品节点特征。为了实验的效率以及防止显卡内存溢出,使用批次化的输入方式,把每个批次所有用户篮子内的物品在GAT多层网络中要聚合的所有相关物品都放入E′中。因为与物品节点相关联的节点很多,实验中本文有选择地为每层GAT网络设置物品节点在聚合相邻节点的个数。
为了获得Bi更具物品相关性的表示,模型从Es选出与Bi对应节点特征,然后放入平均池化层:
(6)
最新的一些工作[5,12-13]使用RNNs来隐式建模序列。这些方法中,把篮子的编码表示以每一个时间步为单位循环地喂入一个RNN单元来生成下一个购物篮的隐式表示。同样,遵循这个想法,训练篮子序列的转换模式。给定ot,下一个购物篮的隐式表示是:
(7)
式中:GRU[21]是门控循环单元,RNNs的一种,能够学习序列的长短期特性。
3.1.4篮子预测
(8)
式中:Ω∈R2d×d是一个可学习的参数,s∈Rd是一个向量,[a,b]表示把向量a和b水平拼接。
(9)
式中:α表示篮子长短期属性的重要程度,如下用了门控机制:
(10)
式中:σ是sigmoid函数,Ψ、Γ是可学习的权重矩阵。
3.2 学习策略
在每一个训练序列Bu中,本文移除它的最后一个篮子Bt得到B′={B1,B2,…,Bt-1}。目标是让预测得分y与真实的下一个购物篮Bt对齐。学习阶段,采用贝叶斯个性化排序[22](BPR)。
(11)
(12)
4 实验与结果分析
4.1 实验设置
1) 数据集。为了验证本文提出模型的性能,本文在TaFeng和JingDong两个数据集上进行实验对比。TaFeng数据集包含4个月(2000年11月至2001年2月)的TaFeng超市购物交易。JingDong数据集包含3个月(2016年2月1日至2016年4月15日)的用户行为数据集。这些数据集包含用户在每个购物篮中购买的带有时间戳的商品交易记录。
2) 预处理。为了满足相关每个用户和物品建模的足够信息,分别对数据集Ta-Feng、JingDong进行预处理,分别确保每个用户至少交互10个(Ta-Feng)、15个(JingDong)物品,并且每个物品至少被10位(Ta-Feng)、5位(JingDong)用户交互。此外,还过滤掉那些篮子序列数小于2的用户。再设置训练、验证、测试数据,将序列按时间顺序分为三个不重叠的时期(ttrain,tval,ttest),即Ta-Feng为(3,0.5,0.5)个月,(1.5,0.5,0.5)个月的交易时间为JingDong。注意,如果用户记录超过30个篮子,超过的前缀部分篮子会被截断。两个数据集处理后的分析表见表2。
表2 数据集分析
3) 评估方法。为了评估针对下一个购物篮推荐问题的各种方法性能,本文采用广泛使用的指标F1@K、NDCGl@K、MAP@K来评估不同的方法。F1@K是计算精确率和召回率的调和平均值,而NDCG@K是一种基于排名的度量,它考虑了列表中元素的顺序。MAP@K是平均准确率AP:
(13)
式中:Tu是真实的结果,pui表示i物品在推荐排列表中的位置,puj (14) 4) 学习细节。模型使用的是Pytorch 1.4.0。在最小化式(12)的log损失目标函数下,本文的模型在25个批次大小周期为32后得到结果。在两个数据集上使用学习率为1e-3的Adam优化器。训练时GRU层使用0.4概率的神经元丢弃。窗口化偏好层的滑动窗口大小设为3。本文实验发现下面的参数在验证集上能够达到最好的性能,然后使用它们在测试集上做实验:在TaFeng数据集上,衰减参数λ为0.9,GAT层使用两层节点扇出数分别为15、5,多头数为2的网络;JingDong数据集上的衰减值λ是0.6,GAT层使用两层节点扇出数分别为5、5,多头数目为2的网络。 将本文提出的模型标记为SWGAT(Sliding Window+GAT)。实验选取了目前比较流行的几种算法进行对比: (1) POP:该方法先从训练数据的所有篮子中计算出所有用户最频繁的物品,然后把这些物品推荐给所有用户的下一个购物篮。 (2) POEP[13]:它将在给定用户的过去购物篮中出现最频繁的物品作为下一个购物篮的预测。 (3) FPMC[3]:该方法通过矩阵分解对用户偏好进行建模,并通过一阶马尔可夫链同时对序列信息进行建模,然后通过线性方式将其组合以进行下一篮子推荐。 (4) DREAM[12]:基于物品嵌入和RNN的深度模型,学习用户的动态表示以及购物篮物品的全局顺序特性,最后推荐下一个购物篮。用户的动态表示可以显示出用户在不同时间的爱好;全局顺序特性反映了用户的所有购物篮随时间的相互作用。 (5) Beacon[5]:该方法通过捕获训练数据所有篮子中物品成对出现的频率构建一个物品与物品的相关性矩阵,将它融合在篮子编码阶段,通过LSTM的方法捕获序列信息,最后给出推荐。 (6) M2pht[14]:该方法针对下一个购物篮推荐问题设计了一种具有用户总体偏好和利用存在物品中和篮子的转换模式的新混合模型。 此外,为了验证本文提出的滑动窗口与图注意力网络结合(SW+GAT)的有效性,分别做了以下实验: (1) No-SW:删除SWGAT的滑动窗口(SW)模块,其他实验相关参数与SW-GAT保持一致。 (2) No-GAT:删除SWGAT的图神经网络(GAT)模块,其他实验相关参数与SW-GAT保持一致。 表3按顺序展示了TaFeng和JingDong数据集的各方法的实验结果。 表3 在下一篮子推荐任务中不同方法的性能比较(%) 首先,在所有基准算法中,因为POP的推荐没有提供个性化的推荐,也没有捕捉购物篮的序列性,给所有用户的推荐都是一致的,所以它的性能指标表现最差。相比POP,POEP记录每个用户独有的兴趣点,为他们分别推荐独属的物品,在各项指标都有明显的提升。经典模型FPMC的推荐效果超过了POP,这是因为它把临近的篮子信息融合到了模型,捕捉了用户的短期序列性。对比POEP,FPMC在TaFeng的数据上的表现略低,可能是由于TaFeng是零售数据集,用户购买商品的序列行为对上一次购买的依赖不强。 其次,基于RNN的篮子推荐方法DREAM能够捕获用户的动态表示以及购物篮物品的全局顺序特性。可以观察到其表现虽强于POP,但是比POEP和FPMC差,Beacon的实验结果也较差。这类基于RNNs的模型,因其缺乏对用户的个性化推荐和短期兴趣建模,效果不如POEP和FPMC。从实验数据上看, M2pht的各项性能提升显著。这与该模型利用用户总体偏好、挖掘篮子物品之间的转换模式以及篮子之间的过渡方式有着密切关系。 最后,本文提出的模型在JingDong数据集上的推荐性能是所有基准模型最优的,NDCG@5和NDCG@10分别比基准模型最好的提高0.7%和1.2%,其他4项指标同样也有不错的提升;在TaFeng数据集上,MAP方面的效果略低于基准模型,可能是模型捕捉篮子物品关系没有足够充分,未获得充分的篮子编码信息。为了验证滑动窗口、图注意力网络(SW、GAT)对模型的贡献,本文设计了No-SW、No-GAT两部分实验。从表3中可以观察到,在没有SW、GAT时,模型推荐的效果相比SW-GAT有明显下降,说明本文将这两部分结合可以帮助模型推荐效果提升。综合以上实验数据可以说明本文模型SW-GAT在下一个购物篮推荐方面的有效性。 为了验证滑动窗口对本文模型性能的影响,分别在两个数据上针对F1@5、F@10、NDCG@5和NDCG@10指标进行实验,窗口的大小分别是[1,2,3,4]。 结果如图3所示。实验结果表明,在各项指标随着窗口大小从1增长到3时,模型性能得到提高。这说明,通过滑动窗口融合窗口内用户的短期物品购买频率信息,能够更好地学习出用户的购买习惯,提高推荐准确性。当窗口大小达到4时,两个数据集上不同指标的性能都在下降,这说明一味增大窗口的大小,可能给模型带来更多的噪声,影响模型准确性。 图3 滑动窗口大小的影响 为了验证图注意力网络不同层在节点聚合方面对模型的影响,分别在两个数据集上用单层GAT和双层GAT对聚合邻居节点的个数进行实验。实验设置第一层的聚合节点的个数分别是[5, 10, 15, 20],在双层GAT中,为第二层的聚合节点个数都设置为5。结果如图4所示。在TaFeng数据集上,可以观察到随着聚合节点个数从5增加到15,在F1@5、NDCG@5以及MAP@5上,模型的性能有所提高;当聚合节点个数达到20的时候,除了F1@5在双层GAT上结果略微增强,其他指标都下降明显。在JingDong数据集上,发现聚合节点的个数是5的时候,模型的综合表现比较优秀。观察表2,可以得知JingDong的物品关系图平均节点度数为29.59,可能是在聚合过多节点时,会引入过多的噪声信息,削弱模型。而总体上,双层GAT的性能优于单层的结果,所以最后在TaFeng、JingDong上都采用双层GAT,每层节点的聚合个数分别是[15, 5]、[5, 5]。 图4 聚合邻居节点个数的影响 本文提出用图注意力网络建模物品联系以及滑动窗口捕捉用户短期偏好方法,并应用于下一个购物篮推荐。特别地,将用户篮子内物品成对的关系融入图中,使用GAT网络学习购物篮物品的相关性。然后,设计一个滑动窗口,用它在用户的历史篮子内物品的购买偏好上滑动,捕捉用户的短期偏好。在两个公开数据集上的实验结果表明本文模型的有效性。未来的工作中,将考虑将在构建物品的关系图时融入更多的关系,如物品的分类、用户是否交互等,构造一个异构图,丰富购物篮物品的联系,让网络训练更加精确。4.2 对比方法
4.3 滑动窗口大小分析
4.4 图神经网络层分析
5 结 语