注:会话 session
通常意味着短期的用户行为序列。
在 next basket recommendation
任务中,我们已知用户在各个时刻购买的 basket
的 item
,目标是向用户推荐该用户下一次访问时可能想要购买的 item
。
基于马尔科夫链 Markov Chain: MC
模型的推荐系统通过上一个动作来预测下一个动作,从而利用这种序列数据。MC
估计了一个概率转移矩阵transition matrix
,它给出了已知上一个动作的情况下,发生下一个动作的条件概率。预测时,模型对每个用户的最近一次行为应用概率转移矩阵从而进行推荐。
然而,MC
模型的概率转移矩阵对所有用户都是相同的,即非个性化的。
另一方面,协同过滤方法(如矩阵分解 matrix factorization: MF
)学习了个性化的、用户的一般兴趣general taste
,而忽略了序列信息。
MC
和MF
各有优势:MC
可以通过非个性化的概率转移矩阵来及时地捕获序列效果(即,概率转移矩阵是在所有用户的所有数据上学习的),而MF
可以通过所有数据来学习个性化的、每个用户的一般兴趣。
在论文《Factorizing Personalized Markov Chains for Next-Basket Recommendation》
中,论文提出了一个基于个性化MC
的模型,其中概率转移矩阵是 user-specific
的。具体而言,论文建模了一个概率转移立方体transition cube
,这个立方体的每个切面都是 user-specific
概率转移矩阵。通过这种个性化,论文将MC
和MF
的优点结合在一起:序列数据由概率转移矩阵捕获;由于所有概率转移矩阵都是 user-specific
的,因此模型捕获了个性化的用户兴趣。
除了引入个性化MC
之外,这项工作的核心贡献是估计概率转移张量 transition tensor
(即概率转移立方体)。由于数据的稀疏性,不可能通过在完全参数化complete parametrization
上使用标准计数方法(即,最大似然估计的估计Maximum Likelihood Estimator: MLE
)来获得个性化概率转移矩阵的良好估计。相反,论文通过一个分解模型 factorization model
来建模概率转移张量。这允许在相似的用户、相似的 item
、以及相似的转移之间传播信息。通过使用基于 pairwise interaction
的MF
,模型能够处理高度稀疏性。论文表明,该模型包含了个性化的MF
模型、以及非个性化的MC
模型。为了学习模型参数,论文将 Bayesian Personalized Ranking: BPR
框架扩展到 next basket recommendation
。
最后,论文将所提出的方法应用到真实的电商数据集,实验结果表明所提出的方法优于MF
和MC
模型。
总而言之,论文的贡献如下:
MC
,这允许我们同时捕获序列效应和长期用户兴趣。论文证明这是标准MC
和MF
的推广。state-of-the-art
方法。相关工作:
ranking
(而不是优化 MLE
)而学习的分解模型。总体而言,我们的工作与之前所有方法的主要区别在于使用个性化的概率转移矩阵,这结合了序列的好处(如时间感知、具有时不变用户兴趣的马尔科夫链)。此外,转移概率的分解和用于 ranking
的参数优化准则是新提出的。item
推荐已经开始成为热点。item
推荐是相比评分预测更难的问题,因为只有正反馈而没有负反馈,因此无法直接应用标准的回归方法或分类方法。最近人们提出了一些基于矩阵分解的模型,这些模型分解了 user-item
相关性矩阵correlation matrix
。在这项工作中,我们将这些 MF
模型的优点与 MC
模型结合起来。生成推荐的最常见方法是丢弃任何序列信息并学习用户的一般兴趣。另一方面,序列方法(主要依赖于马尔科夫链)的推荐仅基于最近的用户事件来学习相邻购买行为的关联。这两种方法都各有优缺点。
令 item
集合,item
数量。
假设用户 busket
为 busket
集合为 busket
为 next basket recommendation
任务是:在用户下次访问商店的时候向用户推荐 item
。注意,我们处理的不是绝对时间,而是关于用户的相对时间,如用户 busket
、第二个 busket
等等。
因此该方法未考虑时间信息(绝对时间、相对时间间隔),仅考虑相对次序。
next basket recommendation
推荐任务可以公式化为:为用户 busket
中的所有 item
创建个性化的 ranking
函数 ranking
函数,我们可以向用户推荐 top n item
。
首先,我们为顺序的集合 sequential set
引入 MC
,并将其扩展到个性化 MC
。然后,我们讨论概率转移立方体transition cube
的最大似然估计的弱点。然后,为解决这个问题 ,我们引入了分解的概率转移立方体 ,其中转移之间的信息被传播。最后,我们结合了所有的思想从而得到 FPMC
模型。
Set
的马尔科夫链通常,阶次为
其中:
在非集合的推荐应用application
中,随机变量是在 item
basket
上的,因此其状态空间大小是 basket
,它包含不同 item
的组合有
为了处理这个巨大的状态空间,我们做了两个简化:
我们使用长度为
对于 basket
场景,
在非集合的推荐场景中,通常可以选择更长的马尔科夫链(如 item
。在我们的 case
中,即使长度为 basket
包含很多 item
。例如,在我们评估的 application
中,平均每个 basket
大约有 10
个 item
。
我们简化了转移概率 transition probability
。
长度为 basket
上建模转移,而是在描述了 basket
状态的 item
是否包含在当前 basket
中)上建模转移:
的物理意义为:已知 item
在前一个 basket
的情况下,下一个basket
中出现item
的条件概率。
这种建模方式意味着:
状态空间现在是
状态空间的元素是二元变量,因此
因为下一个
basket
可能包含很多item
,使得。
对于 item
推荐,我们感兴趣的是:在给定用户最近一个 basket
的情况下购买某个 item
的概率。这可以定义为从最近一个 basket
到该 item
的所有转移概率的均值:
这里假设最近一个
basket
中所有item
对于next item
的作用是独立的、线性的、等权重的。也可以通过基于 attention
的DNN
模型,从而得到交互的、非线性的、自适应权重的模型。
basket
上完全的马尔科夫链可以表示为:
注意,我们的目标是寻求 item ranking list
,因此对完全的马尔科夫链 item
概率
给定所有用户的所有历史 busket
其中:
busket
basket
、basket
的 basket pair
数量。busket
basket
的basket pair
数量。这里基于统计的方法来估计
,并未考虑到 中其它 item
的存在对于概率的影响。即,认为basket
中所有item
对于next item
的作用是独立的。
上述的马尔科夫链是非个性化的,即与用户无关。现在我们将其扩展到个性化马尔科夫链 item
的转移概率来表示每个马尔科夫链,但是现在是 user-specific
的:
同样地,预测结果也是 user-specific
的:
同样地,这里假设最近一个
basket
中所有item
对于next item
的作用是独立的、线性的、等权重的。
这意味着对于每个用户
下图展示了个性化概率转移矩阵的一个例子。许多参数无法估计(图中以 ?
标记 ),因为没有对应的观察数据。此外,估计的转移概率仅基于少量观察数据,这意味着这些估计是不可靠的。乍一看,使用个性化马尔科夫链似乎是不合理的,接下来我们将讨论导致错误估计的原因是什么,并展示如何解决它。
非个性化马尔科夫链和个性化马尔科夫链的不可靠转移概率的问题在于:它们使用完全参数化full parametrization
的转移图transition graph
(即转移矩阵、转移立方体)、以及参数估计的方式。
完全参数化意味着我们分别有
此外,最大似然估计独立地估计每个转移概率参数
此外,最大似然估计的重要性质(如高斯分布、无偏估计、无偏估计的最小方差)仅存在于渐进理论中。当数据较少的情况下,最大似然估计会遭受欠拟合。由于我们的场景中数据非常稀疏,因此最大似然估计很容易失败。
即模型的容量空间太大,数据量太少,导致模型欠拟合。
为了得到更可靠的转移概率估计,我们分解了概率转移立方体。这种方式打破了参数的独立性、以及估计的独立性。这样,每个转移概率都受到相似用户、相似 item
、以及相似转移的影响,这是因为信息通过该分解模型进行传播。
我们对概率转移立方体
概率转移立方体的分解:用于估计概率转移立方体 Tucker Decomposition: TD
:
其中:
core tensor
,item
的特征矩阵(outgoing
节点)。item
的特征矩阵(ingoing
节点)。Tucker Decomposition
包含其它分解模型,如 Canonical Decomposition: CD
(也称作并行因子分析 parallel factor analysis: PARAFAC
)。CD
假设 core tensor
是对角矩阵,即:
并且因子分解的维度相等,即
由于观察到 CD
的一种特殊情况来建模 pairwise
交互:
这里类似于
FFM
的思想,每个field
都有两个embedding
从而与不同的其它field
进行交互。此外,这里的
core tensor
对角线为1
,意味着不同的field
交互的重要性都是相同的。能否自动学习不同field
交互的重要性?
该模型直接建模张量的所有三种模式之间的 pairwise
交互,即user
和 next item
之间、 user
和 last item
之间、以及 last item
和 next item
之间的交互。对于每种模式,我们有两个分解矩阵:
user
和 next item
之间的交互:next item
特征。user
和 last item
之间的交互:last item
特征。last item
和 next item
之间的交互:next item
特征,last item
特征。该模型优于 TD
的一个优点是:预测和学习复杂度远远低于 TD
。此外,即使 TD
和 CD
包含了上述 pairwise
交互模型,但是它们无法识别到 pairwise
交互模型。
我们提出的分解概率转移立方体的模型也可以用于非个性化的概率转移矩阵
总结:将个性化的、集合的马尔科夫链与分解的概率转移立方体相结合,则得到分解的个性化马尔科夫链 factorized personalized Markov chain: FPMC
:
其中我们通过被分解的立方体
因为 user
和 next item
之间的交互
可以看到
FPMC
的预测结果可以分为几个部分:
user
和next item
之间的交互,建模next item
与用户长期偏好的关系,因为这部分与时间无关。 last item
和next item
之间的交互,建模next item
与用户短期偏好的关系。user
和last item
之间的交互,这一部分可以建模了用户长期偏好和用户短期偏好的关系。随后的章节中,论文证明这个部分可以被移除。所有的这些部分都可以用更复杂的模型(如
DNN
)、引入更多的辅助信息(如用户画像、item
画像)来刻画。
在接下来的章节中,我们将 FPMC
模型应用于 item
推荐任务。我们将证明,在这种情况下模型可以进一步简化,此时 user
和 last item
之间的交互可以移除。
与完全参数化的概率转移立方体相比,分解模型的泛化性能更好、且参数更少。
对于具有大量 item
的 application
而言,使用
前面已经介绍了个性化马尔科夫链的分解模型,接下来我们将该模型应用于 item
推荐任务中。这意味着模型参数应该针对 ranking
进行优化。
首先,我们从sequential set
数据中导出 S-BPR
,它是 item
推荐的通用优化准则。该优化准则不仅可用于我们的 FPMC
模型,还可用于其他模型,如 kNN
或标准 MF
模型。
其次,我们将 S-BPR
应用于 FPMC
,并展示了在使用 S-BPR
进行 item
推荐的情况下如何简化模型。
最后,我们提出了一种基于 bootstrap
采样的随机梯度下降学习算法,用于使用 S-BPR
优化模型参数。
这个
bootstrap
采样的随机梯度下降学习算法就是mini-batch
随机梯度下降学习算法。
如前所述,从 sequential basket
数据中推荐 item
的目标是推导出 item
的 ranking
函数 ranking
,我们假设有一个估计量 ranking
:
其中
由于 total order
,所以 item
集合
接下来我们导出类似于通用 BPR
方法 的 sequential BPR: S-BPR
优化准则。用户 raking
其中
假设 basket
和用户独立,这导致模型参数的最大后验 maximum a posterior: MAP
估计:
对所有 item pair
basket
内的 next item
之间是相互独立的(来自于 BPR
原始论文的假设),则
然后我们用模型定义
这里我们忽略参数 sigmoid
函数,则有:
进一步地,我们假设模型参数 S-BPR
的 MAP
估计:
其中
S-BPR
和BPR
的核心区别在于:
BPR
的(positive, negative) pair
中,negative
是用户的所有历史 item
之外选取,即全局负样本。S-BPR
的(positive, negative) pair
中,negative
是用户的当前 basket item
(即positive
所在的basket
)之外选取,即局部负样本。
首先,我们用 FPMC
模型来表示 S-BPR
:
引理一(user
和 last item
之间分解的不变性):对于使用 S-BPR
的 item
排序和优化,FPMC
模型对于user
和 last item
之间的分解是不变的,即
证明过程见原文。主要思路:令
则可以证明:
S-BPR
的模型最优化得到相同的参数解 因此对于采用 FPMC
的 item
推荐,我们使用新的
然后,我们将展示简化的 FPMC
模型与标准的矩阵分解matrix factorization: MF
和分解马尔科夫链factorized Markov chain: FMC
的关联。
用于 item
推荐的标准 MF
模型为:
其中
非个性化的分解马尔科夫链FMC
模型为:
因此,FPMC
是 MF
模型和 FMC
模型的线性组合:
这意味着 FPMC
可以包含这两种模型:
user
和 next item
之间分解的维度设为 0
,即 FMC
。last item
和 next item
之间分解的维度设为 0
,即 MF
模型。需要注意的是: item
推荐中,即使FPMC
的模型方程可以通过 MF
和 FMC
模型的线性组合来表示,但是FPMC
不同于单个 MF
模型和单个 FMC
模型的线性组合。因为FPMC
模型的参数是联合学习的,而不是每个子模型(如 MF
模型和 FMC
模型)单独学习的。这在 FPMC
的通用情况下更为明显,其中 FPMC
的模型方程 无法由 MC
和 FMC
的线性组合来表示,如:
FPMC
优化另一个准则(如最小平方误差)而不是 S-BPR
准则时,其中user
和 last item
之间的分解不能被丢弃,因为这个准则下的不变性(即引理一)不成立。此时 FPMC
的模型方程无法由 MC
和 FMC
的线性组合来表示。FPMC
中为张量 TD
或 CD
)而不是 pairwise
交互时,此时即使采用 S-BPR
优化准则,则 FPMC
的模型方程也无法由 MC
和 FMC
的线性组合来表示。FPMC
包含 MF
和 FMC
,而这两个模型也可以使用它们各自所提供的的算法针对 S-BPR
准则进行优化。
尝试直接优化 S-BPR
非常耗时,因为 basket-wise
随机梯度下降方法的收敛速度非常慢。相反,我们通过 bootstrapp
独立地随机抽取四元组,并对这些样本进行随机梯度下降。在每次迭代中,我们随机抽取一个四元组 basket
item
basket
中的 item
S-BPR
执行梯度下降。算法的复杂度为 basket
大小。
感觉这就是常规的
mini-batch
随机梯度下降。
baseline
方法:factorized Markov chain: FMC
、non-factorized Markov chain: MC dense
、matrix factorization: MF
、最流行 most-popular: MP
。
注意,这里包含很强的 baseline
方法 BPR-MF
。由于 MF
和 FMC
都是 FPMC
的特例,因此对于这三种方法我们都是用 FPMC
的学习算法。
数据集:我们使用在线药店的匿名购买数据集。我们使用的数据集是一个 10 core
子集,其中每个用户总共至少购买了 10
个 item
,每个 item
至少被 10
个用户购买。我们还创建了它的一个子集,其中包含 10000
个最多购买的用户、以及 1000
个最多购买的 item
,从而评估稀疏性对方法的影响。
评估方式:我们将每个用户的最后一个 basket
作为测试集,并将剩余的 basket
作为训练集。我们从测试集中删除了过去购买少于 10
种不同 item
的用户。
对于每个用户,我们从测试集中删除该用户已经购买过的所有 item
,这是因为我们希望向用户推荐其不知道的新品。这使得预测任务变得更加困难。否则,对于牙刷、清洁剂等药店中的非耐用品,仅重复推荐已购买商品将是一个简单的、但是非常成功的策略。然而,这不是推荐系统的任务,因为推荐系统应该帮助用户发现新事物。
我们针对每个用户 basket
来测试不同模型的质量。评估指标:
Half-life-utility: HLU
:测试 basket
中每个 next item
的归一化衰减因子之和。其中,归一化衰减因子为:
next item
在所有
我们报告所有测试 basket
的 HLU
均值。
Precision
:top K
预估结果中,命中 next item
的 item
数量除以
Recall
:top K
预估结果中,命中 next item
的 item
数量除以测试 basket
的大小。这里我们选择
此外,我们还报告 F-measure
指标,它是 Precision
和 Recall
的调和均值。
AUC
:Area under the ROC curve
。
实验结果如下图所示。对于分解方法,我们使用
most-popular
方法。32
)下,所有其它分解方法都优于标准 MC
方法(即 MC dense
)。FPMC
优于所有其它方法。我们比较 FMC
和 MC
。结果表明:学习分解的概率转移矩阵相比通常的计数方案counting scheme
产生更好的估计。分解方法有两个优点:它的参数规模更小,并且通过使用低秩近似来防止过拟合。
我们比较FMC
和 MF
。可以看到:在稠密场景下MF
似乎优于 FMC
,而在稀疏场景下FMC
似乎更胜一筹。原因可能是:
MF
方法,要优于仅使用最后一次购买的 FMC
方法。FMC
在稀疏数据集上具有优势。而结合了这两种方法优点的 FPMC
在两个数据集上都优于它们。有些电商推荐系统、新闻网站、媒体网站不会跟踪用户 ID
。虽然 cookie
和浏览器指纹技术可以提供一些程度上的用户识别,但是这些技术通常不可靠并且容易引发隐私问题。即使可以跟踪用户 ID
,但是用户在一些小型电商网站上可能只有一两个会话session
,并且在某些领域(如分类网站classified site
)中,用户的行为通常表现出session-based
的特征。因此,同一个用户的每个会话应该独立地处理。
在中国的互联网早期,存在大量的、可以匿名访问的网站或
APP
,因此不会跟踪用户ID
。随着移动互联网浪潮的兴起,中国互联网大多数网站或APP
需要登录才能访问,典型的例子是淘宝,因此可以跟踪到用户ID
。即使能够跟踪到用户ID
,我们也无法保证操作手机的是同一个用户。
目前大多数电商的session-based
的推荐系统都使用相对简单的方法,如 item-to-item
相似性、item
共现、转移概率等等。虽然有效,但是这些方法仅考虑用户的最后一次行为,而忽略了用户的历史行为。
此外,推荐系统中最常用的是因子模型 factor model
和邻域方法 neighborhood method
。
user-item
交互矩阵分解为一组 user
潜在因子向量和 item
潜在因子向量来完成矩阵补全问题(例如用潜在因子向量的内积)。由于无法跟踪用户 ID
(导致无法获取用户历史交互的 item
),所以因子模型很难应用于session-based
的推荐。item
共现,因此被广泛应用于 session-based
推荐中。RNN
在翻译、对话建模、图像标注image captioning
等领域取得了显著成功,但是很少有人将其用于推荐领域。在论文 《Session-Based Recommendations With Recurrent Neural Networks》
中,作者认为 RNN
可以应用于 session-based
推荐并取得了显著效果。作者处理了在建模这类稀疏序列数据进行时出现的问题,并通过引入适当的、新的 ranking loss function
来使得 RNN
模型适应推荐 setting
。
session-based
推荐问题在建模方面与一些 NLP-related
问题相似,比如它们都处理序列数据。在 session-based
推荐中,我们可以将用户在会话中的第一个交互 item
作为 RNN
的初始输入,然后我们根据这个初始输入来 query
模型从而获得推荐。然后,用户的每次后续交互都会产生一个推荐,这个推荐取决于所有先前的、同一个会话内的交互。 item
集合可能是数万甚至数十万,另外交互行为可能非常频繁,因此训练时间和可扩展性非常重要。
和大多数信息检索和推荐 setting
一样,论文主要关注于建模用户最感兴趣的 top item
,为此论文使用 ranking loss function
来训练 RNN
。
相关工作:
session-based
推荐:推荐系统领域的大部分工作都集中在当 user ID
可用并且可以获取用户画像时的模型上。这种情况下,矩阵分解模型、邻域模型在文献中占据主导地位。session-based
推荐中采用的主要方法之一是 item-to-item
推荐,此时 item-to-item
相似度矩阵是从可用的会话数据中预计算而来,也就是说,在同一个会话中共现的 item
被认为是相似的。这种方法虽然简单但是已被证明有效,并被广泛采用。但是,该方法仅考虑用户的最近一次行为,忽略了用户历史行为信息。
session-based
推荐的另一个稍微不同的方法是马尔科夫决策过程 Markov Decision Processes: MDP
。MDP
是序列随机决策问题的模型,最简单的 MDP
本质上是一阶马尔科夫链,其中 next
推荐可以简单地根据 item
之间的转移概率来计算。 在 session-based
推荐中应用马尔科夫链的主要问题是:当试图包含所有可能的用户行为序列时,状态空间很快变得无法管理。
通用分解框架 General Factorization Framework: GFM
的扩展版本能够使用会话数据来推荐。该方法通过事件event
的 sum
来建模会话,并对 item
使用两种潜在 representation
:一种代表 item
本身、另一种代表 item
是会话的一部分。然后将会话中所有 item
的第二种 representation
取平均从而作为会话的 representation
。但是,该方法不考虑会话中的行为顺序。
推荐系统中的深度学习:在推荐系统中最早应用深度学习的相关方法之一是 《Restricted boltzmann machines for collaborative filtering》
,它使用 RBM
来对 user-item
交互进行建模并执行推荐。此外,深度模型也用于从音乐或图像等非结构化内容中提取特征,然后与更传统的协同过滤模型一起使用,如 《Deep content-based music recommendation》
。最近,《Collaborative deep learning for recommender systems》
引入了一种更通用的方法,该方法使用深度网络从任何类型的 item
中抽取通用的内容特征,然后将这些特征集成到标准的协同过滤中从而提高推荐性能。这些方法在缺乏足够 user-item
交互的 setting
中特别有用 。
标准的 RNN
:
其中:hidden state
,sigmoid
函数)。
Gated Recurrent Unit: GRU
是一个更精细的 RNN
模型,旨在处理梯度消失问题。GRU gates
本质上是学习何时更新单元的隐状态、以及更新多少:
其中:update gate
,reset gate
,sigmoid
激活函数, candidate activation
。
我们在模型中使用 GRU-based RNN
来进行 session-based
推荐。网络的输入是每个时刻会话的实际状态actual state
,输出是会话中下一个事件的 item
。
会话的状态可以是最新的事件(即当前事件)。此时使用 OneHot
编码,即输入向量的长度为 item
为 1
而其它位置为 0
,其中 item
集合大小。
会话的状态也可以是截止到当前的所有事件(即累计事件)。此时对每个事件的 OneHot
编码进行加权和,权重根据事件发生时刻距离当前时间间隔进行衰减。为了稳定性,我们对输入向量进行归一化。
我们希望这种累计事件的方式会有所帮助,因为它增强了记忆效应 memory effect
。但是实验发现,这种方式并不会带来额外的准确率增益。这毫不奇怪,因为 GRU
像 LSTM
一样,同时具有长期记忆和短期记忆。
我们尝试添加一个额外的 embedding layer
,但是发现 OneHot
编码总是表现得更好。
如果没有
embedding layer
,则分别充当不同的 embedding
矩阵; 如果添加额外的embedding layer
,则表示在已有的 embedding
矩阵之上的投影矩阵。
网络的核心是 GRU layer
。可以使用多层 GRU layer
,其中前一层的 hidden state
是下一层 的输入。最后一个 GRU layer
和输出层之间添加了额外的前馈层 Feedforward layer
(但是实验发现增加这个额外的前馈层对于效果提升没有帮助)。输出是每个 item
在当前会话中成为 next
的可能性。input
层也可以选择连接到网络中更深的 GRU layer
,因为我们发现这可以提高性能。
完整的架构如下图所示,该架构描述了事件时间序列中单个事件的 representation
。
图中包含了
embedding layer
和feedforward layer
,但是根据实验描述,这两个layer
是无益的,需要移除。
由于推荐系统不是 RNN
的主要应用领域,我们修改了基础网络从而更好地适应任务。我们还考虑了实际场景,以便我们的解决方案可以应用于现场环境。
session-parallel mini-batch
:用于 NLP
任务的 RNN
通常使用 in-sequence mini-batch
。例如,通常在句子的单词上使用滑动窗口,并将这些窗口片段彼此相邻从而形成 mini-batch
。这不适合于我们的任务,因为:
NLP
中的句子)。一些会话仅包含一到两个事件,而另一些会话可能包含超过数百个事件。因此,我们使用 session-parallel mini-batch
,如下图所示。具体而言:
首先,我们将所有会话进行排序。
注意,这里是以会话为基本单元进行排序,而不是对会话内的事件进行排序。
然后,我们使用前 X
个会话的第一个事件来构成第一个 mini-batch
的输入(所需的输出是这些会话的第二个事件)。第二个mini-batch
是由这些会话的第二个事件形成的,依次类推。
如果任何一个会话结束了,则下一个可用的会话将填补该结束会话的位置。假设会话之间是相互独立的,因此我们在发生这种会话切换的时候重置对应的 hidden state
。
这种训练方式可以支持任意长度的
session
,而无需将session
进行长度限制(比如截断为固定长度)。
sampling on the output
:当 item
集合规模太大时,在每个 step
计算每个 item
在当前会话中成为 next
的可能性是不现实的。因此我们需要负采样技术。
我们根据 item
的流行程度进行负采样: item
越流行,那么用户就越可能知道它,那么用户未对该 item
交互则意味着用户更有可能不喜欢该流行 item
。
我们没有为每个训练样本生成单独的负采样,而是使用来自 mini-batch
的其它训练样本的 item
作为负采样。这种方法的好处是我们可以减少计算时间、降低代码复杂性、并且也易于实现。同时,该方法也是一种基于流行程度的采样,因为一个 item
出现在 mini-batch
中的可能性与其流行程度成正比。
ranking loss
:推荐系统的核心是 item
的 relevance-based ranking
。尽管该任务也可以解释为分类任务,但是 learning-to-rank
方法通常优于其它方法。ranking
可以是 point-wise
、pair-wise
、或者 list-wise
的。
point-wise ranking
彼此独立地估计 item
的 score
或者 ranking
,并且损失函数的定义方式使得相关的 item
的排名应该靠前。pair-wise ranking
比较一个 positive item
和一个 negative item
组成的 ranking pair
对,损失函数强制 positive item
的排名应该比 negative item
的排名更靠前。list-wise ranking
使用所有 item
的 score
或 ranking
,并将它们与完美排序进行比较。它通常在计算上代价太大,因此不经常使用。此外,如果仅有一个相关的 item
(例如我们这里的例子),list-wise ranking
可以通过 pair-wise ranking
来解决。我们在我们的解决方案中包含了几个 point-wise ranking loss
和 pair-wise ranking loss
。我们发现模型的 point-wise ranking loss
不太稳定,而 pair-wise ranking loss
表现良好,最终我们使用以下两个 pair-wise ranking loss
:
BPR
:贝叶斯个性化排名Bayesian Personalized Ranking: BPR
是一种矩阵分解方法,它使用 pair-wise ranking loss
。它比较一个 positive item
和一个负采样的 negative item
的 score
。这里,我们将 positive item
的 score
和几个负采样的 negative item
的 score
进行比较,并将它们的均值作为损失。具体而言,pair-wise ranking loss
为:
其中:sigmoid
函数,s
中 item
score
,positive item
,negative item
。
TOP1
:这个 ranking loss
是我们为这项任务而设计的,它是 relevant item
的相对排名relative rank
的正则化近似。relevant item
其中 sigmoid
函数来代替示性函数,优化这个相对排名将会修改 parameter
从而使得 item
score
会很高。
然而,这个目标函数不稳定,因为某些 positive item
也会扮演负样本角色,因此 score
往往会变得越来越高。
为避免这种情况,我们希望强制 negative item
的 score
在零左右,这是negative item
的 score
的自然预期。为此,我们在损失函数中添加了一个正则化项。重要的是,这一项与相对排名在同一取值区间并且作用与其相似。最终的损失函数为:
.
数据集:
RecSys Challenge 2015
数据集(RSC15
):该数据集包含电商网站上的click-streams
,其中某些stream
以购买事件而结束。我们仅保留点击事件,并且过滤掉长度为 1
的会话。我们使用前 6
个月的数据进行训练,使用第二天的会话进行测试。每个会话要么是训练集要么是测试集,我们不会在会话中拆分数据。
由于协同过滤方法的性质,我们从测试集中过滤掉训练期间 unseen
的 item
,并且删除测试集中长度为 1
的会话。
VIDEO
数据集:包含某个视频服务平台收集的视频观看事件。预处理步骤如前所述,但是也过滤掉了很长的会话,因为这些会话可能是由机器人生成的。训练数据集包含最后一天除外的所有数据,测试数据集包含最后一天的数据。
评估方式:通过 one-by-one
提供会话的事件并检查下一个事件的 item
排名来完成评估。GRU
的隐状态在会话结束之后重置为零。 item
按照 score
降序排名。
对于 RSC15
数据集,我们对训练集中出现的 37483
个 item
进行排名。对于 VIDEO
数据集,因为 item
集合太大因此我们将 next item
和最流行的 30000
个 item
进行排名。这种评估的影响可以忽略不计,因为冷门的 item
通常 score
很低。此外,基于流行度的预过滤在实际推荐系统中很常见。
recall@20
:在 top 20
排名的 item
中,召回的 next item
占所有 next item
的比例。
召回不考虑 item
的实际排名,只要它位于 top N
的位置。这很好地建模了某些实际场景,其中绝对顺序无关紧要。此外,召回率通常还与重要的在线指标密切相关,如点击率 CTR
。
MRR@20
:Mean Reciprocal Rank: MRR
是 next item
的排名的倒数的均值。如果排名在 20
之后则排名的倒数置为零。
MRR
考虑 item
的排名,这在推荐顺序很重要的场景下很重要(如排名靠后的 item
仅在滚动屏幕之后才可见)。
baseline
方法:
POP
:流行度的 predictor
,它总是推荐训练集中的流行 item
。尽管简单,但是它通常是某些领域的强大 baseline
。
S-POP
:推荐当前会话中最流行的 item
(而不是全局最流行的 item
)。该 baseline
在具有高重复性的领域中很强。
Item-KNN
:基于 item
相似性来推荐和当前 item
最相似的 item
。相似度定义为
此外,我们还使用正则化从而避免冷门 item
的偶然发生导致的高度相似性。
该 baseline
是实际系统中最常见的 item-to-item
解决方案之一。尽管简单,它通常也是一个强大的 baseline
。
BPR-MF
:它通过 SGD
优化 pair-wise ranking
目标函数,是最常用的矩阵分解方法之一。矩阵分解无法直接应用于 session-based
推荐,因为新会话没有预先计算的特征向量。然而,我们可以通过使用会话中出现的 item
的特征向量的均值作为 user
特征向量来克服这个问题。换句话讲,我们对 next item
的特征向量、迄今为止会话中 item
特征向量的相似性进行平均。
这些 baseline
的效果如下表所示,其中 item-KNN
方法显著优于其它 baseline
方法。
参数配置:我们通过单独优化每个超参数来进行超参数调优,其中调优是在单独的验证集上进行的。然后我们在训练集和验证集上对网络进行重新训练,并最终在测试集上进行评估。下表给出了最佳的超参数。
此外还有一些探索如下:
权重矩阵从
我们评估了 rmsprop
和 adagrad
优化器,发现 adagrad
效果更好。
我们对 GRU
以外的其它 RNN
单元进行了简单的实验,发现常规的 RNN
单元和 LSTM
单元的效果都更差。
我们尝试了几种损失函数。
point-wise ranking loss
(如交叉熵和 MRR
)优化通常是不稳定的,即使添加正则化也是如此。我们认为:这是由于这种方法试图为 positive item
获得高分,而负样本的 negative push
太小。pair-wise ranking loss
表现良好。我们检查了几种架构,发现:
GRU
表现最好。我们假设这是由于会话的生命周期通常都很短,不需要表达不同分辨率的多个时间尺度。然而,确切原因尚不明确,需要进一步研究。item embedding
得到的效果稍差,因此我们仅使用 OneHot
编码。GRU
像 LSTM
一样,同时具有长期记忆和短期记忆。GRU layer
之后添加额外的前馈层也没有帮助。GRU layer
的大小提高了性能。tanh
作为输出层的激活函数是有益的。实验结果:下表给出了性能最佳的网络的结果(括号表示相对于 item-KNN
中的提升。)。具有 1000
个隐单元的 VIDEO
数据集的交叉熵在数值上不稳定,因此我们没有提供结果。结论:
100
,GRU-based
的方法在两个数据集上都显著优于 item-KNN
。增加隐单元数量进一步改善 pair-wise loss
的结果,但是降低了交叉熵损失(即 point-wise loss
)的准确率。100
时,尽管交叉熵损失给出了更好的结果,但是随着隐单元数量的增加,pair-wise loss
超过了该结果。GPU
上从隐单元 100
提升到 1000
的代价不太昂贵。positive item
的 score
,而其它 item
的 negative push
相对较小。因此,我们建议使用上述两个 pair-wise loss
中的任何一个。购物篮分析 market basket analysis
可以帮助零售商更好地了解用户的购买行为,从而作出更好的决策。购物篮分析最重要的任务之一是 next basket recommendation
:根据每个用户的序列交易数据来推荐用户下一次访问时可能想要购买的item
。其中,交易transaction
是在某个时刻购买的一组 item
(如鞋子、包包)。该问题有两种建模范式:
sequential recommender
:主要依赖于马尔科夫链。它根据最近的动作预测 next purchase
来探索序列交易数据。该模型的一个主要优点是它能够捕获序列行为从而用于良好的推荐。例如,对于最近购买手机的用户,它可能会推荐该用户购买手机配件,其中这些手机配件是其它用户购买手机后也来购买的。general recommender
:丢弃任何序列信息并学习用户感兴趣的 item
。这类方法中最成功的方法之一是基于模型的协同过滤 (如矩阵分解模型)。显然,通用推荐器擅长通过学习用户的整个购买历史来捕获用户的通用兴趣general taste
。next basket recommendation
的更好的解决方案是同时考虑序列行为和用户的通用兴趣。个性化的马尔科夫链personalized Markov chain: FPMC
朝着这个方向迈出了一步,它能够同时建模序列行为(通过前一个交易中的 item
与后一个交易中的 item
之间的交互)、以及用户的通用兴趣(通过用户与 next basket
中的 item
之间的交互),因此比单独的序列推荐器或者单独的通用推荐器表现更好。然而,FPMC
的一个主要问题在于它的所有组件都是线性组合的,表明它在多个因子之间做出了强独立性假设(即,每个组件都是独立地影响用户的 next purchase
)。不幸的是,根据论文《Learning Hierarchical Representation Model for Next Basket Recommendation》
的分析,作者表明独立性假设不足以提供良好的推荐。
为解决上述问题,论文《Learning Hierarchical Representation Model for Next Basket Recommendation》
为 next basket recommendation
引入了一种新颖的 hierarchical representation model: HRM
。具体而言,HRM
将每个用户和每个 item
表达为连续空间中的一个向量,并使用 two-layer
结构来构建用户、以及上一次交易的 item
的hybrid representation`:
item
向量,从而形成 transaction representation
。transaction representation
从而构建 hybrid representation
。然后,论文使用得到的 hybrid representation
来预测 next basket
中的 item
。注意,transaction representation
对序列行为进行建模,而 user representation
捕获了用户的通用兴趣。
HRM
允许我们在不同的层灵活地使用不同类型的聚合函数。具体而言,通过采用非线性运算(而不是线性运算),我们可以建模不同因子之间更复杂的交互,而不是独立性假设。例如,通过使用最大池化操作,我们可以比较来自不同因子的特征,并且仅选择那些最重要的特征来形成更高 level
的 representation
从而用于未来的预测。
论文还表明,通过选择适当的聚合函数,HRM
包含了几种现有的方法,包括马尔科夫链模型、矩阵分解模型、FPMC
模型的变体。为了学习模型参数,论文使用负采样程序作为优化方法。论文对三个真实世界的交易数据集进行了实验,结果证明了HRM
与 state-of-the-art baseline
方法相比的有效性。
主要贡献:
next basket recommendation
引入了一个通用模型,该模型可以捕获序列行为和用户的通用兴趣,并灵活地结合多个因子之间的不同交互。hierarchical model
中引入了两种类型的聚合函数,即均值池化和最大池化,并研究了这些函数的不同组合的效果。HRM
模型在选择适当聚合函数的情况下,包含了几种现有的推荐方法。HRM
模型在 next basket recommendation
的不同评估指标下始终优于 state-of-the-art baseline
。相关工作:next basket recommendation
是基于隐式反馈的推荐系统的典型应用,其中用户没有显式的偏好(如评分),而只有正向的观察 positive observation
(如购买或点击)。
序列推荐器:主要基于马尔科夫链模型,通过在给定最近一个动作的情况下预测用户的下一步动作来利用序列数据。我们的工作与之前方法的主要区别在于:除了序列行为之外,我们还包含了用户的通用兴趣。以外,以前的序列推荐器很少解决因子中 item
之间的交互。
通用推荐器:根据用户的整个购买历史进行推荐 ,而不考虑序列行为。通用推荐器的关键思想是协同过滤 collaborative filtering: CF
,它进一步可以分为基于内存的 CF
(通过某些相似性度量找到 k
近邻的用户或 item
来进行推荐)、以及基于模型的 CF
(通过分解 user-item
相关性矩阵来进行推荐)。通用推荐器擅长捕获用户的通用兴趣,但是如果没有建模序列行为,那么很难将其用于用户最近的购买行为。
混合模型hybrid model
:结合了序列行为建模和用户通用兴趣建模。
一个 state-of-the-art
模型是 FPMC
,它构建了一个概率转移立方体 transition cube
,其中立方体的每一项给出了用户 item
item
last item
、 next item
之间的三个 pairwise
交互来解释这个概率。以这种方式,FPMC
通过 last item
与 next item
之间的交互来建模序列行为,通过用户与 next item
之间的交互来建模用户的通用兴趣。实验表明,这种混合模型可以比单独的序列推荐器、或者单独的通用推荐器实现更好的性能。
动机:next basket recommendation
的一个简单的解决方案是:线性组合序列因子sequential factor
(来自序列行为模型)和通用因子 general factor
(来自用户通用兴趣模型)。然而,这种线性组合假设多个因子之间是独立的。真实世界的结果表明,不同因子之间的独立性假设可能不足以提供良好的推荐。我们需要一个能够更复杂地集成多个因子之间交互的模型。这成为我们工作的主要动机。
令 item
集合,item
数量。
对于每个用户 item
集合,next basket recommendation
任务是推荐用户 item
。
next basket recommendation
任务可以公式化为对用户 ranking
ranking
我们可以向每个用户推荐 top n items
。
为解决上述推荐问题,我们提出了 HRM
模型。HRM
的思想是学习一个可以同时包含序列行为和用户通用兴趣的推荐模型,同时建模这些因子之间的复杂交互。
具体而言,HRM
将每个用户和每个 item
表达为连续空间中的一个向量,并采用两层结构来构建用户和最近一次交易的 item
的 hybrid representation
:
item
向量从而形成 transaction representation
。transaction representation
来构建 hybrid representation
。然后使用得到的 hybrid representation
来预测 next basket
中的 item
。HRM
的整体结构如下图所示。正如我们所见,HRM
通过对连续购买进行建模从而捕获序列行为,通过在序列推荐中集成个性化的 user representation
从而建模了用户的通用兴趣。
该模型有两个不足:
- 首先,模型无法捕获用户的所有历史,只能“看到 “最近” 一次发生的交易,所以无法捕获用户的长期兴趣。
- 其次,模型没有捕获用户兴趣的动态演变。
更正式而言,令 representation
矩阵,第 representation
向量,item representation
矩阵,第 item
representation
向量。
给定用户 HRM
通过一个 softmax
函数定义用户 next item
其中 hybrid representation
,它被定义为:
其中
HRM
的一个优点是我们可以引入各种聚合函数来从 lower level
形成 higher level
的 representation
。通过这种方式,我们可以对不同层的多个因子之间的不同交互进行建模,即在第一层对构成了 transaction representation
的 item
之间的交互进行建模,在第二层对 user represetnation
和 transaction representation
之间的交互进行建模。
在这项工作中,我们研究了均值池化 average pooling
和最大池化 max pooling
这两种典型的聚合函数。显然,均值池化是一种线性运算,它假设输入的 representation
之间相互独立。相反,最大池化是一种非线性操作,它对输入的 representation
之间的交互进行建模,只有那些最重要的特征才会被保留下来。
注意,还可以定义其它类型的聚合函数,如 top-k
均值池化或者 Hadamard product
。我们可能会在将来的工作中研究这些聚合函数。此外,还可以考虑在深度神经网络中引入非线性层,然而我们求助于简单的模型,因为这样的计算复杂度较低从而可以用于非常大的数据集。
由于 HRM
中有两个聚合,因此我们根据不同的操作组合得到四个版本的 HRM
,即:HRM
版本实际上假设多个因子之间的交互程度不同。
FPMC
的某种变体。item
之间、要么在 user represetnation
和 transaction representation
之间。HRM
的损失函数是负的对数似然:
其中:
然而直接优化上述目标函数是不现实的,因为计算完整的 softmax
的代价与 item
数量
其中:sigmoid
函数,noise distribution
。
正如我们所看到的的,带负采样的 HRM
的目标旨在最大化观察到的 item
item
我们使用随机梯度下降算法来最小化 Dropout
技术来避免过拟合。在我们的工作中,我们为每个单元设置了一个固定的 dropout rate
(即,0.5
)。
一旦学到 user representation
和 item representation
,则HRM
的 next basket recommendation
过程如下:
item
item
的未归一化概率对 item
进行排序,并选择 top n
个结果来推荐给用户。注意,由于排序只需要考虑相对大小,因此没有必要计算完整的
softmax
值。
HRM
和马尔科夫链的关系:HRM
可以简化为某种类型的马尔科夫链模型。
我们选择特殊的聚合函数:
item
向量作为 transaction representation
。transaction representation
作为 hybrid representation
。我们将这种模型称作
其中 item
的 representation
。
类似于 《distributed representations of sentences and documents》
中的推导,我们得到上式的最优解:
这意味着 factorized Markov chain model: FMC
,它通过分解 item
(这些 item
来自于两个连续的交易)之间的转移矩阵 transition matrix
,这个转移矩阵与shifted PMI
矩阵相关联。当 PMI
矩阵。
事实上,如果我们采用噪声对比估计进行优化,则最优解为:
这意味着 shifted
的对数条件概率矩阵。
HRM
和矩阵分解模型:HRM
可以简化为矩阵分解模型。
HRM vs Matrix Factorization Model
:
我们选择特殊的聚合函数:对于第二层聚合,我们选择 user representation
作为 hybrid representation
(此时第一层完全被移除掉)。我们将这种模型称作
其最优解为:
通过这种方式, shifted PMI
矩阵。
这个
shifted PMI
矩阵和的 shifted PMI
矩阵在公式上不相同。
HRM
和 FPMC
的关系:HRM
可以简化为 FPMC
模型的某种变体。
基于 S-BPR
优化准则和最大后验估计的 FPMC
,其损失函数为:
其中 prediction model
:
对于 HRM
模型,如果我们选择负样本数量
考虑到每一层都是均值池化,则有:
因此有:
可以看到:FPMC
共享相同的预测模型(即,pairwise
优化准则optimization criteria
:
FPMC
使用 pairwise ranking
损失函数,即 item
ranking
高于未观察到的 item
pairwise ranking
损失函数,即 item
ranking
、最小化未观察到的 item
ranking
。实际上,我们也可以采用 S-BPR
准则来定义 FPMC
相同的模型。
基于上述分析,我们可以看到 HRM
实际上是一个非常通用的模型。通过引入不同的聚合函数,我们可以包含已有方法。此外,我们还可以探索其它预测函数以及优化准则,从而展现 HRM
的灵活性和潜力。
数据集:我们使用三个真实交易数据集来评估不同的推荐方法。
Ta-Feng
数据集:RecSys
会议发布的公开数据集,涵盖了从食品、办公用品到家具产品。BeiRen
数据集:来自中国的大型零售企业 BeiGuoRenBai
,记录了 2013
年 1
月到 2013
年 9
月期间的超市购买记录。T-Mall
数据集:淘宝发布的一个公共的在线电商数据集,以品牌(而不是商品)的方式记录了在线交易。我们首先对数据集进行预处理。对于 Ta-Feng
和 BeiRen
数据集,我们删除了用户量少于 10
个的商品、以及商品量少于 10
个的用户。对于较小的 T-Mall
数据集,我们删除了用户量少于 3
个的商品、以及商品量少于 3
个的用户。处理后的数据集如下表所示。
最后,我们将所有数据集拆分为训练集和测试集,其中测试集仅包含每个用户的最后一笔交易,而剩余所有交易都放入训练集中。
baseline
方法:
TOP
:将训练集中最流行的 item
作为每个用户的推荐。
MC
:马尔科夫链模型(即序列推荐器),它根据用户的最后一笔交易来预测 next purchase
。预测模型为:
其中转移概率
Nonnegative Matrix Factorization: NMF
:是一种 state-of-the-art
的协同过滤方法。它是基于 user-item
矩阵的非负矩阵分解,该矩阵是通过丢弃序列信息从交易数据集构造而来。
FPMC
:next basket recommendation
的 state-of-the-art
混合模型,预测时同时考虑了序列行为和用户的通用兴趣。
对于 NMF, FPMC, HRM
方法,我们在 Ta-Feng
数据集和 BeiRen
数据集上设置维度 T-Mall
数据集上设置
评估指标:我们在测试集中对每个用户 item
(item
列表 item
。我们使用以下指标来评估推荐列表与实际购买的 item
:
F1-Score
:它是 precision
和 recall
的调和平均值,是广泛应用的指标。Hit-Ratio
:如果实际购买的 item
至少有一项也出现在推荐列表中,则称之为命中。命中的推荐列表占所有推荐列表的比例称之为命中率。命中率关注推荐系统的召回率,即所有用户中有多少比率的人获得至少一个正确的推荐。NDCG@k
:Normalized Discounted Cumulative Gain: NDCG
是一种基于排名的指标,它考虑了列表推荐中的 item
顺序。不同 HRM
变体的比较:
next basket recommendation
中对多个因子之间的交互进行建模的优势。不同方法之间的比较:我们选择 HRM
版本与 baseline
方法进行比较。
TOP
方法效果最差。然而我们发现 Top
方法在 T-Mall
数据集上优于 MC
。这可能是由于 T-Mall
数据集中的商品实际上是品牌。因此流行品牌在训练集和测试集上的分布非常接近,这符合 Top
方法的假设并导致更好的性能。NMF
方法在大多数情况下优于 MC
方法。一个主要原因是 MC
方法中估计的转移矩阵相当稀疏,直接应用它进行推荐可能导致效果不佳。提高 MC
方法性能的一种方法是分解转移矩阵从而缓解稀疏性问题。FPMC
可以获得比 MC
和 NMF
更好的结果。baseline
方法。为进一步研究不同方法的性能,我们根据用户的活跃度将用户分为三组(即,不活跃、中等活跃、活跃)并对不同用户组进行比较。以 Ta-Feng
数据集为例,如果用户购买历史少于 5
次则为不活跃、超过 20
次则为活跃、否则为中等活跃。这样,不活跃、中等活跃、活跃用户的占比分别为 40.8%, 54.5%, 4.7%
。由于篇幅所限我们仅报告 Ta-Feng
数据集的结果,其它数据集的结果也是类似的。
Top
方法仍然是所有用户组中表现最差的。MC
在非活跃用户和中等活跃用户上的效果都优于 NMF
,而在活跃用户上比 NMF
更差。这表明,NMF
很难通过很少的交易来学习良好的 user representation
从而进行推荐。FPMC
在非活跃用户和活跃用户上的性能优于 MC
、在非活跃用户和中等活跃用户上的性能优于 NMF
。但是,我们可以看到不同用户组的改进并不是很一致。负采样的影响:这里我们研究负采样数量 Ta-Feng
数据集和 BeiRen
数据集上 T-Mall
数据集上
F1-Score
也随之提升,并且三个数据集的趋势非常一致。baseline
比较实验中,我们在 Ta-Feng, BeiRen, T-Mall
数据集中,分别将 25, 60, 6
。通常而言,next basket recommendation
有两种不同的方法:
collaborative filtering: CF
模型:它捕获用户的通用兴趣general interest
,但是难以考虑历史交易的序列特征。矩阵分解matrix factorization: MF
模型是一个成功的 CF
模型,它对整个历史交易数据构建的 user-item
矩阵进行因子分解,并用潜在向量来表达用户的通用兴趣。next purchase
。因此,next basket recommendation
的一种更合适的方法是在混合模型hybrid model
中同时捕获上述序列行为和用户通用兴趣。
Factorizing Personalized Markov Chain: FPMC
可以对每两个相邻 basket
之间的序列行为进行建模,并且用户的通用兴趣由 basket
中的 item
来塑造 shaped
。但是,FPMC
只是对多个因子进行线性运算,并不能描述多个因子之间的交互。Hierarchical Representation Model: HRM
似乎部分地解决了如何通过非线性最大池化操作来聚合多个交互因子的问题。然而,所有基于马尔科夫链的方法(包括上述 FPMC
和 HRM
)都具有相同的缺陷,即这些推荐器只能对每两个相邻 basket
之间的局部序列行为进行建模,而这这两个相邻 basket
有时可能不相关。例如,用户 ultrabook
、在 ultrabook
的配件,此时每两个相邻 basket
之间不存在任何相关性。因此,我们需要对全局序列行为进行建模,从而充分利用 sequential basket
之间的所有相关性,如 basket
。出于这个原因,论文 《A Dynamic Recurrent Model for Next Basket Recommendation》
计划在用户的所有 sequential basket
中对全局序列特征进行建模。如前所述,HRM
提取的局部序列特征不足以对不同 basket
之间的关系进行建模,而深度 RNN
架构的循环操作可以从用户的所有 basket
中捕获全局序列特征。因此,论文 《A Dynamic Recurrent Model for Next Basket Recommendation》
提出了一个动态循环模型 DREAM
用于 next basket recommendation
。DREAM
模型的输入由一系列 basket
的 item
组成,这些 item
构成了特定用户的、顺序的交易。随着时间的推移,池化操作和矩阵运算为每个用户提供 dynamic representation
。此外,循环结构可以从整体历史交易数据中获得每个用户的一些全局序列特征。论文在两个真实世界数据集上的实验结果表明,和 FPMC
、HRM
等 state-of-the-art
模型相比,DREAM
模型在 next basket recommendation
方面取得了很大的进步。
这项工作的主要贡献:
dynamic representation
,以及 item
购买历史的全局序列行为。DREAM
模型的有效性。据作者所知,DREAM
是首个尝试结合 dynamic representation
和全局序列行为从而提高 next basket recommendation
性能的方法。
令 item
的 representation
矩阵,其第 item
representation
向量,representation
维度。所有 item
的集合为
对于用户 basket
集合 basket of items
。
对于具有历史交易数据的 next basket recommendation
,我们将问题公式化为:预测每个用户在给定时刻 item
的 ranking list
。
DREAM
的整体框架如下图所示。
模型的输入是 basket
的序列。对于用户 basket
basket
内 item
的潜在 representation
basket
item
的潜在 representation
,basket
item
数量。现在,我们可以通过聚合这些 item representation
来生成basket
basket representation
basket representation
RNN
的输入层。
隐层的 vector representation
dynamic representation
。RNN
矩阵 basket representation
和用户兴趣之间的转移矩阵。最后,隐层的 vector representation
可以计算为:
其中: basket representation
,dynamic representation
,sigmoid
函数)。
最后,模型在时刻 item
的得分
它是每个 item representation
和user dynamic representation
的内积。item
item
。
目标函数:我们选择 Bayesian Personalized Ranking: BPR
作为目标函数。我们的基本假设是:用户在特定时间更喜欢 basket
中的 item
,而不是负样本(即 basket
之外的 item
)。负样本可以是basket
之外的任何其它 item
。因此我们最大化以下概率:
其中:sigmoid
函数。
考虑所有的对数似然以及正则化项,则我们的目标函数为:
其中:
我们使用随机梯度下降来更新求解上述最优化问题。
DREAM
仅仅建模序列信息,并未建模用户的全局兴趣。可以看到这里并没有user embedding
矩阵。
注意,DREAM
模型迭代式地学习用户的 representation
。即,我们可以迭代式地根据新的交易来更新已有的用户 representation
(由于 RNN
的性质),这种更新的代价相比分解完整的 user-item
矩阵而言要小得多。
数据集:
Ta-Feng
数据集:RecSys
会议发布的公开数据集,涵盖了从食品、办公用品到家具产品。T-mall
数据集:淘宝发布的一个公共的在线电商数据集,以品牌(而不是商品)的方式记录了在线交易。我们对上述数据集进行预处理,每个用户至少购买 item
才会被保留。对于 Ta-Feng
数据集我们设置 T-Mall
数据集我们设置
baseline
方法:
TOP
:将训练集中最流行的 item
作为每个用户的推荐。
MC
:马尔科夫链模型(即序列推荐器),它根据用户的最后一笔交易来预测 next purchase
。预测模型为:
其中转移概率
Nonnegative Matrix Factorization: NMF
:是一种 state-of-the-art
的协同过滤方法。它是基于 user-item
矩阵的非负矩阵分解,该矩阵是通过丢弃序列信息从交易数据集构造而来。
FPMC
:next basket recommendation
的 state-of-the-art
混合模型,预测时同时考虑了序列行为和用户的通用兴趣。
HRM
:是一种 state-of-the-art
的 hierarchical repre- sentation
模型,可以捕获通用的用户兴趣以及序列效应。此外,通过各种非线性操作,HRM
可以比先前的模型更准确地捕获所有这些因子。
评估指标:我们为每个用户 item
的 ranking list
。我们使用 F1-score
和 Normalized Discounted Cumulative Gain: NDCG
指标。
我们使用每个用户的最后一笔交易作为测试数据集,其它所有交易作为训练数据集。item representation
是随机初始化的。
此外我们给出不同 representation
维度 Ta-Feng
数据集,T-Mall
数据集,
首先我们将 DREAM
模型与 baseline
方法比较,如下图所示。整体而言,next basket recommendation
的性能排名如下:DREAM, HRM, FPMC, NMF, MC, TOP
。
TOP
仅推荐流行 item
,并且没有利用每个 basket
的特征,因此该方法效果最差。NMF
和 MC
仅利用了一种特征(或者是序列行为、或者是用户的通用兴趣),我们观察到 NMF
比 MC
效果更好,尤其是在稀疏的 T-Mall
数据集上。可能是因为 MC
无法揭露用户之间的协同信息。在 T-Mall
的稀疏的 user-item
矩阵上,协同信息相比较于稀疏的序列行为,对于生成用户的准确兴趣更重要。HRM
模型都优于 FPMC
模型。虽然 FPMC
和 HRM
都利用了序列行为,但是 HRM
的多个因子之间的非线性运算为其带来了更好的性能。而 FPMC
对 basket
中 item
交互的线性独立假设使其不适用于复杂的商业场景。DREAM
在两个数据集上的所有指标方面都优于所有 baseline
。这表明,具有循环架构的 user dynamic representation
在捕获用户的序列特征和动态兴趣方面是有效的。此外,池化操作、激活函数等丰富的非线性操作有助于更好地表达 basket
。然后我们比较最大池化和均值池化对 DREAM
模型的性能影响。可以看到,最大池化的效果要优于均值池化。
显然,均值池化是一种线性操作,这表明 basket
中的每个 item
都以独立的方式影响 basket representation
。然而在现实世界的场景中,我们购买的许多 item
都是交互的,即,一个 item
会影响我们是否购买另一个 item
,而购买 item
的整体可以 shape
我们的兴趣。 因此,更好的解决方案是通过非线性运算来学习 basket
内 item
的复杂交互关系。最大池化是一种非线性操作,能够比线性操作更好地学习复杂的交互。
传统的个性化推荐方法通常需要用户画像,至关重要的是,这些方法要求在推荐时识别用户。然而这可能是不可行的,例如:网站的新用户没有任何画像信息,或者用户没有登录,或者用户删除了他们的 tracking
信息。这导致了基于用户历史的推荐方法的冷启动问题。
另一种替代方法依赖于历史数据,并提供 session-based
推荐。在这个 setting
中,推荐系统仅根据用户在当前 session
中的行为进行推荐。这避免了上述冷启动问题,但我们必须确保系统保持准确率和及时响应(即,预测不会耗费太长时间)。最近,《Session-based recommendations with recurrent neural networks》
提出了 RNN
用于 session-based
推荐。作者展示了 RNN
相对于传统模型在 session-based
推荐上的显著改进。
在论文 《Improved Recurrent Neural Networks for Session-based Recommendations》
中,论文进一步研究了 RNN
在session-based
推荐中的应用。具体而言,作者检查和采纳了文献中的各种技术来完成这项任务,包括:
sequence preprocessing
和 embedding dropout
来增强数据,从而提升训练并减少过拟合。temporal shift
。privileged information
的蒸馏,从而从小数据集中学习。此外,论文提出了一种新颖的替代模型,该模型通过直接预测 item embedding
来减少预测的时间成本和空间成本。这使得 RNN
更容易在 real-time setting
中部署 。
论文在 RecSys Challenge 2015
数据集上进行了评估,并证明了作者所提出方法的有效性。
相关工作:
矩阵分解和基于邻域的方法在文献中被广泛应用于推荐系统。
矩阵分解方法基于稀疏的 user-item
交互矩阵,其中推荐问题被公式化为矩阵补全任务matrix completion task
。在分解矩阵之后,每个用户都由一个潜在因子向量来表示,每个 item
也都由一个潜在因子向量来表示。然后可以通过对应的 user latent vector
和item latent vector
内积来补全 user-item
矩阵的缺失值。
由于这需要我们同时识别用户向量和 item
向量,因此矩阵分解方法无法直接适用于用户未知的 session-based
推荐。解决这个冷启动问题的一种方法是使用成对偏好回归 pairwise preference regression
。
基于邻域的方法利用 target item
和用户购买历史 item
之间的相似性。通过比较 session similarity
,基于邻域的方法可以应用于 session-based
推荐。
深度学习最近在图像识别、语音识别、自然语言处理等领域取得了非常成功的应用。在《Session-based recommendations with recurrent neural networks》
中,作者提出 RNN
来用于 session-based
推荐。作者将 RNN
(带有自定义的 ranking loss
)与现有的 session-based
预测方法进行比较,发现 RNN-based
方法的性能相比 baseline
要提升 20% ~ 30%
。我们的工作与之密切相关,我们研究该 RNN
模型的扩展。
在 《Sequential click prediction for sponsored search with recurrent neural networks》
中,作者还使用 RNN
进行点击序列预测。他们考虑了历史用户行为,也考虑了每个用户和每个 item
的、手工设计的特征。在这项工作中,我们完全依赖于自动学习的 feature representation
。
也有许多工作提出了方法来提高 DNN
的预测性能。流行的方法包括:数据增强、dropout
、batch normalization
、残差连接。我们寻求应用其中一些方法来提升我们模型的训练。
人们提出 learning using privileged information: LUPI
框架来利用一些额外的 feature representation
,这些 feature representation
仅在训练期间可用但是在测试期间不可用。当训练数据量有限时,人们发现使用此类信息是有益的。
在广义蒸馏方法中,student
模型从 teacher
模型提供的 soft label
中学习。如果我们在 privileged dataset
上训练 teacher
模型,那么这种方法可以应用于 LUPI
。在这项工作中,我们提出使用 LUPI
框架来用于点击序列的预测,其中我们使用每个点击序列的未来部分作为 privileged information
。
session-based
推荐的 RNN
:session-based
推荐问题可以公式化为基于序列的预测问题:令所有 item
集合的大小为 click session
,其中 item
的索引并且 click session
中的任何前导点击序列 item
item
的概率。
我们将 item
成为 session
中 next click
的排序分。由于我们通常需要为用户选择一个以上的推荐,因此这里推荐 top-k item
(根据 next click
,则我们用一个 one-hot
编码 pairwise ranking loss
。
我们遵循下图所示 RNN
模型的通用结构。对于recurrent layer
,我们使用 Gated Recurrent Unit: GRU
,因为 《Session-based recommendations with recurrent neural networks》
中发现它优于 LSTM
单元。但是,我们没有使用 stateful RNN
训练过程,在 stateful RNN
训练过程中模型以 session-parallel
、sequence-to-sequence
的方式进行训练。相反,我们的网络处理每个序列 next click
我们还使用可训练的 embedding
来表示所有input
。我们的网络可以通过 Back-Propagation-Through-Time: BPTT
算法在固定数量的 time step
上,使用交叉熵损失来执行标准的 mini-batch
随机梯度下降从而进行训练。如下图所示为一条序列的训练示意图,梯度沿着灰色箭头的反向传播,蓝色为input
序列,橙色为 target output
。
数据增强data augmentation
:数据增强技术已被广泛应用于图像领域,这里我们提出两种方法来增强点击序列:
第一个方法是 《Artificial neural networks applied to taxi destination prediction》
中提出的序列预处理方法的应用。原始input session
的所有前导prefix
都被视为新的训练序列。给定一个训练 session
label
来用于训练:
第二个方法是 dropout
,它是应用于 input sequence
的正则化形式。对点击序列应用 dropout
相当于随机删除部分click
的预处理步骤。直观而言,这使得我们的模型对 noisy click
不太敏感,例如用户可能不小心点击了不感兴趣的 item
。因此,dropout
使模型不太可能过拟合特定的noisy
序列。dropout
也可以被视为一种数据增强形式,它生成更短的、被裁剪的序列来用于模型训练。
这里是
dropout
输入序列中原始的item id
,而不是dropout
对应的item embedding
。在本论文里二者是相同的,但是需要实验来验证?
我们将这两种方法应用于我们的所有模型。下图展示了一个示例:图中是一个包含了四个点击的session
,虚线轮廓表示训练期间被dropout
的点击,灰色表示训练序列,橙色表示 output label
,蓝色表示 privileged information
(它们不用于标准的训练过程)。
注意,相同序列在不同的训练epoch
会丢弃不同的点击item
。
适应时序变化 adapting to temporal changes
:许多机器学习模型的一个关键假设是:输入是独立且同分布的。这在 item recommendation setting
中并非严格如此,因为新的商品只会出现在该商品发布之后的 session
中,并且用户行为/偏好也可能随着时间而改变。此外,推荐系统的目标是对新序列进行预测,即那些来自用户最近行为的序列。因此,在整个数据集上学习推荐模型可能会导致性能下降,因为模型最终会关注一些与最近序列无关的过时属性。
解决这个问题的一种方法是定义一个时间阈值,并在构建模型时丢弃早于该阈值的点击序列。但是,这种方法减少了可供模型学习的训练数据量。
我们提出了一个简单的解决方案:通过预训练获得两全其美的效果。我们首先在整个数据集上训练一个模型,然后使用训练好的模型来初始化一个新模型。这个新模型仅使用近期数据(整个数据集的子集)进行训练,例如从一年点击数据中使用最近一个月的数据来训练。这使得模型能够使用大量数据进行良好的初始化,并聚焦于近期的点击序列。通过这种方式,这类似于在图像领域中使用的 fine-tuning
过程。
使用长期数据训练意味着学习用户的长期兴趣,使用短期数据训练意味着学习用户的短期兴趣。这里的方法通过初始化使得用户长期兴趣作为先验知识:当短期数据丰富时,学到的用户短期兴趣占主导;当短期数据匮乏时,初始的用户长期兴趣占主导。
使用 privileged information
:用户在某个item
之后点击的 item
序列也可能包含有关该 item
的信息,如下图所示的蓝色 item
。这些信息不能用于执行预测,因为我们在进行推荐时无法查看到未来的序列。然而,我们可以利用这些未来的序列用作 privileged information
,以便为我们模型的正则化和训练来提供 soft label
。为此,我们使用广义蒸馏框架。
形式上,给定一个序列 session
的 label
privileged information
定义为:session
的长度。privileged sequence
仅仅是发生在第 item
之后的、逆序的未来序列。我们现在可以在 privileged sequence
teacher
模型,它也具有相同的 label
接下来我们通过最小化以下形式的损失函数来调优我们的 student
模型
其中:label
之间的重要性。
注意:这里的
teacher
序列为未来序列的逆序,它提供soft label
。
这使得 label
中学习,也可以从 teacher
label
(即 soft label
)中进行学习。当可用的训练数据很小的时候,这种学习过程很有用。
论文并未说明
teacher
模型的结构。它的输入是未来序列的逆序,理论上应该和 有所不同。
用于快速预测的 output embedding
:我们输出层需要输出所有 item
的排序分,这不仅消耗内存,也使得预测很慢。在 NLP
中也研究了类似的问题,典型的方法包括 使用 hierarchical softmax layer
、以及采样最高频的 item
。
hierarchical softmax
并不适用于我们的场景,因为我们需要进行 top-k
预测,而不仅仅是 top-1
预测。相反,我们将 item embedding
视为将 item
从 one-hot
编码空间到低维空间的投影。基于这个观点,我们建议训练模型直接预测 next click
的 embedding
。使用真实输出的 embedding
和预测的 embedding
之间的余弦损失来调优模型。该方法的灵感来自于 word2vec
,其中相似的单词具有更接近的embedding
(以余弦距离来衡量)。同样地,我们预期用户在给定序列之后可能点击的 item
应该在 item embedding
空间中接近。
使用这种类型的输出将 final layer
中的参数数量从 embedding
的维度。
这种方法的一个缺点是:它需要为每个 item
提供高质量的 embedding
。获得这种 embedding
的一种方法是从上述模型中抽取和重用经过训练的 item embedding
。
这种方式的
label
是一个embedding
向量,而不再是一个类别。还有一种解决方案:利用负采样技术,从而将
softmax layer
转换为一个双塔架构。
数据集:RecSys Challenge 2015
数据集,其中最后一天的 session
为测试集(包含 15234
个 session
),其它天的 session
作为训练集(包含 7966257
个session
)。预测的候选 item
数量为 37483
。在预处理session
之后,我们有 23670981
个训练序列。
为了更好地评估我们的模型(如 privileged information
和预训练),我们按时间对训练序列进行排序,然后报告我们在训练序列的最近部分上(
评估方式:每个session
被item-by-item
地输入到模型,计算模型在session
的 next click
的排名。评估指标是 Recall@20
和 Mean Reciprocal Rank (MRR)@20
。
对于 M1 ~ M3
,我们直接从 softmax
输出中选取 top 20
个最可能的 item
。对于 M4
,我们计算模型输出与 item embedding
的余弦距离,然后选取 top 20
个最接近的 item
。
最后,我们还报告了每个模型的模型大小和 batch
预测时间。如果模型要部署在真实的推荐系统中,那么这些都是重要的考虑因素。
配置:
item
使用 50
维的 embedding
,embedding
的 dropout rate
为 25%
。Adam
优化器,batch size = 512
。item
序列的长度截断为 19
,因为 99%
的原始训练session
的长度小于等于 19
。为简单起见,短于 19
个 item
的序列用零填充,RNN
将忽略这些零。10%
的训练数据作为每个模型的验证集来早停,从而设置每个模型的 epoch
数量。recurrent layer
,因为我们发现更多的层并未提高性能。每个模型的 GRU
设置为 100
个隐单元或 1000
个隐单元。模型是在 GeForce GTX Titan Black GPU
上,在 keras
和 theano
中定义和训练的。每个模型的详细信息(以及它们的 label
)如下:
M1
:具有 softmax
输出、序列预处理、embedding dropout
的 RNN
模型。recurrent layer
全连接到输出层。
M2
:与 M1
相同,但是针对数据集的最近时间段的部分重新训练了模型。
预训练是在整个数据集上进行的,重新训练是在最近部分上进行的(下图的
x
轴)。
M3
:在每个数据中可用的 privileged information
(未来序列)上训练的 M1
模型。这用于为参数 softmax
的温度超参数) 和 M1
模型提供 soft label
。我们并没有广泛调优这两个超参数。
M4
:模型的输出直接预测 item embedding
。我们在 recurrent layer
和输出层之间添加了一个全连接的隐层,因为我们发现这提高了模型的稳定性。我们为这些模型使用了embedding
,这些 embedding
是由 M1
在整个训练数据集上训练得到的。
下图总结了每个模型在评估指标上的性能。
M1
和 M2
比报告的 baseline RNN
模型产生了显著的性能提升。
从 M1
的结果中,我们看到使用整个数据集进行训练的结果,要比使用使用数据集最近部分重新训练的结果稍差。这表明我们的推荐模型确实需要考虑随时间变化的用户行为。
下表还报告了我们表现最好的模型,我们还列出了 《Session-based recommendations with recurrent neural networks》
中报告的 baseline
结果,包括他们最好的、基于 RNN
的模型(即 TOP1
和 BPR
)以及两种传统算法(即 S-POP
和 Item-KNN
)。令人惊讶的是,从 GRU 100
到 GRU 1000
,我们模型的性能(M1 ~ M3
)并未显著提升。
我们发现 privileged information
模型(M3
)的训练时间非常长。我们省略了 GRU size 1000
的结果,因为它无法在合理的时间内进行训练。我们认为训练时间急剧增加的主要原因是:需要计算 soft label
、以及为每个 mini-batch
计算针对这些 soft label
的相应交叉熵损失。当可能的 soft label
数量很大时,这种扩展性很差,就像这里的情况一样。尽管如此,在最小的数据集上(即仅使用最近 1/8
的训练数据),M3
相比 M1
产生了适度的性能提升。这与 《Unifying distillation and privileged information》
中 privileged information
的使用是一致的,并且表明它在可用数据很少的环境中可能很有用。
最后,与我们的其它模型相比,M4
在预测准确性方面表现不佳(尽管它仍然比 baseline
有所提高)。如果可以使用质量更好的 embedding
作为目标,我们或许能够进一步提升 M4
的准确性。例如我们没有使用item
的任何辅助信息,如类别、品牌。
另一方面,batch prediction
时间和模型大小如下表所示。对于 M4
模型,仅使用基于分类的模型(M1 ~ M3
)的大约 60%
的预测时间就可以在 M4
中进行预测。M4
的参数也少得多,因此需要的内存更少。总之,这些都是使 RNN
能够部署在真实推荐系统中的步骤。
《Session-based recommendations with recurrent neural networks》
使用 GRU
来进行 session-based
推荐。该模型将用户点击的第一个 item
作为 RNN
的初始输入,并据此生成推荐。然后用户可能会点击其中的一个推荐,然后将其输入 RNN
,并根据之前的全部点击生成后续推荐。《Improved recurrent neural networks for sessionbased recommendations》
通过利用两种关键技术,即数据增强、以及一种考虑输入数据分布变化的方法。尽管上述所有 RNN-based
方法都显示出对传统推荐方法的有效改进,但是它们仅考虑了用户在当前session
中的序列行为sequential behavior
,而没有强调用户在当前session
中的主要意图main purpose
。当用户不小心点击了错误的 item
、或者用户由于好奇而被一些不相关的 item
所吸引时,仅依赖于用户的序列行为是危险的。因此,论文《Neural Attentive Session-based Recommendation》
认为在 session-based
推荐中应该考虑用户在当前 session
中的序列行为和主要意图。
假设用户想在网上购买一件衬衫。如下图所示,在浏览过程中,该用户倾向于点击一些款式相似的衬衫进行比较,同时该用户可能会偶然或出于好奇而点击一条西裤。之后,该用户一直在寻找合适的衬衫。
(a)
所示。item
都与短袖衬衫相关。因此,该向导会更加关注用户点击过的短袖衬衫,并向该用户推荐其它类似的衬衫,如下图 (b)
所示。理想情况下,一个优秀的推荐器除了考虑用户的整个序列行为之外,还应该考虑用户的主要意图,这反映在当前session
中一些相对重要的 item
上。注意,一个 session
中的序列行为和主要意图是互补的,因为我们并不能总是从 session
中推测出用户的主要意图,例如当session
太短、或者当用户仅仅是漫无目的地点击 item
时。
为了解决上述问题,论文《Neural Attentive Session-based Recommendation》
提出了一种新颖的神经网络框架,即神经注意力推荐机Neural Attentive Recommendation Machine: NARM
。具体而言,论文探索了一种具有注意力机制的混合编码器,从而对用户的序列行为进行建模并捕获用户在当前session
的主要意图,稍后将它们组合为统一的 session representation
。通过这种 item-level
的注意力机制,NARM
学会了以不同的方式关注越来越重要的 item
。然后,论文使用基于统一的 session representation
的 bi-linear matching scheme
来计算每个候选 item
的推荐分。NARM
通过联合学习 item representation
、session representation
、以及它们之间的 matching
来训练。
论文主要贡献:
NARM
模型,该模型同时考虑用户在当前 session
中的序列行为和主要意图,并使用 bi-linear matching scheme
来计算推荐分。session
中的主要意图。benchmark
数据集进行了广泛的实验,结果表明:NARM
在这两个数据集上的召回率和 MRR
均优于 state-of-the-art
的 baseline
。此外,NARM
在 long session
上取得了更好的性能,这证明了 NARM
在同时建模用户序列行为和主要意图方面的优势。相关工作:session-based
推荐是基于隐式反馈的推荐系统的典型application
,其中没有显式的偏好(如,评分),而只有 positive
观察(如,点击)可用。我们跟踪用户在一段时间内的 positive
观察从而获得序列形式的数据。
传统方法:通常有两种典型的建模范式,即通用推荐器general recommender
、序列推荐器sequential recommender
。
item-to-item
的推荐方法。在这个 setting
中,item-to-item
的相似性矩阵是根据可用的 session
数据预先计算的。在 session
中经常一起点击(即共现)的 item
之间被认为是相似的。尽管这些方法已被证明是有效的并且被广泛采用,但是它们仅考虑了 session
的最近一次点击,而忽略了整个点击序列的信息。next action
从而利用序列数据。在基于 session
的推荐任务中应用马尔科夫链的一个主要问题是:当试图在所有 item
上包含所有可能的、潜在的用户行为序列时,状态空间很快变得难以管理。基于深度学习的方法:神经网络推荐器neural network recommender
主要关注经典的协同过滤 user-item
的 setting
。
《Restricted boltzmann machines for collaborative filtering》
首先提出使用 Restricted BoltzmannMachines: RBM
进行协同过滤。《Learning hierarchical representation model for nextbasket recommendation》
介绍了基于 encoder-decoder
机制的、 next basket recommendation
的hierarchical representation
模型。《Session-based recommendations with recurrent neural networks》
将 RNN
应用于 session-based
推荐,并实现了对传统方法的显著提升。《Improved recurrent neural networks for session-based recommendations》
进一步研究了 RNN
在 session-based
推荐中的应用,他们提出了两种技术来提高模型的性能,即数据增强、以及一种考虑输入数据分布变化的方法。《Sequential click prediction for sponsored search with recurrent neural networks》
也使用 RNN
来用于点击序列预测,他们考虑了历史的用户行为、以及每个用户和 item
上的人工特征。尽管越来越多关于 session-based
推荐的工作关注于 RNN-based
方法,但是与他们不同,我们提出了一种新颖的神经注意力推荐模型,该模型结合了用户在当前 session
中的序列行为和主要意图。据我们所知,目前还没有研究考虑到这一点(即,结合了当前 session
中用户的序列行为和主要意图)。并且,我们首次将注意力机制应用于 session-based
推荐。
session-based
推荐:session-based
推荐任务是在给定用户的序列点击数据时,预测该用户下一步想点击什么。
具体而言,令 click session
,其中 item
的编号。我们构建了一个模型 session
中任何给定的前导点击序列 ranking list
,item
集合的大小,item
为 next item
的概率(即,推荐分)。由于推荐器通常需要为用户提供多个推荐,因此我们为用户推荐ranking list
top-k
个 item
,
在本文中,我们提出了一种改进的 neural encoder-decoder
架构来解决 session-based
推荐问题,该架构被称作 Neural Attentive Recommendation Machine: NARM
。NARM
的基本思想是:构建当前 session
的 hidden representation
,然后基于该 representation
生成预测。如下图所示:
编码器将输入的点击序列 hidden representation
item
的注意力信号。
hidden representation
的哪一部分。应该注意的是,setting
中,hidden representation
或 input item embedding
的函数。我们在模型中采用动态的setting
。
然后这组高维的 hidden representation
被馈入 session feature generator
从而构建当前 session
在时刻 representation
,记做
时刻 session representation
softmax
激活函数)之后生成 ranking list
我们工作的基本思想是:学习一个同时考虑用户在当前 session
中的序列行为和主要意图的推荐模型。接下来:
NARM
中的全局编码器,它用于建模用户的序列行为。session
中的主要意图。NARM
,它结合了全局编码器和局部编码器,并使用 bilinear matching scheme
来计算每个候选 item
的推荐分。全局编码器Global Encoder
:在全局编码器中,输入是整个先前previous
的点击,输出是用户在当前session
中的序列行为的 feature
。输入和输出都是高维的 representation
向量。
下图 (a)
展示了 NARM
中全局编码器的示意图。我们使用 GRU
单元的 RNN
而不是标准的 RNN
,因为《Session-based recommendations with recurrent neural networks》
证明了 GRU
单元在 session-based
推荐任务中可以胜过 LSTM
单元。GRU
的公式为:
其中:
one-hot
向量作为 input
,hidden state
,hidden state
。update gate
,reset gate
,作为一个简单的 session feature generator
,我们使用 final hidden state
representation
:
然而,这种全局编码器存在缺陷,例如,对整个序列行为的向量化的 summarization
通常很难捕获到当前用户的更精确的意图。
简单地讲,序列行为中存在噪音,而
RNN
架构无法自动化地屏蔽噪音。
局部编码器Local Encoder
:局部编码器的架构类似于全局编码器,如下图 (b)
所示。在局部编码器中,我们也采用 GRU
单元的 RNN
。为了捕获用户在当前 session
的主要意图,我们引入了一个 item-level
注意力机制,它允许解码器动态选择和线性组合输入序列的不同部分:
其中加权因子 hidden state
的函数:
注意,在时刻
预测 时刻(而不是 时刻)的 next click
。
基本上,加权因子 input
和时刻 input
之间的 alignment
进行建模,因此可以将其视为特定的 matching model
。在局部编码器中,函数 final hidden state
hidden state
其中:sigmoid
激活函数),待学习的参数矩阵 attention
向量。
这种局部编码器能够自适应地关注更重要的 item
从而捕获用户在当前 session
中主要意图。
NARM
模型:对于 session-based
推荐任务,全局编码器 summarize
了整个序列行为,而局部编码器自适应地选择当前 session
中的重要 item
来捕获用户的主要意图。我们推测,在当前session
中,序列行为 representation
representation
previous hidden state
item
的注意力权重。然后在每个时刻,将序列行为的 feature
和用户意图 feature
拼接起来作为 extended representation
。
如下图所示,我们可以看到 summarization
NARM
提供序列行为 represetnation
。需要注意的是:NARM
中的 session feature generator
在全局编码器和局部编码器中调用不同的编码机制。具体而言:全局编码器的 final hidden state
final hidden state
previous hidden state
的注意力权重。
通过这种混合编码方案,用户在当前session
中的序列行为和主要意图都可以建模为一个统一的 representation
其中
注意,这里注意力权重
,使用的是全局编码器的 final hidden state
,而不是局部编码器的 final hidden state
。为什么这么做?论文没有讲原因。
下图给出 NARM
中采用的解码机制的示意图。通常,标准的 RNN
使用全连接层进行解码,但是使用全连接层意味着该层待学习的参数个数是 session represention
item
的数量。因此我们必须预留很大的空间来存储这些参数。尽管有一些方法可以减少参数,例如 hierarchical softmax layer
、随机负采样 negative sampling
,但是它们并不是我们模型的最佳选择。
我们提出一种替代的 bi-linear
解码方案,它不仅减少了参数的数量,而且提高了 NARM
的性能。具体而言,我们使用一个 bi-linear
相似度函数来计算当前 session
的 representation
和每个候选 item
的 embedding
的相似度得分
其中:item embedding
的 维度,item
的 embedding
。
然后将每个 item
的相似度得分输入到一个 softmax layer
,从而获得该 item
接下来会出现的概率。通过使用这种 bi-linear decoder
,我们将参数数量从 bi-linear decoder
可以提高 NARM
的性能。
该方法在训练时仍然需要计算
softmax
,因此计算复杂度并未降低。但是,该方法降低了参数规模,并且在推断时只需要根据来检索最近邻的 item
即可。
为了学习模型的参数,我们没有使用 《Session-based recommendations with recurrent neural networks》
中提出的训练过程,其中模型以 session-parallel
、sequence-to-sequence
的方式进行训练。相反,为了适应局部编码器中的注意力机制,NARM
分别处理每个序列 mini-batch
随机梯度下降进行训练:
其中:
最后,我们采用固定数量的时间步的 Back-Propagation Through Time: BPTT
方法来训练 NARM
。
未来工作:
item
的属性,如价格、类目。nearest neighbor session
,以及考虑不同 neighbor session
的重要性。session
中,不同属性的重要性。数据集:
YOOCHOOSE
数据集:RecSys Challenge 2015
发布的公开数据集,它包含电商网站上的 click-stream
。过滤掉长度为 1
的 session
、出现频次低于 5
次的 item
之后,数据集剩下 7981580
个 session
、37483
个 item
。DIGINETICA
数据集:来自 CIKM Cup 2016
。我们仅使用发布的交易数据,过滤掉长度为 1
的 session
、出现频次低于 5
次的 item
之后,数据集剩下 204771
个 session
、43097
个 item
。我们首先对两个数据集进行了一些预处理:
YOOCHOOSE
数据集,我们使用下一天的 session
进行测试,并从测试集中过滤掉未出现在训练集中的 clicked item
。DIGINETICA
数据集,我们使用下一周的 session
进行测试,并从测试集中过滤掉未出现在训练集中的 clicked item
。由于我们没有以 session-parallel
的方式训练 NARM
,所以序列拆分预处理是必要的。在YOOCHOOSE
和 DIGINETICA
这两个数据集上,对于输入session
label
如果以
session-parallel
方式训练,那么就不需要拆分预处理。
考虑到以下原因:
YOOCHOOSE
相当大。《Improved recurrent neural networks for sessionbased recommendations》
验证了推荐模型需要考虑随时间变化的用户行为。《Improved recurrent neural networks for sessionbased recommendations》
的实验结果表明,对整个数据集进行训练产生的结果相比对数据集的近期部分进行训练产生的结果稍差。因此,我们按时间对 YOOCHOOSE
的训练序列进行了排序,并报告了我们的模型在最近 1/64
和 1/4
部分的训练序列上的效果。注意,测试集中的一些 item
不会出现在训练集中,因为我们仅在近期的部分数据上训练了模型。三个数据集(即 YOOCHOOSE 1/64
、YOOCHOOSE 1/4
、DIGINETICA
)的统计数据如下表所示。
baseline
方法:我们对比了五种传统方法(POP, S-POP, Item-KNN, BPR-MF, FPMC
)以及两种 RNN-based
模型(GRU-Rec, Improved GRU-Rec
)。
POP
:流行度的 predictor
,它总是推荐训练集中的流行 item
。尽管简单,但是它通常是某些领域的强大 baseline
。
S-POP
:推荐当前session
中最流行的 item
(而不是全局最流行的 item
)。该 baseline
在具有高重复度的领域中很强。
Item-KNN
:基于 item
相似性来推荐和当前 item
最相似的 item
。相似度定义为
此外,我们还使用正则化从而避免冷门 item
的偶然发生导致的高度相似性。
该 baseline
是实际系统中最常见的 item-to-item
解决方案之一。尽管简单,它通常也是一个强大的 baseline
。
BPR-MF
:它通过 SGD
优化 pair-wise ranking
目标函数,是最常用的矩阵分解方法之一。矩阵分解无法直接应用于 session-based
推荐,因为新session
没有预先计算的特征向量。然而,我们可以通过使用session
中出现的 item
的特征向量的均值作为 user
特征向量来克服这个问题。换句话讲,我们对 next item
的特征向量与迄今为止session
中 item
特征向量的相似性进行平均。
FPMC
:它是 next-basket recommendation
的 state-of-the-art
的混合模型。为了使其适用于 session-based
推荐,我们在计算推荐分时不考虑 user latent representation
。
GRU-Rec
:《Session-based recommendations with recurrent neural networks》
提出的模型,它利用 session-parallel
的 mini-batch
训练过程,并且还采用 ranking-based
损失函数来学习模型。
Improved GRU-Rec
:《Improved recurrent neural networks for sessionbased recommendations》
提出的模型,它采用两种技术(包括数据增强、以及一种考虑输入数据分布变化的方法)来提高 GRU-Rec
的性能。
评估指标:
Recall@20
:目标 item
位于推荐列表(top 20
推荐的 item
)的数量占所有目标 item
数量的比例。Recall@N
不考虑 item
的实际排名(只需要目标 item
位于 top N
推荐分的推荐列表中),并且通常与点击率 CTR
等其它指标有很好的相关性。MRR@20
:Mean Reciprocal Rank: MRR
是目标 item
排名倒数reciprocal rank
的均值,如果排名大于 20
则倒数排名为零。MRR
会考虑目标 item
的排名,这在需要考虑推荐顺序的场景很有用。实验配置:
NARM
的 item embedding
为 50
维,使用 Adam
优化器,初始学习率为 0.001
,mini-batch
的 batch size = 512
。
NARM
使用两个 dropout layer
:
dropout layer
位于 item embedding layer
和 GRU layer
之间,dropout rate = 25%
。dropout layer
位于 GRU layer
和 bi-linear similarity layer
之间,dropout rate = 50%
。NARM
使用 time step
截断为 19
的 BPTT
,训练 epoch
为 30
,训练集的 10%
数据作为验证集。
NARM
使用单层 GRU
,GRU
隐层维度为 100
。
模型是在 GeForce GTX TitanX GPU
上的 Theano
中定义和训练的。
不同解码器的比较:我们在 NARM
上比较了全连接解码器和 bi-linear
解码器,如下表所示。这里我们仅给出隐层维度为 100
的结果,因为其它维度的结论相同。结论:
Recall@20
指标上,使用bi-linear
解码器的性能有所提高,三个数据集的提升分别约为 0.65%, 0.24%, 4.74%
(绝对值) 。MRR@20
指标上,bi-linear
解码器在 YOOCHOOSE 1/64
和 YOOCHOOSE 1/4
数据集上稍差,但是在 DIGINETICA
数据集上仍然显著优于全连接解码器。对于 session-based
推荐任务,由于我们的 setting
是一次性推荐 top 20
的 item
,因此我们认为 recall
指标要比 MRR
指标更重要。在接下来的实验中,NARM
采用 bi-linear
解码器。
和 baseline
的比较:所有方法的结果如下表所示。NARM
与best baseline
(即 Improved GRU-Rec
)之间的更具体的比较如下图所示。结论:
对于 YOOCHOOSE 1/4
数据集,由于我们使用 session
中出现的 item factor
的均值来代替 user factor
,因此 BPR-MF
不起作用。此外,由于我们在 FPMC
中将每个 session
视为一个用户,因此我们没有足够的内存来初始化它。这些问题表明传统的 user-based
方法不再适用于 session-based
推荐。
总体而言,三种 RNN-based
方法始终优于传统的 baseline
,这表明 RNN-based
模型擅长处理 session
中的序列信息。
通过同时考虑用户的序列行为和主要意图,NARM
在三个数据集上的 Recall@20
指标上优于所有 baseline
,并且在 MRR@20
指标上可以优于大多数 baseline
。
以 DIGINETICA
数据集为例,与 best baseline
(即 Improved GRU-Rec
) 相比,NARM
在 Recall@20
和 MRR@20
指标上的相对提升分别约为 7.98%
和 9.70%
。
可以看到,NARM
和 best baseline
相比,YOOCHOOSE 1/64
和 YOOCHOOSE 1/4
数据集上的 Recall@20
指标提升不如 DIGINETICA
数据集的显著。此外,YOOCHOOSE 1/64
和 YOOCHOOSE 1/4
数据集上这两个方法的 MRR@20
指标非常接近。
我们认为其中一个重要原因是:我们将 YOOCHOOSE
数据集拆分为 1/64
和 1/4
时,为了与 Improved GRU-Rec
中的一致,我们没有从测试集中过滤掉不在新训练集(即,拆分后的训练集)中的 clicked item
(因为这些 clicked item
可能位于未拆分的训练集中)。相比之下,在 DIGINETICA
数据集中,我们从测试集中过滤掉了这些不在训练集中的 clicked item
,因此 NARM
在 Recall@20
和 MRR@20
指标上都显著优于 baseline
。
使用不同特征的影响:我们考察仅使用序列行为特征的 NARM
(NARM
(NARM
(
session
的序列行为、或用户意图,可能无法学到好的推荐模型。session-based
推荐中同时考虑当前用户的序列行为和主要意图的优势。
和 GRU-Rec
主要区别在于前者使用双线性解码器,以及前者采用交叉熵损失而后者采用pairwise ranking loss
,因此其效果应该和GRU-Rec
相差无几。但是结果发现的效果要比 GRU-Rec
高很多。论文并未解释其原因。
不同 session
长度的影响:NARM
模型基于这样的假设:当用户在线浏览时,用户的点击行为频繁地围绕用户在当前 session
中的主要意图。然而,当用户仅仅是点击少数几个 item
时,我们很难捕获到用户的主要意图。因此,我们的 NARM
模型应该只是擅长对长的 session
进行建模。
为了验证这一点,我们在 DIGINETICA
数据集上对不同长度的测试 session
进行了比较,结果如下表所示。结论:
NARM
通常在 session
长度为 4 ~ 17
之间时表现更好。这表明 NARM
在长的session
中确实更准确地捕获了用户的主要意图。session
过长时,NARM
的性能提升有所下降。我们认为原因是,当 session
过长时用户很可能漫无目的地点击某些 item
,导致 NARM
中的局部编码器无法捕获用户在当前 session
中的主要意图。可视化注意力权重:为了直观地说明注意力机制的作用,我们在下图中展示了一个例子。session
实例是从 DIGINETICA
数据集中随机选择的。颜色的深浅对应于 item
的重要性大小。结论:
item
都与 next click
相关,而且当前 session
中几乎所有的重要 item
都是连续的。这意味着用户在 session
中的意图确实是局部性的,这也是 NARM
能够优于常规RNN-based
模型的原因之一。item
通常在 session
结束附近的位置。这符合人们的浏览行为:用户很可能会点击该用户刚刚点击item
相关的其它 item
。回想一下,常规 RNN-based
模型能够对这一事实进行建模,因此它们可以在 session-based
推荐中取得相当好的性能。item
出现在 session
的开始或中间(例如在 session 7974
或 session 4260
)。在这种情况下,我们相信 NARM
可以比常规 RNN-based
模型表现更好,因为注意力机制可以学到去更多地关注于更重要的 item
,而不管这个 item
位于 session
中的什么位置。session
是在给定时间范围 time frame
内发生的一组交互。同一个用户的不同 session
可以发生在同一天,也可以发生在数天内、数周内、甚至数月内。一个 session
通常有一个目的goal
,例如找到一家好餐馆、或者听到某种风格的音乐。
在这些领域提供推荐带来了独有的挑战 unique challenge
,直到最近,这些挑战主要通过在最近一次交互、或者最近一个 session
上应用传统的推荐算法来解决。在 session-based
推荐中,仅基于当前的user session
来提供推荐,因为假定用户是匿名的。但是在许多此类系统中,用户可能已经登录、或者存在某种形式的user id
(如 cookie
)。在这些情况下,可以合理地假设:同一个用户的历史 session
行为可能会为 next session
中的推荐提供有价值的信息。
在 session-based
算法中,结合历史的user session
信息的一种简单方法是:简单地拼接历史的user session
和当前的user session
。虽然这似乎是一种合理的方法,但论文 《Personalizing Session-based Recommendations with Hierarchical Recurrent Neural Networks》
将在实验部分看到这不会产生最佳效果。
在论文《Personalizing Session-based Recommendations with Hierarchical Recurrent Neural Networks》
中,作者描述了一种基于 RNN
的新算法,该算法可以同时处理如下两种 case
:
session-aware
推荐:当存在 user id
时,将信息从前一个user session
传播到下一个user session
从而提高推荐准确率。session-based
推荐:当没有历史的user session
时(例如没有 user id
)。该算法基于 Hierarchical RNN
,其中当一个 user session
结束时, lower-level RNN
的 hidden state
作为输入而传递给 higher-level RNN
。而这个 higher-level RNN
旨在为用户下一个 user session
的 lower-level RNN
的 hidden state
提供良好初始化。
论文在来自行业内的两个数据集上评估了 Hierarchical RNN
,结果表明论文的方法优于普通的 session-based RNN
、以及 item-based
协同过滤。
相关工作:
session-based
推荐:当没有用户画像时(因此也没有 user id
,从而无法获取该用户的所有历史行为),那么经典的 CF
方法(如矩阵分解)在 session-based setting
中失效。这个问题的一个自然解决方案是 item-to-item
推荐方法。在这个 setting
中,从可用的 session
数据中预先计算出一个 item-to-item
相似度矩阵,并且在 session
中经常一起被点击的 item
被认为是相似的。然后使用这些相似性来执行推荐。这种方法虽然简单,但是已被证明是有效的,并且被广泛采用。但是,这些方法仅考虑用户的最近一次点击,而忽略了用户之前的点击信息。
递归神经网络模型:RNN
是处理序列数据的首选深度模型。LSTM
网络已被证明是工作良好的 RNN
模型,其略微简化的版本是 GRU
。我们在这项工作中使用 GRU
。
《Session-based recommendations with recurrent neural networks》
中,RNN
被首次用于对 session
数据进行建模。RNN
在 session
中 item ID
的 one-hot representation
上使用 ranking loss
进行训练。然后,RNN
用于在新的 session
中每次点击之后提供推荐。该方法仅关注当前 session
,而我们的目标不仅考虑当前 session
也考虑跨 session
的用户行为建模。《Parallel recurrent neural network architectures for feature-rich session-based recommendations》
中,RNN
还被用于联合建模 item
的内容以及点击序列。通过包含诸如缩略图或文本描述等 item
特征,该论文提出的所谓的 parallel- NN
提供了优于普通 RNN
的推荐质量。《Improved recurrent neural networks for session-based recommendations》
中,作者提出了数据增强技术来提高 session-based
推荐的 RNN
性能。因为单个 session
被分为几个 sub-session
进行训练,因此该方法具有增加训练时间的副作用。RNN
也被用于标准的 user-item
协同过滤 setting
,其目的是对 user factor
和 item factor
的演变进行建模。结果虽然不那么突出,该方法几乎没有优于标准的矩阵分解方法。《A hierarchical recurrent encoder-decoder for generative context-aware query suggestion》
中,Hierarchical Recurrent Neural Network
的 seq-to-seq
模型被用于生成上下文感知的 query suggestion
。我们的模型基于 《Session-based recommendations with recurrent neural networks》
中提出的session-based RNN
模型,其中 RNN
基于单层 GRU layer
来建模用户在 session
内的交互。RNN
将 session
中的当前 item ID
作为输入,并为每个 item
输出一个得分表示成为session
中 next item
的可能性。
形式上,对于第 session
session
的 item
数量,session
中的第 item
,RNN
将计算如下所示的 session-level representation
:
其中: session-level GRU
,GRU
在 step t
的hidden state
并且 null vector
),step t item ID
one-hot
向量。
RNN
的输出是 item
集合中每个 item
的得分 item
成为 session
中 next item
(即第 item
集合。
其中 softmax
或 tanh
),具体取决于损失函数。
在训练期间,将得分 next item ID
onehot
向量进行比较来计算损失函数。网络可以使用多种 ranking loss function
进行训练,如交叉熵、BPR
、TOP1
。在这项工作中,TOP1
损失总是优于其它 ranking loss
,因此我们在本文的剩余部分仅考虑该损失函数。TOP1
损失是 relevant item
(即 next item
)的相对排名的正则化近似。relevant item
的相对排名定义为:
其中:
relevant item
的得分。irrelevant item
的得分,sigmoid
来近似。为了迫使negative item
(即 irrelevant item
)的分数趋于零,在损失函数中添加了一个正则化项。最终的损失函数为:
RNN
通过 session-parallel
的 mini-batch
来进行有效地训练。在每个训练 step
,batch
的 current item ID of sessions
(以 one-hot
向量来表示)。session-parallel
机制在 mini-batch
中保留指向每个 session
的当前 item
的指针,并会在 session
结束时重置 RNN
的 hidden state
。
为了进一步降低计算复杂度,损失函数是在 current item ID
和负采样的 item ID
上计算而来。具体而言,在计算损失函数时,将每个 session
的 current item ID
作为postive item
、将 mini-batch
中其它 session
的所有 item ID
作为negative item
。这使得无需执行显式的negative item
采样,并执行了基于流行度popularity-based
的采样。然而,由于 user id
在纯的 session-based
场景中是未知的,因此negative item
很有可能被同一个用户在其它 session
中交互的postive item
所“污染”。
这种方式称作
in-batch
负采样。另外,既可以将其它session
的current item ID
作为negative item
(实现更简单),也可以将其它session
的所有item ID
作为negative item
(效果更好)。
我们的 HRNN
模型在 RNN
之上通过以下方式构建:
GRU layer
来建模跨 user session
的信息。user-parallel mini-batch
机制进行高效地训练。架构:除了 session-level GRU
之外,我们的 HRNN
模型还添加了一个 user-level GRU
(session
的用户活动。下图展示了 HRNN
的结构示意图。
time step
,由 RNN
中的一样。session
结束时,user-level representation
通过 session
开始时, hidden state
(即 user-level representation
)用于初始化 形式上,对于每个用户 session
集合 user-level GRU
将 session-level representation
user-level representation
session
数量,user session
last hidden state
。
接下来为了便于表述,我们移除了 user
上标 user-level representation
其中 null vector
)。
session-level GRU
的 last hidden state
作为user-level GRU
的输入。通过这种方式,user-level GRU
可以跨 session
跟踪用户的演变,从而无缝地建模动态的用户兴趣。注意,user-level representation
在整个 session
期间保持固定,并且仅在 session
结束时更新。
然后使用 user-level rerepsentation
来初始化 session-level GRU
的 hidden state
。给定 session
的 session-level GRU
的初始 hidden state
其中: initialization
权重矩阵,initialization
偏置向量。通过这种方式,用户在先前 session
中表达的偏好相关的信息在 session-level
被传递。session-level representation
更新为:
其中方括号表示 session-level GRU
的输入。
如果仅仅是为了跨
session
来传递用户的偏好,那么可以简单地将上一个session
的last hidden state
传递给下一个session
。那么user-level GRU
的价值在哪里?论文的解释是:user-level GRU
建模了user-session
如何随着时间的演变,即 “计算并演变了用户画像” 。此外论文还在实验部分评估了这种做法的效果(即
RNN Concat
这个baseline
),实验发现RNN Concat
和HRNN
在小型数据集上的效果相差无几,但是在大型数据集上HRNN
效果显著优于RNN Concat
。所以HRNN
需要更大规模的数据才能体现其优势,因为HRNN
的模型容量更大。
模型使用反向传播进行端到端训练。
user-level rerepsentation
session
之间更新,即 session
结束时以及接下来的 session
开始时。user-level rerepsentation
session
内保持不变), session
内更新。user-level representation
传播到 final prediction layer
,即 RNN
而言,新模型的性能严重下降。因此,我们在本次讨论中放弃了这种 setting
。注意,user session
的 hidden state
传递给下一个 user session
,而且还学习(在训练期间) user session
如何随时间的演变。我们将在实验部分看到,这对于提高性能至关重要。实际上,user session
),因此实际上个性化了 RNN
中,具有相同点击 item
序列的 user session
,模型将为这些用户提供相同的推荐。在 HRNN
中,情况不再如此,推荐结果也会受到用户历史 session
的影响。
总之,我们考虑了以下两种不同的 HRNN setting
,具体取决于公式 user representation
HRNN Init
:其中 next session
的 representation
。
HRNN All
:其中 next session
的representation
,也用作 next session
的输入。
HRNN All
相比于HRNN Init
的模型复杂度稍高。
正如我们将在实验部分看到的,根据推荐场景,这两种setting
可能会导致截然不同的结果。
学习:为了提高训练效率,我们调整了《Parallel recurrent neural network architectures for feature-rich session-based recommendations》
中描述的 session-parallel mini-batch
机制,从而考虑训练期间的 user id
,如下图所示。
我们首先根据用户对 session
进行分组,然后按照时间戳对每个分组内的 session
事件进行排序。然后我们对用户进行随机排序。在第一次迭代中,前面 session
的第一个 item
构成了 HRNN
的输入,对应 session
的第二个 item
构成了 HRNN
的输出。然后我们将 HRNN
的输出作为下一次迭代的输入,依此类推。
当 mini-batch
中的 session
结束时,更新 hidden state
、并为下一个 session
来初始化 hidden state
。当一个用户被完全处理之后,hidden state
都被重置, mini-batch
中下一个用户将被放到这个被处理完的用户的位置进行处理。
使用 user-parallel mini-batch
,我们可以有效地训练 HRNN
从而满足不同 session
数量、以及 session
内不同长度的用户。
此外,这种机制允许以独立于用户的方式对负样本进行采样,从而减少负样本被实际正样本“污染” 的机会。采样过程仍然是基于流行度popularity
的,因为一个 item
出现在 mini-batch
中的可能性与其流行度成正比。众所周知,这两个特点都有利于基于隐式用户反馈的 pairwise learning
。
因为负样本是从其它用户那里采样到的,因此可以减少污染机会。
未来工作:
item
特征、用户特征,从而进一步改善 user representation
并进一步提升 session-based
推荐方法。session-based
个性化模型,例如音乐推荐领域、电商领域、在线广告领域。数据集:
XING
数据集:XING Recsys Challenge 2016
数据集,包含 80
天内 77
万用户的job posting
交互信息。用户交互带有时间戳和交互类型(点击、添加书签、回复、删除)。VIDEO
数据集:来自类似于 Youtube
的视频点播网站的专属数据集,包含 13k
用户在 2
个月内观看的视频。观看时长小于指定阈值的事件被丢弃。我们使用 30
分钟空闲阈值来手动地将交互数据拆分为 session
。对于 XING
数据集,我们丢弃了 “删除” 类型的交互。我们还丢弃了 session
中相同类型的重复交互从而减少噪音(例如在 session
中重复点击同一个 job posting
)。
然后我们对两个数据集进行如下预处理:
XING
数据集中出现频次低于 20
的 item
,删除了 VIDEO
数据集中出现频次低于 10
的 item
,因为低频 item
不是建模的最佳选择。3
次的 session
从而过滤太短且信息量不足的 session
。session
总数低于 5
个的用户,从而使得用户具有足够多的 cross-session
信息,以便对用户进行正确的建模。我们使用每个用户的最后一个 session
构建测试集,剩余的 session
构成训练集。我们还过滤了测试集中不属于训练集的 item
。这种划分允许针对具有不同历史session
数量的用户进行评估,从而衡量模型对不同活跃程度的用户的推荐质量。我们使用相同的程序进一步划分验证集从而调优算法的超参数。
数据集的统计信息如下表所示。
baseline
方法:
Personal Pop: PPOP
:推荐用户交互次数最多(而不是全局交互次数最多的 item
)。
Item-KNN
:根据 session
内 item
的共现来计算 item-to-item
的余弦相似度。
RNN
:采用《Session-based recommendations with recurrent neural networks》
中提出的模型,该模型使用 TOP1
损失函数以及 session-parallel mini-batch
(来自同一个用户的 session
彼此独立地馈入 RNN
)。
RNN Concat
:与 RNN
相同,但是来自同一个用户的所有 session
被拼接为单个 session
。
这相当于
退化为一个恒等映射。
配置:
我们使用 AdaGrad
来优化 TOP1
损失函数的神经网络模型,训练 10
个 epoch
。在所有模型中,增加 epoch
数量并未显著改善损失。
我们对 RNN
和 HRNN
的 hidden state
使用了 dropout
正则化。我们还将 dropout
应用于 HRNN
的
我们在 hierarchy
的两个 level
中都采用了单层 GRU
,因为使用多层 GRU layer
并没有提高性能。
为了评估网络容量如何影响推荐质量,我们考虑了每个 GRU layer
具有 100
个隐单元的小型网络、以及具有 500
个隐单元的大型网络。
我们使用随机搜索random search
在验证集上调优了每个模型(包括 baseline
模型)的超参数。为了帮助我们实验的可复现性,我们在下表中报告了我们在 XING
数据集上的、在实验中使用的超参数。HRNN
中的 user-level GRU
、session-level GRU
、以及初始化都使用了 dropout
,因此下表中给出的dropout
概率按照这个顺序提供。对于所有的数据集,Item-KMM
的最佳邻域大小都是 300
。
神经网络模型在 12GB GPU
内存的 Nvidia K80 GPU
上进行训练。训练时间从 XING
上的小型 RNN
模型的 5
分钟,到 VIDEO
上的大型 HRNN All
的 30
分钟不等。所有实验的评估时间不超过 2
分钟。
我们要强调的是,RNN
和 HRNN
之间的训练时间没有显著差异,其中 HRNN All
是计算成本最高的模型,因为其架构的复杂性更高。
评估方式:我们评估序列的 next-item prediction task
,即给定 user session
的事件,我们评估算法预测后续事件的效果。所有 RNN-based
模型都一个接一个地在 session
中输入事件,我们检查 next item
的预测排名。
此外,HRNN
模型和 RNN Concat
使用测试 session
之前的所有历史session
,这会降低评估速度,但是有必要在评估开始之前正确地设置个性化模型的 internal representation
(如 HRNN
的 user-level representation
)。
注意,评估指标仍然仅针对测试集中的事件进行计算,因此评估仍然是公平的。此外,我们在每个测试 session
中丢弃了由 RNN Concat baseline
计算的第一个预测,因为它是唯一的、能够推荐 user session
中首个事件的方法。
其它方法都只能最早预测
user session
中第二个事件。
由于推荐系统一次只能推荐几个 item
,因此 relevant item
应该在推荐列表中排名靠前。因此我们选择 Recall@5
、Precision@5
、Mean Reciprocal Rank (MRR@5)
等指标来评估推荐质量。
Recall@5
:相当于命中率指标,它衡量所有测试 case
中, relevant item
在 top-5
的 case
的占比。对于推荐顺序无关紧要的场景,这是一个良好的指标,并且该指标与 CTR
等重要 KPI
密切相关。Precision@5
:衡量所有推荐列表的 top-5
位置中正确推荐的比例。MRR@5
: relevant item
的排名的倒数 reciprocal rank
,如果排名大于 5
则排名的倒数被手动置为零。MRR
会考虑 item
的排名,这在推荐顺序要紧的情况下很重要。实验结果:下表给出了 XING
和 VIDEO
数据集的结果。我们使用不同的随机数种子对每个神经网络模型进行了 10
次训练,并报告了平均结果。我们使用 Wilcoxon signed-rank test
来评估 HRNN
模型与 baseline
方法之间差异的显著性。
XING
数据集的结果:
简单的 PPOP baseline
就是一种非常有竞争力的方法,能够大大超越更复杂的 Item-KNN baseline
。正如前人工作对数据集的研究已经表明,用户在 sessoin
内和跨 session
之间的活动具有高度的重复性。这使得在这种情况下生成 non-trivial
的个性化推荐非常具有挑战性。
session-based RNN
较差的性能进一步突出了这一点,无论网络容量如何,它总是比 PPOP
差得多。
尽管如此,session-based
个性化推荐可以克服其局限性,并在小型网络和大型网络的 Recall
和 Precision
指标上实现卓越的性能。HRNN
在 Recall
和 Precision
指标上显著优于 RNN Concat
,并且在大型网络上提供显著更好的 MRR
。
此外,HRNN
在 Recall
和 Precision
指标上显著优于强大的 PPOP baseline
大约 11%
,同时获得了可比的 MRR
。
两个 HRNN
变体之间并没有显著的差异,除了在 MRR
指标上 HRNN All
比 HRNN Init
略有优势。Recall
和 Precision
指标上的差异并没有统计显著性。
RNN Concat
与HRNN All, HRNN Init
相差无几,但是在文章末尾的大型数据集上,HRNN
效果要好得多。这是符合预期的,因为HRNN
的模型复杂度更高,所以需要更大量的数据才能体现其能力。
VIDEO
数据集的结果:该数据集上显示出与 XING
数据集截然不同的结果。
Item-KNN baseline
显著优于 PPOP
,而 session-based RNN
可以大大优于这两个 baseline
。这与过去一些工作在类似数据集上的实验结果一致。
RNN Concat
相比较于 session-based RNN
具有可比的 Recall
和 Precision
。有趣的是,RNN Concat
大型网络的 MRR
指标明显更好。这表明直接拼接 session
不会增强 RNN
推荐器的检索能力,但是会增强其正确排序 item
的能力。
HRNN Init
的性能显著优于所有 baseline
。换句话讲,在相同的情况下,由 HRNN
建模的更复杂的 cross-session dynamic
在整体推荐质量方面提供了显著的优势。我们将在后面研究这些结果的可能原因。
值得注意的是,HRNN All
在这种情况下表现不佳。我们将推荐质量的严重下降归因于该 setting
中使用的 context-enforcing policy
。一种可能的解释是:多媒体内容(在我们的例子中是视频)的消费是一个 session-based
场景,比 XING
中代表的求职场景强得多。用户可能会遵循通用群体趋势 general community trend
并且具有长期兴趣(该长期兴趣由 user-level GRU
来捕获)。但是,session
中的用户活动可能与该用户最近的 session
完全断开,甚至与用户的一般兴趣 general interest
无关(如,对极限运动视频有强烈兴趣的用户可能偶尔也会观看卡通电影预告片)。HRNN Init
让 session-level GRU
根据session
中用户兴趣的实际演变来自由地利用这些用户兴趣动态。其更大的灵活性带来了卓越的推荐质量。
即该场景中的兴趣更多的是
session
内的,而求职场景中的兴趣更多的是跨session
的。对于session
内的兴趣建模,用HRNN Init
效果更好;对于跨session
的兴趣建模,用HRNN All
效果更好。
用户历史长度分析:我们预计用户历史长度会对推荐质量产生影响,因此我们按照用户历史中的 session
数量对 evaluation
进行细分。为此,我们将用户历史分为两组:具有 <= 6
个 session
的 short
用户历史、具有 > 6
个 session
的 long
用户历史。下表中报告了这些数据集中不同分组占比的统计数据。
由于我们的目标是衡量 HRNN
中使用的复杂的 cross-session dynamic
对于传统 RNN
的影响,因此我们将这些分析限制在大型配置中 RNN-based
推荐器上。对于每种算法,我们计算测试集中不同分组中 test session
的平均 Recall@5
和 MRR@5
。由于 Precision@5
的分析结论与 Recall@5
相似,因此由于篇幅有限我们在此省略。为了增强实验结果的鲁棒性,我们使用不同的随机数种子运行 10
次评估,并报告每个算法的 median value
(而不是均值)。
XING
数据集的结果如下所示。可以看到:
session-based RNN
)的 Recall
略微增加、MRR
略微下降。short
用户历史和 long
用户历史的效果之间并没有显著变化。HRNN All
是性能最好的模型,与 session-based RNN
相比,其 Recall@5
提高了 12%
、MRR@5
提高了 14~16%
。HRNN Init
的性能与 RNN Concat
、 HRNN All
相当。VIDEO
数据集的结果如下所示。可以看到:
session-based RNN
)的 Recall
都随着用户历史长度的增加而提升。MRR
仅在 RNN Concat
、HRNN Init
方法上随着用户历史长度的增加而提升。这凸显了需要有效的个性化策略从而在 session-level
获得卓越的推荐质量。HRNN Init
相对于 session-based RNN
在 Recall@5/MRR@5
指标上分别提升 5%/12% (short)
到 7%/19% (long)
,这进一步凸显了我们个性化策略的推荐质量。HRNN All
在这种情况下表现不佳。综上所述,正如预期的那样,用户历史的长度对推荐质量有很大的影响。在像 XING
这样松散的 session-bounded
领域,其中用户活动高度重复并且跨 session
的多样性较少,那么将 user representation
强制提供给 session-level
输入,将得到比 initialization-only
方法更好的性能。然而,在更强的 session-based
场景中,跨 session
的用户活动具有更高程度的变化性,并且可能很大程度上偏离了用户的历史兴趣和偏好,那么更简单有效的 HRNN Init
变体将具有更好的推荐质量。
session
分析:这里我们按 session
中事件数量进行细分,从而衡量个性化在 user session
中的影响。我们仅分析长度 >= 5
的 session
(XING
数据集中仅为 6736
个 session
、VIDEO
数据集中仅为 8254
个 session
)。我们根据 session
中的位置(开始Beginning
、中间Middle
、结束End
)计算每个指标的均值。开始指的是 session
的前 2
个事件,中间指的是 session
的第 3
和第 4
个事件,结束指的是 session
第5
个及其之后的任何事件。
与之前的分析一样,我们关注 large
配置中 RNN-based
模型,并报告使用不同随机数种子在 10
次运行中均值的median
。Recall@5
和 MRR@5
的结果如下图所示。
在 XING
数据集上:
session
中 previous item
的数量增加而增加,这表明 session-level
的 user context
被所有 RNN-based
方法所正确利用。session-based
模型和 pure session-based
模型之间存在很大差距。两个 HRNN
都具有相似的 Recall@5
,并且与 RNN Concat
相当。有趣的是,HRNN All
的 MRR@5
相对于 RNN
和 RNN Concat
的增益随着处理的 item
数量增加而增加,这意味着在这种情况下,随着 user session
的继续,历史用户信息变得更加有用。HRNN Init
的 MRR
一直都比 RNN Concat
更好,在 Begining
和 End
具有更高的增益。在 VIDEO
数据集上:
在 session
开始和结束之间,Recall
和 MRR
都如预期的增加。HRNN Init
在 session
开始时比 RNN
和 RNN Concat
有很大的提升。这符合直觉,即过去的用户活动也可以有效地用于更准确地预测用户在接下来 session
中的首个行为。
在最初的几个事件之后,个性化的 session-based
模型相对于 pure session-based
模型的 Recall
增益在减少,而 MRR
的增益保持稳定。换句话讲,在经历一些事件之后,session-level dynamic
开始压制 longer-term user interest dynamic
,从而降低了个性化策略的有效性。
然而,个性化仍然在整个 session
中提供了卓越的排序质量,正如 HRNN Init
和 RNN Concat
都比 RNN
有更高的 MRR
所证明的那样。更重要的是,在 session
开始时更好的推荐,要比 session
后期更好的推荐更具有影响力,因为前者更有可能增加留住用户的机会。
最后,HRNN All
总是更差的方法,这进一步巩固了 HRNN Init
变体的优越性。
大型数据集上的实验:我们在更大版本的 VIDEO
数据集(由先前的论文所使用)上验证了 HRNN
。该数据集由 81
万用户在 2
个月期间对 38
万个视频的交互组成,总共包括 3300
万个事件、850
万个 session
。然后我们应用了与 VIDEO
数据集相同的预处理步骤。我们将这个数据集命名为 VIDEOXXL
。
由于我们的计算资源有限,因此我们只能在这个大型数据集上测试 small
网络(对于 RNN
和 HRNN
采用 100
维的隐层)。我们使用在小型 VIDEO
数据集上学到的相同超参数运行一次所有的 RNN
和 HRNN
。虽然这不是最优的,但是这种方法在更一般的 setting
下提供了我们解决方案的初步近似。出于同样的原因,我们没有像对小型数据集所做的那样对实验结果进行详尽的分析。为了加快评估速度,我们计算了相关 item
与 5
万个最热门 item
相比的排名,如 《Parallel recurrent neural network architectures for feature-rich session-based recommendations》
中所做的那样。
结果在下表中所述,这证实了我们之前在小型 VIDEO
数据集上的发现:
RNN Concat
无效,其性能类似于 session-based RNN
。
另一方面,HRNN
的性能优于 session-based RNN
。具体而言,HRNN Init
相比 session-based RNN
,其 Recall@5
高了 28%
、MRR@5
高了 41%
。这些结果进一步证实了本文提出的 HRNN
模型的有效性。
在更大的数据集上,
HRNN
体现了其优势。