论文信息

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相关推荐

  1. 论文《Neural Attentive Session-based Recommendation》阅读

    论文<Neural Attentive Session-based Recommendation>阅读 论文概况 Introduction Method A.Global Encoder ...

  2. 【推荐算法论文阅读】BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Trans

    一.背景 之前基于RNN的推荐模型都是按照从左到右单向建模的,单向结构限制了用户行为序列中隐藏表示的能力--它们通常假定一个严格有序的序列,而这并不总是实用的. 本文提出了 bert4rec,应用de ...

  3. 论文笔记(Attentive Recurrent Social Recommendation)

    注意力循环社交推荐 原文链接:Attentive Recurrent Social Recommendation, SIGIR'18 原理:将用户的朋友和历史交互项按时间划分,用注意力机制整合各个时段 ...

  4. 论文笔记-- Multi-Task Learning in recommendation

    Multi-Task Learning in recommendation Deep Multi-Task Architectures Historical Overview and Taxonomy ...

  5. Self-Attentive Sequential Recommendation论文阅读笔记

    SASRec论文阅读笔记 论文标题:Self-Attentive Sequential Recommendation 发表于:2018 ICDM 作者:Wang-Cheng Kang, Julian ...

  6. 论文阅读笔记:Geography-Aware Sequential Location Recommendation

    论文阅读笔记:Geography-Aware Sequential Location Recommendation 文章目录 论文阅读笔记:Geography-Aware Sequential Loc ...

  7. 论文笔记:Sequential Recommendation with Relation-Aware Kernelized Self-Attention

    论文笔记:Sequential Recommendation with Relation-Aware Kernelized Self-Attention 摘要:     最近的研究发现,顺序推荐可以通 ...

  8. 【Self-Attentive Sequential Recommendation论文笔记】

    Self-Attentive Sequential Recommendation论文笔记 Self-Attentive Sequential Recommendation 序列动态是许多现代推荐系统的 ...

  9. 【论文笔记】K-plet Recurrent Neural Networks for Sequential Recommendation

    原文:K-plet Recurrent Neural Networks for Sequential Recommendation (本文只是略读,所以笔记只记录了主要的思想,更多的细节还需看原文) ...

  10. [论文笔记] SSE-PT: Sequential Recommendation Via Personalized Transformed

    原文地址 SSE-PT: Sequential Recommendation Via Personalized Transformer SSE-PT/SSE-PT (github.com) 时间信息对 ...

最新文章

  1. docker容器相关
  2. Chrome浏览器Json查看插件JsonHandle下载以及无法安装插件的解决方法
  3. 针对安全探索的受限强化学习:原始对偶优化算法
  4. elasticsearch解决同步删除数据库中不存在的数据
  5. 【转】人工智能教程-前言
  6. python3_04.循环函数
  7. LVS——NAT网络地址转换模式
  8. android 动态改变语言,android动态设置app当前运行语言的方法
  9. mysql创建关系模式命令_Mysql数据库介绍及mysql显示命令
  10. 3月7日学习内容整理:restframework的解析器组件
  11. 修改win10注册表来控制cpu的最大运行频率,实现电脑降温
  12. 数据分析师的薪资大约有多少?
  13. APP自动化测试-Appium编写脚本并执行
  14. java测试模块耗时,性能测试技巧:java程序cpu耗时分析
  15. MIT 18.01 Single Variable Calculus(单变量微积分)课堂笔记【6】——近似和求最值
  16. python编程一级考试报名_2021年的第一场考试!全国青少年编程等级考试开始报名!...
  17. Requests: 1, Fetched: 0, Skipped: 0, Processed: 0
  18. 诺威达K2201s/全志p9处理器/线刷救砖包
  19. 文件夹的隐藏选项为灰色勾选,无法更改或删除
  20. smarty2 php,Smarty2至Smarty3升级指南.

热门文章

  1. 爆破音和失爆音----来自于流利说,课后总结
  2. 【原创】Python 懂车帝口碑分爬虫
  3. Linux 内核 printk打印
  4. Android 常用效果(各种进度条,酷炫loading动画,火箭升空,撒花以及趋势图)...
  5. shuriken粒子系统(1)
  6. canvas线条动画js特效代码
  7. 源代码:STM32 SPI “DMA”操作W25QXX(16/32/64/128)系列芯片代码详解
  8. Hive 报错提示及解决方法
  9. 有哪些事情是你学了计算机后才知道的?
  10. dotty编译器语法特性之一枚举类型