【论文导读】ICDM2018|SASRec---基于自注意力机制的序列推荐(召回)

序列推荐、Transformer】SASRec:Self-Attentive Sequential Recommendation SASRec:基于自注意力机制序列推荐》transformer最早提出是用在NLP领域做机器翻译的,本文将transformer中的注意力机制用在序列推荐上,**对于给定的物品序列来预测下一个最可能出现的物品是什么**(采用自注意力机制来对用户的历史行为信息建模,提取更为有价值的信息。最后将得到的信息分别与所有的物品embedding内容做内积,根据相关性的大小排序、筛选,得到Top-k个推荐。)。该方法在稀疏和密集数据集上都优于各种先进的序列模型。 阅读详情

前言

本次分享2018年发表在ICDM上的论文----「Self-Attentive Sequential Recommendation」。主要是应用self-attention机制来做一个序列推荐,与上一次分享的BST模型类似,最后部分简单做了个对比,并给出了该模型的复现代码。
本文约4.6k字,预计阅读15分钟。

概要

「Self-Attentive Sequential Recommendation」主要是针对的是召回的工作,提出SASRec序列推荐模型。作者受到Transformer启发,采用自注意力机制来对用户的历史行为信息建模,提取更为有价值的信息。最后将得到的信息分别与所有的物品embedding内容做内积,根据相关性的大小排序、筛选,得到Top-k个推荐。【当然在论文实验中,首先针对隐式数据集,完成的是一个二分类问题。在测试集中,并不是对所有的物品进行预测,这样耗时太长。针对每一个正样本,伴随了100个负样本,进行排序】

Self-Attention的意义

文中作者与基于马尔科夫链的序列推荐方法和基于深度学习(CNN、RNN)的序列推荐方法进行对比:

  • 基于MC的方法,通过一个简单的假设,进行信息的状态转移。在高稀疏数据下表现好,但在更复杂的场景中很难捕捉到有用的信息,文章实验也证明了这点;

  • 基于RNN的方法有很强的表达能力,但是训练需要大量的数据,在密集型数据集下表现得更好,且因为每一个隐藏状态都必须依赖于前一个,运行效率较低;

而注意机制已被证明在各种任务中是有效的,如机器翻译等。本质上,这种「机制背后的思想是连续的输出都依赖于某个输入的“相关”部分,而模型应该连续地关注这些输入」。且基于注意力的方法通常更容易解释。注意力机制在AFM、DIN模型中得到了很好的应用。

Transformer模型很大程度上依赖于“self-attention”模块来捕捉句子中的复杂结构,以及检索相关单词来生成下一个单词。虽然顺序推荐的问题与机器翻译有很大的不同,但是作者受到了Transformer的启发,试图基于self-attention方法构建一种新的序列推荐模型。

自己的理解

对于一篇论文,最重要的是去理解为什么文章使用了这个方法,有什么意义或作用。以下是我自己的理解:

在本文中,self-attention的意义:对于下一次的物品推荐,依赖于用户行为序列的各个物品的权重是不同的,这与「推荐场景有关」

  • 用户物品交互较少:在一个稀疏数据集下,用户行为较少,行为相隔时间可能相差几天,甚至几个月,那么「此时相近时间的历史物品信息表现得更为重要」

  • 用户物品交互频繁:在一个密集型数据集下,用户行为多,例如在电商场景下,那么相近的物品信息就不是非常重要。例如,对于某个用户,他在电商场景的一个Session中,行为:手机--电脑--衣服---鼠标---裤子,那下一个用户感兴趣的是电子产品、服装都有可能,上述历史行为都很重要,这牵扯到一个「多兴趣」的概念了。

正如文章实验那样,「在不同环境(数据集)下,模型的self-attention机制关注的重点是不同的」

模型结构

1. 参数定义

对于序列推荐,我们定义一个用户的行为序列: ,目标是预测下一个用户可能发生交互的物品但需要依赖之前用户的交互历史,如上图所示。论文中所需的参数表示见下表:

2. Embedding层

文章中重点提到了关于用户行为序列的表示:将行为序列 转化为一个适宜长度的序列 。对于用户 ,若其行为序列的长度大于 ,则取离当前最近的 个行为;若小于 ,则采用0在左边进行填充,直至长度为 。然后其经过Embedding操作,得到Embedding矩阵 表示物品集合, 是embedding维度。对于每一个用户行为序列,都可以检索得到Embedding向量,最终得到

