Abstract:

根据用户历史的行为信息,对用户动态的偏好衍变进行建模,是对推荐系统产生的巨大挑战。现有算法使用序列神经网络,只能从左向右,利用单向信息进行建模。尽管这些放大得到了很好的效果,但是他们设定的严格顺序是不实际的。因此,本文提出针对推荐系统的transformer的双向编码器表示。由于利用深度双向信息会造成信息的泄露,为了解决这个问题,本文使用Cloze task训练模型,利用上下文信息预测masked item。相比于预测next item,Cloze task可以产生多个训练样本。实验证明,本文提出的方法在多个数据集上效果明显

Introduction

精确地捕捉用户的兴趣,是推荐系统的核心问题。在实际生活中,用户的兴趣是根据历史偏好进行动态变化的。为了捕捉用户的偏好的动态变化,提出了许多根据用户历史交互信息的序列推荐算法,最早使用马尔科夫对用户序列进行建模,其中一些方法的强假设破坏了推荐系统的准确性。近期,一些序列神经网络在序列推荐问题中取得了不俗的效果。最基本的思想就是将用户的历史序列自左向右编码成一个embedding,然后基于这个embedding进行推荐。

本文认为自左向右的序列推荐算法限制了用户历史信息的发挥。无论是RNN还是MCs,都具有一定的顺序性。而这种顺序性的假设,对于实际生活中的用户行为并不适用。例如下图,三个口红的点击顺序对于用户的推荐并没有什么差别。因此,本文认为双向模型对于序列推荐问题更有效。

由于用户的行为序列很像是文本序列,而Bert是目前最好的自然语言处理模型。但是Bert不能直接用到序列推荐问题。如图,同时利用双向信息会造成信息的泄露,为了解决这个问题,采用了Cloze task,将输入序列进行随机的mask,然后利用上下文信息,预测mask item。利用cloze task任务还可以产生大量的训练样本。因为训练过程和最终的任务(预测序列的下一项)不匹配,所以在预测过程,我们将mask 加入到输入序列的最后,然后利用mask的embeeding进行推荐。

创新点:

  1. 提出了一种基于双向self-attentioncloze take用户行为序列建模方法。据我们所知,这是第一个将双向self-attentioncloze take用户行为序列建模引入推荐系统的算法。
  2. 我们将我们的模型与最先进的方法进行了比较,并通过对四个基准数据集的定量分析,证明了本文算法的有效性。
  3. 我们进行了一项消融分析,分析了模型中关键部件的影响

BERT4REC

  1. 问题定义:定义U={u1,…,un}为用户序列,V={v1,…,vn},Su={u1u,…,un u }为用户u和商品的交互数据。目标就是预测用户下一次点击的商品,即

  1. 模型结构:如图b,是L层的Transformer,每一层利用前一层所有的信息。相比于图d的基于RNN的推荐模型,self-attention可以捕获任意位置的信息。相比于基于cnn的推荐模型,可以捕获整个field的信息。相比于图2c和图2d的模型(都是l2r的单向模型),本文提出的双向模型可以解决现有模型的问题

  1. Transformer层

如图a,Transformer层有两层组成a Multi-Head Self-Attention sub-layer a Position-wise Feed-Forward network

  1. a Multi-Head Self-Attention sub-layer在各种任务中,注意机制已经成为序列建模的一个组成部分,允许建模表示对之间的依赖关系,而不考虑它们在序列中的距离。以前的工作表明,在不同的位置联合处理来自不同表示子空间的信息是有益的[6,29,52]。因此,我们在这项工作中采用了Multi-Head Self-Attention代替单一的attention。特别地,Multi-Head Self-Attention就是将H通过不同的线性映射函数映射到h的子空间,然后将其concatenated后再一次映射

  1. a Position-wise Feed-Forward Network由于只有线性映射,为了使得模型具有非线性的性质,所以采用了a Position-wise Feed-Forward Network使用了Gaussian Error Linear UnitΦ(x)是高斯分布的累积分布函数,W (1) Rd×4d , W (2) R4d×d , b(1) R4db(2) Rd对所有位置共享,但是层与层之间不一样。

  1. Stacking Transformer Layer可以学到更多item之间的交互信息,但是模型复杂了之后就不能训练深度模型,因此两个sub-layernormal之后加入了residual connection,并且在每一个sub-layer输出后加入了dropoutLNnormal layer,其中μσ分别是均值和标准差,是点乘,γscale因子,ϵ是一个很小的因子,为了防止分母为0

模型总体:

  1. Embedding层:由于没有使用cnnrnn,所以self-attention没有关注input序列的顺序性,因此加上位置向量,本文的位置向量是学到的,不是transformer中的正弦。位置向量矩阵可以给定任意位置的向量,但是要明确最大的长度,因此需要对input序列进行截断:

  1. Output层:用最后一层的向量进行预测。接入softmax,判断这个位置的item是什么。这里使用两层带有RELU激活函数的前馈网络,其中Eitem的我们倍额定,和input层一致。wP是映射举着,bpbobias

  1. 训练过程:单向模型的训练都是通过预测输入序列下一个位置。双向模型预测时可能会造成信息泄露,所以采用cloze taske,也就是将输入序列中的p%的词进行masked,然后根据上下文信息预测masked的词

