论文笔记Self-Attentive Sequential Recommendation
论文信息
Wang-Cheng Kang and Julian McAuley. 2018.
Self-Attentive Sequential Recommendation
原文下载:https://arxiv.org/pdf/1808.09781.pdf
Abstract
顺序动态(Sequential dynamics)在很多推荐系统中都是一个关键的特征。顺序动态就是基于用户最近的行为去捕捉用户活动的上下文。为了捕捉这种模式,有两类方法的应用比较广泛,即Markov Chains和Recurrent Neural Networks。马尔科夫链(Markov Chains)假设,用户的下一个动作可以仅基于其上一个(或最后几个)动作来预测,而RNN原则上可以揭示较长期的语义。 一般而言,基于MC的方法在极度稀疏的数据集(模型简约性至关重要)中表现最佳,而RNN在密度更大的数据集(模型的复杂性可承受)中表现更好。我们的目标是不仅要像RNN那样捕捉到长期的语义信息还要像MC那样基于尽可能少的行为进行预测。因此,我们提出了一个基于self-attention的序列模型(SASRec)。
Introduction
序列推荐的目标是将用户行为的个性化模型(基于历史活动),与基于用户最近行文的“上下文”的一些概念相结合。但因为输入空间的维数随着(作为上下文的)用户过去的行为的数量指数增长,因此从序列动态sequential dynamic中捕捉有用的模式是比较困难的。因此,目前,序列推荐主要关注如何简洁地捕捉这些高阶动态(high-order dynamics)信息.
马尔可夫链是一类经典的方法,它假设用户的下一个行为仅依赖于前一个(或一些)行为,在短范围物品过渡的特征刻画方面应用很成功。另一类工作就是使用recurrent neural networks通过隐藏状态总结过去所有的行为,从而进行下一个行为预测。但是它们都有自己的缺陷,基于MC 的方法,只在高稀疏的设置下表现很好,但在捕捉复杂的dynamics或这应用场景比较复杂时表现就不尽人意了,而RNNs,则需要大量的数据。
受到transformer中的self-attention机制的启发,本篇工作打算将self-attention机制应用到SR中,以期解决上面提到的问题。也就是说,不仅要像RNN那样捕捉到长期的语义信息还要像MC那样基于尽可能少的行为进行预测。因此提出了一个模型叫SASRec,这个模型可以在每个时间步自适应地为之前的物品赋予权重。
Methodology
定义用户行为序列为
S^u =(S_u,1,S_u,2,…,S_u,|S^u|, 在时间步t,模型的下一个item取决于之前的t个item,模型的输入可以视为(S_u,1,S_u,2,…,S_u,|S^u|-1), 期望输出是(S_u,2,S_u,3,…,S_u,|S^u|)
1、 Embedding layer
将训练序列(S_u,1,S_u,2,…,S_u,|S^u|-1)转为固定长度序列s=(s1,s2,…,sn)。如果序列长度超过n,则用最近的n个行为。如果不足,从左补足直到长度为n。
因为self-attention并不包含RNN或CNN模块,因此它不能感知到之前item位置。本文给输入Embedding插入可学习的位置Embedding P∈R(n×d):
本文也试了transformer中固定的位置Embedding,不过效果更糟。
2 、 Self-Attention Block
Transformer中的缩放点积attention定义如下:
Self-attention层以embedding E作为输入,通过线性投影转为3个矩阵,然 输入attention层
为了避免穿越问题,需要禁止Qi和Kj(j>i)之间的所有连接。
尽管self-attention能够用自适应权重聚集之前所有item的embedding,最终它仍然是个线性模型。为了增加非线性同时考虑不同隐式维度之间的交互,用了一个两层的point-wise前馈网络:
3、 Stacking Self-Attention blocks
堆叠公式如下:
然而随着网络的加深也出现几个问题:(1)模型容量的增加导致过拟合;(2)由于梯度消失训练过程变得不稳定;(3)更多的参数需要更长的训练时间受Transformer启发,用了LayerNorm,Dropout,残差连接:
其中g表示self-attention层或前馈网络。LayerNorm公式如下:
4、 Prediction layer
采用MF层来预测相关的item i:
其中r_i,t是给定个前t个items,下一个item i的相关性。N∈R^(|I|×d)是一个item embedding矩阵。为了减少模型大小及避免过拟合,共享item embedding M.即
显式用户建模
为了提供个性化推荐,当前主要有两种方法:(1)学习显式的用户embedding表示用户偏好(MF,FPMC,Caser)(2)考虑用户之前的行为,通过访问过的item的embedding推 隐式的用户embedding
本文采用第二种方式,同时额外在最后一层插入显式用户embedding,例如通过加法实现。但是通过实验发现增加显式用户embedding并没有提升效果。
论文笔记Self-Attentive Sequential Recommendation相关推荐
- 论文《Neural Attentive Session-based Recommendation》阅读
论文<Neural Attentive Session-based Recommendation>阅读 论文概况 Introduction Method A.Global Encoder ...
- 【推荐算法论文阅读】BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Trans
一.背景 之前基于RNN的推荐模型都是按照从左到右单向建模的,单向结构限制了用户行为序列中隐藏表示的能力--它们通常假定一个严格有序的序列,而这并不总是实用的. 本文提出了 bert4rec,应用de ...
- 论文笔记(Attentive Recurrent Social Recommendation)
注意力循环社交推荐 原文链接:Attentive Recurrent Social Recommendation, SIGIR'18 原理:将用户的朋友和历史交互项按时间划分,用注意力机制整合各个时段 ...
- 论文笔记-- Multi-Task Learning in recommendation
Multi-Task Learning in recommendation Deep Multi-Task Architectures Historical Overview and Taxonomy ...
- Self-Attentive Sequential Recommendation论文阅读笔记
SASRec论文阅读笔记 论文标题:Self-Attentive Sequential Recommendation 发表于:2018 ICDM 作者:Wang-Cheng Kang, Julian ...
- 论文阅读笔记:Geography-Aware Sequential Location Recommendation
论文阅读笔记:Geography-Aware Sequential Location Recommendation 文章目录 论文阅读笔记:Geography-Aware Sequential Loc ...
- 论文笔记:Sequential Recommendation with Relation-Aware Kernelized Self-Attention
论文笔记:Sequential Recommendation with Relation-Aware Kernelized Self-Attention 摘要: 最近的研究发现,顺序推荐可以通 ...
- 【Self-Attentive Sequential Recommendation论文笔记】
Self-Attentive Sequential Recommendation论文笔记 Self-Attentive Sequential Recommendation 序列动态是许多现代推荐系统的 ...
- 【论文笔记】K-plet Recurrent Neural Networks for Sequential Recommendation
原文:K-plet Recurrent Neural Networks for Sequential Recommendation (本文只是略读,所以笔记只记录了主要的思想,更多的细节还需看原文) ...
- [论文笔记] SSE-PT: Sequential Recommendation Via Personalized Transformed
原文地址 SSE-PT: Sequential Recommendation Via Personalized Transformer SSE-PT/SSE-PT (github.com) 时间信息对 ...
最新文章
- docker容器相关
- Chrome浏览器Json查看插件JsonHandle下载以及无法安装插件的解决方法
- 针对安全探索的受限强化学习:原始对偶优化算法
- elasticsearch解决同步删除数据库中不存在的数据
- 【转】人工智能教程-前言
- python3_04.循环函数
- LVS——NAT网络地址转换模式
- android 动态改变语言,android动态设置app当前运行语言的方法
- mysql创建关系模式命令_Mysql数据库介绍及mysql显示命令
- 3月7日学习内容整理:restframework的解析器组件
- 修改win10注册表来控制cpu的最大运行频率,实现电脑降温
- 数据分析师的薪资大约有多少?
- APP自动化测试-Appium编写脚本并执行
- java测试模块耗时,性能测试技巧:java程序cpu耗时分析
- MIT 18.01 Single Variable Calculus(单变量微积分)课堂笔记【6】——近似和求最值
- python编程一级考试报名_2021年的第一场考试!全国青少年编程等级考试开始报名!...
- Requests: 1, Fetched: 0, Skipped: 0, Processed: 0
- 诺威达K2201s/全志p9处理器/线刷救砖包
- 文件夹的隐藏选项为灰色勾选,无法更改或删除
- smarty2 php,Smarty2至Smarty3升级指南.
热门文章
- 爆破音和失爆音----来自于流利说,课后总结
- 【原创】Python 懂车帝口碑分爬虫
- Linux 内核 printk打印
- Android 常用效果(各种进度条,酷炫loading动画,火箭升空,撒花以及趋势图)...
- shuriken粒子系统(1)
- canvas线条动画js特效代码
- 源代码:STM32 SPI “DMA”操作W25QXX(16/32/64/128)系列芯片代码详解
- Hive 报错提示及解决方法
- 有哪些事情是你学了计算机后才知道的?
- dotty编译器语法特性之一枚举类型