基于自注意力机制的下一项推荐

Next Item Recommendation with self-Attention

ACM 2018
原文地址

摘要

这篇论文,作者提出了一个序列感知推荐模型。该模型利用自注意力机制从用户历史交互中推测出item-item之间的关系。通过自注意力机制可以在用户交互轨迹中评估每个item的相关权重,以便更好的来学习用户瞬时兴趣的表示。这个模型最后训练在**度量学习框架(metric learning framework)**上,并且考虑了用户短期和长期的意图。在不同领域大量的数据集上的实验证明了,我们的方法表现了最有的性能。

关键词

推荐系统、序列推荐、自注意力

介绍

在很多领域有丰富的历史交互数据存在,比如点击率、购买记录、浏览等,通过这些数据可以构建有效的推荐系统。利用历史数据来推算出下一项推荐是很多基于机器学习的推荐系统基础。很多现有成果利用用户行为的再现和丰富的序列模型来预测用户的next item。这篇论文利用自回归趋势来建立高效的序列推荐系统。
近几年CNN和RNN对于解决序列问题方法很火热。RNN中,相连item之间的交互可以被循环矩阵捕获,长期依赖关系可以保存在循环记忆中。CNN通过对输入序列进行滑动参数化地转换,隐式得捕获交互。但是这样的推荐系统有一个缺点:它们不能通过历史数据显示得捕获item-item之间的交互。建模用户上下文历史中的item-item之间的关系,是非常必要的。因为理解单个item pairs之间的粒度关系(fine-grained)而不是简单地掩饰他们是十分重要的。我们假设为我们的模型提出归纳偏置,将会提高表示的质量,进而提高序列推荐系统的性能。
为此,我们提出了一种神经序列推荐系统,其中序列表示不仅通过建模consecutive item,而且通过建模当前窗口all user interactions来学习。因此我们的模型,可以说是一种local-global的方法。我们认为,基于自注意力机制的神经模型,通过全体用户的历史交互序列,显示得表达item-item之间的相互作用。这不仅能够使我们了解全局信息,而且还能了解连续的K个item项之间的短期信息。基于自匹配矩阵(self-matching matrix),我们学习关注相互作用的序列,以选择出最相关的item,来产生最终的用户表示。实验证明,我们的模型贼好。
我们的模型运用度量学习框架的形式,在训练过程中,用户的选择item和预期item之间的距离被拉进。这是第一个在序列推荐系统中运用自注意力机制度量学习的例子。我们的贡献有以下三个:
1.新颖的序列推荐系统:模型结合自注意力网络和度量嵌入模型来建模用户临时的和长期的意图。
2.我们的框架在12个完善的数据集上试验了,性能优秀。演示了序列建模中, 显示得表达了item-item之间的关系。
3.我们实现了广泛的超参数和消融研究。

相关工作

1.序列感知推荐系统(sequence-aware)

user-item的交互记录在时间戳中,积累的数据能够对时间动态建模,并为用户偏好提供证据。
前人对此研究:
Koren et al. [22]将用户和item偏好视为随时间变化的函数,对item的瞬时流行度和用户时间倾向建模
Xiong et al. [40]引入额外的时间因子,建立贝叶斯概率张量因子分解方法来模拟时间漂移
Wu et al. [39] 使用递归神经网络模拟评级的瞬时演变
都是专门用于预测评级的。
为了生成个性化推荐排名列表:
Rendle et al. [28] 将矩阵分解和马尔可夫链相结合
He et al. [12] 基于相似性的方法于马尔可夫链相融合的顺序推荐方法,除此之外,度量嵌入也很好
Feng et al. [6] 通过引入嵌入翻译的思想来改进该模型

2.基于深度神经网络的推荐

深度学习用在推荐系统很多领域,比如多层感知器在建模用户关系时可以引入非线性表示。卷积神经网络可用于物品和用户的特征提取,自编码器从side信息中学习显著信息来提高推荐质量,RNN建模时间。
在所有的推荐系统中,基于会话的推荐系统和我们系统的任务相似,但是也有些不一样。在基于会话的推荐系统中,用户身份未知,因此模型结构和学习过程是分散的(divergent)。深度学习的灵活性使得将不同的神经网络相结合可以形成强大的混合推荐系统。这归功于其非线性、强大的学习表示、和序列建模。
Wang 提出分层表示模型,去捕获用户总体偏好和时序行为。
Tang 提出卷积序列模型,去学习用户瞬时轨迹。其性能比CNN好。
总体来说,CNN和RNN需要从大量数据在学习才有意义,稀疏的数据集使模型学习变得很困难。

3.神经注意力模型

神经注意力模型和人类视觉很类似,它只学习关注最重要的部分。标准的注意力可以整合到CNN和RNN中来克服其不足。特别得,注意力机制使得RNN容易记住非常长期的依赖关系,可以帮助CNN将注意力集中在最重要的部分。
我们的论文是基于一种新的模型,自注意力机制。自注意力机制关注的是两个序列的协作学习和自我匹配(co-learning and self-matching)*。其中一个序列的注意力权重取决于另一个序列,反之亦然。它可以在序列学习中代替RNN和CNN,以更低的计算复杂度达到更高的精度。我们用自注意力机制建模序列依赖关系和用户短期行为。但值得注意的是,在基于上下文的推荐系统中,使用自注意力机制并不是那么简单,因此我们的论文好呀!

模型:AttRec

AttRec即self-attentive sequential recommendation,本模型由两部分组成。一部分是用于建模用户短期意图的自注意力机制,一部分是建模用户长期偏好的协作度量学习。

1.序列推荐