masked最终向量输入到softmax,损失函数定义如下:

如上所述,我们在训练过程和最终的序列推荐任务之间是不匹配的。因为

cloze taske的目的是预测当前的masked,而序列推荐的目的是预测未来。为了解决这个问题,我们将masked附加到用户行为序列的末尾,然后根据该maske的最终隐藏表示来预测下一项。为了更好地匹配序列推荐任务(即,预测最后一项),我们还生成了在训练过程中只屏蔽输入序列中最后一项的样本。实验证明效果不错。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

1.bert用在推荐系统中,将用户的历史序列看做是词序列。

2.测试时,将序列的最后一个item进行masked

BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer相关推荐

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

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

  2. BERT: Bidirectional Encoder Representations from Transformers双向Transformer用于语言模型 NAACL 2018

    论文链接:https://arxiv.org/abs/1810.04805 tensorflow版本代码链接:https://github.com/google-research/bert pytor ...

  3. Bert(Bidirectional Encoder Representations from Transformers)

    一.简介 Bert即基于Transformer的双向编码器表示,2018年由google提出.基于多个Transformer的编码器堆叠而成,输入输出不改变形状. Bert的双向不是常规的RNN式的正 ...

  4. 会话/序列推荐:Caser、SASRec、BERT4Rec [Session based / Sequential Recommendation]

    目录 Caser 3 模型 3.1 嵌入层 3.2 卷积层 3.3 全连接层 3.4 训练 3.6 与一些模型的关系 SASRec 2 RELATED WORK 3 METHODOLOGY 3.1 嵌 ...

  5. 读论文《Multi-Behavior Hypergraph-Enhanced Transformer for Sequential Recommendation》

    0 Summary: Title: Multi-Behavior Hypergraph-Enhanced Transformer for Sequential Recommendation confe ...

  6. #Reading Paper# SASRec:Self-Attentive Sequential Recommendation

    #论文题目:SASRec:Self-Attentive Sequential Recommendation(SASRec-基于自注意力机制的序列推荐) #论文地址:https://arxiv.org/ ...

  7. 深入探寻《Self-Attentive Sequential Recommendation》ICDM‘18

    本文我们主要致力于解决以下几个问题: 本文的motivation/contribution是什么? 实验细节以及实验效果如何? 具体的应用场景? 本文存在什么不足? 在本文的最后,我将针对以上问题简单 ...

  8. 【推荐系统->论文阅读】Dynamic Graph Neural Networks for Sequential Recommendation(用于序列推荐的动态图神经网络)

    Dynamic Graph Neural Networks for Sequential Recommendation(用于序列推荐的动态图神经网络) Mengqi Zhang, Shu Wu,Mem ...

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

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

  10. 论文《Contrastive Learning for Sequential Recommendation》

    论文地址:https://arxiv.org/abs/2010.14395 摘要 序列推荐经常因为数据稀疏性问题,导致很难学习到高质量的用户向量表示.论文引入对比学习,提出Contrastive Le ...

最新文章

  1. 什么是近似算法?它适用于哪些问题?这篇文章给你答案
  2. vim 有用命令-20190217
  3. 车站计算机联锁系统的仿真设计,车站计算机联锁仿真设计.doc
  4. html里写js ajax吗,js、ajax、jquery的区别是什么?
  5. 1.3编程基础之算术表达式与顺序执行 03 计算(a+b) c的值
  6. kubernetes 简介:kube-dns 和服务发现
  7. 海洋zyapi.php,zyapi.php · 姬晓亮/海洋cms 海洋影视管理系统 - 免费开源PHP - Gitee.com...
  8. 第五章 线性回归 学习笔记下
  9. 面试技巧——程序员简历模板
  10. 典型相关分析CCA计算过程
  11. 服务器主板的无线驱动,给因特尔S2600CO服务器主板安装【SAS控制器】驱动
  12. 2022年最新河南建筑安全员模拟题库及答案
  13. 极简短网址链接生成系统网站源码
  14. C语言常用log模块,C语言日志工具包 Log4g
  15. 深度Linux如何安装驱动程序,在Deepin 20系统下手动安装N卡闭源驱动64-440.31.run的步骤...
  16. 【无标题】C#nbsp;语言入门基础介绍学习通http://www.bdgxy.com/
  17. SQL语句基础-子查询
  18. 虚拟机网络连接方式 主机连接WLAN(wifi)时
  19. ABAP Modify 的用法(TRANSPORTING)
  20. Prometheus 重新加载配置

热门文章

  1. Codeforces Round #FF(255) DIV2
  2. Linux操作系统中GDB工具常见用法(二)
  3. c#类的多态和文件流复习
  4. C#用链式方法表达循环嵌套
  5. Android Xfermode 实战 实现圆形、圆角图片
  6. Blocks的申明调用与Queue当做锁的用法
  7. 密实逃脱1深红色房间攻略
  8. 百篇论文分类整理看数据增广最新研究进展
  9. 给Bert加速吧!NLP中的知识蒸馏Distilled BiLSTM论文解读
  10. 【GCN+KG】基于知识图谱和图卷积神经网络的应用和开发