《Global Context Enhanced Graph Neural Networks for Session-based Recommendation》
传统的推荐方法(如协同过滤)通常依赖于 user profile
的可用性、以及长期历史交互。在最近的许多现实世界场景中,当这类信息不可用(如,未登录用户)或可用信息有限(如,短期历史交互)时,这些方法表现不佳,如 YouTube
和 Tiktok
等移动流媒体。因此,session-based
推荐最近引起了人们的广泛关注,它根据给定的匿名序列按时间顺序来预测 next interested item
。
大多数关于 session-based
推荐的早期研究分为两类:similarity-based
和 chain-based
。
前者严重依赖于当前 session
中 item
的共现信息(co-occurrence information
),而忽略了序列行为模式(sequential behavior pattern
)。
后者推断所有 item
的所有可能的用户选择序列,对于 item
数量很大的真实世界应用,这可能会遇到棘手的计算问题。
最近,人们针对该任务提出了许多 deep learning based
方法,这些方法利用 pair-wise
的 item-transition
信息来建模给定 session
的用户偏好。这些方法取得了令人振奋的成果。但是仍然面临以下问题。
首先,一些方法通过使用 RNN
(如 GRU4Rec
、NARM
)和 memory network
(如,STAMP
)按照时间顺序依次抽取 session
的 pairwise item-transition information
,从而推断匿名用户的偏好。然而,一个 session
可能包含用户的多个选择甚至噪音,因此它们可能不足以生成所有正确的依赖关系,这使得我们无法在 embedding
中建模 item-transition pattern
的复杂的固有顺序。
其次,还有一些方法基于具有自注意力机制的 GNN
(如 SR-GNN
)。它们通过计算相对重要性来学习整个 session
的 representation
,其中相对重要性基于 session
在每个 item
和 last item
之间的 pairwise item-transition
来获得,因此性能在很大程度上取决于 last item
与当前 session
的用户偏好之间的相关性。
此外,几乎所有先前的研究都仅基于当前的 session
来建模用户偏好,而完全忽略了其它 session
中有用的 item-transition pattern
。据我们所知,CSRM
是唯一一个结合了最近 session
中的协同信息,从而以端到端方式丰富当前 session representation
的工作。CSRM
将 session
视为最小粒度,并测量当前 session
和最近 session
之间的相似性从而抽取协同信息。
然而,不幸的是,它可能会将其它 session
的相关信息和不相关信息都编码到当前 session embedding
中,这甚至可能会降低性能。我们以下图中的例子来说明这一点。不失一般性,假设当前 session
为 Session 2
,session-based
推荐旨在推荐与 Iphone
有关的配件。从图中我们观察到:
利用其它 session
的 item-transition
可能有助于建模当前 session
的用户偏好。例如,我们可以从 Session 1
和 Session 3
中找到 Session 2
的 relevant pairwise item-transition information
,例如一个新的 pairwise item-transition
:[Iphone, Phone Case]
。
当在某个 session
中编码的部分 item-transition
信息与当前 session
无关时,直接利用整个那个 session
的 item-transition
信息可能会引入噪声。例如,如果 Session 3
是最近的 session
之一,CSRM
也可以考虑利用 Session 3
来帮助建模 Session 2
的用户偏好。并且它在学习 Session 2
的 embedding
时引入不相关的 item
(即,衣服和裤子),因为它将 Session 3
视为一个整体,而不区分相关的 item-transision
和不相关的 item-transision
。而如何实现这种区分,这是具有挑战性的。
为此,论文 《Global Context Enhanced Graph Neural Networks for Session-based Recommendation》
提出了一种新颖的方法,以更精细的方式利用所有 session
中的 item-transition
,以便更好地推断当前 session
的用户偏好从而进行 session-based
推荐。该方法称作 Global Context Enhanced Graph Neural Network: GCE-GNN
。在 GCE-GNN
中,作者提出分别从 session graph
和 global graph
中学习两个 level
的 item embedding
:
session graph
:通过在当前 session
中建模 pairwise item-transition
来学习 session-level
的 item embedding
。
global graph
:通过在所有 session
(包括当前 session
)中建模 pairwise item-transition
来学习 global-level
的 item embedding
。
在 GCE-GNN
中:
作者提出了一种新颖的 global-level
的 item representation learning layer
,它采用 session-aware attention
机制递归地融合 global graph
上每个节点的 neighbor embedding
。
作者还设计了一个 session-level
的 item representation learning layer
,它在 session graph
上使用 GNN
来学习当前 session
中的 session-level embedding
。
此外,GCE-GNN
使用 soft attention
机制聚合两个 level
学到的 item embedding
。
这项工作的主要贡献如下:
据作者所知,这是第一个利用所有 session
的 global-level item-transition
来学习 global-level
上下文信息的工作,用于 session-based
推荐。
作者提出了一个统一模型,该模型通过有效利用来自两个 level
的图模型(即,session graph
和 global graph
)的 pair-wise item-transition information
来提高当前 session
的推荐性能。
作者还提出了一种 position-aware attention
,将 reversed position
信息融合到 item embedding
中,这在 session-based
推荐中显示了优异的性能。
作者对三个真实世界的数据集进行了广泛的实验,结果表明 GCE-GNN
优于包括 SOTA
方法在内的九个 baseline
方法。
相关工作:
基于马尔科夫链的 session-based
推荐:有几种传统方法可以用于session-based
推荐,尽管它们最初不是为 session-based
推荐而设计的。例如,基于马尔科夫链的方法将当前 session
映射到马尔科夫链中,然后根据 previous action
来推断用户的 next action
。
《Factorizing personalized markov chains for next-basket recommendation》
提出 FPMC
,通过结合了矩阵分解和一阶马尔科夫链,从而捕获序列模式(sequential pattern
)和长期用户偏好来进行推荐。它可以通过忽略用户latent representation
来适配 session-based
推荐。
然而,基于马尔科夫链的方法通常侧重于建模两个相邻 item
之间的序列转移(sequential transition
)。相比之下,我们提出的模型将序列的 item-transition
转换为图结构数据,从而捕获 session-based
推荐的 item-transition pattern
的固有顺序(inherent order
)。
基于马尔科夫链的方法仅捕获一阶转移关系,无法捕获高阶转移关系。
基于深度学习的 session-based
推荐:近年来,建模序列数据的基于神经网络的方法已被用于 session-based
推荐。
《Session-based recommendations with recurrent neural networks》
提出了一个叫做 GRU4REC
的工作,将 RNN
网络应用于 session-based
推荐。GRU4REC
采用多层 GRU
来建模 item
交互序列。
《Improved recurrent neural networks for session-based recommendations》
通过引入数据增强来扩展了 GRU4REC
。
《Neural attentive session-based recommendation》
提出了 NARM
,它将注意力机制结合到堆叠的 GRU encoder
中,从而为 session-based
推荐捕获更具表达性的 item-transition information
。
《STAMP: short-term attention/memory priority model for session-based recommendation》
提出了一种基于注意力的短期记忆网络(short-term memory network
)(叫做 STAMP
),从而在不使用 RNN
的情况下捕获用户当前的兴趣。
NARM
和 STAMP
都通过使用注意力机制来强调last click
的重要性。
受到 Transformer
的启发,SASRec
(《Self-attentive sequential recommendation》
)堆叠多个层从而捕获 item
之间的相关性。
ISLF
(《ISLF: Interest Shift and Latent Factors Combination Model for Session-based Recommendation》
) 考虑到用户的兴趣漂移(interest shift
),并采用变分自编码器 VAE
和 RNN
来捕获用户的序列行为特征从而用于 session-based
推荐。
MCPRN
(《Modeling Multi-Purpose Sessions for Next-Item Recommendations via Mixture-Channel Purpose Routing Networks》
)提出通过使用混合通道模型来建模给定会话的多意图(multi-purpose
)从而用于 session-based
推荐。
然而,与基于马尔科夫链的方法类似,基于 RNN
的方法侧重于建模相邻 item
的序列转移 ,从而通过给定序列的时间顺序来推断用户偏好,因此无法建模复杂的 item-transition pattern
(如,非相邻 item
之间的转移)。
最近,一些方法在从当前 session
构建的图上使用 GNN-based
模型来学习 item embedding
用于 session-based
推荐。
《Session-based recommendation with graph neural networks》
提出一个门控 GNN
模型(称作 SR-GNN
)来学习 session graph
上的 item embedding
,然后通过将每个学到的 item embedding
与注意力结合从而获得一个有表达性的 session embedding
。这个注意力是根据每个 item
与 the last item
之间的相关性来计算的。
随着 SR-GNN
的成功,人们也提出了一些变体从而用于 session-based
推荐,如 GC-SAN
(《Graph Contextualized Self-Attention Network for Session-based Recommendation》
).
《Rethinking the Item Order in Session-based Recommendation with Graph Neural Networks》
提出 FGNN
,通过聚合带有多头注意力的邻居的 embedding
从而学习每个 item representation
,并通过反复地将每个学到的 embedding
和每个 time
相关性(time
与 session
之间的相关性)相结合从而生成 final session representation
。
然而,所有这些方法都只对当前 session
上的 item-transition
信息进行建模。相比之下,我们提出的模型在所有 session
中学习 item-transition
信息,从而增强对当前 session
的学习。
基于协同过滤的 session-based
推荐:尽管基于深度学习的方法取得了显著的性能,但是基于协同过滤的方法仍然可以提供有竞争力的结果。
Item-KNN
(《Item-based collaborative filtering recommendation algorithms》
)可以通过推荐与当前 session
的 last item
最相似的 item
来扩展,从而用于 session-based
推荐。
KNNRNN
(《When recurrent neural networks meet the neighborhood for session-based recommendation》
)利用 GRU4REC
和基于共现的 KNN
模型来提取序列模式(sequential pattern
)从而用于 session-based
推荐。
最近,《A Collaborative Session-based Recommendation Approach with Parallel Memory Modules》
提出了一种名为 CSRM
的端到端神经网络,该模型实现了 SOTA
性能。
它首先在 item-transition
上利用 NARM
来编码每个 session
,然后通过探索最近的 session
来丰富当前的 session representation
,最后利用融合门控机制来学习不同特征源的组合。
但是,在为当前 session
集成来自其它 session
的 embedding
时,它可能会受到噪音的影响。相比之下,我们提出的方法考虑了 item-level
的协同信息:我们使用其它 session
中的 item embedding
来丰富当前 session
的 item embedding
,然后将它们集成到 session representation
中从而用于 session-based
推荐的。
令 item
的集合。每个匿名 session
item
)组成,其中 session
item
,session
给定一个 session
session-based
推荐的问题是:从 session
next item
(即,第 item
)的 top N
个候选 item
,
对于每个 item
initial item embedding
。
这里我们提出两种不同的图模型,从而为 item representation learning
在所有可用的 session
中捕获不同 level
的 item transition
信息。
session-based graph
旨在通过对当前 session
中 pair-wise
的相邻 item
的序列模式建模,从而学习 session-level item embedding
。
受到 SR-GNN
的启发,每个 session
序列都会被转换为 session graph
,用于通过 GNN
来学习当前 session
中 item
的 embedding
。给定 session
session graph
,其中 item
的集合,item
session-level
的item-transition pattern
。
通过遵循FGNN
的工作,我们为每个 item
添加了一个自循环,如下图所示。
与 SR-GNN
和 FGNN
不同,我们的 session graph
根据 item
item
transition
)。
item
指向自身的转移。
由于考虑了边的方向信息,因此这里的
session graph
更精细,表达能力更强。
和专注于建模整个 session
序列模式的、传统的基于深度学习的方法(如,NARM
)相比,session graph
可以有效地捕获 session
的复杂的 graph pattern
从而学习 session-level item embedding
。
然而,我们还旨在从其它 session
中捕获 item-transition
信息从而学习 item representation
,这被称作 global-level
的 item transition
信息。
Global-level Item Transition Modeling
:这里,我们通过集成在所有 session
的所有 pairwise item transition
,从而考虑 global-level
的 item transition
用于 global-level
的 item representation learning
。
因此,我们提出了一种新的 global graph model
来学习global-level item embedding
。这个模型打破了 session
独立性的假设,并基于所有 session
(包括当前 session
)的 pairwise item transition
来链接所有的 item pair
。
接下来,我们首先提出一个用于建模 global-level item transition
的概念(即,Neighbor Set
),然后给出全局图的定义。
session
item
item
,其中每个元素定义为:
其物理意义为:为
找到位于其它 session
的、在那个session
内距离在以内的 item
。
其中:
item
session
item
之间的 item-transition
范围。
注意,超参数 session
中对 short-range
的 item transition
进行建模,因为如果超过了范围 global-level
的item transition
信息是无益的(甚至是噪音,例如,不相关的依赖)。
根据定义,对于每个 item
global-level item transition
定义为:global-level
的 item transition
信息的方向。
Global Graph
:global graph
旨在捕获 global-level
的 item transition
信息,该信息将用于学习所有 session
中的 item embedding
。具体而言,global graph
是基于所有 session
中item
的
不失一般性,global graph
定义如下:定义 global graph
,其中:
item
对应的 graph node
集合。
session
中的一对 pairwise item
。
下图展示了构建 global graph
(
此外,对于每个节点 session
中出现的频次作为它的权重。出于效率的考虑,我们仅保留 item
top-N
边。
注意:图 item
global graph
的拓扑结构。
注意:item
在 layer
embedding
空间,即 item embeddign
的维度。其中初始化的 embeddign
为 one-hot
的 embedding
,并通过使用可训练的参数矩阵
注意,应用在
Global Graph
上的GNN
模型有多层。此外,这里的也可以结合 item
的特征。
我们提出了一种新颖的 Global Context Enhanced Graph Neural Networks for Session-based Recommendation: GCE-GNN
。GCE-GNN
旨在同时利用 session-level
和 global-level
的 pairwise item transition
来建模当前 session
的用户偏好从而进行推荐。
下图展示了 GCE-GNN
的架构,它包括四个主要组件:
global-level
的 item representation learning layer
:它通过使用 session-aware attention
机制来基于 global graph
neighbor embedding
,从而学习所有 session
的 global-level item embedding
。
session-level
的 item representation learning layer
:它在 session graph
GNN
模型来学习当前 session
中的 session-level item embedding
。
session representation learning layer
:它通过聚合 session-level
和 global-level
的、学到的 item representation
,从而建模用户在当前 session
的用户偏好。
prediction layer
:它输出候选 item
的预测概率从而进行推荐。
接下来,我们将详细介绍这四个组件。
接下来我们将介绍如何在 global graph
上传播特征从而对来自其它 session
的 item-transition
信息进行编码从而帮助推荐。
我们的 layer
是基于 GCN
的架构来构建的,我们利用 GAT
的思想根据每个连接的重要性来生成注意力权重。这里,我们首先描述一下单个 layer
,它由两个组件构成:information propagation
、information aggregation
。然后我们将展示如何将单个 layer
推广到多个 layer
。
Information Propagation
:一个 item
可能涉及多个 session
,从这些 session
中我们可以获得有用的 item-transition
信息来有效地帮助当前session
的预测。
为了获得 item
item
都与当前 session
的用户偏好相关,因此我们考虑利用 session-aware attention
来区分 item
的重要性。因此,item
都根据 session-aware attention score
来线性组合:
如前所述,图
上 item
的邻域(即 )的定义与 相同。
其中:item
越接近当前 session
的偏好,这个 item
对推荐而言就越重要。因此,我们实现
其中:
session
的特征,它可以通过当前 session
中 item representation
的均值得到:
构建
global graph
时,是基于 来遍历的,因此 global graph
中不知道每个节点来自于哪个session
。而这里我们必须知道global graph
中每个节点对应的当前session
从而计算。 方法是:对于每个
,我们对它出现过的每个 session
计算一个从而得到 session-aware
的global-level item representation
。假设节点在 个 session
中出现过,则它得到个(而不是一个) global-level item representation
。
global graph
中的边
这里融合了两种相关性:
一种是
global graph
自身的边的权重,它刻画当前节点 和邻居节点 之间的物理关系。 另一种是通过模型学到的相关性
,它刻画当前 session
和邻居节点之间的语义关系。
我们选择 LeakyRelu
作为激活函数,
与均值池化不同,我们的方法使得信息的传播依赖于 affinity
),这意味着匹配当前 session
偏好的邻居将得到更多的重视。
然后我们通过softmax
函数对
因此,最终的注意力分数能够建议哪些邻居节点应该受到更多的关注。
Information Aggregation
:最后一步是聚合 item representation
neighborhood representation
agg
如下:
其中我们选择 relu
作为激活函数,
通过单个 aggregator layer
,item
的 representation
依赖于自身及其直接邻域。我们可以通过将 aggregator
从单层扩展到多层从而探索高阶邻域,这允许将与当前 session
相关的更多信息融合到当前 representation
中。例如,第 step
中的 item representation
为:
其中:item
repersentation
,它是从前一个 information propagation step
生成的。propagation
迭代中设置为
通过这种方式,一个 item
的 representation
是它的初始 representation
及其 session
的 representation
中融合更有效的消息。
session graph
包含当前 session
中的 pairwise item-transition
。接下来我们介绍如何学习 session-level
的 item embedding
。
由于 session graph
中 item
的邻居对该 item
具有不同的重要性,我们利用注意力机制来学习不同节点之间的权重。注意力系数可以通过逐元素乘积和非线性变换来计算:
其中:
LeakyReLU
作为激活函数。
这里使用的双线性乘积来计算注意力系数,并没有采用向量拼接的方式或
MLP
的方式来计算。
由于图中不是每两个节点都连接,因此我们仅计算节点 session
为了使得不同节点之间的系数具有可比性,我们通过 softmax
函数来对注意力权重进行归一化:
在上式中,注意力系数
接下来我们通过计算经过系数加权的线性组合来获得每个节点的输出特征:
session graph
中的 item representation
由 item
自身及其在当前 session
中的邻域特征聚合而成。通过注意力机制,减少了噪声对 session-level
的 item representation learning
的影响。
这里没有多层,因为是浅层的图。但是为什么不用深层的?这个可能需要通过实验来评估。
由于
session graph
包含self loop
,因此。 这里的聚合直接是线性加权,而并没有使用
聚合函数。
对于每个 item
,我们通过融合 global context
和 session context
来获得它的 representation
,并且它的 final representation
是通过 sum
池化来计算的:
这里我们在 global-level representation
上应用 dropout
来避免过拟合。
为什么不在
session-level representation
上应用dropout
?作者并未说明。读者猜测,这是因为:
session-level
包含的信息远远没有global-level
包含的信息多。
session-level
的模型是浅层的,而global-level
的模型是深层的。此外,作者在实验部分评估了不同类型的融合操作(门控机制、最大池化、拼接机制),发现
sum
池化的效果最佳。
基于学到的 item representation
,我们现在介绍如何获得 session representation
。与主要关注 last item
的先前的一些工作不同,这里我们提出了一种更全面的策略来学习 session
的每个部分对于 prediction
的贡献。
在我们的方法中,session representation
是基于 session
中涉及的所有 item
来构建的。注意,不同 item
对于 next prediction
的贡献是不同的。直觉而言,session
中靠后点击的 item
更能代表用户当前的偏好,这表明这些 item
对推荐的重要性更大。此外,在当前 session
中找到用户的主要意图并过滤噪声也很重要。因此,我们结合了reversed position
信息和 session
信息来作出更好的预测。
reversed position
信息:将 session
序列输入到 GNN
之后,我们可以获得 session
中涉及的 item
的 representation
,即:position embedding
矩阵 position embedding
,session
序列的长度。位置信息通过拼接和非线性变换进行融合:
其中:
这里我们选择 reversed position embedding
,因为 session
序列的长度不是固定的。与 forward position
信息相比,当前 item
与待预测的 item
之间的距离包含了更多的有效信息。例如,在 session
session
reversed position
信息可以更准确地暗示每个 item
的重要性。
reverse position
给出了序列中每个item
到next item
的空间距离。
session
信息:session
信息是通过计算 session
的 item representation
的均值来获得的:
接下来,我们通过 soft-attention
机制学习每个 item
的权重:
其中:
这里学习的是每个
item
和session
的关系,而不是和last item
的关系。
最后,我们通过线性组合 item representation
来获得 session representation
:
session representation
session
中涉及的所有 item
构成,其中每个 item
的贡献不仅取决于 session graph
中的信息,还取决于序列中的时间顺序(由 reversed position embedding
提供)。
注意,
reversed position embedding
仅参与attention
的计算,它不会修改。
基于获得的 session represntation
item
的最终推荐概率为:
其中:item
作为 next click
的概率分布。
损失函数定义为预测结果的交叉熵:
其中 ground truth
的 one-hot
编码向量。
我们进行了广泛的实验,通过回答以下五个关键的研究问题来评估所提出的 GCE-GNN
方法的准确性:
RQ1
:GCE-GNN
在现实世界的数据集中是否优于 SOTA
的 session-based
推荐的 baseline
?
RQ2
:global graph
和 global-level encoder
是否提高了 GCE-GNN
的性能?GCE-GNN
在不同深度感受野
RQ3
:reversed position embedding
是否有用?
RQ4
:GCE-GNN
在不同聚合操作下的表现如何?
RQ5
:不同的超参数设置(如 node dropout
)如何影响 GCE-GNN
的准确性?
数据集:
Diginetica
数据集:来自 CIKM Cup 2016
,由典型的交易数据组成。
Tmall
数据集:来自 IJCAI-15
比赛,包含匿名用户在天猫在线购物平台上的购物日志。
Nowplaying
数据集:来自 《#now playingMusic Dataset: Extracting Listening Behavior from Twitter》
,包含用户的音乐收听行为。
遵从 SR-GNN
和 GC-SAN
的工作,我们对三个数据集进行了预处理。具体而言:
我们过滤掉长度为 1
的 session
以及频次少于 5
的 item
。
与 STAMP
类似,我们将最近一周的 session
设置为测试数据,剩余的历史作为训练数据。
此外,对于 session
预处理后,数据集的统计数据如下表所示。
评估指标:P@N
、MRR@N
。
baseline
方法:
POP
:推荐训练集的 top-N
热门 item
。
Item-KNN
:根据当前 session
的 item
和其它 item
之间的相似性来推荐 item
。
FPMC
:结合了矩阵分解和一阶马尔科夫链,用于捕获序列效应和用户偏好。遵循之前的工作,我们在计算推荐分时,也忽略了 user latent representation
。
GRU4Rec
:RNN-based
模型,使用 GRU
来建模用户序列。
NARM
:通过将注意力集成到 RNN
中,从而对 GRU4Rec
进行了改进并用于session-based
推荐。
STAMP
:完全依靠当前 session
中 last item
的 self-attention
来捕获用户的短期兴趣,从而使用 attention layer
来替代之前工作中的所有 RNN encoder
。
SR-GNN
:采用门控 GNN layer
来获得 item embedding
,然后跟随 last item
的 self-attention
(就像 STAMP
那样),从而为 session-based
推荐来计算 session level embedding
。
CSRM
:利用 memory network
来研究最近的 session
,从而更好地预测当前 session
的意图。
FGNN
:通过设计一个加权的 attention graph layer
来学习 item embedding
,并且 session
由 graph level feature extractor
来学习。
参数配置:
遵从之前的方法(NARM, STAMP, SR-GNN
),隐向量的维度 100
。
所有模型的 batch size
设为 100
。
我们保持每个模型的超参数一致从而进行公平地比较。
对于 CSRM
,我们将 memory size
100
,和 batch size
一致。
对于 FGNN
,我们将 GNN layer
设为 3
,head
数量设为 8
。
对于我们的模型:
所有参数均使用均值为零、标准差为 0.1
的高斯分布进行初始化。
我们使用初始学习率为 0.001
的 Adam
优化器,每 3
个 epoch
后衰减 0.1
(即,乘以 0.9
)。
dropout rate
此外,在 12
、相邻 item
的最大距离 3
。
出于效率的考虑,我们仅保留
上每个 item
的权重最高的 top 12
边。
下表报告了所有模型在所有数据集上的实验结果,其中每列的最佳结果以粗体突出显示。可以看到:
在这两个指标上,GCE-GNN
在所有三个数据集上始终达到最佳性能(具有统计意义),这确定了我们所提出的方法的有效性。
在传统方法中:
POP
的表现最差,因为它仅推荐 top-N
热门 item
。
与 POP
相比,FPMC
在三个数据集上展示了其有效性,它利用了一阶马尔科夫链和矩阵分解。
Item-KNN
在 Diginetica
和 Nowplaying
数据集上,在传统方法中取得了最好的结果。注意,它仅应用了 item
之间的相似性,不考虑 session
中 item
的时间顺序,因此它无法捕获 item
之间的序列转移。
与传统方法相比,基于神经网络的方法对于 session-based
推荐通常具有更好的性能。
尽管在 Diginetica
和 Nowplaying
数据集上比 Item-KNN
要差,GRU4Rec
作为第一个基于 RNN
的 session-based
推荐方法,仍然展示了 RNN
在建模序列中的能力。然而,RNN
是为序列建模而设计的,session-based
的推荐问题不仅仅是一个序列建模任务,因为用户的偏好可能会在 session
中发生变化。
随后的方法,NARM
和 STAMP
显著优于 GRU4REC
。NARM
结合了 RNN
和注意力机制,并使用 RNN
的 last hidden state
作为用户的主要偏好。
这个结果表明:对于 session-based
推荐而言,直接使用 RNN
对 session
序列进行编码可能还不够,因为 RNN
仅对 session
中相邻 item
之间的单向的 item-transition
进行建模。
我们还观察到,STAMP
是一种完全基于注意力的方法,在 Tmall
数据集上取得了比 NARM
更好的性能。STAMP
结合了对 session
的 last item
的 self-attention
来建模短期兴趣。这个结果证明了为不同的 item
分配不同的注意力权重从而编码 session
的有效性。与 RNN
相比,注意力机制似乎是一个更好的选择,尽管 STAMP
忽略了 session
中 item
的时间顺序。
CSRM
在 Diginetica
和 Tmall
数据集上的表现优于 NARM
和 STAMP
。它显示了使用来自其它 session
的 item transition
的有效性,也显示了 CSRM
使用的、具有有限 slot
的 memory network
的缺陷。此外,CSRM
将其它 session
视为一个整体,而不区分其它 session
中所编码的相关的 item-transition
和不相关的 item-transition
。
在所有 baseline
方法中,GNN-based
方法在 Diginetica
和 Nowplaying
数据集上表现良好。通过将每个 session
序列建模为子图并应用 GNN
来对 item
进行编码,SR-GNN
和 FGNN
证明了在 session-based
推荐中应用 GNN
的有效性。这表明 graph
建模比序列建模、RNN
建模、 set
建模、和attention
建模要更适合 session-based
推荐。
我们的方法GCE-GNN
在所有三个数据集上都优于 SR-GNN
和 FGNN
。具体而言,GCE-GNN
在 Diginetica
数据集上比 SR-GNN
平均高出 6.86%
、在 Tmall
数据集上平均高出 16.34%
、在 Nowplaying
数据集上平均高出 15.71%
。
与 SR-GNN
和 FGNN
不同,我们的方法融合了来自 global context
(即,其它 session
)和 local context
(即,当前 session
)的信息,并且还结合了相对位置信息,从而获得一致的更好的性能。
我们接下来对三个数据集进行实验,从而评估 global-level feature encoder
和 session-level feature encoder
的有效性。具体而言,我们设计了四种对比的模型:
GCE-GNN w/o global
:没有 global-level feature encoder
的 GCE-GNN
,它只有 local feature
,即
GCE-GNN w/o session
:没有 session-level feature encoder
的 GCE-GNN
,它只有 global feature
,即
GCE-GNN-1-hop
:具有 global-level feature encoder
的 GNN
,并且将 hop
数量设置为 1
。
GCE-GNN-2-hop
:具有 global-level feature encoder
的 GNN
,并且将 hop
数量设置为 2
。
下表展示了不同模型之间的比较。可以看到:
很明显,使用 global-level feature encoder
之后,GCE-GNN
可以获得更好的性能。
与 GCE-GNN w/o global
相比,GCE-GNN with 1-hop
和 GCE-GNN with 2-hop
能够探索来自其它 session
的 item-transition
信息,这有助于模型作出更准确的预测。
此外,在 Diginetica
数据集上,GCE-GNN with 2-hop
要比 GCEGNN with 1-hop
表现更好,这表明:high-level
的探索可能从 global graph
中获得更有效的信息。
另外,在 Tmall
数据集上,GCE-GNN with 1-hop
要比 GCEGNN with 2-hop
表现更好,这表明:high-level
的探索也可能会引入噪音。
position embedding
用于驱使 GCE-GNN
学习每个部分在当前 session
中的贡献。尽管 SASRec
已经将 forward position embedding
注入模型来提高性能,但是我们认为 forward position embedding
对 session-based
推荐任务的影响非常有限。为了验证这一点,并评估在 GCE-GNN
中提出的 reverse position embedding
的有效性,我们设计了一系列对比模型:
GCE-GNN-NP
:使用 forward position embedding
代替 GCE-GNN
中的 reverse position embedding
。
GCE-GNN-SA
:使用self attention
代替 GCE-GNN
中的 position-aware attention
(这意味着不考虑 position
信息)。
下表展示了不同模型的性能。可以看到:
我们的带 reversed position embedding
的 attention network
比其它两个变体表现更好。
GCE-GNN-NP
在所有数据集上都表现不佳。这是因为模型无法捕获到每个 item
到被预测的 item
之间的距离,这会在训练多种多样长度的 session
时误导模型。
GCE-GNN-SA
在Diginetica
和 Nowplaying
数据集上的表现优于 GCE-GNN-NP
,这表明 session
中的last item
包含与推荐最相关的信息。但是,它在 Tmall
数据集上表现不佳,因为它对每个 item
的贡献缺乏全面的判断。
与这两种变体相比,reversed position embedding
证明了它的有效性。这证实了 reversed position
信息可以更准确地暗示每个 item
的重要性。此外,通过注意力机制,我们过滤了当前 session
中的噪音,使得模型的表现更好。
由于我们使用 local feature encoder
和 global feature encoder
,因此这里我们比较在 GCE-GNN
中使用不同的聚合操作(即,门控机制、最大池化、拼接机制)。
对于门控机制,我们在 local feature representation
global feature representation
其中: sigmoid
激活函数,
对于最大池化,我们为每个特征取每个维度的最大值:
对于拼接操作,final representation
是向量
其中:
下表展示了三个数据集上不同聚合操作的性能。可以看到:
在 Diginetica
和 Tmall
数据集的 Recall@20
和 MRR@20
指标上,具有 sum
池化的 GCE-GNN
优于其它聚合操作。
max
池化在 Diginetica
和 Nowplaying
数据集的所有指标上都是表现最差的,但是它在 Tmall
数据集的 MRR@20
指标上优于其它两个聚合器。
尽管使用了额外的参数,但是门控机制和拼接操作的性能也比 sum
池化更差,可能是因为参数过多导致了过拟合。
为了防止 GCE-GNN
过拟合,我们采用了 dropout
正则化技术,该技术已经被证明在包括 GNN
在内的各种神经网络架构中是有效的。dropout
的关键思想是:在训练期间以概率
下图展示了 dropout
(作用在 Diginetica
和 Tmall
数据集的影响。可以看到:
当 dropout ratio
较小时,模型在两个数据集上的表现都不好,因为模型很容易过拟合。
当在 Diginetica
上设置 dropout ratio = 0.4
、在 Tmall
上设置为 0.6
时,模型实现了最佳的性能。
然而,当 dropout ratio
很大时,模型的性能开始恶化,因为模型很难通过有限的可用神经元从数据中学习。