基于自注意力网络的SASRec 序列动态推荐希望可以关注“上下文”信息。目前出现了马尔科夫链(MC)和循环神经网络(RNN)两种方法。马尔科夫链假设用户的下一个动作可以根据最后几个动作来预测,而RNN原则上允许发现更长期的语义。MC适合要求模型简约的极其稀疏的数据集。而RNN适合模型复杂且密集的数据集。 阅读详情

相关推荐

RecSys‘22 推荐系统论文梳理

RecSys是推荐系统领域旗舰会议,2022年除了一篇搜索论文,其余全是推荐系统。[1] 已对论文进行简单整理,本文进行分类整理,并对已经公开的论文进行解读。由于论文数量较少,我会合并一些类别,并把只有一篇论文的类别放到其他中。...

公众号/知乎: AI算法札记,欢迎关注交流 3153

【ccf2021训练赛】图书推荐算法赛道(SASRec序列推荐模型 | 序列推荐模型分类)

- SASRec召回)提出基于自注意力机制序列推荐,考虑用户序列行为中不同交互的重要程度。 - SASRec和以下算法进行比较: - 不考虑序列的传统推荐:PopRec、BPR; - 基于马尔可夫链的序列推荐:FMC、FPMC、TransRec; - 基于深度学习的序列推荐:GRU4Rec、GRU4Rec+、Caser

发现问题,并解决问题,批判性思维 2069

时间间隔感知的自注意力序列推荐方法

嘿,记得给“机器学习推荐算法”添加星标序列推荐系统通过探索用户的交互顺序,以此基于他们最近所做过的事情的上下文预测他们的下一个动作。之前有马尔可夫链以及循环神经网络RNN和Self A...

张小磊的博客 990

通过SASRec算法进行基于Transformer的商品推荐

通过SASRec算法进行基于Transformer的商品推荐

1706

Self-Attentive Sequential Recommendation

Self-Attentive Sequential Recommendation Abstract 序列动力学是许多现代推荐系统的一个关键特征,它试图根据用户最近的行为来捕捉用户活动的“上下文”。为了捕捉这种模式,出现了两种方法:马尔可夫链(MCs)和循环神经网络(RNNs)。马尔可夫链假设用户的下一个动作可以根据他们最近(或最近几个)的动作来预测,而RNN原则上允许揭示更长期的语义。一般来说,基于MC的方法在极其稀疏的数据集中表现最好,其中模型简约性是关键,而RNN在较密集的数据集中表现更好,其中较高的模

DreamOfDragon的博客 2307

完整代码——SASRec 基于自注意力的序列推荐

“基于自注意力的顺序推荐论文复现,内含完整可运行的pytorch版本代码

m0_63294504的博客 4223

36种序列召回模型综述

目前实现过的序列召回有: 1.MIMN; 2.topic2vec; 3.SR-GNN系列;

weixin_39586997的博客 1682

论文《Self-Attentive Sequential Recommendation》

论文地址:https://arxiv.org/pdf/1808.09781.pdf Self-Attentive Sequential Recommendation SASRec是较早应用Self-Attention到序列推荐中的模型,目前作为序列SOTA的baseline,应用十分广泛。在工业界也是很早就大规模落地,取得的效果也是非常显著,在SASRec基础上面进行改进的工作很多,包括后面引入对比学习,加入其他side info,以及加入双向Transformer结构等等。 摘要 序列模型一般是由马尔科夫

whgyxy的博客 2045

论文>自注意力序列推荐模型SASRec

本文介绍了发表于2018年的经典推荐模型论文​《Self-Attentive Sequential Recommendation》。

学习与分享人工智能技术 1271

论文笔记(三):DAML: Dual Attention Mutual Learning between Ratings and Reviews for Item Recommendation

