Self-Attentive Sequential Recommendation论文笔记

Self-Attentive Sequential Recommendation

序列动态是许多现代推荐系统的一个关键特性,它试图根据用户最近执行的操作来捕获用户活动的“上下文”。

为了捕捉这种模式,出现了两种方法:马尔可夫链(MCs)和循环神经网络(RNNs)。

马尔可夫链假设用户的下一个操作可以基于他们的最后(或最后几个)操作进行预测,而rnn原则上允许揭示更长期的语义。

一般来说,基于mc的方法在极其稀疏的数据集中表现最好,其中模型简约是关键,而rnn在更密集的数据集中表现更好,因为更高的模型复杂性是负担得起的。

我们工作的目标是平衡这两个目标,通过提出一种基于自我注意的顺序模型(SASRec),它允许我们捕捉长期语义(比如RNN),但使用一种注意机制,使其基于相对较少的行为(比如MC)进行预测。在每个时间步骤中,SASRec试图从用户的操作历史中识别哪些项目是“相关的”,并使用它们来预测下一个项目。

大量的实证研究表明,我们的方法在稀疏和密集数据集上都优于各种最先进的序列模型(包括MC/CNN/ rnn方法)。此外,该模型比基于CNN/ rnn的同类模型的效率高一个数量级。注意力权重的可视化也显示了我们的模型如何自适应地处理不同密度的数据集,并揭示活动序列中的有意义的模式。

本文想法受Transformer启发,Transformer是一种新的序列模型,实现了机器翻译任务的最先进的性能和效率。与使用卷积或循环模块的现有顺序模型不同,Transformer完全基于一种被提议的称为“自我注意”的注意机制,这种机制非常高效,能够发现句子中单词之间的语法和语义模式。

具体来说,我们构建了一个基于自我注意的顺序推荐模型(SASRec),该模型在每个时间步自适应地为之前的条目分配权重(图1)。由于自我注意机制,SASRec倾向于考虑对密集数据集的长期依赖,而专注于对稀疏数据集的近期活动。这对于自适应处理不同密度的数据集是至关重要的。

符号表示

Embedding Layer

我们将训练序列(S1,S2,…,S|S|−1)转换为一个固定长度的序列= (s1, s2,…, sn),其中表示我们的模型可以处理的最大长度。如果序列长度大于n,则考虑最近的操作。如果序列长度小于n,则在序列左边重复添加一个“填充”项,直到序列长度为n。使用常数0向量0作为填充项的嵌入。

正如我们将在下一节中看到的,由于自我注意模型不包括任何循环或卷积模块,它不知道前一项的位置。因此,我们注入一个可学习位置嵌入P∈Rn×dinto的输入嵌入:

Self-Attention Block

Transformer中缩放点积attention定义:

比例因子√d是为了避免内积的值过大,特别是当维数高的时候

Self-Attention layer

self-attention操作将嵌入的E作为输入,通过线性投影将其转换为三个矩阵,并将其输入到一个注意层,投影使模型更加灵活。例如,模型可以学习非对称交互。

Causality

由于序列的性质,模型在预测(t+ 1)-st项时应该只考虑第一个t项。然而,自我注意层(St)的第一个输出包含后续项的嵌入,使得模型不适定。因此,我们通过禁止q和k (j > i)之间的所有联系来修改注意。

Point-Wise Feed-Forward Network

自注意仍然是一个线性模型。为了使模型具有非线性并考虑不同潜在维数之间的相互作用,我们将一个点wise两层前馈网络应用于allsiendy(共享参数)

Stacking Self-Attention Blocks

在第一个自我注意块之后,F实质上聚集了之前所有项的嵌入。然而,通过另一个基于F的自我注意块来学习更复杂的项目转换可能是有用的。具体地说,我们将自我注意块(即一个自我注意层和一个前馈网络)堆叠起来

然而,随着网络的深入,几个问题也日益突出:
1)模型容量的增加导致模型过拟合;
2)训练过程变得不稳定(由于梯度消失等原因);
3)参数越多的模型往往需要更多的训练时间。

我们执行以下操作来缓解这些问题:对于每个块中的layer gin,我们在输入之前对输入进行层归一化,然后应用dropout ong的输出,并将输入添加到最终的输出中。我们在下面介绍这些操作。

残余网络

其核心思想是通过残余连接将底层特征传播到上层。因此,如果底层特性是有用的,模型可以很容易地将它们传播到最后一层。
例如,现有的顺序推荐方法表明,最后访问的条目在预测下一个条目时起着关键作用。然而,在几个自我注意块之后,最后访问的项目的嵌入与所有之前的项目纠缠在一起;通过添加剩余连接将最后访问的项目嵌入到最后一层将使模型更容易利用底层信息。

