论文地址:https://arxiv.org/abs/1905.01997
一 为什么读这篇
已经看了几篇用Attention做序列推荐的具体方法,正好在这个过程中找到了这篇综述,看日期还蛮新,是最近刚出不久的,期望是能从综述里挖出一些可以继续做的方向。
二 截止阅读时这篇论文的引用次数
2019.7.15 0次。
三 相关背景介绍
中了19年的ICWE(这是什么会。。),同年5月挂到arXiv上。4个作者分别来自上海财经大学和东北大学。上财出这方面的paper,有点存疑。。不过作者们确实是做推荐系统方面工作的,发的paper还不少,引用次数也还可以。一作Hui Fang是上财交叉科学研究院的青椒妹子,PHD毕业于南洋理工。四作郭贵冰同PHD毕业于南洋理工,现在是东北大学的青椒,是开源项目LibRec的作者(这个项目有2000多星了),还是蛮屌的。
四 关键词
Sequential Recommendation
Session-based Recommendation
review
survey
五 论文的主要贡献
对现有基于DL的序列推荐问题做了完整的综述
六 详细解读
0 摘要
虽然过去几年在序列推荐上,深度学习的方法已经超过了马尔科夫链,因式分解等传统方法。不过DL还是有其固有缺陷,例如对用户表示的建模不够充分,并且忽视了user和item之间不同类型的交互(即用户行为)。本文阐述了序列推荐的概念,将现有算法根据三种类型的行为序列进行归类,总结了影响基于深度学习模型性能的关键因素,并进行相应的评估以佐证这些因素的影响。
1 介绍
传统推荐系统致力于基于user和item之间的显示或隐式交互对user在item上的偏好建模,但是忽略了每个交互上的时间信息,导致对用户偏好的建模不够准确。
序列推荐通常也称之为session-based,session-aware或sequence-aware的推荐。session这个概念主要应用于电商。对于序列推荐,除了像传统推荐那样在不同session中捕获用户的长期兴趣外,还需要在session中对用户的短期兴趣建模以进行更加精准的推荐。
1.1 相关综述
17年的《Use of deep learning in modern recommendation system: A summary of recent works》将基于深度学习的推荐系统分为协同过滤,基于内容,混合方法三类。19年的《Deep learning based recommender system: A survey and new perspectives》更进一步讨论了SOTA方法,包括几种基于RNN的序列推荐算法。18年的《Sequence-aware recommender systems》提出了对序列推荐任务和目标的分类,并总结了现有方法。19年的《A survey on session-based recommender systems》证明了基于session推荐系统的价值和重要性,并提出分层框架将问题和方法进行分类。
1.2 本综述结构
也就是后面2,3,4,5,6节的标题。
2 序列推荐回顾
2.1 概念定义
首先正式定义行为对象和行为类型,以区分序列数据中的不同用户行为。
行为对象
说白了就是item。
行为类型
包括搜索,点击,添加到购物车,购买,分享等。
将行为轨迹(behaviour trajectory)定义为由多个用户行为组成的行为序列。典型的行为序列如图3所示。
行为序列是多态的,可以分为基于体验,基于交易,基于交互3种类型。
基于体验的行为序列
如图4所示,用户可能对同一个对象通过多次不同的行为类型进行交互。不同的行为类型和顺序预示不同的用户意图。例如,点击和浏览反应兴趣的程度较低,而在购买之前(之后)出现分享行为可能意味着用户获取(拥有)item的强烈愿望(满足)。
基于交易的行为序列
如图5所示,基于交易的序列记录了用户对不同item的交互,但是这些行为可能属于同一类型。
基于交互的行为序列
如图6所示,它混合了基于体验和基于交易的行为序列,即同时有不同的行为对象和不同的行为类型。
2.2 序列推荐任务
图7描绘了两种推荐任务:next-item推荐和next-basket推荐。在next-item推荐中,用户行为只包含一个对象。而在next-basket推荐中,用户行为包含多个对象。不过它们的模型都是预测next-item,最流行的输出仍然是topN排序列表。
序列推荐任务的公式可以做如下定义:
2.3 相关模型
2.3.1 传统方法
传统方法通常采用矩阵分解来解决用户在不同session中的长期兴趣,同时使用一阶马尔科夫链来捕获用户在session中的短期兴趣。
频繁模式挖掘
KNN
马尔科夫链
基于因子分解的方法:主要有2个问题,第一用户行为更新时user和item的隐向量都得更新,第二就是忽略了行为的时间依赖。
强化学习
2.3.2 深度学习方法
RNNs:主要问题是对于长序列的依赖,能力有限,训练代价也会增加
CNNs:可以捕获session中的局部特征
MLPs
Attention
GNNs
2.3.3 小结
基于马尔科夫和基于矩阵分解的模型均假设用户的下一个行为只与少数最近的行为相关,然而DL方法可以使用更长的序列做预测,因为它们能够更有效的学习整个序列的主题。同时DL方法有更好的扩展性,因为其对稀疏数据的健壮性,还可以采用可变长度的输入序列。
DL方法的主要问题有:
- 对于生成的推荐结果缺乏可解释性
- 优化非常有挑战,对于复杂网络的训练需要更多的数据
3 序列推荐算法
3.1 基于体验的序列推荐
这种推荐也称之为多行为推荐。
用于多行为推荐的传统模型
基于DL的多行为推荐
多任务学习可以解决未充分探索不同行为类型之间关系的问题。
3.2 基于交易的序列推荐
这种推荐中只有单一行为类型,推荐模型通常考虑不同对象(items)之间的顺序依赖关系以及用户兴趣。
3.2.1 基于RNN的模型
3.2.1.1 GRU4Rec相关的模型
GRU4Rec采用session-parallel mini-batch用于训练。用这种方式的原因在于session的长度是非常不一样的,因为目的是捕获session如何随着时间的推移而演变,所以不能简单的将session分为不同的部分以迫使它们保持一样的长度。此外,在训练时,GRU4Rec使用基于流行度的负采样,背后的假设是越流行的item用户越有可能知道,如果反而没有产生交互行为就说明用户不喜欢它。
《Incorporating dwell time in sessionbased recommendations with recurrent neural networks》考虑了停留时长极大提升了效果。其具体做法也值得一看。这种策略(称之为item boosting)被视为根据相应的停留时长重新标定行为对象的重要性。
考虑到基于流行度的负采样的性能问题及对长尾items的不友好,《Recurrent neural networks with top-k gains for session-based recommendations》提出的附加采样(结合均匀采样和流行采样)把准确率提升到53%。
为了更好地对item信息建模,可以考虑更多的item信息而不仅仅是IDs(如文本描述和图像)
3.2.1.2 用户表示
有一些工作是更好地对用户兴趣建模。
考虑到简单的将用户历史信息embedding合成为一个简单的向量有可能会损失用户历史序列和长期兴趣中每一个item或特征级别的相关信息。《Sequential recommendation with user memory networks》提出的记忆增强网络通过利用额外的记忆矩阵显式的存储和更新用户历史信息。
3.2.1.3 上下文感知的序列推荐
《Context-aware sequential recommendation》将上下文分为输入上下文和过渡上下文两种类型。输入上下文包括位置,时间,天气等信息,过渡上下文意味着历史序列中两个相邻输入元素的过渡,例如相邻行为的时间间隔。
3.2.1.4 其他模型
《A dynamic recurrent model for next basket recommendation》DREAM模型。
3.2.2 基于CNN的模型
RNN的模型受限于短序列及相对昂贵的计算代价,这些问题部分可以被CNN模型解决。
3D-CNN,CNN-Rec,NextItNet。
Caser将L个之前的items embedding矩阵视为图像,因此可以使用水平卷积层和垂直卷积层来分别捕获点级别和联合级别的模式。通过使用卷积,相关跳跃行为的感知变得可能。
3.2.3 基于Attention的模型
3.2.3.1 原始Attention机制
NARM,RepeatNet。
《Attentive neural architecture incorporating song features for music recommendation》
《An attribute-aware neural attentive model for next basket recommendation》看起来这篇文章的做法和ATA的《Feature aware》有点像。
3.2.3.2 Self-Attention机制
SASRec,Bert4Rec(SASRec的升级版),AttRec。
3.2.4 基于MLP的模型
NN-rec是在next-basket推荐上第一个考虑神经网络的。HRM。
3.2.5 其他模型
GNN。Autoencoder。
3.3 基于交互的序列推荐
相比前两种任务,基于交互的推荐更加复杂,因为每个序列由不同的行为类型和行为对象组成。
3.3.1 基于RNN的模型
《Modeling contemporaneous basket sequences with twin networks for next-item recommendation》是第一个将session分为目标序列和辅助序列的。
《Learning from history and present: next-item recommendation via discriminatively exploiting user behaviors》提出模型主要由neural item embedding和discriminative behavior learning两部分组成。
3.3.2 基于Attention的模型
ATRank同时考虑了self-attention和vanilla attention机制。它根据不同的行为类型将行为序列划分为不同的组。每个组对应的行为embedding空间,是由相应的item embedding,行为类型embedding和时间戳embedding投影得到的。
CSAN通过考虑side information和行为的一词多义,改进了ATRank。
《Modeling user session and intent with an attention-based encoder-decoder architecture》通过encoder-decoder架构来对电商中的用户session建模。
3.3.3 其他模型
listNet由SIE和list-wise排序两部分组成。
G-BBAN。
3.3.4 小结
方法的总结归类看表1就可以了。
当前模型也存在一些问题,特别是基于复杂交互的序列推荐:
1 行为类型和行为二元组中的item大多数是同等对待的,例如ATRank和CASN
2 不能成功区分不同的行为类型
3 序列中行为之间的相关性很容易被忽略
4 深度学习模型的影响因素
如图10所示,展示了序列推荐系统的训练和测试过程。图中的灰色框表示可能影响模型性能的一些关键因素。
4.1 输入模块
Side information和行为类型是输入模块中很重要的因素。
4.1.1 Side information
指除了IDs之外与items有关的信息,例如图像,文本描述,评论,或者与交易有关的信息(如停留时长)。
p-RNN使用并行RNNs框架处理item IDs,图像和文本。CSAN利用word2vec和CNN来学习文本和图像的表示。
像图像和文本这种side information可以缓解数据稀疏性,冷启动以提升模型效果。像停留时长这种side information部分暗示了用户对不同item的兴趣程度。
《Incorporating dwell time in session-based recommendations with recurrent neural networks》的实验说明增加了停留时长的GRU4Rec取得了显著的提升。
4.1.2 行为类型
用户行为序列中的行为通常是异构的,多义的,不同的行为暗示了不同的用户兴趣。
BINN用所有行为表示用户的短期兴趣,而只有购买行为来表示用户长期兴趣。
4.1.3 重复消费
是指一个item重复在用户的历史序列中出现。RepeatNet是仅有的考虑这个问题的工作。
尽管side information和行为类型能极大的提升模型性能,但它们的收集可能并不容易,同时代价很高。
4.2 数据处理
4.2.1 Embedding设计
4.2.2 数据增强
对于冷启动问题,数据增强非常重要。
4.3 模型结构
4.3.1 结合Attention机制
NARM,ATEM,STAMP给RNN或MLP结合vanilla attention机制,比GRU4Rec有25%,92%,30%的提升。
SASRec结合了self-attention和前向网络。
AttRec用self-attention捕获用户短期兴趣。ATRank和CSAN结合了self-attention和vanilla attention。
4.3.2 结合传统方法
有结合基于session的KNN和GRU4Rec,AttRec结合了self-attention和度量学习。
4.3.3 增加显式用户表示
用户长期兴趣可以建模为用户embedded模型和用户recurrent模型。
用户embedded模型
通过embedding方法显式地学习用户表示,但是没有像item表示那样在重复过程中学习。会有两个问题,问题一是受冷启动用户问题影响,问题二是用这种方式学习的用户表示相对静态。
用户recurrent模型
将user和item表示都视为重复组件。这样可以更好地捕获用户兴趣的变化。
4.4 模型训练
4.4.1 负采样
基于流行的采样和均匀采样应用最为广泛。新提出的附加采样(additional sampling)结合了这两种采样策略,发挥它们的优势同时避免了各自的缺点。此外,采样的个数也会影响效果。
4.4.2 Mini-batch创建
《Session parallel mini-batch training》有两个变种:item boosting和user-parallel mini-batch(例如HRNN)
4.4.3 损失函数设计
TOP1-max
BPR-max
TOP1-max和BPR-max可能会受到梯度消失的影响。因此提出排序分只与负样本中最高的排序分做比较,相当于TOP1-max和BPR-max的加权版本
CCE
CCE因softmax函数受到计算复杂度的困扰。
Hinge
5 关于影响因素的实验
5.1 实验设置
5.1.1 数据集
5.1.2 模型设置
用GRU4Rec作为基准模型。它的默认参数是没有数据增强,没有用户表示,BPR-max作为损失函数,采用均匀负采样,RSC15的采样大小为2048,RSC19的采样大小为128。
对于输入模块,选择两种side information:item category和停留时长。针对item category,实现了两种基准模型的改进版:C-GRU(拼接item embedding和category embedding)和P-RGU(分别并行训练item和category的基准模型,然后拼接两个子网络的输出)
为了验证行为类型的影响,设计了增加行为类型模块的新网络(B-GRU)
在数据处理模块,实现了数据增强方法。即在训练集中随机选择50%的session并随机将每个session的一部分视为新session。
在模型结构模块,考虑了NARM,weighted model和用两种方式增加显式用户表示。
在模型训练模块,考虑了3个因素:损失函数,采样策略,负采样大小。
5.1.3 评估指标
采用Recall@k,MRR@k,MAP@k,NDCG@k。
Recall衡量了覆盖率。
MRR衡量了模型对于目标item排序的好坏。
高MAP说明在ground-truth列表中的item有更高的排序顺序。
NDCG衡量了top-k推荐的质量。越高的NDCG说明top-k推荐列表中的item顺序越接近ground-truth列表。
5.2 实验结果
side information的效果
item category信息可以在4种指标上都有提升。
停留时长有显著的提升。
行为类型的效果
如表4的B-GRU所示。
数据增强的效果
如表5所示。
模型结构的效果
如表5所示。Attention机制几乎在所有的场景都有效。KNN也有所提升。而用户表示就取决于应用场景了。
采样方法的效果
如图13,图14所示。受影响还挺大。也取决于损失函数的选择。
负采样大小的效果
如图15所示,越大的负采样效果越好。但是在实际应用中,需要与训练时间做平衡。
损失函数的效果
如图16,图17所示,BPR-max,TOP1-max,cross-entropy优于BPR和TOP1,但是这3个谁最好还是得看数据集。
总结
最佳实践建议:
1 尝试所有可能的side information(例如文本和图像),仔细设计相应的模块
2 仔细考虑行为类型和目标行为的连接,在建模这些连接时,需要注意最终推荐中可能涉及有噪声的信息
3 总是使用数据增强,TOP1-max,BPR-max和交叉熵损失函数用于训练,考虑负采样大小时需在模型效果和计算代价间取得平衡
4 对于任何DL模型,考虑使用Attention机制,结合传统序列学习方法以及良好的显示用户表示以进一步提升效果
6 开放的问题和未来的方向
1 不同模型的客观综合评价
很多论文都是GRU4Rec的变种并以它作为基线,但是却没有在这些变种之间进行比较,所以很难判断到底哪个更好。
2 更多关于embedding方法的设计
相比于NLP中的单词及其连接相对固定,在序列推荐中信息不断变化,所以预训练embedding模型更有挑战。此外,在已有序列推荐模型中合并embedding向量的方法相对简单。
3 更高级的采样策略
现在的采样策略相比NLP中略显简单,所以可以考虑从其他领域(如NLP)借鉴或扩充更先进的采样策略。
4 更好的对用户长期兴趣建模
相比于item侧的表示,用户侧的表示(特别是长期兴趣)还远不能令人满意。未来的研究需要设计更好的用户表示模块,以及考虑更好地结合用户长短期兴趣。
5 基于多态行为轨迹的个性化推荐
Qiu等人提出的BPRH结合了目标行为,辅助行为以及负面行为为统一的模型,这一点也许可以应用在序列推荐上。
6 实时学习行为序列
用户的每一个行为都可能反应出可能的兴趣迁移,在这种情况下,推荐系统理应捕获这些信息,并及时证明推荐策略的合理性。强化学习是解决该问题的一个很有前景的选项。
7 用于特定领域的序列推荐
针对不同的应用领域,很少有有研究专门确定合适的推荐算法,而大多数研究假设它们的模型适用于所有领域的序列推荐任务。
七 小结
总算看完了,中间一度觉得本文没有多大价值,读到后面时观点有所转变,本文梳理的还是比较全面的。可以作为一个很好的roadmap,以后按图索骥去解决问题。相比于看ATA,看paper的好处是有更多的角度,新思路,新方法,而不是像ATA上那样,感觉都很雷同。