在现实世界中,随着相应 context
的演变,用户需求会不断变化。这种 context-sensitive demand
的性质激发了人们最近对于 session-based recommender system: SBRS
的兴趣。session-based
推荐系统解决了静态推荐系统的空白, 其中静态推荐系统仅推荐 homogeneous item
而不考虑跨 session
的 demand dynamic
。因此,SBRS
通过建模 session
中 item
之间的依赖关系,从而针对 session
(作为 context
)向用户推荐该用户可能感兴趣的 next item
。
大多数现有的 SBRS
通过形成forming
具有单一意图purpose
或目标goal
的 session
来作出推荐(例如,在购物篮分析 basket analysis
中购买食物和饮料之类的商品)。这通常违反了 session
可能会涉及多种类型的 item
的现实,其中每种类型对应于一个意图。以下图中第一行所示的 session
为例:
Janet
首先将培根放入购物车中作为早餐。对于这个例子,现有的 SBRS
将采用单通道single-channel
建模方法,将 session
中购买的商品隐式关联为同质的 item
序列。如下图中的第二行所示。显然,当 session
中的 item
有多种意图时,这种方法无法区分 purpose-specific
的 item
依赖(如早餐 item
和饰品 item
)。
这里 “通道” 指的就是意图。
上面的例子揭示了两种代表性类型的、 state-of-the-art
的 SBRS
之间的显著 gap
,即基于单通道 RNN
的 SBRS
和基于单通道注意力的 SBRS
。RNN-based
模型假设 session
中任何连续successive
的 item
之间都具有严格的顺序依赖关系sequential dependency
,因此:
gap 1
:很容易生成错误的依赖关系,因为在多意图multi-purpose
的 session
中并非所有 item
都存在顺序依赖。
gap 2
:RNN-based
的 SBRS
倾向于推荐最近的意图所对应的 item
,其中最近的意图是通过最近的 item
所指示的。
这是因为:由于记忆 memory
随着 time step
而衰减 decay
,那些远离 target item
的 contextual item
将被 target item
附近的 item
所淹没。
gap 3
:attention-based SBRS
倾向于推荐 item
从而满足主要意图,对其它意图不利。
为了减少无关 item
的干扰,人们将注意力机制纳入浅层网络、RNN
、以及 memory network
从而构建 SBRS
。注意力模型倾向于在极少数重要 item
上分配突出的权重,这使得 session
的意图由这几个 item
所主导。
论文 《Modeling Multi-Purpose Sessions for Next-Item Recommendations via Mixture-Channel Purpose Routing Networks》
通过提出混合通道意图路由网络 mixture-channel purpose routing network: MCPRN
来解决上述三个 gap
。
首先,MCPRN
使用意图路由网络 purpose routing network: PRN
自动地检测 session
中可能的多个意图。
然后,MCPRN
使用混合通道循环网络 mixture-channel recurrent network: MCRN
建模 session
。其中,每个通道(即意图特定的循环网络 purpose-specific recurrent network: PSRN
)建立在意图特定的循环单元purpose-specific recurrent unit: PSRU
之上,并为特定意图构建 purpose-specific embedding
从而建模 item
之间的依赖项。
PSRU
是一种GRU
变体,它考虑了item
属于当前意图的权重。 而PSRN
由PSRU
构成。
最后,通过集成所有通道来构建多意图 context embedding
(即,session embedding
),从而对候选 item
进行排序,从而得到多样化的、purpose-sensitive
的推荐。
多亏了 PRN
和 MCRN
,session
中的不同意图可以被检测到,然后这些不同意图的 item
依赖关系分别在不同的同道中被建模。结果,item
依赖关系是针对特定意图的,而不是针对一个整体而粗糙的意图的,这使得MCPRN
能够更集中地捕获意图驱动 purpose-driven
的用户行为。因此,MCPRN
以更有效、更鲁棒的机制来利用当前的单意图 SBRS
来表达多意图 session
。通过在 session
中保留和建模多个意图,MCPRN
可以推荐满足不同意图的多样化的 item
,而现有方法倾向于仅为单个意图推荐 item
。
这项工作的主要贡献如下:
sesion
中的用户行为从而适应实际情况。因此,论文提出了混合通道意图路由网络 MCPRN
来实现这一点。MCPRN
中,意图路由网络 PRN
旨在推断每个 item
的意图并将它们路由到特定的通道。此外,特定意图循环单元 PSRU
是关键组件,它作为混合通道循环网络 MCRN
关于每个通道的基本单元。相关工作:人们已经开发了各种 SBRS
,包括:基于规则/模式的推荐系统(《Effective next-items recommendation via personalized sequential pattern mining》
)、基于邻域的推荐系统(《When recurrent neural networks meet the neighborhood for session-based recommendation》
)、基于马尔科夫链的推荐系统(《Personalized ranking metric embedding for next new poi recommendation》
)、以及基于分解机的推荐系统(《Factorizing personalized markov chains for next-basket recommendation》
)。我们简要回顾了两个具有代表性的 state-of-the-art
的 SBRS
:RNN-based
的 SBRS
、attention-based
的 SBRS
,因为它们与我们的工作最相关。
RNN-based SBRS
:由于RNN
在处理序列数据方面的优势,RNN
是捕获 SBRS
中复杂的 intra-session
依赖性的直观选择。
GRU4Rec
是第一个 RNN-based
的 SBRS
,它采用 GRU
来捕获 session
中的长期依赖关系。GRU4Rec
的改进版本(《Recurrent neural networks with top-k gains for session-based recommendations》
)通过引入针对 RNN
量身定制的、创新性的 ranking loss function
,从而显著提高模型性能。由于采用了严格的次序假设 order assumption
,RNN
很容易产生错误的依赖关系。次序假设,即:假设 session
中的任何相邻 item
都是高度的顺序相关sequentially dependent
的。然而,在大多数实际情况下,这可能并非如此。
此外,RNN
通常会偏向于最近的 item
,因为随着记忆衰退 memory decay
,模型会在 session
中丢失很多 previous item
的信息。
attention-based SBRS
:通过在 session
上下文中强调那些相关的和重要的 item
,注意力机制已被用于构建更鲁棒的 SBRS
。
《Neural attentive session-based recommendation》
提出了神经注意力推荐机 Neural Attentive Recommendation Machine: NARM
,它采用具有注意力机制的混合编码器,通过区分更重要和更不重要的 item
,从而在当前 session
中建模用户的序列行为和用户的主要意图。《Attention-based transactional context embedding for next item recommendation》
设计了一种 attention-based transaction embedding model: ATEM
,从而在没有次序假设的情况下在 session
上下文中构建 attentive context embedding
。《Sequential recommendation with user memory networks》
中,注意力机制被用于 memory-augmented
神经网络中,用于选择性地读出 external memory matrix
从而进行 next item
推荐。然而,注意力机制试图在少数重要的 item
上分配更大的权重,同时淡化其它 item
,导致偏向于由这些少数 item
所指示的主要意图。因此,attention-based SBRS
通常仅满足主要意图,而忽略了 session
中的其它意图。
综上所述,所有上述 SBRS
都是基于单通道的,它们对于单意图 session
是有效的。其中,单意图指的是:session
中的所有 item
都是相互依赖的。然而,这些方法无法很好地处理具有多种不同类型的 item
(这些 item
反应不同意图)的 session
。受到混合模型在处理多种关系方面的巨大潜力的启发,我们为多意图 session
设计了一个混合通道模型。
给定一个 session
集合 session
transaction event
中顺序交互(如点击、购买)的 item
序列组成。这里 session
数量,item
出现的顺序(或时间戳)。
所有 session
中出现的所有 item
构成了 universal
的 item
集合 target item
item
共同构成了 session context
(简称 context
),记做 item
都称作 contextual item
。
给定具有前面 item
的 context
SBRS
来推荐第 item
。因此,MCPRN
被训练为一个概率分类器模型,该模型学习预测条件概率分布 MCPRN
就能够根据给定 context
时的条件概率对所有候选 item
来排序从而推荐 next item
。
MCPRN
的架构如下图 (a)
所示。MCPRN
主要由两个模块组成:意图路由器 Purpose Router
、混合通道循环网络 Mixture-Channel Recurrent Network: MCRN
。
Purpose Router
:意图路由器用于将每个 item
路由到特定意图的通道。具体而言,我们采用软路由soft routing
策略,将每个 item embedding
以不同的意图权重分配给所有通道,即所谓的混合通道网络 mixture channel network
。软路由策略可以进行任何基于梯度的优化从而简化学习。
与软路由对应的是硬路由
hard routing
,即每个item embedding
仅分配给某一个通道。
MCRN
:在 MCRN
中,每个通道都配备了一个基于意图特定循环单元 PSRU
的意图特定循环网络 PSRN
,用于为特定意图建模 item
之间的依赖关系。
不同通道的 final hidden state
multi-purpose context embedding
target item embedding
item
作为 next item
的概率。接下来,我们将介绍这些组件的更多技术细节。
这里的 ”选择性地“ 指的是:根据
的软路由来进行加权。因为我们只需要选择 target item
所在的通道。
给定 session context
中的所有 item
,意图路由网络 purpose routing network: PRN
在意图路由器 Purpose Router
中使用,从而在没有任何人类先验知识的情况下抽取 selecting item
首先,我们将每个 item
embedding
向量 item
的 embedding
向量构成一个 embedding
矩阵 embedding
矩阵的第 item
embedding
向量。
然后,我们将 item
emebdding
PRN
中,从而确定 selecting
purpose filtering parameter
的矩阵 ,其中
item
concentration score
此外,可以根据以下 softmax
函数获得关于 normalized concentration weight
:
其中
hard routing
)。在实验中,我们使用
意图数量
和温度 都是非常重要的超参数,它们对 MCPRN
的效果产生关键性的影响。
然后, item embedding
及其意图集中度权重被输入到 MCRN
的每个通道中,如下图 (a)
中的紫色(item embedding
)和绿色(意图集中度权重)箭头所示。
PSRN
来建模,PSRN
是由 PSRU
单元组成从而建模 item
的序列上的 purpose-specific
序列依赖性 sequential dependency
。 RNN
,而在 PSRN
中这些 cell
配备了我们设计的 PSRU
。一个通道中的 PSRU cell
都是相同的(包括结构和参数),而不同通道中的 cell
具有相同的结构但是不同的参数。接下来我们将详细介绍 PSRU
。
Purpose-Specific Recurrent Unit: PSRU
:像 LSTM
或 GRU
这样的 RUU cell
不考虑序列中 item
的 degree of membership
。在 MCRN
中,每个通道包含 session
中的所有 item
,但是这些 item
的意图集中度权重(即,degree of membership
),在给定意图上是不同的。因此,在给定集中度权重的情况下,LSTM
和 GRU
还没有准备好在通道中建模这种 purpose-specific
依赖性。
因此,我们设计了 PSRU
作为每个 PSRN
的 cell
。与 GRU
或其变体通常仅使用当前输入和 last hidden state
而不使用任何额外信息additional information
来计算 gate value
不同,PSRU
引入了一个 concentration gate
,从而根据特定意图来选择性地将 item
信息集成到转移 transition
中。
上图 (b)
给出了 PSRU cell
的结构。与传统的 GRU cell
相比,增加了一个额外的 gate
,即 concentration gate
(见蓝色虚线方块),从而根据意图集中度权重 purpose-specific transition
。通道 time step
的PSRU cell
取 last hidden state
item
的 embedding
time step
的候选 hidden state
控制了 item embedding
多达程度上属于当前通道,那么一个核心设计是:如果 ,那么 对应的 time step
不会被更新;越大,则该 time step
更新越大。因此,单纯地将作为输入,无法满足这个设计需求(因为即使 input
为零,RNN
也会更新状态)。这就是为什么需要引入额外的
concentration gate
的原因,同时这也是为什么作用在 updae gate
上的原因。
更具体而言,候选 hidden state
reset gate
向量、update gate
向量:
其中:
sigmoid
激活函数,tanh
激活函数。此外,我们得到 concentration gate
向量
其中:
Delta
函数,其中 session
中建模 transition
时消除噪音noisy
的 item
。即,item
。我们在实验中根据经验设置 这里计算
时出现了 。事实上 代表通道,因此更准确的描述是: 因为我们是针对第
个通道来计算 。
因此,当前 step
的 hidden state
previous state
这里
代替了 update gate
的作用,并且它是update gate
乘以得到(经过阈值过滤)。
例如,如果 item
1
以外的所有其它通道的 transition
,item
一旦 session context
MCPRN
中,所有 final hidden state
context embedding
其中:target item
target purpose
从而构建 context embedding
注意,这里集中度权重用的是
target item
的,而不是last item
。因为我们最终希望选择 target item
所在的通道。由于每个
都可以作为候选的 target item
,因此我们需要对每个计算一个 ,算法复杂度较高。
然后,我们将context embedding
item
的 embedding
一起馈入输出层从而进行 target item
预测。具体而言,我们使用内积计算 target tiem
context
relevance score
,从而捕获它们之间的交互:
target item
不仅参与了 ,也参与了 。
最后,根据相关性得分 item
ground truth
的条件概率
其中:session
上需要学习的模型参数集合。
我们通过对交叉熵损失使用 mini-batch
梯度下降来训练我们的模型。给定条件概率
其中:
session context
positive sample
,即真正的 next item
item
集合 item
作为 negative sample set
。positive sample
的损失为 negative sample
的损失为 contrastive pair
模型参数 negative sampling
用于有效的训练。
负采样策略对于模型效果影响很大,论文这里并未讲述如何负采样。
我们的模型是使用 TensorFlow
实现的。由于篇幅有限,以下算法仅列出了 mini-batch
学习过程的简要方案,其中 Adam-based
梯度下降优化器,batch size
设置为 50
。
MCPRN
训练过程:
输入:
session
集合 输出:学好的模型参数
算法步骤:
从所有 (context, target item) pair
获取 mini-batch
为每个 target item
negative item
计算 mini-batch
损失:
更新参数:
数据集:我们使用了真实世界的三个交易数据集:
Yoochoose-buy
:由 RecSys Challenge 2015
发布,记录了 Yoochoose.com
上每个 session
购买的 item
。Tmall
:由 IJCAI-15 competition
发布,记录了天猫在线购物平台中每个 transaction
购买的 item
。Tafeng
:在 Kaggle
上发布,记录了一家中国杂货店的交易数据。首先,通过将一个 transaction
中的所有item
放在一起来形成一个会话,我们从每个原始数据集中抽取一组 session
集合。我们删除少于三个 item
的 session
,因为至少需要两个 item
作为 context
从而形成多意图 session context
、以及另外一个 item
作为 target item
。
其次,我们通过随机选择过去 30
天的 20%, 30%, 40%
的 session
进行测试,从而对 session
集合执行三种 training-test
拆分。我们的方法在所有三种拆分上都取得了相似的性能,并且稳定地优于所有 baseline
,因此这里仅展示了 30%
拆分的结果。
有的实验是将最后一天或最后一周的
session
作为测试集,那么随机选择的测试集和最近时间选择的测试集,二者评估结论是一致的吗?
最后,为了构建格式为 training-test
实例,对于一个 session
item
之间选择一个 item
作为 target item
item
构成对应的 conetxt
item
的 session
,我们一共创建了
数据集的统计结果如下表所示。
评估指标:Mean Reciprocal Rank: MRR
、normalized Discounted Cumulative Gain: NDCG
、Recall
。
此外我们还设计了一个新颖的多样性指标来评估推荐结果的多样性diversity
。
baseline
方法:
iGRU4Rec-BPR
:典型的 RNN-based SBRS
的改进版本,它使用 GRU-based RNN
来建模 session
,并且以 Bayesian Personalized Ranking: BPR
作为损失函数(《Recurrent neural networks with top-k gains for session-based recommendations》
)。iGRU4Rec-CE
:与 iGRU4Rec-BPR
类似,只是它使用交叉熵损失函数替代了 BPR
损失函数。NARM
:一个具有注意力机制的混合编码器,它在 session
中捕获用户的序列行为和主要意图。MANN
:一个 memory-augmented
的神经网络,它采用注意力模型来读取显式存储在外部 memory
矩阵中的历史信息。Caser
:一种卷积的序列 embedding
模型,它将一个序列的 item
嵌入到一个 image
中,然后使用卷积滤波器将序列模式 sequential pattern
学习为局部特征。ATEM
:一个浅而宽的网络,结合了注意力机制来学习 session context
的 attentive embedding
。为了证明混合通道在多意图建模中的有效性,我们实现了我们方法的两个版本: MCPRN
的完整模型、 MCPRN
的单通道版本 MCPRN-S
。
单通道版本只需要将
即可实现。
实验设置:
baseline
模型,然后在我们的数据集上调优它们从而获得最佳性能以进行公平地比较。PSRU
中的 item embedding
和 hidden state
尺寸均设置为 128
。通过验证集调优从而将通道数 3
。Adam
的初始学习率设置为 0.001
。MCPRN
与 baselien
在准确性指标上的性能比较:我们在推荐准确性指标上比较了 MCPRN
和 baseline
方法。下表给出了 MRR
和 nDCG
指标。
前两种方法建立在 GRU-based
的 RNN
之上,由于过于严格的 sequentially dependent-based
假设、以及对于最近意图的 bias
,因此很容易生成错误的依赖。因此,它们在多意图 session
数据上表现不佳。
NARM
和 MANN
通过将注意力机制分别纳入 RNN-based SBRS
和 memory network-based SBRS
来突出相关信息并抑制噪声,从而获得更好的性能。 但是,由于注意力加权机制,在 session
中它们很容易偏向于主要意图。
Caser
也表现不佳,因为 CNN
中的池化操作很难捕获远程依赖关系。
与其它 attention-based SBRS
一样,ATEM
通常偏向于主要意图。
通过使用每个通道独立地建模每个意图,我们的 MCPRN
不仅平等地对待每个意图,而且还保持每个意图内的序列依赖关系。因此,MCPRN
在所有数据集上都取得了最佳性能。
具体而言,在Yoochoose-buy
和 Tafeng
两个数据集上,MCPRN
在 MRR@5, MRR@20, nDCG@5
指标上比现有最佳方法提高了 20%
以上。
由于空间有限,下图给出了在两个数据集上的召回性能。可以看到,MCPRN
以显著的优势领先于 baseline
。
混合通道与单通道的比较:为了证明混合通道结构的效果,我们将 MCPRN
与 MCPRN-S
进行比较,结果如上图和上表所示。可以很清楚地看到:MCPRN
比 MCPRN-S
实现了更高的准确性。MCPRN
的 MRR@5, nDCG@5, Recall@5
至少比 MCPRN-S
高 20%
,这证明了混合通道架构的优越性。
推荐多样性:人们在推荐系统中引入多样性评估,从而弥补准确性评估的缺陷。直观而言,推荐的 item
的类别分布越分散,则意味着模型可以产生更大的多样性。因此,根据信息论,推荐的类别分布可以通过熵来衡量多样性,即:
其中:
top-k
个 item
)。
item
假设推荐列表中,每个
item
对应的类别为 ”{服装,数码,服装,服装,母婴}“,那么依次等于 {0.6, 0,2, 0.6, 0.6, 0.2}
。因为服装出现的概率为0.6
。
下图展示了 MCPRN
与 baseline
的多样性指标的对比。可以看到:MCPRN
实现了比 baseline
方法更高的多样性。特别是在 Tafeng
数据集上,MCPRN
实现了高达 13.01%
的 Diveristy@5
提升、11.61%
的 Diveristy@10
提升 。
原因是 baseline
方法通常推荐仅满足最近意图(如,RNN-based SBRS
)或主要意图(如,attention-based SBRS
)的 item
,因为它们是基于单通道的设计。相比之下,MCPRN
通过以并行方式建模多个意图,很容易使得推荐列表多样化。
多样性评估不适用于 Yoochoose-buy
,因为该数据集的类别信息不可用。
意图集中度可视化Purpose Concentration Visualization
:为了深入理解 session
中用于不同意图的 item
如何被检测、并相应地被路由到 MCPRN
中的不同通道,我们从 Yoochoose-buy
数据集的测试集中随机抽取两个 session
,并在下图中可视化了它们的集中度权重。
可以看到:
一个 session
中的 item
通常用于多个意图,因此被放入不同的通道,如:不同的 item
在所有这三个通道上都有不同的分布。
真正的 target item
session
中最近的意图、或主要意图所不同的意图。
例如,第二个
session
所示。
传统的推荐方法基于 last interaction
来处理 session-based
推荐。
《Using temporal data for making recommendations》
和 《An MDP-based recommender system》
研究如何使用马尔科夫模型抽取序列模式sequential pattern
从而预测 next item
。《Playlist prediction via metric embedding》
提出 logistic Markov embedding
来学习歌曲的 representation
从而进行 playlist
预测。这些模型的一个主要问题是:当试图在所有 item
上包含所有可能的潜在用户选择序列时,状态空间很快变得难以管理。
RNN
最近被用于 session-based
的推荐,并引起了人们的极大关注。
《Session-based recommendations with recurrent neural networks》
引入了带 GRU
的 RNN
,从而用于 session-based
推荐。《Parallel recurrent neural network architectures for feature-rich session-based recommendations》
引入了许多 parallel RNN: p-RNN
架构来基于被点击 item
的 click
和 feature
(如,图片、文本)来建模 session
。《Personalizing session-based recommendations with hierarchical recurrent neural networks》
通过跨 session
信息迁移来个性化 RNN
模型,并设计了一个 Hierarchical RNN
模型。这个 Hierarchical RNN
模型在 user session
中,中继 relay
和演变 evolve
RNN
的潜在状态。《Neural attentive session-based recommendation》
在 session-based
推荐中引入了注意力机制并表现出色。尽管将深度学习应用于 session-based
推荐的研究越来越多,但是没有人强调所谓的重复消费repeat consumption
,这是许多推荐场景(如电商、音乐、电视节目等等场景的推荐)中的普遍现象。重复消费的意思是:随着时间的推移,相同的 item
被重复消费。
重复消费之所以存在,是因为人们有规律性的习惯regular habit
。例如,我们经常重复购买相同的东西,我们经常去相同的餐厅吃饭,我们经常听相同的歌曲和歌手。下表展示了相关研究中常用的三个 benchmark
数据集的重复消费率。
重复消费率占比不大,那么是否意味着在这方面的改进没有多大意义?毕竟
RepeatNet
是针对 “少数派” 进行的优化。
RepeatNet
的效果严重依赖于具体的数据集,只有较高重复消费率的数据集的效果较好。因此使用之前需要先通过数据集来评估重复消费率。而这个重复消费率又依赖于
user ID
,因此也无法应用到匿名session
中。
在论文 《RepeatNet: A Repeat Aware Neural Recommendation Machine for Session-Based Recommendation》
中,作者通过融合一个 repeat-explore
机制到神经网络中从而研究重复消费,并提出了一个叫做 RepeatNet
的、具有 encoder-decoder
的新模型。与使用单个解码器来评估每个 item
的分数的现有工作不同,RepeatNet
使用两个解码器分别在 repeat mode
和 explore mode
下评估每个 item
的推荐概率。
repeat mode
下,模型推荐用户历史记录中的 old item
。explore mode
下,模型推荐 new item
。具体而言:
首先,模型将每个 session
编码为一个 representation
。
然后,模型使用 repeat-explore
机制来学习 repeat mode
和 explore mode
之间的切换概率。
之后,作者提出了一个 repeat recommendation decoder
来学习在 repeat mode
下推荐 old item
的概率,以及提出了一个 explore recommendation decoder
来学习在 explore mode
下推荐 new item
的概率。
两个
decoder
(相比较于传统的单个decoder
)会大幅度增加资源消耗以及inference time
。
最后,作者将模式切换概率、以及两种模式下的每个 item
的推荐概率以概率性的方式结合起来,最终确定 item
的推荐分。
mode prediction
和 item
推荐在统一框架内以端到端的方式共同学习。
论文对三个 benchmark
数据集进行了广泛的实验。结果表明:在 MRR
和 Recall
指标上,RepeatNet
在所有三个数据集上都优于 state-of-the-art baseline
。此外,论文发现:随着数据集大小和重复率的增加,RepeatNet
相对于 baseline
的改进也增加了,这证明了它在处理重复推荐场景方面的优势。
综上所述,论文的主要贡献是:
RepeatNet
。该模型考虑了重复消费现象。据作者所知,该论文是第一个在使用神经网络的 session-based
推荐背景下考虑重复消费现象的。session-based
推荐引入了 repeat-explore
机制,从而自动学习 repeat mode
和 explore mode
之间的切换概率。与使用单个解码器的现有工作不同,论文提出了两个解码器来学习两种模式下每个 item
的推荐概率。benchmark
数据集进行了广泛的实验和分析。结果表明:RepeatNet
通过显式建模重复消费来提高 session-based
推荐的性能,从而超越了 state-of-the-art
方法。相关工作:
session-based
推荐:
传统的 session-based
推荐方法通常基于马尔科夫链,这些方法在给定 last action
的情况下预测 next action
。
《Using temporal data for making recommendations》
提出了一种基于马尔科夫链的序列推荐器,并研究如何使用概率性的决策树模型来抽取序列模式从而学习 next state
。《Using sequential and non-sequential patterns in predictive web usage mining tasks》
研究了不同的序列模式sequential pattern
用于推荐,并发现连续contiguous
的序列模式比通用general
的序列模式更适合序列预测任务。《An MDP-based recommender system》
提出了一个马尔科夫链决策过程 Markov decision process: MDP
从而以 session-based
方式提供推荐。最简单的 MDP
是一阶马尔科夫链,其中 next recommendation
可以简单地通过通过 item
之间的转移概率来计算。《Effective next items recommendation via personalized sequential pattern mining》
在个性化序列模式挖掘中引入了一种竞争力得分competence score
指标,用于 next-item
推荐。《Playlist prediction via metric embedding》
将 playlist
建模为马尔科夫链,并提出 logistic Markov embedding
来学习歌曲 representation
从而用于 playlist
预测。将马尔科夫链应用于 session-based
推荐任务的一个主要问题是:当试图在所有 item
上包含所有可能的潜在用户选择序列时,状态空间很快变得难以管理。
RNN
已被证明对序列点击预测很有用。
《Session-based recommendations with recurrent neural networks》
将 RNN
应用于 session-based
推荐,并相对于传统方法取得了显著改进。他们利用session-parallel
的 mini-batch
训练,并使用 ranking-based
损失函数来学习模型。《Parallel recurrent neural network architectures for feature-rich session-based recommendations》
引入了许多 parallel RNN: p-RNN
架构来基于被点击 item
的 click
和 feature
(如,图片、文本)来建模 session
。他们提出了比标准训练更适合的、用于 p-RNN
的替代训练策略。《Improved recurrent neural networks for session-based recommendations》
提出了两种技术来提高其模型的性能,即:数据增强、以及一种考虑输入数据分布漂移shift
的方法。《When recurrent neural networks meet the neighborhood for session-based recommendation》
表明,在大多数测试的setup
和数据集中,针对 session
的、基于启发式最近邻的方案优于 GRU4Rec
。《Personalizing session-based recommendations with hierarchical recurrent neural networks》
提出了一种通过跨 session
信息迁移来对 RNN
模型进行个性化的方法,并设计了一个 Hierarchical RNN
模型,该模型在 user session
之间中继 relay
和演变 evolve
RNN
的潜在状态。《Neural attentive session-based recommendation》
探索了具有注意力机制的混合编码器以建模用户的序列行为和意图,从而捕获用户在当前 session
中的主要意图。与上面列出的研究不同,我们强调模型中的重复消费现象。
repeat recommendation
:
《The dynamics of repeat consumption》
在多个领域研究了用户随着时间的推移重复消费同一个 item
的模式,从同一个门店的重复 check-in
到同一个视频的重复观看。他们发现:消费的新近程度 recency
是重复消费的最强预测器 predictor
。《Will you “reconsume” the near past? Fast prediction on short-term reconsumption behaviors》
得出了影响人们短期重复消费行为的四个一般特征。然后,他们提出了两种具有线性核和二次核的快速算法,从而预测在给定 context
的情况下,用户是否会在特定时间执行短期重复消费。推荐系统的一个重要目标是帮助用户发现 new item
。除此之外,许多现实世界的系统将推荐列表用于不同的目标,即:提醒用户他们过去查看或消费的 item
。
《On the value of reminders within e-commerce recommendations》
通过一个现场实验 live experiment
对此进行了调查,旨在量化在推荐列表中此类提醒的价值。
《Modeling user consumption sequences》
确定了重复消费的两种宏观行为模式:
首先,在给定用户的生命周期lifetime
中,很少有 item
能够存活 live
很长时间。
其次,一个 item
的 last consumption
表现出越来越大的 inter-arrival gap
,这与如下概念保持一致:无聊递增导致最终放弃。
即,用户消费相同
item
的周期越来越长,最终放弃消费该item
(因为越来越无聊,没有新的吸引力)。
我们的工作与之前关于重复推荐的工作之间的主要区别在于:我们是第一个提出神经推荐模型的人,从而显式强调传统的推荐任务以及 session-based
推荐任务中的重复消费。
给定一个 action session
item
,session-based
推荐尝试预测 next event
是什么,如以下方程所示。不失一般性,本文以点击 action
为例:
其中:
整体框架:我们提出 RepeatNet
从而从概率性的角度来建模
其中:
repeat mode
,explore mode
。repeat mode
的概率,explore mode
的概率。repeat mode
中推荐 explore mode
中推荐 如下图所示,RepeatNet
由四个主要组件组成:一个 session encoder
、一个 repeat-explore
机制、一个 repeat recommendation decoder
、一个 explore recommendation decoder
。
session encoder
:它将给定的 session
representation
timestamp
session representation
。
不是 的 representation
,而是截止到时刻的 session representation
。
repeat-explore
机制:它以 repeat mode
或 explore mode
的概率,对应于方程中的
注意:
,因此只需要预测其中之一即可。
repeat recommendation decoder
:它以 item
的重复推荐概率,对应于方程中的
explore recommendation decoder
:它以 item
的探索推荐概率,对应于方程中的 item
。
session encoder
:遵从先前的工作,我们使用 GRU
来编码 GRU
定义为:
其中:
embedding
向量。sigmoid
函数,tanh
函数。update gate
,reset gate
。GRU
的初始状态为零,即
经过 session encoder
编码之后,每个 session
repeat-explore
机制:repeat-explore
机制可以视为一个基于 representation
。具体而言:
我们首先使用 last hidden state
hidden state
其中:
然后我们归一化重要性分数,并获得 hidden state
的加权和从而作为 context vector
:
然后我们使用 softmax
回归将
其中:
这里的
softmax
其实可以退化为sigmoid
,因为这是个二分类问题。
repeat recommendation decoder
:repeat recommendation decoder
评估 item
被重复点击的概率。受到 CopyNet
的启发,我们使用一个修改的注意力模型来实现这一点。item
其中:
item
item
可能在 explore recommendation decoder
:explore recommendation decoder
评估那些不在 new item
被点击的概率。具体而言:
首先,为了更好地捕获用户对 session
item-level
注意力机制,允许解码器动态选择和线性组合输入序列中的不同部分:
其中:
在计算重要性分数
时,这里都是将 作为 query
,作为 key
。
然后我们将 last hidden state
attentive state
hybrid representation
其中:
最后,item
其中:item
explore mode
下它被点击的概率为零。
目标函数:我们的目标是给定 input session
的情况下最大化 ground truth
的预测概率。因此,我们优化负对数似然损失函数:
其中:RepeateNet
的参数,session
的集合,ground truth item
的预测概率,
RepeatNet
包含了一个额外的 repeat-explore
机制从而在 repeat mode
和 explore mode
之间软切换 softly switch
。我们假设:如果 next item
已经在 repeat mode
,否则切换到 explore mode
。因此,我们可以联合训练另一个损失,即 mode prediction
损失,它也是负对数似然损失:
其中:1
,否则为 0
。
在联合训练的情况下,最终的损失是两种损失的线下组合:
注意:
这里可以考虑加权,如:
。 然后,作者在实验中表明,联合训练的效果要比单独训练
更差。有两个原因:
- 首先,
已经是学习模式预测的优秀监督器了。即,如果 next item
已经完美地预测了,那么mode prediction
也百分之百正确。- 其次,
RepeatNet
(仅使用)倾向于重复推荐(为什么?作者没有分析)。添加 进一步加剧了这种情况。 因此,实验部分主要采用
来训练。 最后,为了缓解联合训练效果较差的问题,并同时利用模式预测的监督信息,可以考虑一种
warmup
训练策略:在前面比例的 epoch
(比如50%
的epoch
)优化,然后在后面的 50%
比例的epoch
去优化。 这是因为预测
next item
是否重复点击的任务,要比预测next item
是哪个item
要更简单。那么我们把容易的任务作为warm up
从而先把模型预热到一个良好的状态,然后再去训练困难的任务。
RepeatNet
的所有参数及其 item embedding
都是端到端通过反向传播来训练的。
未来方向:
repeat-explore mechanism
。RepeatNet
的变体可以应用于其它推荐任务,如 content-based
推荐。读者点评:
RepeatNet
本质上是把困难的next item
预测任务拆分成两阶段的子任务:
- 第一阶段子任务:预测
next item
是否是重复购买。这个任务相对而言要更简单。- 第二阶段子任务:分别预测
repeat mode
或explore mode
下的next item
。这个任务相对而言更难。基于类似的原理,我们也可以把
next item
预测任务按照不同的维度拆分为:
- 第一阶段子任务:预测
next item
是属于哪个category
。- 第二阶段子任务:计算给定
next category
的条件下,预测next item
的概率。甚至我们可以拆分为三个阶段:
- 第一个阶段子任务:预测
next category
是否重复出现。- 第二个阶段子任务:基于
repeat mode
和explore mode
,预测next category
的概率。- 第三个阶段子任务:计算给定
next category
的条件下,预测next item
的概率。取决于具体的任务,我们还有更多的拆分方式。
这类拆分能提升效果的原因,读者觉得主要是:把困难的任务拆分成相对简单的子任务。
另外,这种拆分还引入了更多的监督信息。这些额外的监督信息来自于
next item
的属性。例如RepeatNet
中的额外监督信息来自于属性:next item
是否重复出现。而category
的例子中,监督信息来自于属性:next item
的category
。虽然论文的实验结果表明:这种监督信息的联合训练效果不佳。但是读者认为,这是因为作者没有很好地利用这种监督信息,理论上引入这种监督信息的效果更好。
这种方式是否有效,关键是评估:如果用传统的方法预测,那么
repeat mode
的概率是否接近ground truth
。如果传统的方法(如
BERT4REC
)预测的next item
中,计算到的repeat mode
预测概率等于repeat mode
真实出现的概率,那么说明传统方法已经能很好地捕获repeat mode
,此时无需使用RepeatNet
这种方法。否则,可以考虑使用RepeatNet
这种方法。
数据集:YOOCHOOSE
、DIGINETICA
、LASTFM
数据集,其中 YOOCHOOSE
、DIGINETICA
是电商数据集,LASTFM
是音乐数据集。数据集的拆分与 《Neural attentive session-based recommendation》
相同。
YOOCHOOSE
数据集:是 RecSys Challenge 2015
发布的公共数据集。我们遵循《Session-based recommendations with recurrent neural networks》
和《Neural attentive session-based recommendation》
,并过滤掉长度为 1
的 session
以及出现频次少于 5
次的 item
。他们注意到 1/4
的数据集足以完成任务,增加数据量不会进一步提高性能。DIGINETICA
数据集:是 CIKM Cup 2016
发布的公共数据集。我们再次遵循 《Neural attentive session-based recommendation》
并过滤掉长度为 1
的 session
以及出现频次少于 5
次的 item
。LASTFM
:是 Celma 2010
发布并广泛应用于推荐任务。我们将数据集用于音乐艺术家推荐。我们保留 top 40000
名最受欢迎的艺术家,并过滤掉超长的 session
( item
数量超过 50
)、以及超短的 session
(item
数量低于 2
)。数据集的统计结果如下表所示。
评估指标:MRR@20
、MRR@10
、Recall@20
、Recall@10
。
Recall@k
:ground truth item
位于 top k
推荐列表的 case
,占所有 test case
的比例。MRR@k
:ground truth item
位于推荐列表的排名倒数reciprocal rank
的均值。如果排名落后于 实验配置:
item embedding size
和 GRU hidden state size
均设为 100
。dropout
,并且 dropout rate = 0.5
。Xavier
方法来随机初始化模型参数。Adam
优化算法,其中学习率 epoch
将学习率 grid search
使用 mini-batch size = 1024
。epoch
在验证集上评估模型性能。RepeatNet
是用 Chainer
编写的,并在一个 GeForce GTX TitanX GPU
上训练。另外,这里没有采用联合训练,而是仅训练
。
baseline
方法:
传统的 session-based
推荐方法:
POP
:推荐训练集中最流行的 item
。它经常被用作推荐系统领域的 baseline
。
S-POP:
:推荐当前 session
中最流行的 item
。它使用 session
粒度的流行度而不是全局流行度。
Item-KNN
:推荐与 session
中历史互动 item
相似的 item
。item
相似度定义为:
其中还可以包括正则化项从而避免稀疏 item
的偶然的高度相似性。
BPR-MF
:是一种常用的矩阵分解方法。我们使用当前 session
中截至目前为止互动的 item
的潜在因子的均值来表达一个 session
,将其应用于 session-based
推荐。
FPMC
:用于 next-basket
推荐的state-of-the-art
混合模型。为了使其适用于 session-based
推荐,我们在计算推荐分时忽略了 user latent representation
。
PDP
:号称是第一个建模序列重复消费sequential repeat consumption
的方法。据我们所知,这是唯一考虑序列重复消费的推荐模型。
deep learning
的 session-based
推荐方法:先前的研究工作都没有考虑建模序列重复消费。
GRU4REC
:使用 session-parallel mini-batch
的训练过程,并且还使用 ranking-based
损失函数来学习模型。Improved-GRU4REC
:通过两种技术来改进 GRU4REC
,即:数据增强、以及一种考虑输入数据分布漂移 shift
的方法。GRU4REC-TOPK
:通过 top-k based ranking loss
进一步改进了 GRU4REC
。NARM
:通过神经注意力机制进一步改进了 Improved-GRU4REC
。所有方法的实验结果如下表所示。我们运行 GRU4REC
和 NARM
发布的代码来报告 GRU4REC
和 NARM
的结果。可以看到:
首先,RepeatNet
优于传统方法和神经网络方法,包括最强的 baseline
,即 GRU4REC-TOPK
和 NARM
。RepeatNet
对 NARM
的改进甚至大于 NARM
对 Improved-GRU4REC
的改进。
这些改进意味着显式建模重复消费是有帮助的,这使得 RepeatNet
在 session-based
推荐中建模复杂情况的能力更强。
其次,随着重复率的增加,RepeatNet
的性能普遍提高。我们基于对 YOOCHOOSE
和 DIGINETICA
的不同改进得出这一结论。两个数据集都来自电商领域,但是 YOOCHOOSE
的重复率更高。
第三,RepeatNet
的性能因领域而异。实验结果表明,RepeatNet
在音乐领域比电商领域具有更大的优势。我们认为这是由于不同领域的不同特性造成的。
人们更愿意重复消费曾经听过的歌。
在 LASTFM
数据集上,S-POP
的表现要比 Item-KNN
好得多,这意味着流行度在 LASTFM
数据集上非常重要。但是,Item-KNN
在 YOOCHOOSE
数据集上的表现要比 S-POP
好得多,这意味着协同过滤在 YOOCHOOSE
数据集上更重要。
此外,神经网络模型在所有数据集的所有评估指标上都比传统方法有很大的进步。最近的其它研究也得出了类似的结论。
repeat mechanism
的分析:如上表所示,一般而言,RepeatNet with repeat
在所有数据集上都优于 RepeatNet without repeat
。
作者并未解释
no repeat
模型是如何实现的。个人猜测,是认为,即始终采用 explore mode
来构建模型。
RepeatNet (with and without repeat)
在 repeated session
和 non-repeated session
上的表现如下表所示。
可以看到:RepeatNet
的改进主要来自 repeated session
。具体而言,在 DIGINTICA
和 LASTFM
数据集上,RepeatNet
在 repeated session
上分别提高了 33.91%
和 24.16%
的 Recall@20
。但是,RepeatNet
在 non-repeated session
上的效果有所下降。
实验结果表明,RepeatNet
通过显式建模 repeat mode
和 explore mode
从而具有更大的潜力。但是,结果也显示了 RepeatNet
的局限性:如果我们让它完全从数据中学习 mode probability
,它似乎倾向于过多地重复推荐。应该增加一种机制来集成先验知识(即,不要过多地重复推荐)。
因为
RepeatNet
在Non-Rep session
上的效果不佳,这表明它倾向于过多地重复推荐。
attention mechanism
和 repeat mechanism
的分析:我们在下表中比较了 with and without attention
、with and without repeat
的 RepeatNet
的结果。结果表明:
attention mechanism
和 repeat mechanism
都可以改善 RepeatNet
。重要的是,attention mechanism
和 repeat mechanism
的贡献是相辅相成的,因为这种组合在所有数据集的所有指标上都带来了进一步的提升,这证明了二者的必要性。attention mechanism
更有助于提高 Recall
,而 repeat mechanism
更有助于提高 MRR
。联合学习的分析:有趣的是,如果我们联合训练推荐损失
RepeatNet
(仅使用 repeated session
上取得了很大的改进。并且 repeated session
的改善余地相对较小(因为重复购买的比例不高)。RepeatNet
(仅使用 在电商和流媒体等许多在线服务中,用户的行为通常是序列sequential
的,例如,被查看的 item
之间具有时间相关性 temporal correlation
。此外,可以将序列动作 sequential action
分组到 session
中。每个 session
由在特定时间段内发生的 action
组成。session-based
推荐的任务是:给定用户在 session
中的 previous actions
,预测用户在同一个 session
中的 next action
。
由于 session-based
推荐在许多 application
中具有很高的实用价值,它越来越受到研究人员的关注,并提出了许多有趣且有效的方法。大多数 state-of-the-art
方法都遵循 encoder-predictor
架构,其中encoder
将 previous actions
编码到 session embedding
中,并且 predictor
根据 session embedding
来生成在所有可能的 action
集合上的概率分布。
很容易理解:在 session-based
推荐中,排序信息ordering information
对于预测 next action
很有用,因为 session data
本质上是序列的。然而,并非所有排序信息都很重要。具体而言,论文 《Session-based Recommendation with Local Invariance》
认为:有些时候只有通用general
的 high-level
的排序信息很重要,而 sub-sessional level
(称作 detailed ordering
)并不重要。例如,当用户想在电商网站上购买手机和一些配件时,用户可能需要针对手机及其配件比较不同品牌的多个商品。在这种情况下,用户查看不同手机或不同品牌配件的顺序并不重要,因为用户只是在比较商品,而无意按照一个特定顺序查看商品。论文《Session-based Recommendation with Local Invariance》
把短时间内查看 item
时顺序无所谓的属性称作局部不变性 local invariance
,这在现实世界中很容易找到。此外,high-level ordering
,即用户查看每种类别商品的排序,对 next item
有影响。例如,假设用户购买了手机之后需要一个耳机:
因此,一个好的 session-based recommender
应该考虑不同粒度 level
的排序信息。
然而,现有的研究并没有很好地解决这种局部不变性。关于 session-based
推荐的现有研究有两个分支:
第一个分支包括以严格顺序对 action
进行编码的方法。具体而言,最近的研究在 encoder
组件中应用了 RNN
并取得了可喜的成果。使用 RNN
的主要优点是:session
的序列属性 sequential property
很自然地由网络结构来建模。因此,RNN-based
方法显著优于以前的 non-RNN based
方法。但是,这些方法仍然强制执行严格的顺序。此外,这些方法更关注用户的近期 actions
,不擅长在 long session
中捕获依赖关系。
第二个分支包括完全丢弃排序信息的方法。具体而言,受到计算机视觉和 NLP
中注意力机制的成功的启发,STAMP
设计了纯粹的 attention-based
的 session encoder
,并获得了 state-of-the-art
的性能。与 RNN-based
方法相比,STAMP
能够通过注意力机制有效地捕获同一个 session
中任意两个 item
之间的依赖关系。但是,session
中的 high-level
的序列属性被忽略了,这在某些情况下可能会出现问题。
item-level
的注意力机制 +high-level
的RNN
机制是否可行?
上述两种设计 encoder
组件的方法是两个极端,因为它们要么假设 session
内用户 action
之间的严格顺序,要么完全丢弃排序信息。很容易理解,排序信息很有用,因为 session
数据是序列的。但是,在 session
的某些局部区域(称作 sub-session
)中,item
的顺序可能并不重要,因为用户不打算按照严格的顺序来点击 item
。换句话讲,有些时候,在 sub-session level
,重要的是 item
出现,而不是顺序。
为了应对上述挑战,论文《Session-based Recommendation with Local Invariance》
提出了一个叫做 LINet
的新模型,该模型通过对不同 level
的序列信息给予不同程度的注意力从而考虑局部不变性。具体而言,忽略某些 sub-session
中无关紧要的 detailed ordering information
,而保留整个 session
的 high-level sequential information
。基本思想是:
full self-attention layer
在 sub-session
中抽取 position-invariant feature
(作为 sub-session
的 representation
)。RNN
(作用在 sub-session representation
上)来捕获通用的序列信息。论文的主要贡献如下:
session-based
推荐中识别和研究局部不变性。据作者所知,该论文是第一个在 session-based
推荐的背景下考虑这一点的人。session
中 item
之间的严格顺序,要么完全丢弃排序信息,而论文提出的模型通过遵循 item
的通用顺序 general order
来自动学习生成不受 sub-session
中细微位置变化影响的 session representation
。state-of-the-art
方法,并且所提出的、捕获序列信息的具有局部不变性的机制起着重要作用。令 session
中的 unique item
的集合。session
item
序列,其中 session
time step
item
。 session-based
推荐任务是预测 next item
,即:对于每个 time step
item
的序列 next item
一个典型的 session-based
推荐模型通常计算整个 item
集合 top-k
概率的 item
将作为推荐列表。
类似于先前的 state-of-the-art
方法,我们的模型遵从 encoder-predictor
架构。
令 item
的 embedding
向量,其中 embedding
向量。给定一个 session
序列 item embedding
列表 item
embedding
向量。
局部编码器local encoder
将 item embedding list
作为输入,并生成 group representation
的一个序列,该序列对 short sub-session
中的位置变动是不变 invariant
的。
全局编码器 global encoder
是一个序列模型,它从 group representation
的序列中抽取 session representation
由于 NARM
和 STAMP
已经证明了考虑最近兴趣的重要性和有效性,因此我们将 item
的向量 hybrid representation
在论文中,
。
最后,predictor
根据 item embedding
和 session hybrid representation
来在 next item
的概率分布。
接下来,我们将详细讨论我们模型的每个组件。
局部编码器的目标是,抽取对每个 group
内的位置变动position change
不变的 group feature
。
理想情况下,每个 group
都是由 group embedding
来表达,其中 group embedding
是 group
内 item embedding
的加权和。例如,一个 group
group embedding
为:
其中:group
item
集合,item
group
item
embedding
。
然而,由于 group
数量未知,因此无法实现这一理想目标。此外,这些 group
可能没有硬边界 hard border
。因此,我们为每个原始 item
抽取一个 group embedding
。第 item
对应的 group embedding
定义为:
这个 group emebdding
只是所有 item
的加权和。
即,为每个
item
构造一个group
,这有点类似于一个滑动窗口,每个窗口一个group
。
直观而言,group
是由相似的相邻 item
而形成的。这意味着对于 item
其中:
这里 local
,
group size
。
观察到,group
由相似的 item
组成,而方差控制了 group size
。相邻的 item
与 group size
越大,方差越大。换句话讲,方差与 item
之间的平均相似度正相关。为简单起见,我们假设是线性关系。因此,方差定义如下:
其中:sim()
为相似性函数(如,余弦相似度)。
这里
sim()
也可以考虑使用。
我们在大小为 context
中估计平均相似度。group
内的 item
。根据我们的实验,我们建议将
是非常关键的超参数,影响 LINet
的效果。
考虑
full self-attention layer
的注意力权重相同。因此,contextualized embedding
。local context embedding
,并且它关注的局部区域是由 group size
动态决定的。从信号处理的角度来看,局部编码器也可以看做是一个平滑滤波器smoothing filter
。类似的思想可以在 《Making convolutional networks shift-invariant again》
中找到,其中卷积网络中的平移不变性 shift invariance
通过使用平滑滤波器得到改善。我们通过根据上下文动态调整滤波器的权重(即,local position invariance
。
全局编码器将 group feature
session embedding
从而表达用户在当前 session
中的兴趣。由于 group
的顺序暗示了用户当前关注点的变化,因此这个相对顺序 relative order
包含了用于预测 next item
的有用信息。因此,我们使用 RNN
来生成 session representation
。
令 RNN
的输出状态为 group
的 representation
。为了更好地捕获用户兴趣,我们应用 item-level
注意力机制来动态选择和线性选择前面的 group
的 representation
。
具体而言,我们将 RNN
输出状态的加权和作为抽取到的 session representation
其中,加权的权重
这里 global
,
通过结合局部编码器和全局编码器,session representation
session
的通用序列信息 general sequential information
,并且对于一些 sub-session
中不重要的局部位置变动是不变invariant
的。
LINet
采用了attention(叠加高斯分布) -> RNN -> attention
的架构。它本质上是修改了RNN
的输入。实际上我们也可以考虑更多的方法来修改RNN
的输入。
predictor
评估 next item
的概率分布。由于 STAMP
已经证明:显式考虑用户最近的兴趣对于预测 next item
是有效的。因此,我们将 session representation
session
的 hybrid representation
item
其中:item
embedding
,embedding
空间。
是如何得到的?论文并没有解释。可能是直接拼接得到,即 。
然后使用 softmax
函数对分数进行归一化,从而获得 item
的概率分布:
其中:
训练:对于每个 session
序列 ground truth
其中:next item
真实分布的一个 one-hot
向量。
然后,我们端到端地通过反向传播来训练所有参数以及 item embedding
。
数据集:
YooChoose
数据集:来自于 RecSys Challenge 2015
,包含用户在电商网站上 6
个月内的点击 stream
。Diginetica
数据集:来自于 CIKM Cup 2016
,我们仅使用它的交易数据transactional data
。模型需要根据用户在当前 session
中的 click/buy
历史来预测用户想要 click/buy
的 next item
。正如 《Improved recurrent neural networks for session-based recommendations》
中所验证的,由于 YooChoose
训练集非常大,并且相较于训练整个数据集,训练最近的数据能够产生更好的结果,因此我们仅使用最近的 1/64
和 1/4
的训练数据。因此,我们从 YooChoose
数据集生成了两个数据集。
我们对数据集应用了与 NARM, RepeatNet, STAMP
中相同的预处理步骤。
baseline
方法:
传统方法:
Item-KNN
:推荐与当前 session
中 previous items
相似的 item
,其中相似度定义为 session
向量之间的余弦相似度。
session
向量:该向量长度为session
个数。对于某个item
,如果它在第 个 session
中出现,则session
向量的第位为 1
,否则为0
。
BPR-MF
:通过随机梯度下降来优化 pairwise ranking
目标函数。
FPMC
:用于 next basket
推荐的 state-of-the-art
的混合模型。
神经网络方法:
GRU4Rec
:在 session-parallel
的 mini-batch
训练过程中采用 ranking-based
的损失函数。NARM
:使用 RNN
来捕获用户的主要意图 main purposes
和序列行为sequential behavior
。STAMP
:纯粹使用注意力机制来捕获用户的通用兴趣general interest
和最近的焦点recent focus
。RepeatNet
:使用 repeat-explore
机制来考虑重复消费现象。SR-GNN
:将 session
转换为 graph
,并使用 GNN
来学习 session representation
。评估指标:
Hit@20
:next item
的 ground truth
位于预测结果的 top 20
中的 case
,占所有 test case
的占比。Mean Reciprocal Rank: MRR@20
:是 ground truth
的排名倒数 reciprocal rank
的均值。如果排名差于 20
,则排名倒数置为零。所有方法的实验结果如下表所示。
与神经网络模型相比,传统方法表现不佳,这证明传统方法不再适用于 session-based
推荐。传统方法表现不佳的一个原因是:它们没有考虑、或者仅考虑有限的序列信息。
GRU4Rec
是一种简单的单层 RNN
,可以利用整个 session
的序列信息,已经优于所有传统方法。因此,利用 session
的完整序列信息对于 session-based
推荐至关重要。
然而,我们不必遵循严格的排序。STAMP
完全忽略了 session
中除了 last item
之外的排序信息,SR-GNN
在将 session
编码为 graph
时可能会丢弃一些排序信息(例如 session
的开始和结束),但是这两种方法仍然产生竞争力的结果。
然而,这些方法的性能仍然不如 LINet
。
RNN-based
的方法 GRU4Rec, NARM, RepeatNet
在每个 session
的 item
之间都假定了严格的次序,这意味着它们很容易被局部区域中细微的次序所误导。 STAMP
和 SR-GNN
盲目地丢弃了一些重要的序列信息。相反,LINet
可以自动地在遵循严格次序和完全忽略次序之间寻求良好的平衡。如下表所示,LINet
在 YooChoose 1/64
和 YooChoose 1/4
数据集中优于所有 state-of-the-art
的方法,并且在所有数据集中的 Hit@20
指标上都有显著提高。这证明了所提出模型的有效性。
消融研究:为了测试所提出模型中的核心模块(即,local encoder
和 global encoder
)的有效性,我们提出并评估以下四个模型:
LINet-No-LE
:移除 local encoder
的 LINet
。
此时
。
LINet-No-GE
:移除 global encoder
的 LINet
。group feature
的均值作为 context embedding
LINet-No-AW
:没有注意力权重的 LINet
,即:
LINet-No-GW
:没有高斯权重的 LINet
,即:
如果没有高斯权重,那么
LINet
完全退化为attention + RNN + attention
的三层架构,它的效果好于RNN + attention
的两层架构(如NARM
)也就不足为奇了。这是不公平的比较(三层网络vs
两层网络)。
实验结果如下表所示。可以看到:
与完整模型相比,移除 local encoder
或 global encoder
的两个不完整模型在两个数据集上的性能都有显著下降,这证明了 local encoder
和 global encoder
在 LINet
中都发挥了重要作用。
local encoder
之后,LINet-No-LE
通过遵循严格的次序获取序列信息,不考虑局部不变性,因此可能会被一些无用的局部次序误导并产生错误的预测。global encoder
之后,LINet-No-GE
仅捕获局部区域的上下文信息,无法考虑 item
之间的长期依赖关系并利用有价值的序列信息。因此,session-based
推荐器有必要既捕获 session
中的序列属性sequential property
,又考虑局部不变性属性local invariance property
。
与完整模型相比,移除注意力权重或高斯权重的其它两个不完整模型的性能也更差,尽管 gap
相比移除 local encoder/global encoder
更小。
LINet-No-AW
在计算相邻 item
的权重分 group embedding
很容易受到异常值的影响。LINet-No-GW
只是计算 item
的 contextualized embedding
,而不是聚焦于局部区域。因此,在计算 group embedding
时,local encoder
具有注意力权重和高斯权重这两种权重是很重要的。
考虑局部不变性的能力:我们设计了一个额外的实验来测试模型考虑局部不变性的能力。这个想法是:评估模型在相似的 session
组成的 pair
上的表现。我们首先定义相似的 session
。
首先,我们仅使用 training session
来定义两个 item
之间的相似性,即:
其中:
training session
的数量。discounted cumulative gain: DCG
的思想。背后的直觉是:group
中的概率。两个 item
越靠近,那么概率越高。
一个特殊情况是:当 session
中彼此相邻时。如果我们假设它们之间的相对次序在这种情况下不再重要,那么 1
属于同一个 group
。
然后,我们仅选择基于神经网络的方法进行比较,因为如前所示,基于神经网络的方法在所有数据集的所有评估指标上始终优于传统方法。此外,我们排除了 GRU4Rec
和 STAMP
,因为 NARM
可以被视为 GRU4Rec
的改进版本,而 STAMP
不考虑 session
内部的任何次序。因此,我们测试的方法包括:NARM
、RepeatNet
、SR-GNN
、LINet
。
给定一个 session
序列 item
,item
组成的前缀。我们从满足以下条件的测试集中抽取所有 session
序列的 pair
last item
,即:next item
为
item
是 item pair
这里的索引指的是
item
在各自序列中出现的序号。
给定一个满足所有条件的 pair
item
,使得匹配的 item
具有相同的索引。例如,如果 position = 2
。令重新排列的序列为
如果 item
非常相似,因此 next item
为 next item
也是
这里
是通过对 进行重新排列来人工构造的,它的 label
是否还是?这里没有保证。
如果 sub-sessional level
的一些细微的位置变化。我们可以得出结论:这些变化对于 next item
没有影响。因此,我们可以说
因此,抽取到的 session
的 pair
构成了具有较大局部不变性的数据集。此外,
然后,我们评估在所有 pair
中,有多少百分比的 pair
被模型预测为:pair
中每个session
的 next item
都是位于 top-k prediction
。例如,给定一个 pair
ground-truth netxt item
都在预测的 top-k
时,我们才纳入百分比的计算。因此,为了获得良好的性能,模型需要对两个序列都产生一致且准确的预测。
与之前的实验一样,本实验中的 k = 20
。结果如下图所示。
LINet
在两个数据集中始终优于其它模型。这进一步证明了我们的模型在处理 session
中局部不变性方面具有更强的能力。item
较多,满足上述最后一个条件(即,pair
中的序列长度较短,这意味着它们包含的序列信息较少,因此更难预测。Introduction
:
RNN
模型的问题:依赖于包含了整个历史信息的一个 hidden state
,无法充分利用序列中的并行计算。因此,它们的速度在训练和评估中都受到限制。
相比之下,训练 CNN
不依赖于前一个 time step
的计算,因此允许多序列中的每个元素进行并行化。
Caser
:一个卷积序列 embedding
模型,其基本思想是:将 embedding
矩阵视为前面 image
,并将序列模式sequential patten
视为 image
的局部特征。Caser
执行最大池化操作来仅仅保留卷积层的最大值,从而增加感受野以及处理输入序列的可变长度。下图描述了 Caser
的关键架构。
Caser
的缺陷:
计算机视觉中安全使用的最大池化方案在建模长距离序列数据时,可能会丢弃重要的位置信号position signal
和循环信号 recurrent signal
。
仅为目标 item
生成 softmax
分布无法有效地使用完整的集合的依赖性 set of dependency
。
NextItNet
建模的是item
序列的联合分布(即,集合的依赖性),而Caser
建模的是单个item
的分布。
随着 session
个数和 session
长度的增加,这两个缺点变得更加严重。
Caser
缺陷的解决方案:《A Simple Convolutional Generative Network for Next Item Recommendation》
引入了一个简单的但是完全不同的 CNN-based
序列推荐模型NextItNet
,该模型对复杂的条件分布进行建模。具体而言:
首先,NextItNet
被设计为显式编码 item
相互依赖关系,这允许在原始 item
序列上直接估计输出序列的分布(而不是目标 item
)。
这不是
NextItNet
的独有优势,很多RNN-based
模型都可以做到(通过拆分为subsession
的方式)。NextItNet
的优势在于速度(训练速度、推断速度)。
其次,NextItNet
没有使用低效的大滤波器,而是将一维空洞卷积层 1D dilated convolutional layer
堆叠在一起,从而在建模远程依赖时增加感受野。因此在 NextItNet
的网络结构中可以安全地删除池化层。
值得注意的是,虽然空洞卷积dilated convolution
是为图像生成任务中的稠密预测dense prediction
任务而发明的,并已被应用于其它领域(如,声学任务,翻译任务),但是它在具有大量稀疏数据的推荐系统中尚未得到探索。
此外,为了更容易优化 deep generative architecture
,NextItNet
使用残差网络通过残差块residual block
来 wrap
卷积层。据作者所知,这也是采用残差学习来建模推荐任务的首个工作。
贡献:一个新颖的推荐生成模型recommendation generative model
、一个完全不同的卷积网络架构。
相关工作:
序列推荐的早期工作主要依赖于马尔科夫链和 feature-based
矩阵分解方法。
Caser
中,作者表明马尔科夫链方法无法建模 union-level
的序列模式,并且不允许 item
序列中的 skip behavior
。sum
序列的 item vector
来建模序列。然而,这些方法不考虑 item
的顺序,也不是专门为序列推荐而发明的。最近,与传统模型相比,深度学习模型展示出 state-of-the-art
的推荐准确性。此外,RNN
几乎在序列推荐领域占据主导地位。例如,GRU4Rec
提出了一个带 ranking loss
的 GRU
架构,用于 session-based
推荐。在后续论文中,人们设计了各种 RNN
变体来适应不同的应用场景,如:
《Personalizing Session-based Recommendations with Hierarchical Recurrent Neural Networks》
。《Learning to refine text based recommendations》
。《Contextual Sequence Modeling for Recommendation with Recurrent Neural Networks》
。《A Hierarchical Contextual Attention-based GRU Network for Sequential Recommendation》
、《Neural Attentive Session-based Recommendation》
。ranking loss
函数:《Recurrent Neural Networks with Top-k Gains for Session-based Recommendations》
。相比之下,CNN-based
序列推荐模型更具挑战性并且探索较少,因为卷积不是捕获序列模型的自然方式。据我们所知,迄今为止仅提出了两种类型的、CNN-based
的序列推荐架构:标准二维 CNN
的 Caser
、旨在建模高维特征的三维 CNN
(《3D Convolutional Networks for Session-based Recommendation with Content Feature》
)。
与上述例子不同,我们计划使用有效的空洞卷积滤波器和残差块来研究一维 CNN
的效果,从而构建推荐架构。
Top-N session-based
推荐:令 user-item
交互序列(或 session
),也可记做 item
在长度为
序列推荐的目标是:寻找一个模型,使得对于给定的前缀 item
序列 prefix item sequence
item
生成 ranking
或分类分布 classification distribution
item
。其中:
item
作为该 session
的第 item
的可能性。item
的规模。在实践中,我们通常从 top-N
个 item
来提供推荐,称作 top-N session-based
的推荐。
Caser
的局限性:Caser
的基本思想是:通过 embedding look-up
操作将前面的 item
嵌入为一个矩阵 (a)
所示。矩阵的每个行向量对应一个 item
的潜在特征。embedding
矩阵可以视为 item
在 image
。
直观而言,在计算机视觉中成功应用的各种 CNN
模型都可以用于对 item
序列构建的 image
进行建模。但是,序列建模和图像处理有两方面的区别,这使得 CNN-based
模型的使用不是很直接:
item
序列可能会产生大量不同大小的 image
,而传统的具有固定大小滤波器的卷积架构可能会失败。3 x 3
和 5 x 5
,不适用于序列 image
,因为这些小的滤波器(就行方向而言)无法捕获 full-width embedding vector
的 representation
。为了解决上述限制,Caser
中的滤波器通过大滤波器滑过序列 image
的完整列。也就是说,滤波器的宽度通常与输入 image
的宽度相同。高度通常是一次滑动 2 ~ 5
个 item
。不同大小的滤波器在卷积后会生成可变长度的 feature map
(如下图 (b)
)。为了确保所有 feature map
具有相同的大小,Caser
对每个 feature map
执行最大池化(仅保留每个 feature map
的最大值),产生一个 1 x 1
的 feature map
(如下图 (c)
)。最后,这些来自所有滤波器的 1 x 1
的 feature map
被拼接起来构成一个特征向量,然后是一个 softmax layer
(如下图 (d)
)。
注意,我们省略了垂直卷积,因为它无助于解决下面讨论的主要问题。
基于以上对 Caser
中卷积的分析,我们发现可能存在的几个缺陷:
feature map
中的重要特征是仅出现一次还是出现多次,并且忽略了重要特征出现的位置。在图像处理中安全使用的最大池化算子可能对建模远程序列有害。Caser
中的仅适用于一个 hidden
卷积层的浅层网络结构在建模复杂关系或远程依赖时可能会失败。next item
的生成过程。我们将在后文中详细描述。为了解决上述局限性,我们引入了一种新的概率生成模型,该模型由堆叠的一维卷积层组成。一般而言,我们提出的模型在几个关键方面与 Caser
有根本的不同:
item
的分布,而不仅仅是 last item
的分布。这里介绍一个简单的、但是非常有效的生成模型generative model
,该模型直接对先前交互 item
的序列进行操作。我们的目标是估计原始 item
交互序列上的联合概率分布。
令 item
序列
其中:
session
中第一个 item
的概率。item
item
NADE
,PixelRNN/CNN
在生物领域和图像领域都探索了类似的设置。
因为
建模联合概率,因此它是生成模型。而 GRU4Rec
建模条件概率,因此它是判别模型。
我们通过堆叠一维卷积网络来建模 user-item
交互的条件分布。具体而言,网络接收
这是一个典型的
seq-to-seq
的自回归模型。注意,虽然网络接收作为输入,但是在预测位置 的输出时,只能看到位置 之前的输入。
例如,如下图所示,Caser, GRU4Rec
),它们仅建模单个条件分布 Caser
这样的模型仅估计 next item
softmax
),而我们的生成方法估计 item
的分布。
生成过程的对比如下:
其中:predict
。
显然,我们的模型在捕获所有序列关系的集合方面更有效,而 Caser
和 GRU4Rec
未能显式地建模
在实践中,为了解决这个缺点,Caser
和 GRU4Rec
这类模型通常会生成很多子序列 subsession
,用于通过数据增强技术(如,填充、拆分、或移位input
序列)进行训练,如以下公式所示(NARM
、HRNN
、Caser
、3D-CNN
):
虽然有效,但是由于每个 subsession
的单独优化,上述生成 subsession
的方法无法保证最佳结果。此外,单独优化这些 subsession
将会导致相应的计算成本。本文实验部分也进行了详细的比较。
,因此可以将 session
的联合概率的最大似然,分解为每个subsession
的条件概率的最大似然。由于线性关系,因此每个subsession
是可以单独优化的。
NextItNet
是CNN-based
,因此可以在所有subsession
中并行地、共享地利用卷积计算结果,所以它的优势在于计算效率,而不是作者提到的联合优化。
Embedding Look-up Layer
:给定一个 item
序列 lookup table
检索前面 item
item embedding
堆叠在一起。假设 embedding
维度为 inner
通道数,这将导致大小为 item
对应于 embedding
向量
注意,与 Caser
在卷积期间将输入矩阵视为二维 image
不同,我们提出的架构通过一维卷积滤波器来学习 embedding layer
,我们将在后面描述。
Dilated layer
:如上图 (a)
所示,标准滤波器只能通过以网络深度呈线性关系的感受野来进行卷积。这使得处理long-range
序列变得困难。与 WaveNet
类似,我们使用空洞卷积来构建所提出的生成模型。
空洞卷积的基本思想是:通过使用零值的空洞来将卷积滤波器应用于大于其原始长度的区域。因此,由于使用更少的参数所以它更高效。另一个好处是,空洞卷积可以保留输入的空间维度,这使得卷积层和残差结构的堆叠操作更加容易。
常规卷积通过
padding
也可以保留输入的空间维度。因此,保留输入空间维度并不是空洞卷积的优势。
上图展示了所提出的序列生成模型在标准卷积和空洞卷积上实现时,模型之间的对比。(b)
中的空洞因子 dilation factor
是:1 / 2 / 4 / 8
。
令感受野大小为
给定空洞因子 location
则item
序列
为了防止信息泄露,这里仅使用左侧的数据点来进行卷积。
其中:
location
embedding
矩阵。 显然,空洞卷积结构更有效地建模long-range
的 item
序列,因此在不使用更大的滤波器或模型变得更深的情况下更有效。
如果把
替换为注意力系数,那么一维空洞卷积就变成了传统的 attention-based
聚合操作(并且使用长度为的截断)。
在实践中,为了进一步增加模型容量和感受野,需要堆叠多次一维空洞卷积层,如
一维变换 One-dimensional Transformation
:尽管我们的空洞卷积算子依赖于二维输入矩阵 embedding
输入进行建模,我们执行了一个简单的 reshape
操作,这是执行一维卷积的先决条件。
具体而言,将二维矩阵 reshape
为大小为 image
的通道,而不是 Caser
中标准卷积滤波器的宽度。
下图 (c)
说明了 reshape
的过程。
虽然增加网络层的深度有助于帮助获得higher-level feature representation
,但是也容易导致梯度小的问题,这使得学习过程变得更加困难。为了解决退化问题degradation problem
,深度网络引入了残差学习。
残差学习的基本思想是将多个卷积层作为一个 block
堆叠在一起,然后采用 skip connection
将前一层的特征信息传递到后一层。skip connection
允许显式拟合残差映射(而不是原始的恒等映射),这可以维持输入信息从而增大传播的梯度。
假设所需要的映射为 block
拟合另一个映射:
所需要的映射现在通过逐元素加法重写为:ResNet
中所证明的,优化残差映射
受到 《Identity mappings in deep residual networks》
和 《Neural machine translation in linear time》
的启发,我们在下图 (a)
和 (b)
中引入了两个残差模块。
在 (a)
中我们用一个残差块residual block
来 wrap
每个空洞卷积层(即,Masked 1 x 3
),而在 (b)
中我们用一个不同的残差块来 wrap
每两个空洞卷积层。也就是说,对于 (b)
中的 block
的设计,输入层和第二个卷积层通过 skip connection
来连接。
具体而言,每个 block
都由归一化层、激活(例如 ReLU
)层、卷积层、 skip connection
以特定的顺序组成。在这项工作中,我们在每个激活层之前采用了 state-of-the-art
的 layer normalization
,因为与 batch normalization
相比,它非常适合序列处理和在线学习。
(a)
中的 residual block
由三个卷积滤波器组成:一个大小为 1 x 3
的空洞卷积滤波器和两个大小为 1 x 1
的常规滤波器。引入 1 x 1
滤波器主要是改变feature map
的通道数,从而减少 1 x 3
卷积要学习的参数。
1 x 1
滤波器(靠近图 (a)
中的输入 1 x 1
滤波器进行相反的变换从而保持下一次堆叠操作的空间维度。(b)
中的 residual block
包含两个卷积滤波器,它们都是 1 x 3
的空洞卷积滤波器。这里没有 1 x 1
的常规滤波器。并且 input
之后没有跟随 Normalization
。
为了展示 (a)
中的 1 x 1
滤波器的有效性,我们计算了 (a)
和 (b)
中的参数数量。为简单起见,我们忽略了激活层和归一化层。正如我们所见:
(b)
中,由于没有 1 x 1
滤波器,所以 1 x 3
滤波器的参数数量为:(a)
中,要学习的参数数量为:(a)
和 (b)
中的残差映射的公式为:
其中:
ReLU
层,layer-normalization
。1 x 1
卷积的权重权重函数。1 x 3
大小的 l-dilated
卷积滤波器的权重函数。注意,为了简化公式,这里省略了偏置项。
Dropout-mask
:为了避免未来信息泄露的问题,我们为一维空洞卷积提出了一种 masking-based
的 dropout
技巧,从而防止网络看到未来的 item
。具体而言,在预测
因为默认的卷积操作会以当前位置为中心,同时使用左侧和右侧的数据点。
如图所示,我们的 dropout-masking
操作有两种方式(假设卷积核大小为
padding & masking
:如图 (d)
所示,在输入序列左侧填充 CNN
的 padding
填充),并在卷积时 masking
卷积窗口右侧部分。
shifting & padding
:如图 (e)
所示,将输出序列左移
这种方法
(e)
中的方法很可能导致序列中的信息丢失,特别是对于短序列。因此,在这项工作中我们在 (d)
中应用填充策略。
如前所述,卷积架构的最后一层中的矩阵(由 item
的概率分布,其中 top-N
推荐。
为此,我们可以简单地在最后一个卷积层之上再使用一个 1 x 1
卷积层,滤波器大小为 item
总数。遵从一维变换过程,我们得到想要的输出矩阵 softmax
操作之后的每个行向量表示 categorical distribution
,
优化的目标是最大化训练数据关于 item
的二元交叉熵损失之和。对于具有数千万个 item
的实际推荐系统,可以应用负采样策略来绕过 full softmax
分布的生成,其中 1 x 1
卷积层被一个具有权重矩阵 sampled softmax
或kernel based sampling
。经过适当调优的采样大小,这些负采样策略的推荐准确性与 full softmax
方法几乎相同。
这里,
1 x 1
卷积层和全连接层几乎是等价的,所以替代的意义是什么?读者认为这里表述有误,应该是,其中 为负采样的规模。但是,这种负采样方法是一种全局负采样,即每个 output
都采样相同的一组负样本。另外,这里没有把
input emebdding
和 output embedding
进行共享,导致模型可能发生过拟合。
预测阶段:为了与现有模型进行比较,我们仅预测 next item
,然后停止生成过程。然而,该模型能够简单地通过将预测的 next item
(或序列)输入网络来预测下一个,从而生成一个预测序列,因此是序列生成模型。这与大多数现实世界的推荐场景相匹配。在这些场景中,当观察到当前 action
时,紧跟着 next action
。
但是在训练和评估阶段,所有 time step
的条件预测都可以并行进行,因为完整的输入 item
序列
出于比较的目的,我们没有在我们的模型或 baseline
中考虑其它上下文。然而,我们的模型可以灵活地结合各种上下文信息。例如,如果我们知道 user id
location
其中:user embedding
,location
的 location matrix
。
我们可以通过逐元素操作(如乘法、加法、或拼接)将
数据集:
Yoochoosebuys: YOO
:来自 RecSys Challenge 2015
。我们使用购买数据集进行评估。对于预处理,我们过滤掉长度小于 3
的 session
。同时,我们发现在处理后的 YOO
数据中,96%
的 session
长度小于 10
,因此我们简单地删除了长度大于等于 10
的 session
(占比 4%
),并将其称作 short-range
序列数据。
Last.fm
:我们从该数据集中分别随机抽取 20000
和 200000
首歌曲,分别称作 MUSIC_M
数据集和 MUSIC_L
数据集。
在 Last.fm
数据集中,我们观察到大多数用户每周听音乐数百次,而有的用户甚至一天内听了一百多首歌曲。因此,我们能够通过切分这些 long-range
的听歌 session
来测试我们的模型在 short-range
和 long-range
序列上的性能。
在 MUSIC_L
中,我们定义最大 session
长度 5 / 10 / 20 / 50 / 100
(每种长度定义一个数据集),然后提取每 item
作为我们的输入序列。这是通过在整个数据集上滑动一个大小和步长为 item
之间的时间跨度超过 2
小时的 session
。这样,我们创建了 5
个数据集,称之为 RAW-SESSIONS
。此外,MUSIC_M5
和 YOO
也是 RAW-SESSIONS
。我们将这些 RAW-SESSIONS
数据随机划分为训练集、验证集、测试集,划分比例为 50%-5%-45%
。
是否要根据时间跨度来切分?这种滑动窗口的方法会导致一些
session
内部的item
之间,存在较大的时间跨度。此外,这里训练集太小,测试集太大?
如前所述,Caser
和 GRU4Rec
的性能对于长序列输入应该会显著降低,例如当 Caser
和 GRU4Rec
将使用 item
相互依赖关系。为了弥补这个缺陷,当 NARM
和 《Improved recurrent neural networks for session-based recommendations》
,通过从 RAW-SESSIONS
的训练集中手动创建额外的 session
,以便 Caser
和 GRU4Rec
可以在很大程度上利用 full dependency
。假设 session
将通过填充头部和移除尾部从而创建 45
个 sub-session
,即:
关于 MUSIC_M
,我们仅展示
我们在下表中展示了 RAW-SESSIONS
和 SUB-SESSIONS
(即 SUB-SESSIONS-T
)的训练数据集的统计信息。
为什么对于
YOO, MUSIC_M5, MUSIC_L5
,SUB-SESSIONS-T
反而要比RAW-SESSIONS
更少?读者猜测,这里SUB-SESSIONS-T
不包含原始的RAW-SESSIONS
,因此真实训练集是二者的并集。
配置:
所有模型均使用 TensorFlow
在 GPU(TITAN V)
上进行训练。
baseline
方法的学习率和 batch size
是根据验证集中的性能手动设置的。
对于所有数据集,NextItNet
使用 0.001
的学习率和 batch size = 32
。
如果没有特别的说明,那么所有模型的 embedding
大小
我们报告了使用残差块 (a)
和完整 softmax
的结果,我们也独立地验证了 残差块 (b)
的性能结果。
残差块
(a)
:每个残差块来wrap
每个空洞卷积层。残差块
(b)
:每个残差块来wrap
每两个空洞卷积层。
为了进一步评估两种残差块的有效性,我们还在另一个数据集中测试了我们的模型,即 Weishi
。与没有残差块的相同模型相比,improvement
大约是两倍。
评估指标:Mean Reciprocal Rank: MRR@N
、Hit Ratio: HR@N
、Normalized Discounted Cumulative Gain: NDCG@N
。5
和 20
。
我们评估测试集中每个序列的 last item
的预测准确性。
论文这里省略了
baseline
的介绍。
所有方法的总体性能如下表所示。可以看到:神经网络模型(即,Caser, GRU4Rec, NextItNet
)在 top-N
序列推荐任务中获得了非常有前景的准确性。
例如,在 MUSIC_M5
数据集中,三个神经网络模型在 MRR@5
上的表现比广泛使用的 baseline MostPop
好 120
倍以上。在这个数据集中,我们通过 NextItNet
获得的最佳 MRR@20
结果是 0.3223
,这大致意味着目标 item
在 20000
个候选 item
中平均排名第 3
位(1/0.3223
大致等于 3
)
我们发现,在这些基于神经网络的模型中,NextItNet
在很大程度上优于 Caser
和 GRU4Rec
。我们认为有几个原因促成了这个 state-of-the-art
的结果。
首先,正如前文所强调的那样,NextItNet
充分利用了完整的序列信息。这可以在下表中轻松地验证,我们观察到没有 subsession
的 Caser
和 GRU4Rec
在 long session
中的表现非常糟糕。
此外,即使使用 subsession
,Caser
和 GRU4Rec
仍然展示出比 NextItNet
差得多的结果。因为与 NextItNet
利用完整 session
相比,每个 subsession
的独立优化显然是次优suboptimal
的。
“每个
subsession
的独立优化显然是次优suboptimal
的” 个人觉得不成立,因为本质上由于,因此联合概率分布的最大化等价于每个 subsession
单独优化的最大化。
其次,与 Caser
不同的是,NextItNet
没有池化层,尽管它也是 CNN-based
模型。因此,NextItNet
保留了原始 embedding
矩阵
第三,NextItNet
可以通过使用残差学习来支持更深的层,这更适合建模复杂的关系和长期依赖关系。我们独立地验证了残差块 (b)
的性能,并将结果展示在下表中。可以观察到:通过残差块设计可以显著提高 NextItNet
的性能。
下表展示了 embedding size
的影响。
除了推荐准确性的优势,我们还在下表中评估了 NextItNet
的效率。可以看到:
首先,NextItNet
和 Caser
在所有三个数据集中都需要比 GRU4Rec
更少的训练时间。CNN-based
模型可以更快训练的原因是由于卷积的完全并行机制。显然,具有训练速度优势的 CNN
模型更受现代并行计算系统的青睐。
其次, NextItNet
与 Caser
相比,其训练效率得到进一步的提升。更快的训练速度主要是因为 NextItNet
在训练期间利用了完整的序列信息,然后通过更少的训练 epoch
来更快地收敛。
个人觉得
NextItNet
训练速度快的其中一个原因是:卷积运算的结果在多个subsession
之间共享,所以节省了大量的计算。
为了更好地理解收敛行为,我们在下图中展示了它们。可以看到:在具有相同数量的训练 session
的情况下, 和 Caser, GRU4Rec
相比,NextItNet
的收敛速度更快。这证实了我们前面的观点,因为 Caser
和 GRU4Rec
无法充分利用 session
中的内部序列信息。
传统的推荐方法(如协同过滤)通常依赖于 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
优于包括 state-of-the-art
方法在内的九个 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
的端到端神经网络,该模型实现了 state-of-the-art
性能。
它首先在 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
在现实世界的数据集中是否优于 state-of-the-art
的 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
很大时,模型的性能开始恶化,因为模型很难通过有限的可用神经元从数据中学习。在许多在线服务中,用户的行为天然地是按时间排序的。为了预测用户未来的行为,next-item
推荐系统通过从用户的历史行为中挖掘序列模式sequential pattern
来学习用户的偏好。session-based
推荐是 next-item
推荐的一个特例。与使用固定数量的 previous action
来预测 next action
的通用 next-item
推荐系统不同,session-based
推荐系统将 user action
分组到不相交的 session
中,并使用当前 session
中的 previous action
来进行推荐。这里,session
是在时间上非常接近的 item
的一个序列。
session-based
推荐的思想来自于这样的一个观察:intra-session
的依赖关系对 next item
的影响,要比 inter-session
的依赖关系更大。具体而言,同一个 session
中的用户行为通常具有一个共同的目标(如,购买一些手机配件),而不同 session
中的用户行为的相关性较弱。用户可能在一个 session
中购买手机配件,但是在另一个 session
中购买与手机配件关系不大的商品,如衣服。因此,通用的 next-item
推荐系统可能会遇到组合不相关的 session
、以及抽取不完整的 session
这两个问题。session-based
推荐系统不存在这些问题,因此它可以做出更准确的推荐,并部署在许多在线服务中。
由于具有很高的实用价值,session-based
推荐引起了研究人员的高度重视,并在过去几年中开发了许多有效的方法。之前提出的大多数方法都是基于马尔科夫链或 RNN
。最近,GNN
变得越来越流行,并在许多任务中实现了 state-of-the-art
的性能。也有一些工作尝试将 GNN
应用于 session-based
推荐。尽管这些 GNN-based
方法取得了令人振奋的结果,并为 session-based
推荐提供了一个新的和有前途的方向,但是我们观察到这些方法中存在两个信息丢失问题information loss problem
。
现有的 GNN-based
方法中的第一个信息丢失问题称作有损lossy
的 session encoding
问题。这是由于它们将 session
转换为 graph
的有损编码方案 lossy encoding scheme
。要使用 GNN
处理 session
,需要首先将 session
转换为 graph
。在这些方法中,每个 session
都将被转换为一个有向图,边是 item
之间的转移 transition
。边可以加权或不加权。
例如,session
graph
。但是,这种转换是有损操作,因为它不是一一映射。不同的 session
graph
,因此我们无法在给定 graph
的情况下重建原始 session
。尽管在特定数据集中,这两个 session
可能产生相同的 next item
。但是也可能存在一个数据集,其中这两个 session
产生不同的 next item
。在后一种情况下,这些 GNN
模型不可能为这两个 session
都作出正确的推荐。因此,这些模型的建模能力有限。
本质上这两个
session
是不同的,而GNN-based
会为这两个session
作出相同的推荐,因为这两个session
转换后的graph
是相同的。
第二个信息丢失问题称为无效的远程依赖捕获问题 ineffective long-range dependency capturing problem
,即,这些 GNN-based
方法无法有效地捕获所有远程依赖。在 GNN
模型的每一层中,节点携带的信息沿着边传播一个 step
,因此每一层只能捕获 1-hop
关系。通过堆叠多个层,GNN
模型可以捕获多达 L-hop
关系,其中 L
等于层数。由于过拟合 overfitting
和过度平滑 over-smoothing
问题,堆叠更多层不一定会提高性能,因此这些 GNN
模型的最佳层数通常不大于 3
。因此,模型只能捕获 3-hop
关系。
然而,在实际应用中,session
长度很容易大于 3
。因此,很可能存在一些重要的、长度大于 3
的序列模式sequential pattern
。然而,由于网络结构的限制,这些 GNN-based
模型无法捕获此类信息。
为了解决上述问题,论文 《Handling Information Loss of Graph Neural Networks for Session-based Recommendation》
提出了一种新的 GNN
模型,称作 Lossless Edge-order preserving aggregation and Shortcut graph attention for Session-based Recommendation: LESSR
。下图说明了 LESSR
的工作流程:
首先,将给定的 input session
转换为一个无损编码图(称作 edge-order preserving: EOP
的 multigraph
),以及一个 shortcut graph
。
EOP multigraph
可以解决 lossy session encoding
问题,shortcut graph
可以解决无效的远程依赖捕获问题。
然后,这些 graph
和 item embedding
一起被传递给 multiple edge-order preserving aggregation: EOPA
层和 shortcut graph attention: SGAT
层,从而生成所有节点的 latent feature
。
EOPA
层使用 EOP multigraph
来捕获局部上下文信息,SGAT
层使用 shortcut graph
有效地捕获远程依赖关系。
然后,模型应用带注意力机制的 readout
函数从所有的 node embedding
中生成 graph-level embedding
。
最后,模型将 graph-level embedding
与用户最近的兴趣相结合从而生成推荐。
论文的贡献总结如下:
session-based
推荐的 GNN-based
方法的两个信息丢失问题,包括有损的 session encoding
问题、以及无效的远程依赖捕获问题。session encoding
问题,论文提出了一种将 session
转换为有向 multigraph
的无损编码方案,以及一个使用 GRU
来聚合所传播的信息的 EOPA
层。SGAT
层,该层使用注意力机制沿着 shortcut connection
有效地传播信息。GNN
模型,该模型没有信息丢失问题并且在三个公共数据中优于现有的方法。相关工作:
受到邻域模型在传统推荐任务中流行的启发,其中在传统推荐任务中 user id
可用,早期的 session-based
推荐的研究工作大多基于最近邻nearest neighbor
。这些方法需要一个相似度函数来衡量 item
或 session
之间的相似度。
《The YouTube Video Recommendation System》
提出了一种方法,该方法根据 item
的共现模式co-occurrence pattern
来计算 item
相似度,并推荐最可能与当前 session
中的任何 item
共现的 item
。《Session-based Collaborative Filtering for Predicting the Next Song》
提出了一种模型,该模型首先将每个 session
转换为一个向量,然后测量 session
向量之间的余弦相似度。《Session-based Collaborative Filtering for Predicting the Next Song》
的工作,《Improving Music Recommendation in Session-based Collaborative Filtering by Using Temporal Context》
提出在计算余弦相似度之前使用聚类方法,将稀疏的 session
向量转换为稠密向量。虽然简单有效,但是 neighborhood-based
方法存在稀疏性问题,并且未考虑 session
中 item
的相对顺序。
为了更好地捕获序列属性,人们采用了基于马尔科夫链的方法。
transition matrix
(《An MDP-Based Recommender System》
)。但是,该方法无法处理未观察到的转移模式。《Factorizing Personalized Markov Chains for Next-basket Recommendation》
中提出的 FPMC
方法,该方法使用张量分解技术来分解个性化的转移矩阵。embedding
(《Playlist Prediction via Metric Embedding》
),它将 item
嵌入到欧氏空间,并通过 embedding
的欧氏距离来估计 item
之间的转移概率。当考虑更多 previous items
时状态空间的规模很快就变得难以管理,因此大多数基于马尔科夫链的方法仅使用一阶转移来构建转移矩阵,这使得它们无法捕获更复杂的高阶序列模式。
由于强大的序列建模能力,RNN
是对上述基于马尔科夫链方法的限制的自然解决方案。
GRU4Rec
是第一个 RNN-based
的 session-based
推荐方法,它简单地堆叠了多个 GRU layer
。NARM
采用带注意力机制的混合编码器来建模用户的序列行为和主要意图。结果证明这是学习 session representation
的有效方法。NARM
工作,几乎所有后续的 RNN-based
方法都包含了注意力机制(LINet
、RepeatNet
、ISLF
)。卷积神经网络也是强大的序列建模工具。
《Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding》
提出了一种基于 CNN
的方法(即,Caser
),该方法将 item
序列嵌入到二维潜在矩阵中,并对矩阵进行水平卷积和垂直卷积从而抽取 sequence representation
。《A Simple Convolutional Generative Network for Next Item Recommendation》
提出使用空洞卷积层dilated convolutional layer
来有效地增加感受野,而不依赖于有损的池化操作,从而使模型与 GRU4Rec
和 Caser
相比更能捕获远程依赖关系。在过去的几年里,GNN
越来越受欢迎,并在许多任务中取得了 state-of-the-art
的性能。有一些工作将 GNN
应用于 session-based
推荐。
SR-GNN
首先将 session
编码为无权有向图,其中边表示 session
中的 item
转移。然后使用gated GNN: GGNN
在节点之间沿着边的两个方向传播信息。SR-GNN
,《Graph Contextualized Self-Attention Network for Session-based Recommendation》
提出了一种方法,该方法使用 GGNN
来提取局部上下文信息,并使用 self-attention network: SAN
来捕获远距离位置之间的全局依赖关系。FGNN
将 session
转换为加权有向图,其中边的权重是 item
转移的计数。它使用一个适配的multi-layered graph attention network
来抽取 item
特征,并使用一个修改过的 Set2Set
池化算子来生成 session representation
。这些 GNN-based
方法为 session-based
推荐展示了一个新的和有前景的方向。然而,正如我们即将讨论的那样,这些方法在代表了 session
有损编码的图上操作,并且它们无法有效地捕获长期依赖关系。
GNN
是直接对 graph
数据进行操作的神经网络。它们用于学习诸如图分类、节点分类、链接预测等问题的任务。这里我们仅关注图分类问题,因为 session-based
推荐可以被表述为图分类问题。
给定图 node representation
传递给 GNN
的第一层。大多数 GNN
可以从消息传递的角度来理解。在 GNN
的每一层中,node representation
通过沿着边来传递消息从而得到更新。该过程可以表述为:
其中:
node representation
。
incoming edge
集合。
message function
,它计算要从相邻节点
aggregation function
,它聚合传递给目标节点
update function
,它根据原始的 node representation
和聚合后的信息来计算新的 node representation
。
这里的消息函数、聚合函数、更新函数都与
layer-specific
的。如果层之间共享,那么这三个函数可以表示为:,即移除了上标 。
令 GNN
的层数。经过 GNN
的 final node representation
捕获了 L-hop community
内的有关图结构和节点特征的信息。
对于图分类任务,readout function
representation
来生成 graph level representation
session-based
推荐的目标是给定当前 session
的一个 item
序列(历史点击的 item
),预测用户最有可能点击的 next item
。
正式地,令 item
的集合。一个 session
item
序列,其中 time step
item
,next item
session-based
推荐系统会生成 next item
的一个概率分布,即 top
概率的一批 item
将作为候选集合用于推荐。
遵从之前的工作,我们在本文中不考虑额外的上下文信息,如 user ID
和 item
属性。item ID
被嵌入在 item feature
。这是 session-based
推荐的文献中的常见做法。
然而,很容易调整我们的方法来考虑额外的上下文信息。例如:
user ID embedding
可以作为 graph-level
的属性,并且可以附加到每一层中的 item ID embedding
。item
特征可以与 item ID emebdding
相结合,或者直接替换后者。GNN
处理 session
,必须首先将 session
转换为图。这里我们首先介绍一种叫做 S2MG
的方法,该方法将 session
转换为 EOP multigraph
。然后我们介绍另一种叫做 S2SG
的方法,该方法将 session
转换为 shortcut graph
。在 session-based
推荐的文献中,有两种常用的方法可以将 session
转换为图。
SR-GNN
提出,它将 session
转换为无权有向图 session
中的 unique item
组成,边集合 FGNN
提出。与第一种方法不同,该方法转换后的图是加权的,其中边 session
中出现的频次。在接下来的内容中,我们称第一种方法为 Session-to-Graph: S2G
,第二种方法为 Session-to-Weighted-Graph: S2WG
。
我们声称 S2G
和 S2WG
都是有损的转换方法,因为在给定转换后的图的情况下,并不总是可以重建原始的 session
。为了证明这一点,我们只需要证明 S2WG
是有损的,因为它比 S2G
捕获更多的信息,即 item transition
的出现次数。因此,S2WG is lossy
意味着 S2G is lossy
。
为了了解为什么 S2WG
是有损的,我们举一个反例如下。给定两个不同的 session
:
S2WG
将这两个session
转换为相同的图,如下图 (a)
所示。注意,我们省略了边的权重,因为它们都是 1
。因此,给定下图 (a)
中的转换后的图,我们不清楚 session
。
有损转换可能会出现问题,因为被忽略的信息对于确定 next item
可能很重要。我们应该让模型自动学习决定哪些信息可以被忽略,而不是使用有损转换方法 “盲目地” 作出决定。否则,该模型不够灵活,无法适应复杂的数据集,因为模型的建模能力受到有损转换方法的限制。
为了解决这个问题,我们提出了一种叫做 session to EOP multigraph: S2MG
的方法,该方法将 session
转换为保留了边顺序的有向 multigraph
。
对于原始 session
中的每个转移 multigraph
,因为如果存在从
然后,对于每个节点 session
中出现的时间来排序。我们通过给
首先出现在 1
。接下来出现的边,其属性值为 2
。以此类推。
例如,session
(b)
中的图,用 last item
,即session
session
的 edge-order preserving: EOP
的 multigraph
。
现在,我们通过展示如何在给定一个 EOP multigraph
(即,使用 S2MG
转换得到的图)的情况下重建原始的 session
来证明 S2MG
是一种从 session
到 graph
的无损转换方法。基本思想是:按照 item
在 session
中出现的相反顺序来恢复 item
。
我们以 last item
是被标记的节点
last item
,并且我们知道 last edge
是 item
就是 last edge
的源节点,即 item
,以此类推。通过这种方式,我们可以从图 session
graph
,可以应用相同的过程来重建原始的 session
。因此,S2MG
是一种从 session
到图的无损转换方法。
为了处理现有的 GNN-based
的 session-based
推荐模型中无效的远程依赖问题,我们提出了 shortcut graph attention: SGAT
层(见后面的内容描述)。SGAT layer
需要一个不同于上述 EOP multigraph
的输入图。这个输入图采用称作 session to shortcut graph: S2SG
的方法从 input session
中转换而来。
给定一个 session
unique item
。对于每对有序的节点 pair
pair
shortcut graph
,因为它连接了一对 item
而不经过中间的 item
。
我们还在图中添加了 self-loop
,以便稍后在 SGAT
层执行消息传递时,可以组合 update function
和 aggregate function
,这是 GAT
模型中的常见做法。
采用了
self-loop
之后,更新函数和聚合函数可以用一个统一的函数来替代。
因此,session
shortcut graph
如下图 (c)
所示。
在接下来的内容中,我们展示了 SGAT
层如何通过在 shortcut graph
上执行消息传递从而解决无效的远程依赖问题。
LESSR
的整体框架如下图所示。首先我们介绍 EOPA layer
,然后我们介绍 SGAT layer
,接下来我们描述如何堆叠这两种类型的层,然后我们展示如何获取 session embedding
。最后,我们给出了我们如何进行预测和训练。
给定从 session
无损转换的 EOP multigraph
,GNN
仍然需要正确地处理图,以便可以将不同的 session
映射到不同的 representation
。这在现有的 GNN-based
的 session-based
推荐模型中是不可能的,因为它们使用排列不变permutation-invariant
的聚合函数,忽略了边的相对顺序。因此,这些模型仅适用于边之间的排序信息不重要的数据集,这意味着这些模型的建模能力存在限制。
因为
EOP multigraph
中,每条边有一个整数属性值来保留边的相对顺序,那么将这个属性值作为聚合函数的特征(比如,position embedding
),是否就可以保留边之间的排序信息?
为了填补这个 gap
,我们提出了 edge-order preserving aggregation: EOPA
层,该层使用 GRU
来聚合从相邻节点传递的信息。具体而言,令 degree
。EOP multigraph
中边的整数属性从
其中:
GRU
的 hidden state
。初始的状态
消息函数的结果作为
GRU
的输入。
GRU
聚合器是一种 RNN
聚合器。我们选择 GRU
而不是 LSTM
,因为已经有工作表明:在 session-based
推荐任务中GRU
优于 LSTM
。尽管在现有工作中人们已经提出了 RNN
聚合器,如GraphSAGE
中提出了 LSTM
聚合器,但是应该注意到这些 RNN
聚合器的工作方式与我们的不同。
具体而言,现有的 RNN
聚合器通过对这些边的随机排列执行聚合来故意忽略入边 incoming edge
的相对顺序,而我们的 GRU
聚合器以固定的顺序执行聚合。这是因为在 session-based
推荐设置中,边自然是按时间排序的。
但是,我们要强调的是,GRU
聚合器并不是我们的主要贡献。我们的主要贡献是应用 GRU
聚合器来解决前面描述的信息丢失问题。
来自已有 GNN
模型的消息函数和更新函数可以与 GRU
聚合器一起使用,但是考虑到 GRU
强大的表达能力,我们简单地对消息函数和更新函数使用线性变换。因此,将所有内容放在一起,我们模型的 EOPA
层定义为:
其中:
这里消息函数
,更新函数 。
至于最后一个节点的信息,将在后面描述的 readout
函数中使用,以便将不同的 session
映射到不同的 representation
。
一般而言,每一层都传播一个 step
的信息,因此一层只能捕获节点之间的 1-hop
关系。为了捕获 multi-hop
关系,可以堆叠多个 GNN
层。不幸的是,这会引入过度平滑问题over-smooth problem
,即,node representation
收敛到相同的值。由于过度平滑问题通常发生在层数大于 3
时,因此堆叠多个层并不是捕获 multi-hop
关系的好方法。
此外,即使可以堆叠多个层,GNN
也只能捕获最多 k-hop
关系,其中 application
中,session
长度大于 session-based
推荐的 GNN
模型无法有效地捕获 very long range
内的依赖关系。
为了解决这个问题,我们提出了 shortcut graph attention: SGAT
层,它本质上是利用 S2SG
得到的 shortcut graph
中的边来进行快速的消息传播。
具体而言,SGAT
层使用以下注意力机制沿着 shortcut graph
中的边来传播信息:
其中:
shortcut graph
中的入边 incoming edge
集合。shortcut graph
中的边直接将每个 item
连接到其所有后续 item
,而无需经过中间的 item
。因此,shortcut graph
中的边可以看做是 item
之间的 shortcut connection
。
SGAT
层可以有效地捕获任意长度的长期依赖关系,因为它在一个 step
中沿着 item
之间的 shortcut connection
传播信息,而无需经过中间的 item
。它可以与现有的 GNN-based
方法中的原始层相结合,从而提高 GNN-based
方法捕获远程依赖关系的能力。
如何与现有的
GNN-based
方法中的原始层相结合?可以参考本文中的 “堆叠多层” 部分。
EOPA
层和 SGAT
层用于解决之前 GNN-based
的 session-based
推荐方法的两个信息丢失问题。为了构建没有信息丢失问题的 GNN
模型,我们堆叠了许多 EOPA
层和 SGAT
层。我们没有将所有 EOPA
层放在所有 SGAT
层之后,也没有将所有的 SGAT
层放在 EOPA
层之后。我们将 EOPA
层与 SGAT
层交错,原因如下:
shortcut graph
是原始 session
的有损转换,因此不断堆叠多个 SGAT
层会引入有损 session encoding
问题。SGAT
层越多,问题就越严重,因为信息丢失量会累积。
通过交错 EOPA
层和 SGAT
层,丢失的信息可以保留在后续的 EOPA
层中,SGAT
层可以仅专注于捕获远程依赖关系。
交错两种层的另一个优点是:每种层都可以有效地利用另一种层捕获的特征。由于 EOPA
层更能捕获局部上下文信息,而 SGAT
层更能捕获全局依赖关系,将这两种层交错可以有效地结合两者的优点,提高模型学习更复杂依赖关系的能力。
为了进一步促进特征重用 feature reuse
,我们引入 DenseNet
中提出的稠密连接。每层的输入由所有 previous layers
的输出特征组成。具体而言:
previous layers
输出的拼接。结果表明:具有稠密连接的深度学习模型的参数效率更高,即,用更少的参数实现相同的性能,因为每个较高的层不仅可以使用它的前一层的抽象特征,还可以使用更低层的 low-level feature
。
在所有层的消息传递完成之后,我们得到所有节点的 final representation
。为了将当前 session
表示为 embedding
向量,我们应用了SR-GNN
中提出的 readout
函数,该函数通过注意力机制聚合 node representation
来计算 graph-level representation
。
令 session
中 last item
的 final node representation
。graph-level representation
其中:
为当前 session
转换后的图的节点集合,它的规模远远小于全量item
集合,即 。
graph-level representation
捕获当前 session
的全局偏好,记做 local preference vector
,记做
然后,我们将 session embedding
计算为全局偏好和局部偏好的线性变换:
其中:
在获得 session embedding
之后,我们可以使用它来计算 next item
的概率分布从而进行推荐。
对于每个 item
embedding
session embedding
来计算一个分数:
实际上
就是节点特征向量 。
然后,next item
是 item
对于 top-K
推荐,我们可以仅推荐概率最高的 ietm
。
令 next item
的真实概率分布,它是一个 one-hot
向量。损失函数被定义为预测分布和真实分布的交叉熵:
然后,所有参数以及 item embedding
都被随机初始化,并通过端到端的反向传播来联合学习。
数据集:
Diginetica
数据集:来自 CIKM Cup 2016
。我们使用它的交易数据来进行 session-based
推荐。遵从之前的工作(NARM, STAMP, RepeatNet, SR-GNN
),我们使用最近一周的 session
作为测试集。Gowalla
数据集:是一个广泛用于 point-of-interest: POI
推荐的 check-in
数据集。遵从之前的工作(《Streaming Session-based Recommendation》,Caser
),我们保留了 top 30000
个最受欢迎的 location
,并通过 1
天的时间间隔来拆分用户的 check-in
记录从而将这些记录分组到不相交的 session
中。最近的 20%
的 session
用作测试集。Last.fm
数据集:是一个广泛用于许多推荐任务的数据集。我们将该数据集用于音乐艺术家推荐。遵从之前的工作(《Streaming Session-based Recommendation》, RepeatNet
),我们保留了 top 40000
名最受欢迎的艺术家,并将拆分间隔设置为 8
小时。与 Gowalla
类似,最近的 20%
的 session
用作测试集。遵从之前的工作(NARM, STAMP, FGNN, RepeatNet, SR-GNN
),我们首先过滤了短的 session
和低频的 item
,然后应用了NARM, STAMP, SR-GNN
中描述的数据增强技术。预处理后数据集的一些统计数据如下表所示:
baseline
方法:
Item-KNN
:一种邻域方法,它推荐与当前 session
中的 previous items
相似的 item
,其中两个 item
之间的相似度由它们的 session
余弦相似度所定义。FPMC
:一种用于 next-basket
推荐的基于马尔科夫链的方法。为了适配 session-based
推荐,我们将 next item
视为 next-basket
。NARM
:使用 RNN
来捕获用户的主要意图和序列行为。NextItNet
:一种用于 next-item
推荐的 CNN-based
方法。它使用空洞卷积来增加感受野,而且不使用有损的池化操作。SR-GNN
:将 session
转换为有向无权图,并通过 GNN
来沿边的两个方向传播信息从而提取 item
特征。FGNN
:将 session
转换为有向加权图,并使用适配的 GAT
来学习 item representation
。GC-SAN
:首先使用 GGNN
来抽取局部上下文信息,然后使用 self-attention network: SAN
来捕获全局依赖关系。配置:遵从 STAMP
和Caser
之后,对于每种方法,我们应用网格搜索并使用训练集的最后 20%
作为验证集从而找到最佳超参数。超参数的范围是:
embedding
维度 GNN-based
方法,我们也搜索层数 我们使用 Adam
优化器来训练模型,batch size
设置为 512
。我们报告每个模型在其最佳超参数配置下的结果。
评估指标:Hit Rate: HR@20
、Mean Reciprocal Rank: MRR@20
。
所有方法的实验结果如下表所示,可以看到:
包括 Item-KNN
和 FPMC
在内的传统方法的性能没有竞争力。这些方法仅基于 item
的相似性、或者仅基于 item
转移进行推荐,而不考虑其它重要的序列信息,如,当前 session
中 previous items
之间的相对次序。
所有基于神经网络的模型都大大优于传统方法,证明了深度学习技术在 session-based
推荐中的有效性。基于神经网络的模型能够捕获复杂的序列模式从而进行推荐。
然而,它们的序列建模能力并非同样地强大。
CNN-based
的方法 NextItNet
的性能低于其它 RNN-based
和 GNN-based
方法。一个可能的原因是:CNN
仅擅长捕获连续的序列模式,而不擅长捕获长期依赖。NARM
取得了具有竞争力的性能,因为它使用 RNN
来捕获序列行为以及使用注意力机制来捕获全局偏好。GNN-based
方法通常优于其它方法,这表明 GNN
为 session-based
推荐提供了一个有前途的方法。
虽然 FGNN
使用的转换方法 conversion method
比 SR-GNN
使用的方法捕获更多的信息,但是 FGNN
的性能并不优于 SR-GNN
,这表明选择强大的消息传递方案的重要性。
GC-SAN
优于 SR-GNN
,因为它使用 SAN
来捕获远距离 item
之间的全局依赖关系,展示出显式考虑长期依赖关系的有效性。
LESSR
使用强大的 EOPA
来抽取局部上下文,并使用 SGAT
来捕获任意长度的远程依赖关系,因此它可以显著优于所有的 baseline
方法,证明了所提出方法的效果。
在三个数据集中,LESSR
在 Last.fm
数据集上获得了最大的性能提升,因为这个数据集的平均长度最大,所以 LESSR
从保留边次序edge order
和捕获长期依赖关系中获益最多。
消融研究:
EOPA Layer
的有效性:为了评估 EOPA
层的有效性,我们将它与来自其它 GNN-based
方法的 message passing: MP
层进行比较,包括:来自 SR-GNN
的 GGNN
、来自 FGNN
的 WGAT
、来自 GC-SAN
的 SAN
。
我们使用前述描述的相同的 readout
函数。embedding size
设置为 96
,因为大多数模型在这个 embedding size
下实现了最佳性能。
GGNN
和 WGAT
,层数设置为 1
,并与具有一个 EOPA
层的模型进行比较。EOPA
的重要性,我们还将 EOPA
层与其修改后的变体进行了比较,该变体对入边 incoming edge
的随机排列执行聚合。换句话讲,修改后的 EOPA
层忽略了 EOP multigraph
中边的顺序属性。我们用变体 EOPA(rand)
来表示。SAN
,由于它是为与 GGNN
一起工作而设计的,因此我们比较了由 GGNN
和 SAN
组成的模型,以及由 GGNN
和 EOPA
组成的模型。结果如下表所示。每个模型都由其包含的 MP layer
的名称来表示。可以看到:
EOPA
始终优于所有其它类型的 MP layer
,证明了 EOPA
的有效性。MP layer
表现更差,因为它们使用有损编码方案将 session
转换为图,并且它们的聚合方案不考虑边的相对顺序。EOPA
和 EOPA(rand)
使用相同的编码方案,即 S2MG
,但是 EOPA
优于 EOPA(rand)
,因为 EOPA(rand)
在执行聚合时会随机排列入边 incoming edge
。因此,仅保留边顺序的转换方案是不够的。聚合方案还需要保留边顺序。SGAT Layer
的有效性:为了展示 SGAT
的有效性,我们将每个现有的 GNN-based
方法的最后一个 MP layer
替换为 SGAT layer
,并检查是否替换后是否提高了性能。
SR-GNN
和 FGNN
只有一种 MP layer
,因此将层数设置为 2
,以便修改后的模型有一个原始 MP layer
、有一个是 SGAT layer
。GC-SAN
,层数设为 3
,因为它有两种 MP layer
。LESSR
,我们比较了一个具有两层 EOPA layer
的模型,以及一个具有一层 EOPA layer
和一层 SGAT layer
的模型。emebdding size
设为 96
。由于篇幅有限,我们仅报告了 Diginetica
数据集上的 HR@20
的性能,因为它更常用于 session-based
的推荐。结果如下表所示。可以看到:替换有助于提高模型性能。这是因为原始层仅擅长捕获局部上下文信息,而不是复杂的远程依赖关系。通过 SGAT layer
替换原始层,模型捕获远程依赖关系的能力得到提升。
GC-SAN
中的 SAN
层也能够捕获远程节点之间的全局依赖关系。但是,它们在每对节点之间传播信息,这完全丢弃了原始 session
中的连接信息。相反,我们的 SGAT
层仅当 SAN layer
替换为我们的 SGAT layer
时,模型的性能提升是可以理解的。
EOPA
层和 SGAT
层的顺序:为了展示层顺序的优势,我们比较了四种模型,包括:EESS, SSEE, ESES, SESE
。每个模型包含两个 EOPA layer
和两个 SGAT layer
,其中 E
代表 EOPA layer
,S
代表 SGAT layer
,字符的顺序代表层之间的顺序。例如,EESS
有两个 EOPA layer
,后面跟着两个 SGAT layer
。
embedding size
设置为 96
,并使用残差连接。下表展示了实验结果。可以看到:
SSEE
表现最差,因为它不能利用任何一种层的优点。SESE
和 EESS
具有相似的性能,这表明交错两种层、或者将 EOPA
层放在 SGAT
层之前的好处。ESES
优于所有其它模型,证明该顺序是利用这两种层的优势的最有效方式。超参数调优:这里我们研究 embedding size
和层数如何影响所提出方法的性能。由于篇幅有限,这里我们仅给出 HR@20
的结果,如下图所示。可以看到:
增加 embedding size
或层数并不总是会带来更好的性能。
Diginetica
,最佳的 embedding size
为 32
。当 embedding size
超过该最佳值时,性能会迅速下降,因为模型过拟合。embedding size
通常会提高性能,因为较大的 embedding size
会增加模型的学习能力。如果 embedding size
小于最优值,那么随着层数的增加,模型性能先提高后下降。这是因为随着层数变大,模型的学习能力会增加。但是过多的层数也无济于事,因为会出现过度平滑的问题,即使模型没有过拟合。
因此,堆叠更多的层并不是捕获远程依赖的有效方法,而采用替代方法(如 SGAT layer
)来提高模型捕获远程依赖的能力是有意义的。
从电商平台到流媒体服务再到信息分享社区,推荐系统旨在根据用户的历史交互(如购买、浏览、以及关注)准确推断用户的偏好。next-item
推荐(根据用户的历史的序列交互来预测用户的 next action
)是一个有前景的方向,并且人们在这方面的努力最近取得了很好的成功。
一个关键问题是如何在这类模型中处理 item
。具体而言,在 next-item
推荐的某个时间段内,我们认为 item
的含义可以通过相关性correlation
来揭示,这个相关性是在短期内由用户交互user interaction
来定义的。如下图所示:
iPhone8
是在 2017
年发布并且它与其它几款最新的设备(如 Nintendo Switch
)一起购买的,表明它是当时的 hot new technology item
。
一旦像 iPhone11
这样的新版本在 2019
年发布,iPhone8
就成为一个 budget choice
,因为它可以与其它价格合理的设备一起购买(如,Nintendo Switch
的 Lite
版本,或者早先版本的 AirPods
)。
同样,我们可以推断用户 A
购买的花束是用于婚礼的,因为她还购买了通常与婚礼相关的其它 tiem
。
为了捕获 item
语义的这些变化,论文 《Next-item Recommendation with Sequential Hypergraphs》
提出在超图 hypergraph
中对这类短期 item
相关性建模,其中在超图中每个超边 hyperedge
可以连接多个节点。在这方面,虽然超图中的每个节点都表示一个 item
,但是超边可以将用户在短时间内交互的一组 item
连接起来。
然而,从 item
相关性超图item-correlation hypergraph
中抽取有表达力的 item
语义并非易事。
item
相关性不再是二元(pairwise
)的,而是三元、四元、甚至是高阶的。这种复杂的关系不能用传统的方法处理,因为这些传统方法仅关注 pairwise association
。item
语义可以通过 multiple hops
传播。例如,在上图中(2019
年 9
月),虽然不是由某个用户共同购买,但是 iPhone8
也和 Apple Lightning cable
相关(具有 2-hop
连接 )。因此,需要一种设计来有效地利用超图从而学习有表达力的 item
语义。
此外,如何为 next-item
推荐捕获 item
的动态含义是另一个挑战,因为 item
的语义会随着时间和用户的变化而变化。这种变化有助于揭示用户的偏好模式 preference pattern
。
C
在 2017
年购买 iPhone8
证明用户 C
追逐最新设备;而用户 D
在 2019
年购买 iPhone8
表明用户 D
追求性价比。尽管在这两种情况下的 item
是相同的,但是 iPhone8
的基本语义已经发生改变。item
也可以为不同的用户带来不同的含义。如上图中的用户 B
的一束鲜花可以反应家居装饰home decoration
,而用户 A
的同样一束鲜花可以反应一场婚礼。尽管在 next-item
推荐中存在将 item
视为动态 dynamic
的早期工作,但是它们通常将 item
的变化建模为时间的函数。如何捕获上述两个观点(随时间变化、以及跨用户变化)对于高质量的 next-item
推荐至关重要,但是仍然有待探索。
为了应对上述挑战,论文 《Next-item Recommendation with Sequential Hypergraphs》
提出了 HyperRec
,这是一种新颖的端到端框架,该框架具有序列超图sequential Hypergraph
从而增强 next-item
推荐。
为了解决不同时间段的短期相关性,HyperRec
根据时间戳截断用户交互从而构建一系列超图。借助超图卷积网络 hypergraph convolutional network: HGCN
,HyperRec
能够聚合具有直接或高阶连接的相关 item
,从而在每个时间段生成 dynamic embedding
。
分时间段建模,从而捕获时间变化。
为了建模历史时间段内 item embedding
的影响,HyperRec
开发了一个残差门控层residual gating layer
,从而将前一个时间段的 dynamic item embedding
和 static item embedding
相结合,从而生成 HGCN
的输入。
捕获历史时间段对于当前时间段的影响。
随着时间和用户发生变化,来自 HGCN
的 embedding
将被馈入一个 fusion layer
来生成同时包含了 dynamic item embedding
和短期用户意图short-term user intent
的final representation
,从而用于每个特定的 user-item interaction
。
在个性化的 next-item
推荐中,动态用户偏好可以从用户的交互序列中推断出来。因此,HyperRec
使用 self-attention layer
从交互序列中捕获动态用户模式 dynamic user pattern
。
从当前
session
来捕获用户变化。
在预测用户对某个 item
的偏好时,static item embedding
和 most recent dynamic item embedding
都被考虑在内。
总体而言,论文的贡献如下:
作者从两个角度研究了 item
的动态性(随时间变化、以及跨用户变化),并揭示了利用 item
之间的短期相关性来改进 next-item
推荐的重要性。
作者开发了一种具有序列超图的、新型的 next-item
推荐框架,从而生成包含 item
之间短期相关性的 dynamic item embedding
。该框架的两个特色是:
residual information
的残差门控层。fusion layer
,该层同时采用 dynamic item embedding
和短期用户意图从而用于序列模式建模 sequential pattern modeling
。通过在各种数据集上的实验,证明了所提出的模型在 Top-K next-item
推荐方面优于 state-of-the-art
模型。
相关工作:
next-item
推荐:与将用户视为静态的推荐系统相比,next-item
推荐通常在用户每次交互之后更新用户的 state
,并根据顺序地消费的 item
之间的关系来生成预测。
一些工作聚焦于没有 user id
的情况下为短期的 interaction session
提供推荐,这通常假设 session
中的 item
彼此高度相关,并且以一个强烈的意图intent
为中心。
另一类研究使用跨较长时间的历史 item
序列来建模用户偏好。
开创性的工作采用马尔科夫链(《Factorizing personalized markov chains for next-basket recommendation》
)和基于翻译的方法(《Translation-based recommendation》
)来建模用户序列交互的 item
之间的转移 transition
。
最近,人们在应用不同的神经网络从用户的序列行为中捕获用户的动态偏好dynamic preference
方面做出了很多努力。
GRU4Rec
利用 GRU
来研究用户的序列交互。GRU4Rec+
(《Recurrent neural networks with top-k gains for session-based recommendations》
)作为 GRU4Rec
的修改版本,它具有新设计的一族损失函数从而用于 Top-K
推荐。Caser
和 NextItNet
采用卷积神经网络来捕获用户历史交互的序列模式 sequential pattern
。SASRec
利用 self-attention layer
从而从历史交互中抽取用户偏好。然而,这些方法侧重于建模序列模式而没有考虑时间效应 temporal effect
,从而导致在不同时间段或来自不同用户的相同交互产生相似的 latent representation
。
先前有一些工作聚焦于推荐系统设计中的时间效应。
TimeSVD++
中,为了保持时间动态,他们训练了各种 SVD
模型从而在不同时间段进行评分。item
都随着时间的推移而演变,《Coupled Variational Recurrent Collaborative Filtering》
、《Recurrent Recommendation with Local Coherence》
、《Recurrent recommender networks》
中的工作利用并行 RNN
分别建模用户序列模式和 item
序列模式,并旨在预测用户将如何在不同的时间戳来对 item
进行评分。《Recurrent coevolutionary latent feature processes for continuous-time recommendation》
建议使用结合 RNN
和 point proess
的模型来为用户和 item
生成 co-evolutionary
的 feature embedding
。这些方法是为显式反馈序列 explicit feedback sequence
(如,评分)而设计的,需要依赖精确的时序信息。因此,它们不适合处理具有隐式反馈和稀疏时间戳的场景。
Neural Graph-based
推荐:随着 neural graph embedding
算法的最新进展,人们越来越关注在各种推荐场景中利用图结构。其中许多工作利用静态图中的高阶链接从而为 user
或 item
生成丰富的 latent representation
。
GNN
来研究用户之间的社交联系,从而建模社交网络中用户偏好的传播。PinSage
提出使用 item-item
链接构建的图上生成 item embedding
,从而用于下游推荐。user-item
交互图(《Graph convolutional matrix completion》
、《Neural Graph Collaborative Filtering》
),他们基于 user-item
交互从而构建了一个链接了 user
和 item
的静态图。然而,这些方法并不是为捕获推荐系统中的序列模式而设计的。
temporally dynamic pattern
,《Temporal recommendation on graphs via long-and short-termp reference fusion》
提出了 Session-based Temporal Graph: STG
,从而在一个图中链接 user, item, session
。通过从不同类型的节点(user/session
)开始的随机游走过程,它能建模用户的长期偏好和短期偏好从而用于推荐。《Session-based Social Recommendation via Dynamic Graph Attention Networks》
的工作包括一个用于捕获动态用户行为的 RNN
、以及一个用于建模 static user-user graph
上的社交影响力 social influence
的 graph attention layer
。SR-GNN
建议使用 session
序列来构建 session graph
,然后使用 GNN
从这些 session graph
中抽取 item co-occurrence
。它基于 session
中 item embedding
的注意力聚合 attentive aggregation
从而生成 next-click prediction
。超图hypergraph
:超图是常规图的推广,其中每个超边 hyperedge
可以编码各种数量的对象之间的相关性。超图已被用于统一各种类型的内容从而用于 context-aware recommendation
。在建模各种类型对象之间的相关性方面,早期的工作应用超图来辅助传统的协同过滤从而融合上下文信息。
《Music recommendation by unified hypergraph: combining social media information and music content》
中,为了融合社交关系和音乐内容从而用于音乐推荐,他们提出使用超图来建模 music social community
中各种类型的对象(如,user, group, music track, tag, album
)之间的关系。《News recommendation via hypergraph learning: encapsulation of user behavior and news content》
的工作使用超图来建模 reader, article, entity, topic
之间的相关性,从而用于个性化新闻推荐。这些方法是根据特定社区的属性而设计的,无法轻易地推广到其它的 next-item
推荐的任务。
Motivation
:这里我们对来自三个在线平台(Amazon, Etsy, Goodreads
)的数据进行初步调研。我们同时从长期和短期的角度探讨 item
的动态模式 dynamic pattern
以及 item
之间的相关性。
item
经常出现和消失:
首先,我们检查了 Etsy
中 item
的“生命周期”(lifecycle
)。Etsy
是销售手工制品的最大电商平台之一。在下图 (a)
中,我们总结了 Etsy
上列出的所有 item
从 2006
年到 2018
年的活跃时间(即,从第一次购买和最后一次购买之间的时间 gap
)。
我们发现 Etsy
中超过一半的商品在不到一年的时间内就成为 inactive
(即,断货或被升级的型号所取代)。在其它在线平台上也可以找到类似的模式。随着 item
的频繁出现和消失,短期关系short-term relationship
可能对 item
建模至关重要。因为从长期角度来看,item
之间的关系是不稳定的。
item
的热门程度随着时间的推移而迅速变化:
其次,我们检索了 2001
年到 2005
年每个月在 Amazon
上的 Bestsellers
(即,在购买排名 top 1%
的商品)。然后我们计算每个月的 Bestsellers
列表和一个月后/两个月后/三个月后/或者更长时间之后的 Bestsellers
列表之间的 Jaccard Similarity
,结果如图 (b)
所示。
Bestsellers
的交集仅有 30%
左右。Bestsellers
之间几乎没有交集(accard similarity
小于 10%
)。由于一个 item
的热门程度可以反应社区对该 item
的看法,而 Bestsellers
列表随时间的变化表明:社区中 item
的含义可以随时间变化。
item
共现随时间变化:
最后,我们转向 Goodreads
中的 item
。Goodreads
是一个平台,在该平台上用户分享他们对书籍的想法。每个用户都有一个交互的 item
序列,其中用户以时间顺序对序列中的 item
进行评分、tagging
、或者评论。我们根据时间戳(按年份)拆分这些交互的 item
序列,并使用不同年份的序列训练不同的 item embedding
模型。具体而言,我们采用 word2vec
根据 item
的共现来生成 book embedding
。基于这些 embedding
,我们找到了每本书在不同年份的 top-10
邻居。然后我们计算每本书在 2012
年的邻居与 1 ~ 5
年后的邻居之间的 Jaccard similarity
,并在下图 (c)
中展示平均结果。
我们发现:书籍的 2012
年邻居和 2013
年邻居之间的相似度为 40%
,并且随着时间间隔越大而相似度越低。即,item
之间的关系随着时间的推移而变化,时间间隔越长,则变化越大。
综上所述,从长期角度来看,item
之间的关系正在发生变化,从而导致 item
语义的变化。因此,这些启发了我们利用 item
之间的短期相关性,同时建模它们的动态模式从而用于 next-item
推荐。
Question
:我们提出了一种新颖的端到端的 next-item
推荐框架(即,HyperRec
),该框架利用了序列超图sequential hypergraph
从而融合了短期的 item
相关性,同时建模随时间的动态dynamics over time
和跨用户的动态dynamics across users
。我们的 HyperRec
围绕三个指导性的研究问题来展开:
RQ1
:如何定义超图结构中的 item
之间的相关性,以及如何通过考虑 item
之间的 multi-hop
链接从而将短期 item
相关性有效地融合到 dynamic item embedding
中?
即,如何定义和捕获
item
之间的相关性。
RQ2
:历史的 item
的意义可以暗示它们未来的特性,但是如何将不同时间段的 embedding process
联系 link
起来,以及连续时间段之间的 residual information
如何流动?
即,如何考虑历史的
item
信息。
RQ3
:如何将短期用户意图与 dynamic item embedding
融合从而表达用户交互序列中的每个交互,以进行动态用户偏好建模?
即,得到的
dynamic item embedding
怎么用。
令 item
的集合。我们考虑 item
列表按照时间顺序排序为 item
这里的序列指的是比
session
更长的序列,称作sequence
。如果仅仅是session
,那就没有必要划分时间段了。这也意味着我们必须知道
user id
,否则没有办法获取用户所有的历史交互数据。因此该方法难以应用到匿名的场景中。
每个 item
static latent embedding
item
的 static latent embedding
构成 static embedding
矩阵 static embedding
对于不同的用户和不同的时间戳而言是不变的。
next-item
推荐的目标是:给定用户 item
。
由于用户在短时间内购买的 item
是相关的,因此定义item
之间的适当链接appropriate connection
是至关重要的。用户可能与不同数量的 item
进行交互,而传统的图结构通常仅支持 item
之间的 pairwise
关系,因此不适合这种情况。因此,我们提出使用超图来建模这种短期相关性。
在超图中,多个 item
可以与一条超边hyperedge
链接。例如下图中,2017
年 9
月的超图由 7
个节点(即,item
)和 3
条超边组成。用户 A
购买的三个 item
通过一条超边链接在一起。此外,除了超图中的直接链接之外,item
之间的高阶链接也可以暗示它们之间的相关性。例如,下图中(2019
年 9
月),虽然不是由同一个用户购买,但是 iPhone8
也与 Apple Lightning caple
有关因为它们之间存在 2-hop
链接。
使用超图卷积网络 hypergraph convolutional network: HGCN
,我们可以利用直接链接和高阶链接来提取 item
之间的短期相关性。同时,一个 item
不应该被视为在不同时间段是不连续discrete
的,因为 item
过去的特征可以暗示它未来的特征。例如,虽然 iPhone8
在上图中从 2017
年到 2019
年在含义上发生了根本性的变化,但是它在 2019
年的 representation
应该继承了 iPhone8
在 2017
年的 representation
的一些特性。
接下来,以超图为主要的拓扑结构,我们将讨论如何有效地生成这种动态的 item representation
,并同时考虑 item
在短期内的相关性和不同时间段之间的联系 connection
。
短期超图 Short-term Hypergraph
:为了捕获不同时间段的 item
相关性,我们可以根据时间戳将 user-item
交互拆分为多个子集。令 user-item
交互来构建的:
item
。
user
。
一个超边代表一个
sequence
,有多少个sequence
就有多少个超边。通常一个sequence
对应于一个用户的所有历史行为序列(比session
更长),因此类似于在 期间进行交互的所有 user
。因此,有多少个用户就有多少个超边。
每个 incidence matrix
item
给出的是节点到用户之间的关系。
每个
在这项工作中,我们让所有超边共享相同的权重并让
给出的是用户到用户之间的关系,这里 就是单位矩阵。
定义 degree matrix
,即:
节点
的 degree
等于它连接的所有用户的加权和,权重由(连接的权重)和 (超边的权重) 指定。 超边
的 degree
等于它连接的所有节点的加权和,权重由(连接的权重)指定。
在不同的时间段,会有一组不同的 user-item
交互,从而导致拓扑结构变化的超图。我们的目标是通过捕获 item
相关性,从而从每个短期的超图中抽取 item
语义。
不同的时间段除了能够捕获随时间变化的语义之外,还能够降低超图的规模从而有利于内存。如果不区分时间段,那么超图会包含所有的用户(即,超边),可能需要很大的内存来处理。
超图卷积网络 Hypergraph Convolution Network: HGCN
:在每个时间段,我们的目标是利用 item
之间的相关性来实现它们的 temporally dynamic embedding
,其中在这个短的时间段内,相关的 item
应该彼此接近。为了实现这一点,一个 item
应该从它的所有相邻 item
中聚合信息(即,latent representation
)。这天然地符合卷积运算的假设,即,应该在被链接的 item
之间进行更多的传播。
鉴于 latent representation
初始的
latent representation
是通过残差门控组件得到的,其中该组件会利用前一个时间段的 HGCN
得到的dynamic item embedding
。
其中:
ReLu
)。上式的括号内可以重新组织为:
。 其中:
- 内层:对于每条超边
,聚合它包含的所有节点 representation
。其中权重为(这里设定为 0/1
的二元值),并且节点representation
经过的线性投影。 - 外层:聚合节点
所属的所有超边,其中权重为 。由于本文中 设置为 1
,因此权重等于(为 0/1
二元值)。可以看到,这里可以视为一个异质图的
meta-path
,即V-E-V
,其中异质图包含两种类型的节点:V
为超图中的节点、E
为超图中的超边(作为异质图中的节点)。因此这里考虑的是超图节点之间的一阶关系。
这个卷积操作将对每条超边进行编码:首先聚合每条超边包含的所有节点信息到该超边,然后聚合目标节点所在的每条超边的信息从而得到该节点的 embedding
。
对于不同的目标节点,第一步是共享的(即,聚合每条超边包含的所有节点信息到该超边)。
我们可以将这个卷积过程表示为矩阵形式:
为了防止堆叠多个卷积层引起的数值不稳定性,我们需要添加堆成归一化。最终我们得到:
这里 one-hop
邻居来更新节点从而用于单层 hypergraph convolutional layer
。我们可以堆叠多个卷积层从而聚合来自超图中高阶邻居的信息。在这样的 hypergraph convolutional network: HGCN
中,第
从第 embedding
,从而捕获超图中 item
相关性的传播。而在不同的时间段 dynamic item embedding
反映了不同时间段的短期相关性。
超图卷积网络和传统的
GCN
的核心区别在于:超图卷积网络在信息传递时,传递了整个用户(即,超边)的信息,即:其中节点
到节点 之间不仅传递了节点 的信息,还传递了节点 所属超边的信息( high-level
的)。相比较而言,传统
GCN
在节点到节点 之间仅仅传递了节点 的信息。
残差门控 Residual Gating
:虽然 item
正在发生改变,但是 item
在不同时间段的特征之间仍然存在联系。 item
的某些特征会从上一个时间段保留到下一个时间段。例如,item
可能具有一些平滑变化、或者始终不变的固有特征。为了将 residual information
从先前的时间段传播到未来,我们引入了 residual gating
从而将 dynamic embedding
与 static embedding
拼接来产生每个节点的 initial embedding
。item
initial embedding
可以计算为:
其中:
gate
的转换矩阵和转换向量,是待学习的参数。tanh
非线性激活函数。item
dynamic embedding
。如果 item
residual component
并让 item
static embedding
。residual information
信息的比例。通过这个 residual gating
,我们按时间顺序连接超图,从而得到 HyperRec
的主要组件:序列超图 sequential hypergraph
(如下图所示)。在每个时间段,每个 item
都将从 static item embedding
以及来自过去的 residual information
来初始化。然后,HGCN
可以结合短期 item
相关性来生成有表达力的 dynamic item embedding
。
使用残差门控的一个局限性在于:不同时间段的超图需要串行地计算而无法并行计算,因此计算速度会更慢(相比较于并行计算)。
短期用户意图 Short-term User Intent
:如下图所示,短期用户意图可以根据用户在特定时间段内交互的所有 item
中推断出来。这天然地属于超边的定义,超边完全解释了用户在短期内交互的所有 item
。具体而言,我们可以通过以下操作聚合每个超边上的 dynamic node embedding
来推断每个用户的短期意图:
这里用到的是每个节点
在 HGCN
中最后一层(即,第层)的 dynamic item embedding
。
结果矩阵
这里的
user
实际上指的是sequence
,它是比item
更高level
的概念。
融合层 Fusion Layer
:然后,我们希望将 dynamic item embedding
和短期用户意图结合起来,从而更好地表达序列中的每个交互。我们提出如下融合层来生成 user
item
representation
:
其中:
item
static item embedding
,item
dynamic item embedding
。现在
包含了几个部分:静态部分(由 给出)、时间动态性(由 给出)、用户动态性(由 给出)。
为了避免过拟合,在训练期间,对于在与我们想要预测的 item
所相同时间段内发生的交互,我们将 fusion layer
从而生成
这是因为:如果使用
和 ,则由于它们使用了超边,而超边可能包含了需要预测的 next item
,因此会发生信息泄露。
self-attention
:我们采用 self-attention
作为基础模型来捕获交互序列中的动态模式。item
embedding
。
即,现在我们有了更优表达力的
item embedding
,因此需要获得当前时刻的用户偏好。
假设我们有用户 position
position embedding
,用于刻画顺序信息。
给定 embedding
序列 self-attention
旨在根据序列中每个元素与最后一个元素 aggregation
。其中,
其中:embedding
维度。
attentive aggregation
可以计算为:
其中:
生成的 item
交互之后的动态偏好 dynamic preference
。
在预测用户对 item
的偏好时,我们应该同时考虑 dynamic item embedding
和 static item embedding
:
其中:
dynamic user preference
。dynamic item embedding
。 这里并没有使用交互的
representation
,因为这里要预测的就是:对于候选 item
,用户是否 是否会与之交互。
为了训练模型,我们采用 Bayesian Pairwise Loss
,其中我们假设用户更喜欢该用户交互过的 item
而不是未交互过的 item
。损失函数为:
其中:
L2
正则化,sigmoid
函数。ground truth tuple
item
item
item
(负样本)。数据集:我们遵从先前的工作(SASRec
、BERT4Rec
)一样在 leave-one-out setting
下评估 next-item
推荐问题,并按照《Recurrent Recommendation with Local Coherence》
和 《Recurrent recommender networks》
中的真实场景拆分训练集和测试集。注意,模型仅使用 cutting timestamp
之前的交互进行训练。对于每个用户,我们使用 cutting timestamp
之后的第一个交互作为验证集,第二个交互作为测试集。
为了探索模型的泛化能力,我们评估了三个不同的在线平台采样到的数据。
Amazon
:这是一个公开的 Amazon
数据集的更新后的版本,覆盖了从 1996
年 5
月到 2018
年 10
月的 Amazon
评论。为了探索一组多样化产品之间的短期 item
相关性,我们混合了来自不同类目的购物数据,而不是对每个类目进行实验。
我们使用评论时间戳来估计购买的时间戳。我们移除少于 50
次购买的 item
。我们保留在 cutting timestamp
之前购买至少 5
个 item
且在 cutting timestamp
之后购买至少 2
个 item
的用户。
Etsy
:Etsy
数据集包含 2006
年 11
月到 2018
年 12
月期间,销售手工艺品的最大电商网站之一的购买记录。我们移除交易少于 50
笔的 item
,然后过滤掉 2018
年之前少于 5
笔交易、或 2018
年少于 2
笔交易的用户。
Goodreads
:Goodreads
数据集来自一个图书阅读社区,用户可以在其中对图书进行 tag
、评分、撰写评论。我们将不同类型的交互视为对 item
的隐式反馈。我们保留了 2017
年之前交互 5
本书以上且 2017
年交互 2
本书以上的用户。
这个数据集要比 Amazon
和 Etsy
都更稠密,因为这样一个信息共享平台中的 item
(即,书籍)更稳定,并且不太可能像电商平台中那样被新的 item
替换(如,商品可能被升级后的版本所替代)。
这些数据集的统计结果如下表所示。
评估指标:
遵从 leave-one-out setting
,在测试集中,每个用户仅关联一个 item
,这个 item
就是该用户在 cutting time
之后的 item
。
我们采用常见的 next-item
推荐指标来评估每个模型在 Top-K
推荐中的性能,包括:Hit Rate: HIT@K
、Normalized Discounted Cumulative Gain: NDCG@K
、Mean Reciprocal Rank: MRR
。
遵从之前的 Top-K
推荐工作(《Neural collaborative filtering》
、SASRec
),我们为每个用户随机选择 100
个 negative item
,并将测试集的 item
(即,positive item
)与 negative item
进行排名 rank
。排名是基于推荐系统生成的预测偏好分。
由于每个用户的测试集仅有一个 item
,因此 hit rate
等于 recall
,表明测试的 item
是否出现在 Top-K
列表中。
Ideal Discounted Cumulative Gain
对于所有用户而言都是一个常数,因此在计算 NDCG@K
时可以忽略(因为对于每个用户,测试集仅有一个 item
)。
在基于预测分数的排序中,假设用户 item
的排序为
根据这个计算,在 leave-one-out setting
中,NDCG@1 = HIT@1
。
MRR
衡量测试 item
的平均倒数排名,即,
我们报告每个数据集上所有用户的平均 NDCG
和平均 Hit Rate
,其中
baseline
:
PopRec
:热门度推荐。这种简单的方法根据 item
的受欢迎程度来排序,并推荐最热门的 item
。TransRec
:基于翻译的推荐。TransRec
使用 user-specific
翻译操作来建模交互序列中不同 item
之间的转移。GRU4Rec+
:具有 Top-k Gains
的 RNN
。作为 GRU4Rec
的改进版,该模型采用 GRU
来建模序列行为,并使用一族新的损失函数来提高 Top-K
增益。TCN
:用于 next-item
推荐的简单卷积生成网络(《A Simple Convolutional Generative Network for Next Item Recommendation》
)。该模型改进了典型的 CNN-based
的 next-item
推荐,使用 masked filter
和堆叠的一维空洞卷积层,从而建模远程依赖关系。HPMN
:Lifelong Sequential Modeling with Personalized Memorization
(《Lifelong Sequential Modeling with Personalized Memorization for User Response Prediction》
)。HPMN
采用分层周期记忆网络hierarchical periodic memory network
,可以同时捕获用户的多尺度序列模式,从而可以将近期用户行为与长期模式相结合。HGN
:用于序列推荐的Hierarchical Gating Network
(《Hierarchical Gating Networks for Sequential Recommendation》
)。该方法包含一个特征门控 feature gating
以及一个实例门控 instance gating
,用于分层地选择 item
特征和 item
实例,从而用于为 next-item
推荐来建模用户。SASRec
:Self-attentive Sequential Recommendation
。它采用 self-attention layer
来捕获用户交互序列中的动态模式。它可以被视为 HyperRec
中动态用户建模组件的简化版本,该简化版本使用 static item embedding
来表示每个交互。BERT4Rec
:带有来自于 Transformer
的双向编码器 representation
的序列推荐。该方法利用双向自注意力模块从左右两侧捕获用户历史行为序列中的上下文信息。baseline
之外,我们还将所提出的模型与后文介绍的变体进行比较,作为我们的消融实验案例。
HyperRec
要求user ID
的信息从而可以得到完整的用户历史行为序列。然而,这里的有些baseline
方法是针对匿名session
进行的(如GRU4Rec+
、SASRec
、BERT4Rec
。这些方法既可以用于匿名session
也可以用于非匿名session
(提供了user id
),但是它们并没有针对非匿名session
进行优化,如,建模user embedding
。所以这里的比较不一定公平。
配置:
实验是在配备了 12GB Nvidia TITAN Xp GPU
的服务器上进行的。
所有数据集的最大序列长度设置为 50
。
为了公平比较,训练过程中所有模型的负采样率都设置为 1
。即,对于每个 ground-truth tuple
,我们都将它与一个随机采样的 negative item
相结合。
对于 HPMN, GRU4Rec+, HGN, BERT4Rec
,我们使用原始论文中提供的实现和配置。对于 TCN
和 SASRec
,我们使用 《Session-based Social Recommendation via Dynamic Graph Attention Networks》
中提供的实现。
为了获得每个模型的最佳性能,我们执行超参数搜索,其中:
dropout rate
搜索范围:
在
HyperRec
的哪一层执行dropout
?作者并未讲明。
正则化系数
embedding size
搜索范围:
对于特定于模型的超参数,我们根据验证集来微调。
我们在 TensorFlow
中实现了 HyperRec
及其所有变体,并采用 Adam
作为优化器。在实验中,经过 grid search
之后,学习率设为 0.001
、batch size = 5120
。我们将所有数据集的 embedding size
设为 100
。我们微调了每个数据的层数,范围在
实验结果:我们将 HyperRec
与 baseline
进行比较,结果如下表所示。可以看到:
HyperRec
在每个数据集中都显著优于所有 baseline
。这证明了 HyperRec
在真实环境(其中 item
随着时间演变)中改进 next-item
推荐的有效性。TransRec
相比于简单地推荐热门 item
相比,可以提供有前景的改进。然而,TransRec
将用户视为他们购买的 consecutive items
之间的线性翻译,这限制了模型处理现实问题的能力,其中用户和 item
都在改变。HPMN
由分层记忆网络组成并为用户创建 lifelong profile
,其中记忆网络的每一层都旨在捕获特定时期的周期性用户偏好 periodic user preference
。我们发现 HPMN
在 Amazon
中的表现优于 TransRec
在 30%
以上,但是在 Etsy
和 Goodreads
上似乎较弱。TCN
建立在一维空洞卷积之上,展示出它在建模短期行为方面的优势。TCN
在 Etsy
中优于 HPMN
,但是它似乎不太适合像 Goodreads
这样长期偏好很重要的场景。GRU4Rec
的高级版本,在 Amazon
和 Goodreads
数据集上,GRU4Rec+
可以通过 GRU
来进行动态用户建模并采用针对 RNN
模型定制化的损失函数,从而改进 TCN
和 HPMN
。HGN
配备了新颖的特征门控和实例门控从而增强短期用户建模,因此优于上述 baseline
。SASRec
和 BERT4Rec
都使用 self-attention layer
来建模序列用户模式。在 BERT4Rec
中,通过随机屏蔽用户序列中的 item
,它能够训练一个双向模型用于推荐。然而,它并没有像原始的 BERT
一样为 NLP
带来巨大的提升,因为序列中从右到左的模式不一定能够提供预测用户动态偏好的信息。the state-of-the-art
相比,HyperRec
在 Amazon
中可以实现比其它数据集最大的改进。原因可能是 HyperRec
能够从极其稀疏的具有超图拓扑的 user-item
交互中完全地抽取 item
特性。消融研究:我们通过移除或替换 HyperRec
中的基础组件来进行一系列消融测试,从而评估这些组件的有效性。消融测试的结果如下表所示。为了公平地比较,当模型中有超图时,结果是以 12
个月为粒度并且两层的 HGCN
来实现的。
首先,在所有数据集上,HyperRec
与所有变体相比都实现了最佳的性能,这证明了 HyperRec
设计的有效性。
为了评估超图结构的有效性,我们在 (3)
中为每个用户和每个 item
在不同时间段分配不同的 latent embedding
作为 dynamic item embedding
和短期用户意图。也就是说,我们没有像 HyperRec
那样利用超图来建模短期 item
相关性,而是使用这些 time-dependent embedding
来编码数据集中的变化。我们发现性能有很大的下降。在 Amazon
和 Goodreads
数据集中,(3)
的性能甚至比使用 static item embedding
的 (2)
更差。
一个原因是:每个时间段的 user-item
交互过于稀疏,无法直接充分训练 time-dependent embedding
。但是带 HGCN
的超图能够在每个时间段从 multi-hop
链接中充分抽取 item
之间的有效的相关性。
然后我们转向 HyperRec
中 dynamic item embedding
所赋予的每个组件,从而检查它们的贡献。
(4)
中,通过移除 residual component
,超图的 initial embedding
仅由 static item embedding
组成。虽然在所有数据集上的性能下降,但是我们发现它在 Goodreads
中带来了最大的性能损失。因此,通过控制过去的 residual information
来连接不同时间段的 dynamic item embedding
是很重要的。(5)
和 (6)
,我们分别移除 fusion layer
中的 dynamic item embedding
和短期用户意图如何影响动态用户偏好建模中的特定交互的含义。由于 (5)
和 (6)
在所有数据集上都实现了相似的性能,因此我们可以得出结论:这两个组件对于捕获交互的含义meaning of an interaction
都很重要。(7)
中,我们使用公式 dynamic item embedding
Amazon
和 Goodreads
有很大贡献。然而,在 Etsy
上,item
对即时送礼事件 instant gifting event
(如,圣诞节、纪念日)更为敏感,因为上一个时间段的 dynamic item embedding
可能无法提供对当前时间段的深入洞察。超参数分析:我们探索 HyperRec
在不同数量的卷积层、以及不同的时间段粒度下的性能。
HGCN
层数:我们通过改变超卷积层的数量来比较 HyperRec
的性能,结果如下图所示。
当仅有一个卷积层时,每个 dynamic item embedding
仅聚合来自通过超边与其直接相连的 item
的信息。在这个阶段,HyperRec
可以超越它的仅考虑 static item embedding
的变体,这说明了在 next-item
推荐中探索短期 item
相关并且采用 dynamic embedding
的必要性。
与仅有一层相比,堆叠两个卷积层可以带来显著的提升。我们可以推断:超图和 HGCN
是一种有效选择从而用于抽取短期的有表达力的 item
语义。并且在超图中考虑高阶邻域的信息很重要。
但是,对于 Etsy
和 Amazon
而言,由于数据非常稀疏,因此没有必要进一步增加卷积层的数量。2 ~ 3
层的 HGCN
足以抽取不同时间段的 item
语义。
然而,由于 Goodreads
在每个超图中包含相对更多的交互,因此更多的卷积层可以进一步改善 embedding
过程。
时间粒度Time Granularity
:时间段的粒度控制了 HyperRec
对随时间变化的敏感程度。在下图中,我们通过将粒度从 1 ~ 18
个月来展示模型的性能。可以看到:
当时间粒度较小时,我们发现模型无法达到最佳性能,因为交互非常稀疏,不足以构建一组有表达能力的 item embedding
。
当扩大粒度时,我们发现 HypereRec
的性能在所有数据集上都有所提高。
Amazon
数据集上,当粒度设置为 12
个月时,模型性能达到最佳。Etsy
数据集上,最佳的粒度较小,因为 Etsy
上销售的商品(即手工制品)的波动性高于 Amazon
上的商品。Goodreads
数据集上,最佳的粒度约为 6
个月。因为在 Goodreads
中,对于每个时间段都有更多的交互从而用于 dynamic item embedding
。如果我们进一步扩大粒度,则模型性能会下降,因为这会低估 item
的变化并且可能会给模型带来噪声。
用户生命周期:我们评估具有不同生命周期的用户,其中生命周期指的是用户的最后一次交互和第一次交互之间的时间间隔。实验结果如下图所示。可以看到:
HGN
比 SASRec
效果更好;而对于生命周期更长的用户,SASRec
比 HGN
更好。HyperRec
显著优于所有生命周期的 baseline
。对于生命周期较长的用户,HyperRec
可以实现较大的提升,这表明 HyperRec
在捕获长期用户模式并同时考虑短期相关性方面具有优势。session-based recommendation: SBR
是一种新兴的推荐范式,其中无法获得长期的 user profile
。一般而言,一个 session
是一个在购物事件shopping event
中包含了很多购买的 item
的交易 transaction
,session-based
推荐专注于通过利用实时的用户行为来预测 next-item
。
session-based
推荐领域的大多数研究工作都将 session
视为有序的序列,其中 RNN-based
方法和 GNN-based
方法已经展示出强大的性能。
在 RNN-based
方法中,成功的关键是将 session-based
数据建模为单向序列,因为数据通常是在短时间内生成的,并且可能具有时间依赖性。然而,这个假设也可能会限制住这些 RNN-based
模型,因为它考虑不全面。
实际上,与严格顺序的方式生成的语言序列不同,在用户行为序列中可能没有如此严格的时间顺序。例如,在 Spotify
上,用户可以选择随机播放专辑或按顺序播放,这会生成两个不同的收听记录。但是,这两种播放模式都对应同一组歌曲。换句话讲,在这种情况下打乱两个 item
的顺序并不会导致用户偏好的扭曲。相反,严格且独立地建模 item
的相对顺序可能会使得推荐模型容易过拟合。
最近,GNN
已被证明在 session-based
推荐领域是有效的。与 RNN-based
方法不同,GNN-based
方法将 session-based
数据建模为有向子图,将 item transition
建模为 pairwise relation
,这稍微放松了连续 item
之间的时间依赖性假设。
然而,与 RNN-based
方法相比,现有的 GNN-based
方法仅展示出微不足道的提升。潜在的原因是它们忽略了 session-based
数据中复杂的 item correlation
。在实际场景中,一个 item
转移往往是由先前很多 item clicks
的联合效果 joint effect
来触发的,并且 item
之间存在 many-to-many
的高阶关系。显然,简单的图无法描述这种类似集合set-like
的关系。
为了克服这些问题,论文 《Self-Supervised Hypergraph Convolutional Networks for Session-based Recommendation》
提出了一种基于超图 hypergraph
的新的 session-based
推荐方法来建模 session
中 item
之间的高阶关系。从概念上讲,超图由节点集合和超边 hyperedge
集合组成,其中每条超边可以连接任意数量的节点并用于编码高阶的数据相关性。
作者还假设 session
中的 item
是时间相关temporally correlated
的,但是不是严格顺序依赖的。超边的特性完全符合作者的假设,因为超边是 set-like
的,它强调所涉及元素的一致性 coherence
而不是相对顺序。因此,超边为我们提供了捕获 session
中复杂交互的灵活性和能力。
从技术上讲:
session
建模为一个超边,其中所有 item
相互链接。不同的超边通过共享的 item
相互链接从而构成了超图,其中超图包含 item-level
的高阶相关性。line graph
,并且聚焦于超边之间的连通性,其中这种连通性刻画了 session-level
的关系。Dual channel Hypergraph Convolutional Network: DHCN
从而分别从两个 graph
中捕获复杂的 item
相关性、以及 cross-session
的信息。下图说明了所提出方法的超图构造和 pipeline
。
通过在两个通道中堆叠多个层,论文可以借助超图卷积的优势来生成高质量的推荐结果。然而,由于每条超边仅包含有限数量的 item
,固有的数据稀疏性问题可能会限制超图建模带来的好处。为了解决这个问题,论文创新性地将自监督集成到模型中,从而增强超图建模。
直观而言,DHCN
的两个通道可以看做是描述 session
的 intra-information
和 inter-information
的两个不同视图,而它们中的每一个都对对方的信息知之甚少。利用自监督学习最大化通过两个通道学到的 session representation
之间的互信息,这两个通道可以相互获取新的信息从而提高各自在 item/session
特征抽取中的性能。然后,论文将推荐任务和自监督任务统一在一个 primary & auxiliary learning
框架下。通过联合优化这两个任务,推荐任务的性能获得了不错的收益。
总而言之,这项工作的主要贡献总结如下:
session-based
推荐提出了一种新颖的 DHCN
,该模型可以通过超图建模来捕获 item
之间的 beyond pairwise relation
、以及 cross-session information
。state-of-the-art baseline
具有压倒性的优势,并且在 benchmark
数据集上实现了统计显著的改进。相关工作:
session-based
推荐:session-based
推荐的早期探索主要集中在序列建模上,其中马尔科夫决策过程是该阶段的首选技术。深度学习的发展为利用序列数据提供了替代方案。RNN
和 CNN
等深度学习模型随后被用于 session-based
推荐并取得了巨大成功,GRU4Rec
、GRU4Rec++
、NARM
、STAMP
是经典的 RNN-based
模型。
GNN
最近在 session-based
推荐中的应用也展示出有前景的结果。与处理序列数据的 RNN-based
方法不同,GNN-based
方法在 session
导出的图上学习 item transition
。
SR-GNN
是一项开创性的工作,它使用 gated GNN
从而将 session
建模为图结构数据。GC-SAN
采用自注意力机制通过图信息聚合来捕获 item
依赖关系。FGNN
构建 session graph
来学习 item transition pattern
,并重新思考 session-based
推荐中 item
的序列模式。GCE-GNN
对单个 session graph
和 global session graph
进行图卷积,从而学习 session-level embedding
和 global-level embedding
。尽管这些研究表明 GNN-based
模型优于其它方法(包括 RNN-based
方法),但是它们都未能捕获到复杂的、高阶的 item
相关性。
超图学习 Hypergraph Learning
:超图为复杂的高阶关系提供了一种自然的方式。HGNN
和 HyperGCN
是首先将图卷积应用于超图的。《Dynamic hypergraph neural networks》
提出了一个动态超图神经网络,并且 《Line Hypergraph Convolution Network: Applying Graph Convolution for Hypergraphs》
开发了线性超图卷积网络。
还有一些研究将超图学习与推荐系统相结合。与我们最相关的工作是 HyperRec
,它使用超图来建模短期用户偏好从而用于 next-item
推荐。然而,它没有利用超边之间的信息,并且也不是为 session-based
场景而设计的。此外,该模型的高复杂度使得它无法在实际场景中部署。目前,还没有研究将超图神经网络和 session-based
推荐相结合,我们是首个填补这一空白的人。
自监督学习:自监督学习是一种新兴的机器学习范式,旨在从原始数据中学习 data representation
。
由于自监督学习目前仍处于起步阶段,目前只有几项研究将其与推荐系统相结合。与我们工作最相关的是用于序列推荐的 S3-Rec
,它使用 feature mask
来创建自监督信号。但是它不适用于 session-based
推荐,因为 session
数据非常稀疏,masking feature
不能产生强的自监督信号。
目前,自监督学习在 hypergraph representation learning
和 session-based
推荐方面的潜力尚未研究。我们是第一个将自监督学习集成到 session-based
推荐和超图建模的场景中。
令 item
集合,其中 item
数量。每个 session
表示为 session
session
item
。
我们将每个 item
embedding
空间,记做 item
representation
,item
在第 representation
记做
每个 session
session-based
推荐的任务是:对于任意给定的 session
next item
, 即
超图:令 unique
节点的节点集合,
矩阵
刻画的是超边之间的连接,这里用对角矩阵表示任意两个超边之间没有连接。
超图可以用关联矩阵 incidence matrix
对于每个节点和每个超边,它们的 degree
定义为:
节点的度矩阵为
超图的线性图 line graph
:给定超图
具体而言,
我们为线性图的每条边
为了在 session-based
推荐中捕获超越 pairwise
的关系,我们采用超图 session
表示为超边。具体而言,我们将每个超边表示为 item
超图构建前后,数据结构的变化如下图所示。
session
数据组织为线性序列,其中两个 item
session
数据转换为超图之后,session
中的任意两个 item
都将被连接起来。需要注意的是,我们将 session
序列转换为无向图,这符合我们的直觉,即 session
中的 item
仅仅是时间相关temporally related
的而不是顺序依赖sequentially dependent
的。通过这种方式,我们具体化了 many-to-many
的高阶关系。
此外,我们进一步导出了超图的线性图。每个 session
被建模为一个节点,并且不同的 session
通过共享 item
来连接。与描述 item-level
高阶关系的超图相比,线性图描述了 session-level
关系,也称作 cross-session
信息。
Dual channel Hypergraph Convolutional Network: DHCN
,从而捕获 item-level
高阶关系和 session-level
关系。网络中的每个通道都负责从一个图/超图中抽取有用信息,从而通过图/超图卷积来改善 session-based
推荐。超图通道对超图进行编码。由于有两个通道,直接将完整的 basic item embedding
embedding
的幅度,我们使用带 self-gating unit: SGU
的 pre-filter
,它的定义为:
其中:
gating
参数,sigmoid
函数。self-gating
机制通过在各维度上重新加权从而以 feature-wise
粒度来调节 basic item embedding
。然后我们获得特定于超图通道的 item embedding
item embedding
为什么直接将完整的
basic item embedding
同时馈入两个通道是不明智的?作者并未给出理由。个人猜测的原因是:希望两个通道各司其职,从而得到更好的效果。但是,这里并没有监督信息使得两个通道的能力尽可能不同(因为如果两个通道的能力尽可能相同,那么只需要一个通道就够了)。
在超图上定义卷积操作的主要挑战是如何传播 item embedding
。参考 《Hypergraph neural networks》
中提出的谱超图卷积spectral hypergraph convolution
,我们将超图卷积定义为:
其中:
上式的括号内可以重新组织为:
。 其中:
- 内层:对于每条超边
,聚合它包含的所有节点 representation
。其中权重为(这里设定为 0/1
的二元值),并且节点representation
经过的线性投影。 - 外层:聚合节点
所属的所有超边,其中权重为 。由于本文中 设置为 1
,因此权重等于(为 0/1
二元值)。
根据 《Simplifying graph convolutional networks》
的建议,我们不使用非线性激活函数。对于 1
。因此,上述等式的行归一化row normalization
形式的矩阵方程为:
超图卷积可以看做是对超图结构执行 node-hyperedge-node
特征变换的两阶段 refinement
:
在将 item embedding
取平均,从而获得 final item embedding
:
这里直接取平均的优势是计算简单。但是,是否每一层都是同样地重要?可以考虑非均匀加权,通过模型自动学习权重(例如参数化的权重系数,或者
attention
机制)。
可以通过聚合该 session
中 item
的 representation
来表达 session embedding
。我们遵循 SR-GNN
中使用的策略来 refine
session
embedding
:
其中:
session
last item
embedding
,它表示当前用户意图。session
item
的 embedding
。session
中的 general interest embedding
,它通过 soft-attention
机制聚合 item embedding
来表示,其中 item
具有不同的重要性。item
权重 hybrid session embedding
hybrid session embedding
转换到 注意,根据我们在前面描述的动机,我们放弃了其它 session-based
推荐技术中使用的序列建模技术,如 GRU
单元和 self-attention
机制。当前意图是我们使用的唯一的时间因素 temporal factor
,因此我们的模型非常高效且轻量级。
线性图通道对超图的线性图进行编码。下图展示了我们如何将超图转换为它的线性图。线性图可以看做是一个简单的图,它包含 cross-session
信息并描述了超边的连通性。
在卷积操作之前,类似地,我们通过将 SGU
从而获得特定于线性图通道的 item embedding
item
,我们首先通过查找属于每个 session
的 item
并取这些 item embedding
的均值(从 session embedding
incidence matrix
定义为
其中:
在每个卷积层中,session
都从它的邻居那里收集信息。通过这种方式,学到的 cross-session
信息。同样地,我们将 session embedding
取平均,从而获得 final session embedding
:
这里直接取平均的优势是计算简单。但是,是否每一层都是同样地重要?可以考虑非均匀加权,通过模型自动学习权重(例如参数化的权重系数,或者
attention
机制)。
给定一个 session
item
其中
这里假设每个通道都是同样重要,是否可以区分不同通道的重要性?
然后,我们使用一个 softmax
函数来计算每个 item
成为 session
中 next item
的概率:
我们的学习目标为交叉熵损失函数(单个样本):
其中:ground-truth
的 one-hot
编码向量,
为简单起见,我们忽略了 L2
正则化项。我们通过 Adam
优化器来优化该损失函数。
超图建模使得我们的模型能够实现显著的性能。然而,我们认为 session
数据的稀疏性可能会阻碍超图建模,这将导致推荐性能次优suboptimal
。受到简单图上自监督学习成功实践的启发,我们创新地将自监督学习集成到网络中,从而增强超图建模。
自监督学习通过以下两个步骤进行:
创建自监督信号:回想以下,在 DHCN
中,我们通过两个通道学习两组特定于通道的 session embedding
。由于每个通道都编码一个图/超图,因此两组 embedding
对彼此知之甚少但是可以相辅相成。简单而言,这两组 embedding
可以作为彼此的 ground truth
而用于自监督学习,并且这种 one-to-one
映射被视为 label augmentation
。如果两个 session embedding
都表示同一个 session
的不同视图,那么我们将这一对标记为 ground-truth
,否则标记为 negative
。
对比学习:我们将 DHCN
中的两个通道视为刻画 session
不同方面的两个视图。然后对比了通过两个视图学到的两组 session embedding
。我们采用 InfoNCE
,并使用来自 ground-truth
样本(positive
)和 negative
样本之间的二元交叉熵作为学习目标:
其中:
negative
样本,它是通过对 这个目标函数被解释为最大化在不同视图中学到的 session embedding
之间的互信息(《Deep Graph Infomax》
)。通过这种方式, 它们可以从彼此获取信息,从而改善它们各自在 item/session
特征抽取中的性能。尤其是那些仅包含几个 item
的 session
可以利用 cross-session
信息来改善它们的 embedding
。
最后,我们将推荐任务和自监督任务统一为一个 primary&auxiliary
学习框架,其中推荐任务是主任务、自监督任务是辅助任务。联合学习的目标函数为:
其中
数据集:Yoochoose
和 Diginetica
。
对于这两个数据集,我们遵循 SR-GNN
和 NARM
从而删除仅包含一个 item
的 session
、以及删除出现次数少于 5
次的 item
,然后将数据集拆分为训练集和测试集。
Yoochoose
数据集,测试集由最近几天的 session
组成。Diginetica
数据集,测试集由最近几周的 session
组成。然后我们通过序列拆分的方式来进行数据集增强,即对于 session
由于 Yoochoose
的训练集非常大,我们遵循 SR-GNN
、STAMP
和 NARM
仅利用整个训练序列中最近的 1/64
和 1/4
,从而形成两个新的训练集,并将它们命名为 Yoochoose1/64
和 Yoochoose1/4
。
数据集的统计信息如下表所示。
baseline
方法:
item-KNN
:推荐与 session
中先前点击的 item
所相似的 item
,其中相似度使用 session
向量之间的余弦相似度。
session
向量:长度为总的session
个数。如果item
出现在第个 session
中,则该向量的第个元素为 1
。
FPMC
:是一种基于马尔科夫链的序列方法。
GRU4REC
:利用 session-parallel
的 mini-batch
训练过程,并采用 ranking-based
损失函数来建模用户行为序列。
NARM
:一个 RNN-based
模型来建模用户序列行为。
STAMP
:采用自注意力机制来增强 session-based
推荐。
SR-GNN
:应用 gated graph convolutional layer
来学习 item transition
。
FGNN
:将 session
中的 next item
推荐形式化为图分类问题。
此外,我们评估了 DHCN
的另一个变体
没有和
HyperRec
的对比。毕竟相关工作里已经提到了HyperRec
。猜测原因是:HyperRec
是在不同数据集上评估的,因此作者这里没有把HyperRec
拿来对比。
评估指标:Precision: P@K
、Mean Reciprocal Rank: MRR@K
。
超参数配置:
embedding size = 100
、batch size = 100
、L2
正则化系数为 DHCN
:采用两层架构,初始学习率为 0.001
。baseline
模型:我们参考了他们在原始论文中报告的最佳参数配置,并在可用时直接报告他们的结果,因为我们使用相同的数据集和评估设置。实验结果:整体性能如下表所示。我们没有像 NARM
一样报告 FPMC
的结果,因为在 Yoochoose1/4
数据集上运行 FPMC
的内存需求对于普通的深度学习计算平台而言太大了。
可以看到:
GNNs-based
模型:SR-GNN
和 FGNN
优于 RNN-based
模型。这些改进可以归因于 GNN
的巨大容量。但是,与 DHCN
带来的改进相比,这些改进是微不足道的。
DHCN
在所有数据集的所有 baseline
上都展示出压倒性的优势,尤其是在 Diginetica
数据集上。在分析了 Diginetica
的数据模式之后,我们发现许多 item
经常以 item-set
的形式在不同的 session
中共现,这是超图建模的理想选择。这可能是导致如此卓越结果的原因。
与 SR-GNN
和 FGNN
相比,我们的模型有两个优势:
pairwise
的关系。通过将每个超边建模为团 clique
(其中,团内的 item
之间完全相互连接) ,可以利用远距离 item
之间的关联。cross-session
信息。此外,需要注意的是,MRR
的改进比 Precision
的改进更为显著,这意味着 DHCN
不仅可以成功命中 groud-truth item
,而且在 top-K
推荐列表中的排名也大大提升。
虽然不如超图建模带来的效果那么可观,但是自监督学习带来的提升也还可以。具体而言,在两个平均 session
长度较短的数据集上,自监督学习发挥着更重要的作用,这与我们的假设一致:即 session
数据的稀疏性可能会阻碍超图建模的好处。同时,通过自监督学习来最大化DHCN
中两个视图之间的互信息可以解决这个问题。
消融研究:为了研究 DHCN
中每个模块的贡献,我们开发了 DHCN
的三个变体:
DHCN-H
:仅使用超图通道。
即:推荐分
。
DHCN-L
:仅使用线性通道。
即:推荐分
。
DHCN-NA
:没有 soft attention
机制的版本。
即:
。
我们将它们在 Yoochoose1/64
和 Diginetica
数据集上与完整的 DHCN
进行比较。
从下图可以看到:
item
相关性的有效性,以及捕获 cross-session
信息以捕获 item-level
信息的必要性。soft attention
也导致模型这两个数据集上的性能大幅下降,这与我们在前面的假设保持一致,即,session
中的 item
是时间相关的。根据这个消融实验,我们可以得出结论:一个成功的 session-based
推荐模型应该同时考虑时间因素temporal factor
和高阶的item
相关性。
这里时间因素是通过
last click item
来表现的。
超参数研究:
不同 session
长度的影响:遵从 STAMP
,我们将 Yoochoose1/64
和 Diginetica
的 session
分为两个不同长度的组,分别命名为 Short
和 Long
。Short
包含长度小于或等于 5
的 session
,而 Long
包含长度大于 5
的 session
。我们选择切分点为 5
,是因为它是所有 session
中最常见的长度。
然后我们比较了 DHCN, NARM, STAMP, SR-GNN
在 Short
组和 Long
组上的 P@20
性能,结果如下表所示。可以看到:在这两个数据集上,在大多数情况下,DHCN
在不同 session
长度的情况下稳定地优于所有其它 baseline
模型,尤其是在 Long
组。
模型深度的影响:我们将 DHCN
的层数范围限制在 {1, 2, 3, 4}
以内,结果如下图所示。可以看到:DHCN
对于层数不是很敏感。层数为 2
时效果最好,但是层数大于 2
时由于过度平滑导致模型性能略有下降。
自监督学习的影响:我们向
Prec@20
和 MRR@20
。MRR@20
开始下降,但是 Prec@20
仍然保持增加。目前,我们不知道为什么 Prec@20
没有性能下降,希望我们在未来的工作中解决这个问题。有两个重要的方向旨在挖掘用户的历史交互:时间推荐temporal recommendation
和序列推荐sequential recommendation
。
时间推荐侧重于建模绝对时间戳从而捕获用户和 item
的时间动态 temporal dynamics
。例如,一个 item
的热门程度可能会在不同的时间段内发生变化,或者一个用户的平均评分可能会随着时间的推移而增加或减少。这些模型在探索数据集中的时间变化temporal change
时很有用。它们不考虑序列模式sequential pattern
,而是考虑依赖于时间的时间模式 temporal pattern
。
大多数以前的序列推荐器通过交互时间戳对 item
进行排序,并聚焦于序列模式挖掘来预测 next item
。
L
阶马尔科夫链根据 L
个先前的动作而作出推荐。基于马尔科夫链的方法已经成功应用于捕获短期 item transition
从而用于推荐。这些方法通过作出很强的简化假设并在高度稀疏场景下表现良好,但是在更复杂的场景中可能无法捕获到复杂的动态 intricate dynamics
。RNN
也可用于序列推荐。虽然 RNN
模型对用户的偏好有很长的“记忆”,但是模型需要大量数据(尤其是稠密数据)才能超越更简单的 baseline
。RNN-based
模型的缺点,受到 Transformer
的启发,SASRec
提出将自注意力机制应用于序列推荐问题。基于自注意力机制的模型显著优于 state-of-the-art
的 MC/CNN/RNN based
序列推荐方法。一般而言,以前的序列推荐器会丢弃时间戳信息并且仅保留 item
的顺序。即,这些方法隐式地假设序列中的所有相邻 item
具有相同的时间间隔。影响后续的 item
的因素仅有前面 item
的 id
和位置。然而,直观而言,具有most recent
时间戳的 item
将对 next item
产生更大的影响。例如,两个用户具有相同的交互序列,其中一个用户在一天之内完成了这些交互而另一个用户在一个月之内完成了这些交互。因此,这两个用户的交互对于 next item
的影响应该是不同的,即使他们具有相同的交互序列。然而,先前的序列推荐技术将这两种情况视为相同,因为它们仅考虑 sequential position
(而未考虑 sequential timestamp
)。
在论文 《Time Interval Aware Self-Attention for Sequential Recommendation》
中,作者认为应该将用户交互序列建模为具有不同时间间隔的序列。下图表明:交互序列具有不同的时间间隔,其中一些时间间隔可能很大。以前的工作忽略了这些时间间隔对被预测的 item
的影响。为了解决上述限制,受到 Self-Attention with Relative Position Representation
的启发,作者提出了一种 time-aware self-attention
机制,即 TiSASRec
模型。该模型不仅像 SASRec
一样考虑了 item
的绝对位置absolute position
,还考虑了任意两个 item
之间的相对时间间隔。从论文的实验中可以观察到,论文提出的模型在稠密数据集和稀疏数据集上都优于 state-of-the-art
算法。
最后,论文的贡献如下:
relation
。absolute position encoding
和相对时间间隔编码 relative time interval encoding
的优势相结合从而用于 self-attention
,并且设计了一种新颖的 time interval aware
的 self-attention
机制来学习不同 item, absolute position, time interval
的权重从而预测 next item
。TiSASRec
性能的影响,并表明 TiSASRec
在两个指标上优于 state-of-the-art
的 baseline
。相关工作:
序列推荐:序列推荐系统挖掘用户交互序列中的模式。
一些方法捕获 item-item
转移矩阵来预测 next item
。例如:FPMC
通过矩阵分解和转移矩阵transition matrix
来建模用户的长期偏好和动态转移 dynamic transition
。
转移矩阵是一阶马尔科夫链,它仅考虑当前item
和前一个 item
之间的关系。Fossil
使用基于相似性的方法和高阶马尔科夫链,假设 next item
和前面几个 item
相关,而 《Translation-based Recommendation》
证明了基于高阶马尔科夫链的模型在稀疏数据集上具有强大的性能。
人们也提出了 CNN-based
方法(如,Caser
,《3D Convolutional Networks for Session-based Recommendation with Content Feature》
)从而将先前的若干个 item
视为 “图像”,然后通过 union-level
的 CNN
来挖掘 item
之间的转移。
MARank
通过结合残差网络和多阶注意力来统一 individual-level
和 union-level
的 previous item transitions
。
SHAN
通过两层注意力机制来建模用户的 previous several items
和长期历史,从而获得用户的短期偏好和长期偏好。
RNN-based
模型(如,《Latent Cross: Making Use of Context in Recurrent Recommender Systems》
、GRU4Rec
、《Neural Survival Recommender》
、《Context-Aware Sequential Recommendation》
) 使用RNN
来建模整个用户序列。这些方法在稠密数据集上表现良好,但是在稀疏数据集上通常表现不佳。
注意力机制:注意力机制已被证明在 image captioning
和机器翻译等任务上是有效的。本质上,注意力机制背后的思想是:output
依赖于 input
中相关的特定部分。这种机制可以计算 input
的权重并使得模型更易于解释。最近,人们将注意力机制纳入推荐系统(《Attentive Collaborative Filtering: Multimedia Recommendation with Item- and Component-Level Attention》
、《Attention-Based Transactional Context Embedding for Next-Item Recommendation》
、《Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks》
)。
Transformer
是一种纯粹基于注意力的 sequence-to-sequence
方法,并且在机器翻译任务上取得了 state-of-the-art
性能。Transformer
使用缩放的内积注意力,其定义为:
其中:query, key, value
。在 self-attention
中,这三个输入通常使用相同的object
。
Transformer
的自注意力模块也被用于推荐系统(如,SASRec
),并在序列推荐上取得了 state-of-the-art
的结果。由于自注意力模型不包含任何循环模块或卷积模块,因此它不知道前面所有 item
的位置。
input
添加 positional encoding
,其中 positional encoding
可以是确定性函数或者可学习的参数。relative position representation
。该方法将两个 input
之间的相对位置建模为 pairwise relationship
。受到带有相对位置的 self-attention
的启发,我们结合 absolute position
和 relative position
来设计 time-aware self-attention
从而建模 item
的位置和时间间隔。
目前已有一些工作探索了时间间隔对序列推荐的影响,如
Time-LSTM
。但是作者这里尚未提及。
我们的 TiSASRec
包含个性化的时间间隔处理 personalized time interval processing
、一个 emebdding layer
、几个 time-aware self-attention
块 、以及一个 prediction layer
。我们嵌入 item
、item
的绝对位置、以及 item
之间的相对时间间隔。我们通过这些 emebdding
来计算注意力权重。如下图所示,即使先前的几个 item
相同,我们的模型也会在不同的时间间隔下提供不同的 predicted item
。
为了学习模型参数,我们采用二元交叉熵作为损失函数。TiSASRec
的目标是捕获序列模式并探索时间间隔对序列推荐的影响,而这是一个尚未探索的领域。
TiSASRec
的模型结构如下图所示。
论文的核心就是在
SASRec
上增加了相对时间间隔embedding
。
令 item
集合。在 time-aware
序列推荐的 setting
中,对于每个用户 action
序列 action
发生时间的时间序列 time step
item
以及 item
next item
。
我们模型的输入是 item
之间的时间间隔矩阵 time step
的 next item
:
由 组成。注意,这里并未考虑 time step
从而防止信息泄露,因为这是 next item
的信息。事实上也可以考虑
time step
,在预测期间它就是 current timestamp
作为时间上下文。
我们将训练序列
item
。padding item
直到长度为 类似地,我们对于时间序列
我们将交互序列中的时间间隔建模为两个 item
之间的关系。一些用户有更频繁的交互,而另一些用户则没那么频繁,我们仅关心用户序列中时间间隔的相对长度。因此,对于所有时间间隔,我们除以用户序列中最短的时间间隔(0
除外)来获得个性化的时间间隔。
具体而言,给定用户 item
缩放后的时间间隔
其中
根据定义有:
。
因此,用户 relation matrix
为什么用个性化的时间间隔,而不使用绝对的时间间隔,例如
?作者这里并未给出原因。可以做实验验证绝对时间间隔的效果。
我们考虑的两个 item
之间的最大相对时间间隔被截断为 sparse relation encoding
(即,裁剪后的关系矩阵大多数元素为零),并且使得模型能够泛化到训练期间 unseen
的时间间隔。因此,裁剪后的矩阵为:
其中:矩阵的
我们为所有 item
创建一个 item embedding
embedding
维度。对于 padding item
,它的 embedding
固定为零向量。
给定固定长度的序列 embedding look-up
操作查找这 item
的 embedding
,将它们堆叠在一起从而得到一个矩阵
其中 item
embedding
向量。
遵从 《Self-Attention with Relative Position Representations》
,我们使用两个不同的可学习的 positional embedding matrix
,即 self-attention
机制中的 key
和 value
。
给定固定长度的序列 item
的位置检索得到 emebdding
矩阵
其中:
position
key
的 positional embedding
。position
value
的 positional embedding
。用两组
embedding
来表达positional embedding
会增强模型的容量从而提高模型的表达能力,但是效果是否更好?这个可以通过实验来比较。
类似于 positional embedding
,相对时间间隔 embedding matrix
为 self-attention
机制中的 key
和 value
。在检索裁剪后的关系矩阵 embedding
张量
其中:
key
的 embedding
。value
的embedding
。这两个相对时间间隔 embedding
矩阵是对称矩阵(其实是张量),并且主对角线上的元素全为零。
类似地,这里用两组
embedding
来表达相对时间间隔embedding
会增强模型的容量从而提高模型的表达能力,但是效果是否更好?这个可以通过实验来比较。
受相对位置自注意力机制的启发,我们提出了对自注意力的扩展从而考虑序列中两个 item
之间的不同时间间隔。但是,仅考虑时间间隔是不够的,因为用户交互序列可能有许多具有相同时间戳的item
。在这种情况下,模型将成为没有任何位置信息或关系信息的 self-attention
。因此,我们还考虑了 item
在序列中的位置。
例如,假设时间间隔都是相等的,那么
恒等于 1
,因此会丢失位置信息。
Time Interval-Aware Self-attention Layer
:对于每个长度为 item
item embedding
,我们计算一个新的序列
其中:
value
的待学习的投影矩阵。
每个权重系数 softmax
函数来计算:
其中:query
和 key
的待学习的投影矩阵。缩放因子
因果性 Causality
:由于交互序列的性质,模型在预测第 item
时应该仅考虑前面 item
。然而,time-aware self-attention layer
的第 SASRec
,我们通过禁止
Point-Wise Feed-Forward Network
:尽管我们的 Time Interval-Aware Self-attention Layer
能够将所有先前的 item
、绝对位置、相对时间信息以自适应权重的方式结合起来,但是它是通过线性组合来实现的。在每个 time-aware attention layer
之后,我们应用两个线性变换,这两个线性变换之间有一个 ReLU
非线性激活函数从而赋予模型非线性:
其中:item
,这里使用相同的参数(同层之间);对于不同层的相同 item
,这里使用不同的参数(跨层之间)。
正如 SASRec
所讨论的,在堆叠自注意力层和前馈层之后,会出现更多的问题,包括过拟合、训练过程不稳定(如,梯度消失)、以及需要更多的训练时间。类似于 《Attention Is All You Need》
以及 SASRec
,我们也采用 layer normalization
、残差连接、以及 dropout
正则化技术来解决这些问题:
其中:
在堆叠 self-attention block
之后,我们得到了 item, position, time interval
的组合的 representation
。为了预测 next item
,我们采用 latent factor model
来计算用户对 item
其中:
item
embedding
。item
(即,item
的时间间隔(即,representation
。在每个位置预测的是
next item
,因此是。
给定一个时间序列和一个 item
序列,我们定义
其中:<pad>
表示一个 padding item
。
因为用户交互是隐式反馈数据,我们无法直接优化偏好分数 ranked item list
。因此,我们采用负采样来优化 item
的排名。对于每个预期的 positive output
negative item
pairwise preference orders
我们通过 sigmoid
函数 0.0 ~ 1.0
之间,并采用二元交叉熵作为损失函数:
其中:embedding
矩阵的集合,Frobenius
范数,
注意,我们丢弃了 padding item
的损失。
模型通过 Adam
优化器优化。由于每个训练样本 mini-batch SGD
来加快训练效率。
我们的实验旨在回答以下研究问题:
RQ1
:我们提出的方法是否在序列推荐中优于 state-of-the-art
的 baseline
?RQ2
:对于序列推荐,绝对位置或相对时间间隔,哪个更重要?RQ3
:超参数如何影响模型性能,如 embedding
维度 RQ4
:个性化的时间间隔在这个模型中有用吗?数据集:我们在六个数据集上评估,这些数据集具有不同的领域、规模、以及稀疏性,并且它们都是可以公开访问的。
MovieLens
:用于评估协同过滤算法的广泛使用的 benchmark
数据集。我们使用包含 100
万用户评分的版本,即 MovieLens-1M
。Amazon
:该数据集包含从 Amazon.com
抓取的大量商品评论数据。我们考虑了四个类目,包括 CDs and Vinyl
、Movies and TV
、Beauty
、Video Games
。该数据集高度稀疏。Steam
:该数据集是从大型在线视频游戏分发平台 Steam
上抓取的,包含用户的游戏时间、媒体评分、以及开发人员等信息。所有这些数据集都包含时间戳或交互的特定日期。
为了预处理,我们遵循 《Translation-based Recommendation》
、SASRec
、FPMC
中的过程:
item
交互),并按时间戳对 item
进行排序。item
,即互动少于 5
次的 user
和互动少于 5
次的 item
。SASRec
之后,我们使用最近的 item
用于测试集,使用第二近的 item
用于验证集,剩余的 item
用于训练集。数据集的统计结果如下表所示。MovieLens-1m
是最稠密的数据集,具有最长的平均 action
和最少的用户和最少的 item
。Amazon Beauty
和 Amazon Games
具有最短的平均 action
。
评估指标:Hit@10
和 NDCG@10
。Hit@10
评估了在 top 10 item list
中有多少比例的 ground-truth item
。NDCG@10
考虑排名信息并将更高的权重分配给更靠前的排名。
遵从 《Factorization meets the neighborhood: a multifaceted collaborative filtering model》
,对于每个用户 100
个 negative item
,并将这些 item
与 ground-truth item
进行排序。我们根据这 101
个 item
的排名来计算 Hit@10
和 NDCG@10
。
baseline
方法:
不考虑序列模式的经典的通用推荐general recommendation
:
POP
:所有item
根据它们在训练集中的流行度来排序。流行度是根据互动频次来统计的。BPR
:贝叶斯个性化排名 bayesian personalized ranking
是通用推荐的经典方法,其中矩阵分解用作推荐器。基于一阶马尔科夫链的方法:
FPMC
:该方法结合了矩阵分解和一阶马尔科夫链,分别捕获了长期偏好和动态转移 dynamic transition
。TransRec
:该方法将每个用户建模为 item
到 item
的翻译向量 tanslation vector
。这是捕获转移的一阶方法。基于神经网络的方法:
GRU4Rec+
:建模用户行为序列从而用于 session-based
推荐。与 GRU4Rec
相比,GRU4Rec+
采用了不同的损失函数和采样策略,相比于 GRU4Rec
表现出显著的提升。Caser
:将最近 item
的序列嵌入到潜在空间的 ”图像“ 中。该方法可以捕获考虑了最近 item
的高阶马尔科夫链。MARank
:最近提出的 state-of-the-art
模型。该方法考虑最近的一些 item
并应用 multi-order attention
来捕获 individual-level
和 union-level
的依赖关系。SASRec
可以视为一种仅考虑绝对位置的方法,将在实验部分与我们的模型进行比较和讨论。PRME, HRM, Fossil, GRU4Rec
的性能弱于上述 baseline
,因此我们省略了与它们的比较。配置:
为了公平比较,我们使用带 Adam
优化器的 TensorFlow
来实现 BPR, FPMC, TransRec
。对于 GRU4Rec+, Caser, MARank
,我们使用作者提供的代码。
我们在 20
个 epoch
内没有提高,则终止训练。
对于 TiSASRec
:
Time Interval-Aware Self-attention Layer
。0.001
,batch size
为 128
,dropout rate
为 0.2
。剩余的超参数设置如下表所示。所有实验均使用单个 GTX-1080 Ti GPU
进行。
推荐性能(RQ1
):下表给出了所有方法在六个数据集上的推荐性能。可以看到:
baseline
中,MARank
超越了其它 baseline
。MARank
可以捕获 individual-level
和 union-level
的用户交互,并且很好地处理稀疏数据集。GRU4Rec+, Caser
)比基于马尔科夫链的方法具有显著更好的性能,因为这些方法具有更强的能力来捕获长期序列模式,而这对于稠密数据集很重要。FPMC, TransRec
)聚焦于 item
的动态转移,因此它们在稀疏数据集上表现更好。TiSASRec
在所有稠密数据集和稀疏数据集上都超越了所有的 baseline
方法。其它方法都没有考虑时间信息,而
TiSASRec
考虑了时间信息,那么这篇论文仅仅证明了时间信息的价值,并不能证明模型架构是好的。为了证明模型架构是好的,论文应该和同时考虑了时间信息的模型去比较。
相对时间间隔( RQ2
):为了比较仅有绝对位置、或者仅有相对时间间隔的模型的性能,我们修改Time Interval-Aware Self-attention Layer
的输出 ,使得 TiSASRec
仅考虑相对时间间隔而不考虑绝对位置。具体而言,我们修改Time Interval-Aware Self-attention Layer
的输出为:
即,我们移除了该方程中的 positional embedding
,从而得到一个新的模型,称作 TiSASRec-R
。
此外,我们将 SASRec
视为一种仅考虑绝对位置的 self-attention
方法。我们在这六个数据集上应用 SASRec, TiSASRec-R, TiSASRec
来比较它们。为公平比较,我们对 SASRec
使用与 TiSASRec
相同的最大序列长度。实验结果如下表所示。可以看到:
TiSASRec-R
在 Movie-Lens, CDs&Vinyl, Beauty
数据集上比 SASRec
具有更好的性能,但是在其它三个数据集上则不然。TiSASRec-R
(仅使用相对时间间隔)将具有与 SASRec
(仅使用绝对位置)相似的性能。positional embedding
和相对时间间隔 embedding
的 TiSASRec
在所有数据集上超越了 SASRec, TiSASRec-R
。限制 TiSASRec-R
性能的主要原因是:用户序列中有许多相同的时间戳。在这种情况下,TiSASRec-R
将在没有任何位置信息的情况下降级为 self-attention
。为了缓解这个问题,我们结合了相对时间间隔和绝对位置。这样,TiSASRec
结合了更丰富的 item
关系来计算注意力权重。
超参数影响(RQ3
):
embedding
维度 10
到 50
对 NDCG
指标的影响。可以看到:
TransRec
的影响有限。Amazon Beauty
,当 Caser, MARank, TransRec
的性能较差。最大序列长度 10
到 50
对 NDCG
指标的影响。可以看到:更大的
最大时间间隔 NDCG
指标的影响。我们为 MovieLens
数据集选择时间间隔 {1, 64, 256, 1024, 2048}
,为 Amazon CDs & Vinyl
数据集选择时间间隔 {1, 16, 64, 256, 512}
。可以看到:
TiSASRec
在不同的最大时间间隔下具有更稳定的性能。TiSASRec-R
实现最佳性能,而对于较大的 个性化的时间间隔(RQ4
):我们讨论不同的时间戳处理方法,具体而言为以下三种方法:
0
开始。0
开始。下表给出了时间戳不同处理方法的结果。注意,我们不会在前两种方法中裁剪时间戳。可以看到:第三种方法(即,个性化的时间间隔)在前三个数据集中获得了最佳性能。
可视化:我们使用 TiSASRec
来预测用户可能交互的 next item
。然后,我们将所有时间间隔设为相同从而获得另一个预测。如下图所示,可以看到时间间隔影响了预测结果。
下图展示了前 256
个时间间隔的平均注意力权重 padding item
的影响。从这四个热力图中我们可以看到:
item
对 next item
的预测具有更大的影响。MovieLens
)比稀疏数据集(如CDs&Vinyl
)需要更大范围的 item
(即,间隔更大),因为 MovieLens
热力图左侧有一个较大的绿色区域同时右侧是黄色区域。Amazon Beauty
数据集的热力图没有明显的绿色区域或黄色区域,可能是因为该数据集没有明显的序列模式。这就解释了为什么几种序列方法在这个数据集上表现不佳。