1. BERT4Rec简介

根据用户历史的行为,对用户动态的偏好进行建模,对于推荐系统来说是有挑战的和重要的。之前的算法使用序列神经网络从左向右地编码用户的历史交互信息为隐含表示,进而进行推荐,因此只利用了单向的信息进行建模。尽管它们是有效的,但由于存在以下限制,我们认为这种从左到右的单向模型是次优的:

  • 单向结构限制了用户行为序列中隐藏表示的能力;
  • 之前的序列神经网络经常采用严格有序的序列,这并不总是可行的;

为了解决这些限制,我们提出了一个称为BERT4Rec的序列推荐模型,该模型采用深层的双向自注意力来对用户行为序列进行建模。为了避免信息泄漏并有效地训练双向模型,我们采用Cloze目标进行序列推荐,通过联合item左右的上下文来预测序列中随机masked item。用这种方式,我们学习了双向表示模型,允许用户历史行为中的每个item融合左右两侧的信息来作出推荐。在四个基准数据集上进行的大量实验表明,我们的模型始终优于各种最新的序列模型。

2. 背景

精确地捕捉用户的兴趣,是推荐系统的核心问题。在许多实际应用中,用户当前的兴趣本质上是动态变化的,受其历史行为的影响。例如,尽管在正常情况下不会购买游戏机配件,但在购买Nintendo Switch之后,你可能会很快购买配件(例如Joy-Con控制器)。

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

尽管它们具有普遍性和有效性,但我们认为这样从左到右的单向模型不足以学习用户行为序列的最佳表示。主要因为这种单向模型限制了历史序列中items的隐藏表示的功能,其中每个item只能编码来自先前item的信息。 另一个限制是,先前的单向模型最初是针对具有自然顺序的序列数据(例如,文本和时间序列数据)引入的。他们经常对数据采用严格的顺序排列,这对于现实应用程序中的用户行为并不总是正确的。实际上,由于各种不可观察的外部因素,用户的历史交互中的item选择可能不会遵循严格的顺序假设。 在这种情况下,至关重要的是将两个方向的上下文合并到用户行为序列建模中。

为了解决上述限制,本篇文章的创新点:

  • 提出了一种基于双向self-attention和Cloze task的用户行为序列建模方法。据我们所知,这是第一个将深度序列模型和Cloze task引入推荐系统的研究。
  • 将我们的模型与最先进的方法进行了比较,并通过对四个基准数据集的定量分析,证明了本文算法的有效性。
  • 我们进行了一项消融分析,分析了模型中关键部件的贡献。

3. BERT4Rec模型介绍

3.1 问题定义

定义,  为用户集合,  为物品集合,  为用户历史行为序列。我们的目标是预测下一时刻用户与每个候选物品交互的概率:

3.2 模型结构

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

2021-08-27 BERT4Rec简介相关推荐

  1. 本博客导读(2021/08/09更新)

    文章目录 1. 简介 1.1 博客精神 1.2 写作目的 1.3 技术方向 1.4 博主 1.5 版权说明 2 推荐内容 2.1 主要代表作 2.2 其他推荐内容 3. 程序类 3.1 C#程序设计 ...

  2. 2021.2.27课程摘要(逻辑教育-王劲胜)

    2021.2.27课程摘要 逻辑教育-13期-Python基础班-王劲胜 一.面向对象(下)(续) 二.模块的简介和创建 逻辑教育-13期-Python基础班-王劲胜 一.面向对象(下)(续) →单例 ...

  3. 2021.05.27 发表自己第一篇技术文章

    从昨晚开始做家庭财经系统.不要以为有系统两个字就怎么复杂,都是大家都会的.建库.建表. 第一个使用软件是mysql 2021.05.26 数据库 lianxi 已建好. 表 members_basic ...

  4. 2012/08/27 夜

    杂记于2012/08/27 唉,,最近公司在搬家,一直没有时间来看技术方面的资料,丫的上个星期天还接到第二天凌晨3点钟呢...唉..有点受不了啊..这苦逼的运维工作,,, 呵,来说说这其中让我为难的事 ...

  5. [2021.1.27多校省选模拟10]跑步(线段树合并)

    [2021.1.27多校省选模拟10]跑步 经典的树上启发式合并题目,维护对应子树的从当前点到子树内一个节点这个链待定,其他部分已经确定的方案数,这个东西按照对应点到根节点的路径点权和为下标存在一个权 ...

  6. [2021.1.27多校省选模拟10]染色(min-max容斥/二项式反演)

    [2021.1.27多校省选模拟10]染色 突然发现我对概率期望的理解不是很好... 部分分1:可以直接进行状压dp,然后按照题意模拟即可. 部分分2:首先可以发现这个问题是min_max容斥形式,然 ...

  7. 2021.09.27 MySQL笔记

    2021.09.27 MySQL笔记 文章目录 2021.09.27 MySQL笔记 一.展示当前存在的所有数据库 二.使用(选中)一个数据库 三.创建一个数据表 四.查询并展示该数据库内的所有数据表 ...

  8. 2021.08.09【普及组】模拟赛C组比赛总结

    文章目录 2021.08.09[普及组]模拟赛C组比赛总结 写在前面: T1 :[普及模拟]生产武器 题目大意: 正解: T2 :[普及模拟]城市连接 题目大意: 正解: T3 :[普及模拟]抢救文件 ...

  9. 《安富莱嵌入式周报》第227期:2021.08.23--2021.08.29

    往期周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 ...

  10. python爬虫爬美女图片:“小甲鱼056节轮一只爬虫的自我修养4:OOXX” 最终更新2021.6.27日,更新后可用!!!

    目录 2020.10.25日更新 代码: 2020.11.10日更新 代码 2021.6.27日更新,更新后可用 2020.10.25日更新 需要改动有两个方面: 第一方面,网址编码有变化,如http ...

最新文章

  1. R语言使用for循环嵌套ggplot2可视化输出多个可视化结果实战
  2. knn计算机在图片中的应用,图像分类和kNN
  3. GPU处理图像 Shader的入门
  4. java中使用request,application,session,cookie对象
  5. [转]Jquery中AJAX错误信息调试参考
  6. 软件工程网络15个人阅读作业1 201521123038 游舒婷
  7. JAVA中的适配器应用_Java适配器模式应用之电源适配器功能详解
  8. C++类的成员变量和成员函数的介绍
  9. 47 张图带你 MySQL 进阶
  10. 用js把数据从一个页面传到另一个页面
  11. 【数学建模】评价类算法
  12. java ppt转图片 失真_java poi 实现ppt转图片(解决图片不高清问题)
  13. C# Devexpress控件详细安装攻略
  14. 设置Excel表格“只读模式”的两种方法
  15. 读两本敦煌书杂记-敦煌由盛转衰(二)
  16. 2019南昌网络赛 H. The Nth Item(广义斐波那契数列求通项公式模板)(二次剩余+分块)
  17. uniapp中拨打电话
  18. k8s 改变默认 StorageClass
  19. Solr VS. ElasticSearch
  20. Selenium IDE介绍

热门文章

  1. 事件mousseenter和mouseover的区别
  2. Vue中如何导入并读取Excel数据
  3. 关于三种主流WEB架构的思考
  4. db2 reorg(转)
  5. Android性能全面分析与优化方案研究—几乎是史上最全最实用的
  6. Windows 7 “Tunnel adapter Local Area Connection” 现象(IPv6)
  7. 解决windows 下 mysql命令行导入备份文件 查询时乱码的问题
  8. apache log分析
  9. [回帖整理] 创业难
  10. php存库,php – 使用Laravel实现存储库模式