阅读笔记:DAML: Dual Attention Mutual Learning between Ratings and Reviews for Item Recommendation 总述 尽管许多基于矩阵分解的协同过滤方法都取得了成功,但在推荐系统领域还有很大的改进空间。主要障碍是冷启动和数据稀疏问题。最近的研究尝试将评论信息整合到评分预测中。但存在两个主要问题:(1)现有的研究大多采用静态、独立的方法提取用户和物品评论的潜在特征表示,忽视了潜在特征之间的相关性,可能无法全面捕捉用户的偏好。(.

weixin_51083777的博客 1493

[读论文]精读Self-Attentive Sequential Recommendation

顺序动态是许多现代推荐系统的一个关键特征,这些系统试图根据用户最近执行的操作来捕获用户活动的“上下文”。马尔可夫链(MC)和递归神经网络(RNN)。马尔可夫链假设用户的下一个动作可以仅根据他们最后(或最后几个)动作来预测,而 RNN 原则上允许发现长期语义。一般来说,基于MC 的方法在极稀疏的数据集中表现最好,其中模型精简至关重要,而RNN 在更密集的数据集中表现更好,在这些数据集中,模型复杂性更高。

zhangyifeng_1995的博客 1881

【亲测免费】 探索SASRec: 高效的序列序列推荐系统框架

在数据驱动的时代,个性化推荐系统已经成为提高用户体验和商业价值的重要工具。今天我们要关注的是一个名为SASRec(Sequential Attention-based Self-attentive Recommendation)的开源项目,它是一种基于自注意力机制序列推荐模型。SASRec由GitHub用户[kang205](https://github.com/kang205)开发并维护,旨在

gitblog_00020的博客 1297

Self-Attentive Sequential Recommendation(有代码)

题目翻译:Self-Attentive Sequential Recommendation 来源:http://arxiv.org/abs/1808.09781 代码:Self-Attentive Sequential Recommendation | Papers With Code 目录 摘要 I. 介绍 II. 相关工作 A.一般推荐 B.时序推荐 C.序列推荐 D.注意力机制 III. 研究方法 A. Embedding层 B. 自注意力模块 C .堆叠自注意力块

molly4869的博客 1025

SASRec论文代码复现讲解(教你如何读代码)倾囊相授!

本文是我个人的学习总结,我也是初学者,但是我有很认真在思考做笔记,如果你也是初学者,我相信这对你的帮助很大,因为下面是作为刚入门的我的思考过程,这次先讲代码中部分函数,后边我会在本文慢慢更新,记得关注。可以先试着看看下边的内容,或许对你有所帮助!目前,我比较喜欢一个模块一个模块 or 一个函数一个函数去解决,我可能先看数据怎么处理划分的,每个模块我会用代码测试一下,可以看一下输出结果跟自己想的一不一样,遇到不会的函数就去百度+自己写代码测试,非常好用。

xml的博客 3847

论文笔记Self-Attentive Sequential Recommendation

Abstract 顺序动态(Sequential dynamics)在很多推荐系统中都是一个关键的特征。顺序动态就是基于用户最近的行为去捕捉用户活动的上下文。为了捕捉这种模式,有两类方法的应用比较广泛,即Markov Chains和Recurrent Neural Networks。马尔科夫链(Markov Chains)假设,用户的下一个动作可以仅基于其上一个(或最后几个)动作来预测,而RNN原...

weixin_39129550的博客 4760

SASRec: Self-Attentive Sequential Recommendation阅读笔记

Self-Attentive Sequential Recommendation 2018年的经典文章时序动态是许多现代推荐系统的一个关键特征,它们试图根据用户最近执行的操作来捕捉用户活动的“背景”。为了捕捉这种模式,出现了两种方法:马尔可夫链(MC)和递归神经网络(RNN)。马尔科夫链假设用户的下一个动作可以根据他们的最后(或最后几个)动作来预测,而RNN原则上允许发现更长期的语义。一般而言,基于MC的方法在模型简约性至关重要的极稀疏数据集中执行得最好,而RNN在较密集的数据集中执行得更好,因为较高的模型

pocket_eight的博客 2134

SASRec: 自注意力序列推荐系统

SASRec(Self-Attentive Sequential Recommendation)是一个基于TensorFlow的开源项目,主要用于实现自注意力机制序列推荐系统。该项目由Wang-Cheng Kang和Julian McAuley在2018年提出,并在IEEE国际数据挖掘会议(ICDM'18)上发表。SASRec项目的主要编程语言是Python,并且依赖于TensorFlow框架进

gitblog_01283的博客 950

代码复现——SASRec 基于自注意力的序列推荐

原作者给出的代码是基于tensorflow框架的,我对这个框架不熟悉,所以使用了pytorch框架。于是去查询了什么是Hit Rate@10和NDCG@10定义:Hit Rate@10(在前10个推荐中的命中率)是指在推荐列表的前10个推荐项中,至少有一个是用户实际感兴趣的(即用户点击或购买的)的比例。这个指标衡量的是推荐系统能否在前10个推荐中至少命中一个用户感兴趣的项目。

m0_63294504的博客 4884
上一篇: 【论文导读】DLP-KDD2019|BST---使用Transformer进行序列推荐
下一篇: 【个人】半年的总结与思考
Blank_spaces
博客等级 码龄10年 100粉丝 115原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值