BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer
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进行推荐。
创新点:
- 提出了一种基于双向self-attention的cloze take用户行为序列建模方法。据我们所知,这是第一个将双向self-attention的cloze take用户行为序列建模引入推荐系统的算法。
- 我们将我们的模型与最先进的方法进行了比较,并通过对四个基准数据集的定量分析,证明了本文算法的有效性。
- 我们进行了一项消融分析,分析了模型中关键部件的影响
BERT4REC
- 问题定义:定义U={u1,…,un}为用户序列,V={v1,…,vn},Su={u1u,…,un u }为用户u和商品的交互数据。目标就是预测用户下一次点击的商品,即
- 模型结构:如图b,是L层的Transformer,每一层利用前一层所有的信息。相比于图d的基于RNN的推荐模型,self-attention可以捕获任意位置的信息。相比于基于cnn的推荐模型,可以捕获整个field的信息。相比于图2c和图2d的模型(都是l2r的单向模型),本文提出的双向模型可以解决现有模型的问题
- Transformer层
如图a,Transformer层有两层组成a Multi-Head Self-Attention sub-layer 和a Position-wise Feed-Forward network
- a Multi-Head Self-Attention sub-layer:在各种任务中,注意机制已经成为序列建模的一个组成部分,允许建模表示对之间的依赖关系,而不考虑它们在序列中的距离。以前的工作表明,在不同的位置联合处理来自不同表示子空间的信息是有益的[6,29,52]。因此,我们在这项工作中采用了Multi-Head Self-Attention代替单一的attention。特别地,Multi-Head Self-Attention就是将H通过不同的线性映射函数映射到h的子空间,然后将其concatenated后再一次映射
- 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) ∈ R4d和b(2) ∈ Rd对所有位置共享,但是层与层之间不一样。
- Stacking Transformer Layer:可以学到更多item之间的交互信息,但是模型复杂了之后就不能训练深度模型,因此两个sub-layer在normal之后加入了residual connection,并且在每一个sub-layer输出后加入了dropout,LN是normal layer,其中μ和σ分别是均值和标准差,⊙是点乘,γ是scale因子,ϵ是一个很小的因子,为了防止分母为0:
模型总体:
- Embedding层:由于没有使用cnn和rnn,所以self-attention没有关注input序列的顺序性,因此加上位置向量,本文的位置向量是学到的,不是transformer中的正弦。位置向量矩阵可以给定任意位置的向量,但是要明确最大的长度,因此需要对input序列进行截断:
- Output层:用最后一层的向量进行预测。接入softmax,判断这个位置的item是什么。这里使用两层带有RELU激活函数的前馈网络,其中E是item的我们倍额定,和input层一致。wP是映射举着,bp和bo是bias
- 训练过程:单向模型的训练都是通过预测输入序列下一个位置。双向模型预测时可能会造成信息泄露,所以采用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相关推荐
- 【推荐算法论文阅读】BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Trans
一.背景 之前基于RNN的推荐模型都是按照从左到右单向建模的,单向结构限制了用户行为序列中隐藏表示的能力--它们通常假定一个严格有序的序列,而这并不总是实用的. 本文提出了 bert4rec,应用de ...
- BERT: Bidirectional Encoder Representations from Transformers双向Transformer用于语言模型 NAACL 2018
论文链接:https://arxiv.org/abs/1810.04805 tensorflow版本代码链接:https://github.com/google-research/bert pytor ...
- Bert(Bidirectional Encoder Representations from Transformers)
一.简介 Bert即基于Transformer的双向编码器表示,2018年由google提出.基于多个Transformer的编码器堆叠而成,输入输出不改变形状. Bert的双向不是常规的RNN式的正 ...
- 会话/序列推荐: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 嵌 ...
- 读论文《Multi-Behavior Hypergraph-Enhanced Transformer for Sequential Recommendation》
0 Summary: Title: Multi-Behavior Hypergraph-Enhanced Transformer for Sequential Recommendation confe ...
- #Reading Paper# SASRec:Self-Attentive Sequential Recommendation
#论文题目:SASRec:Self-Attentive Sequential Recommendation(SASRec-基于自注意力机制的序列推荐) #论文地址:https://arxiv.org/ ...
- 深入探寻《Self-Attentive Sequential Recommendation》ICDM‘18
本文我们主要致力于解决以下几个问题: 本文的motivation/contribution是什么? 实验细节以及实验效果如何? 具体的应用场景? 本文存在什么不足? 在本文的最后,我将针对以上问题简单 ...
- 【推荐系统->论文阅读】Dynamic Graph Neural Networks for Sequential Recommendation(用于序列推荐的动态图神经网络)
Dynamic Graph Neural Networks for Sequential Recommendation(用于序列推荐的动态图神经网络) Mengqi Zhang, Shu Wu,Mem ...
- 【论文笔记】K-plet Recurrent Neural Networks for Sequential Recommendation
原文:K-plet Recurrent Neural Networks for Sequential Recommendation (本文只是略读,所以笔记只记录了主要的思想,更多的细节还需看原文) ...
- 论文《Contrastive Learning for Sequential Recommendation》
论文地址:https://arxiv.org/abs/2010.14395 摘要 序列推荐经常因为数据稀疏性问题,导致很难学习到高质量的用户向量表示.论文引入对比学习,提出Contrastive Le ...
最新文章
- 什么是近似算法?它适用于哪些问题?这篇文章给你答案
- vim 有用命令-20190217
- 车站计算机联锁系统的仿真设计,车站计算机联锁仿真设计.doc
- html里写js ajax吗,js、ajax、jquery的区别是什么?
- 1.3编程基础之算术表达式与顺序执行 03 计算(a+b) c的值
- kubernetes 简介:kube-dns 和服务发现
- 海洋zyapi.php,zyapi.php · 姬晓亮/海洋cms 海洋影视管理系统 - 免费开源PHP - Gitee.com...
- 第五章 线性回归 学习笔记下
- 面试技巧——程序员简历模板
- 典型相关分析CCA计算过程
- 服务器主板的无线驱动,给因特尔S2600CO服务器主板安装【SAS控制器】驱动
- 2022年最新河南建筑安全员模拟题库及答案
- 极简短网址链接生成系统网站源码
- C语言常用log模块,C语言日志工具包 Log4g
- 深度Linux如何安装驱动程序,在Deepin 20系统下手动安装N卡闭源驱动64-440.31.run的步骤...
- 【无标题】C#nbsp;语言入门基础介绍学习通http://www.bdgxy.com/
- SQL语句基础-子查询
- 虚拟机网络连接方式 主机连接WLAN(wifi)时
- ABAP Modify 的用法(TRANSPORTING)
- Prometheus 重新加载配置