Layer Normalization

采用层归一化的方法对不同特征(即零均值和单方差)的输入进行归一化,有利于稳定和加速神经网络训练

Dropout:

为了缓解深度神经网络中的过拟合问题
dropout的想法很简单:在训练过程中随机“关闭”神经元,在测试时使用所有神经元。进一步的分析指出,dropout可以被看作是一种集成学习的形式,它考虑了大量共享参数[39]的模型(神经元和输入特征的数量呈指数增长)。

Prediction Layer

我们采用MF层预测项目的相关性,高互动得分意味着高相关性,我们可以通过对得分进行排名来生成推荐。N∈R^(|I|×d)是一个item embedding矩阵。
显式用户建模:
为了提供个性化的推荐,现有方法通常采用两种方法之一:
1)学习显式用户嵌入表示用户偏好(例如MF[40]、FPMC[1]和Caser [22]);
2)考虑用户之前的行为,并通过嵌入已访问的项目(如FSIM [8], Fossil [21], GRU4Rec[2])诱导隐式用户嵌入。
我们的方法属于后一类,因为我们通过考虑用户的所有操作来生成一个嵌入式f )。

【Self-Attentive Sequential Recommendation论文笔记】相关推荐

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

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

  2. Filter-enhanced MLP is All You Need for Sequential Recommendation论文阅读笔记

    Filter-enhanced MLP is All You Need for Sequential Recommendation 代码和数据:https://github.com/RUCAIBox/ ...

  3. SASRec: Self-Attentive Sequential Recommendation阅读笔记

    SASRec Self-Attentive Sequential Recommendation 2018年的经典文章 摘要 时序动态是许多现代推荐系统的一个关键特征,它们试图根据用户最近执行的操作来捕 ...

  4. 卷积-CNN-GCN-LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation论文笔记

    参考博客:https://www.zhihu.com/question/54504471/answer/332657604 1. 卷积 连续: ( f ∗ g ) ( n ) = ∫ − ∞ + ∞ ...

  5. Causal Embeddings for Recommendation 论文笔记

    有什么问题欢迎讨论呀! 论文标题:Causal embeddings for recommendation 目的 用过去的 user-item 矩阵预测用户未来的行为会造成偏差,本文是为了消除这种偏差 ...

  6. Causal Intervention for Leveraging Popularity Bias in Recommendation论文笔记

    1 题目解析 论文地址:http://staff.ustc.edu.cn/~hexn/papers/sigir21-PDA.pdf 源代码地址:https://github.com/zyang1580 ...

  7. LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation 论文笔记

    目录 1.简介 1.1 背景介绍 1.2 摘要 1.3 主要贡献 2. 准备工作 2.1 NGCF 2.2 对NGCF的实证探索 3. LightGCN模型 3.1 Light Graph Convo ...

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

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

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

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

最新文章

  1. Elasticsearch使用优化之拙见
  2. 再学大话设计模式--附录(三)
  3. build-blocker-plugin
  4. 在凡客四个月的工作总结
  5. 2017年度IT168技术卓越奖名单:服务器类
  6. 浅析天际网、IT260、微人脉等中国职业社交网站
  7. webservice 传输数据过大,解析失败
  8. 博弈论——斐波那契博弈Fibonacci Game
  9. matlab教程r2018a教材,MATLAB教程(R2018a)
  10. 数据可视化分析工具大集合
  11. android 2D游戏开发,引擎设计(三) 实验脚本编写与纸娃娃系统
  12. 【C++设计模式】抽象工厂模式
  13. 20165219王彦博第一周学习总结
  14. Win10 没有激活,如何改变任务栏位置
  15. 为何日本手机走不出国门?
  16. 车牌对应城市行政区编号
  17. 流行的软件测试工具介绍
  18. c语言编译配置文件出错,Android4.4/CM11编译常见错误及解决方法!
  19. ACL’21 | 对话系统也要进军多模态了!
  20. Java随机位数的验证码的生成(详解)

热门文章

  1. 2020年中国新基建大数据中心产业链全景图深度分析汇总(附大数据中心产业链完整企业名单)...
  2. Matlab任意两点之间绘制带箭头的直线
  3. 第十周项目三——小学生数学考试系统(2)
  4. JavaScript走向成熟
  5. 【报告分享】2021新国货CoolTop100品牌榜(附下载)
  6. java免费对接物流快递鸟单号查询接口API
  7. 基于java Springmvc+mybatis 电影院售票管理系统设计和实现以及文档
  8. 新华科技推出华镭龙芯专用操作系统
  9. mac下的流氓mackeeper
  10. Mendeley配合overleaf使用