用户最近的交互反映了用户近期的需求和意图。因此为了更好的地理解用户的时间偏好,建模用户短期交互是一项重要的任务。本文使用自注意力机制来捕获序列并使用它来建模用户最近的交互轨迹。U表用户,I表item。其中|U|=M,|I|=N。我们使用《基于自注意力机制的下一项推荐》
表示用户u交互的item序列,是有序的。其中Hu属于I。序列推荐的目的是为了通过之前的轨迹,预测用户可能与之交互的下一项item。

2.使用自注意力机制建模短期意图

自注意力模型是注意力机制的一个特例,已成功应用于各自任务,它通过将单个序列与自身匹配来细化表示。在背景知识有限的情况下,自注意力可以保存上下文序列信息,并捕获序列中元素的关系。因此用自注意力来关注用户过去的行为。
自注意力机制的基础是被缩放的点积注意(dot-product attention)。该模型的输入由query、value、key三个组成,输出是value的加权和。其中权重矩阵由query和与其对应的key决定。在本文中,query、key、value三值相等,并且都是又用户最近的历史记录组成。假设用户的短期意图可以从她最近的交互L中得到。其中每一项都可以由d维的嵌入向量表示。X ∈ RN×d表明全体item的嵌入表示。最新的L项(比如从t-L+1到t)按顺序放在在如下矩阵中:
《基于自注意力机制的下一项推荐》
最新的L项是Hu的子集。用户u的query、key、value在时间步长t下,等于Xut(X的上标是u下标是t)。
首先:我们将query和key通过共享参数的非线性变化整合到一个空间中。
《基于自注意力机制的下一项推荐》
ReLU是激活函数,是为了引入非线性表示到学习到的注意中。关联矩阵的计算如下:
《基于自注意力机制的下一项推荐》
输出是L*L的关联矩阵(或注意力map),表明L项之间的相似度。注意根号d被用于收缩点积注意。在我们这个例子中,d通过设得比较大(比如100)。这样的话,缩放因子可以减小非常小的梯度效应。在softmax之前应用屏蔽操作(屏蔽关联矩阵的对角线),以避免相同的query向量和key之间的高匹配分数。(不是很理解)
第二:我们保持Xut不变,在模型中使用恒等映射(identity mapping)(其他模型使用线性变换来映射)在其他应用领域中,value通常是预先训练的特征嵌入,例如字嵌入或图像特征。但本模型value由需要学习的参数构成,线性或非线性变换的加入将增加实际参数显露的难度。key和query是辅助信息,以便其不像value那样那么容易被转换。
最后,关联矩阵和value相乘构成最后的自注意力机制的权重输出:《基于自注意力机制的下一项推荐》
aut就表示用户短期意图的表示。为了学习单个注意力表示,我们L自注意表示的均值嵌入作为用户瞬时意图。注意,其他的方式也可以(比如累加啊、求最大啊、最小啊),后面的实验将会比较效果。
《基于自注意力机制的下一项推荐》
输入嵌入的时间信号:以上的自注意力模型不包括时间信号,没有序列信号。输入低级的词袋不能归保留序列模式。我们提议通过位置嵌入提供带有时间信息的query和key。我们使用一个时间尺度的几何序列来向输入端添加不同频率的正弦波。时间嵌入(TE)由以下两个正弦信号组成:
《基于自注意力机制的下一项推荐》
其中t是时间步长,i是维度。在非线性变换之前,TE加到query和key里。
整个过程的图如下:
《基于自注意力机制的下一项推荐》

3用户长期喜好建模

在对短期效果进行建模之后,将用户的一般品味或长期偏好结合起来是有益的。和潜在因素方法相同,我们为每个用户和每个item分配一个潜在因素。让U属于RMd(Md为上标),V属于RNd(Nd为上标)表明users和item的潜在因素。然而,最新你的研究表明,点积操作违背了度量函数参数不等下的性质,并且将会导致次优解。为了避免这个问题,我们采用欧式距离去测量item i和user u的距离。
《基于自注意力机制的下一项推荐》
越小,距离越近~~~~

4.模型训练

目标函数:给定时间步t的短期意图,和长期偏好。我们的目标是预测用户u在时间t+1下的item(我们用Hu t+1表示,u为上标,t+1为下标)为了保证一致性,我们使用欧式距离,去建模短期和长期的影响。使用其和作为最后的推荐分数。
《基于自注意力机制的下一项推荐》
上式中,第一项是长期推荐的分数,第二项是短期推荐的分数。注意:《基于自注意力机制的下一项推荐》
都是下一项item的嵌入向量,但是V和U是不一样的参数。最后的分数是由w控制的加权和。
在有些例子中,我们期望去预测多个item。这要求我们的模型,可以捕获序列中的跳跃行为。T+表示用户真正喜欢的下一项T。在我们的论文中,我采用成对排序方法去学习参数,因此我们需要去采样T的反面,即用户不会交互的,不喜欢的item(用T-表示)。显然T-是从I/T+中采样的来的。为了增强消极对和积极对之间的区别。我们使用铰链损失函数:
《基于自注意力机制的下一项推荐》
上式中,《基于自注意力机制的下一项推荐》是模型参数,r是分离积极和消极对的距离。我们使用l2损失去控制模型的复杂度。DropOut也可以被用于自注意力模型的非线性层。因为我们使用欧式距离,对于稀疏数据集,我们也可以选择范数剪裁策略在欧里几德求中去约束x,u,v。
优化和建议:利用自适应梯度法优化提出得模型,可以自动得适应步长,因此减少学习速率调整所作的努力。

    原文作者:爱学习的吨吨a
    原文地址: https://blog.csdn.net/qq_30516823/article/details/84064925
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