bert4rec简介

news2024/9/21 16:49:49

1、bert4rec提出动机

用户行为动态变化,序列行为建模取得了不错的效果

单向结构限制了行为序列中隐藏信息的挖掘

序列神经网络顺序依赖,无法并行计算

为此,提出了

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

2、bert4rec结构

2.1、推荐中行为序列建模的问题定义

2.2、模型的结构

2.2.1、模型整体结构

bert4rec整体架构如下图(b)所示,bert4rec是一个含有L层的transformer,每一层都可以利用上一层的信息,通过self-attention并行捕获任意位置的信息。

2.2.2、模型结构拆解

由上图(a)所示,bert4rec的transformer由multi-head self-attention和position-wise ffn构成。

2.2.2.1、Embedding layer

Embedding层加入了位置嵌入,本文的位置向量是学到的,不是transformer中的正弦。位置向量矩阵可以给定任意位置的向量,但是要明确最大的长度,因此需要对输入序列进行截断。

 

2.2.2.2、multi-head self-attention

引入温度 以产生更柔和的注意力分布,以避免极小的梯度

2.2.2.3、position-wise FFN

由于只有线性映射,为了使得模型具有非线性的性质,所以采用了Position-wise Feed-Forward Network。Position-wise的意思是说,每个位置上的向量分别输入到前向神经网络中,计算方式如下:

最终的隐层向量表示为

 

2.2.2.4、 Output layer

全链接层的一个映射

3、模型训练

预测下一个item的表示形式

输入为   ,向右shift一个即得到下一个序列的预测    

而在BERT4Rec中,由于是双向模型,每一个item的最终输出表示都包含了要预测物品的信息,这样就造成了一定程度的信息泄漏。因此采用Cloze taske,也就是将输入序列中的p%的物品进行masked,然后根据上下文信息预测masked的物品。

损失函数

4、实验对比

4.1、数据集

4.2、评价指标

在top-K推荐中,HR是一种常用的衡量召回率的指标,计算公式为:

分母是所有的测试集合,分子表示每个用户top-K列表中属于测试集合的个数的总和。

举个简单的例子,三个用户在测试集中的商品个数分别是10,12,8,模型得到的top-10推荐列表中,分别有6个,5个,4个在测试集中,那么此时HR的值是
(6+5+4)/(10+12+8) = 0.5。

4.3、实验对比方法

POP:最简单的基线,根据ud统计信息来排序(受欢迎程度)。

BPR-MF [39]:它使用成对排序损失优化带有隐式反馈的矩阵分解。

NCF [12]:它在mlp中模拟用户与item交互,而不是矩阵分解中的内积。

FPMC [40]:它通过将 MF 与一阶 MC 相结合来捕捉用户的喜好及其行为序列。

GRU4Rec [15]:它使用 GRU 和基于排名的损失来建模 基于会话的推荐的用户序列。

GRU4Rec+ [14]:它是 GRU4Rec 的改进版本,具有一类新的损失函数和采样策略。

Caser [49]:它在水平和垂直方向都使用了 CNN 为顺序推荐建模高阶 MC 的方法。

SASRec [22]:它使用从左到右的 Transformer 语言 模型来捕获用户的顺序行为

4.4、实验数据对比

不同数据集上效率指标的比较

双向transformer的影响

BERT4Rec (1 mask)表示每条序列中只mask一个词

序列最大长度对实验的影响

实验参数/结构对实验的影响

5、参考文档

BERT4Rec:使用Bert进行序列推荐 - 知乎 (BERT4Rec:使用Bert进行序列推荐)

https://arxiv.org/pdf/1904.06690.pdf (论文地址)

BERT4Rec:使用Bert进行序列推荐 - 知乎 (知乎 bert4rec)

https://arxiv.org/pdf/1904.06690.pdf (bert4rec论文)

Self-Attention与Transformer (Self-Attention与Transformer)

从Transformer到BERT模型 (从Transformer到BERT模型)

BERT模型精讲 (BERT模型精讲)

推荐算法常用评价指标:NDCG、MAP、MRR、HR、ILS、ROC、AUC、F1等_mrr和map计算f1_十三吖的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/675430.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决Jenkins报错

解决Jenkins报错 1 linux空间不够问题1.1 报错现象1.2 定位问题1.3 解决措施 2 bash问题2.1 问题现象2.2 问题定位2.3 解决措施 3 虚拟环境问题3.1 问题现象3.2 问题定位3.3 解决措施 4 jenkins构建完成但一直转圈问题4.1 问题现象4.2 问题定位4.3 解决措施 5 jenkins自动化部署…

C高级6.24

一、整理grep、find、cut、tar、apt-get、dpkg、ln、ln-s指令 1.grep ----->查找字符串 grep 字符串 文件名 -w:按单词查找 -R:实现递归查找,主要用于路径是目录的情况 -i:不区分大小写 -n:显示行号 grep -w "^ubuntu" /etc/passwd ---->查找以ub…

【深度学习】RepVGG解析和学习体会

文章目录 前言0. Vgg1.RepVGG Block 详解 前言 论文名称:RepVGG: Making VGG-style ConvNets Great Again 论文下载地址:https://arxiv.org/abs/2101.03697 官方源码(Pytorch实现):https://github.com/DingXiaoH/RepV…

今天是世界Wi-Fi日!

很多人都不知道,今天其实是世界Wi-Fi日: 这个特殊的纪念日,是由无线宽带联盟(Wireless Broadband Alliance)确定的,并得到了互联城市咨询委员会 (CCAB)等组织的大力支持。 无线宽带联…

数据处理神器tidyverse!教你如何秒速搞定数据处理!

一、前言 在R语言中,tidyverse是一个庞大的数据分析生态系统,它由一系列数据可视化和数据处理软件包组成,能够极大地提高数据分析的效率和准确性。 在使用 Tidyverse 的过程中,我们会经常用到以下几个工具: ggplot2&am…

chatgpt赋能python:Python浮点数:介绍、精度和应用

Python浮点数:介绍、精度和应用 Python是一种高级编程语言,许多程序员使用Python编写计算机程序。与其他编程语言不同,Python是一种动态类型的语言,并且它处理浮点数时更加灵活。在本文中,我们将介绍Python浮点数的概…

python自动化办公——读取PPT写入word表格

Python自动化办公——读取PPT内容写入word表格 文章目录 Python自动化办公——读取PPT内容写入word表格一、需求分析二、导入依赖三、代码四、结果及总结 一、需求分析 📖由于我们知识图谱课程需要将课堂小组汇报的PPT总结成word文档,而我觉得一页一页复…

win10安装nginx的配置和使用方法(图文)

window10系统安装nginx服务,提供网页方面的服务。下面为详细图文安装配置教程。 1)下载nginx软件 官方下载地址:http://nginx.org/en/download.html 2)解压缩软件 unzip nginx-1.20.1.zip 或者 使用解压缩软件,下…

视频与AI,与进程交互(二) pytorch 极简训练自己的数据集并识别

目标学习任务 检测出已经分割出的图像的分类 2 使用pytorch pytorch 非常简单就可以做到训练和加载 2.1 准备数据 如上图所示,用来训练的文件放在了train中,验证的文件放在val中,train.txt 和 val.txt 分别放文件名称和分类类别&#xff…

Android之 弹框总结

一 简介 1.1 弹框即浮与页面之上的窗口,如键盘弹框,吐司弹框,确认弹框,下拉选择框,应用悬浮框等 1.2 弹框控件也很多,比如常用的Spinner,Dialog,Toast,PopWindow等&…

小主机折腾记14

1.m72e主机,3240t-2390t-3470t测试; 2390t官方参数 在m72e上 全核3.08Ghz 单核3.28-3.31Ghz 核显2帧 评分 3470t官方参数 在m72e上 全核睿频3.28 单核最高3.44 核显1.2帧???还不如那啥HD2000 最后评分 进入…

chatgpt赋能python:Python求累加的方法及其应用

Python求累加的方法及其应用 在Python编程中,经常需要对一系列数字进行求和或累加的操作。那么在Python中,我们可以通过哪些方法来实现这个功能呢?本文将为大家介绍Python求累加的方法及其应用。 1. Python中的for循环 首先,我…

05-事件循环

事件循环 以下知识点都涉及到事件循环 计时器,promise,ajax,node 明白此知识点,是前端的分水岭,可以提高效率,js中奇怪的东西都可以得到解决,整个过程是根据W3C和谷歌源码进行 浏览器的进程…

一文理解cast转换

目录 写在前边 1. what?又报错: 2. 靠,难道是这样? 3. 小试牛刀 4. 实际中的“坑” 写在后边 写在前边 关于$cast转换的结论无外乎以下四条: 如果将子类句柄复制给父类句柄,可以实现父类句柄的向下转换…

翻筋斗觅食策略改进灰狼算法

目录 一、动态扰动因子策略 二、翻筋斗觅食策略 三、改进灰狼算法收敛曲线图 灰狼优化算法(grey wolf optimization,GWO)存在收敛的不合理性等缺陷,目前对GWO算法的收敛性改进方式较少,除此之外,当GWO迭代至后期,所有灰狼个体…

企业版:Select.PDF Library for .NET

HTML 到 PDF API SelectPdf提供了一个REST API,可用于通过我们的专用云服务将html转换为任何语言的pdf。 另存为 PDF 链接 以非常简单的方式将“转换为PDF”功能添加到您的网站或博客。只需添加一个指向您的网页的链接,您就完成了。 适用于 .NET 的 PD…

Redis 通用命令

通用命令介绍 Redis 通用命令是一些 Redis 下可以作用在常用数据结构上的常用命令和一些基础的命令,比如删除键、对键进行改名、判断键是否存在等。简单说,就是 keys 分类的命令,如下图。 上图中圈中的部分,就是所谓的通用的命令…

chatgpt赋能python:Python对于SEO的重要性:浏览网页的技术分析

Python对于SEO的重要性:浏览网页的技术分析 越来越多的网站需要搜索引擎优化(SEO),以便他们的网站上的内容能够被更多人浏览与访问。这就要求我们使用一些工具和技术,例如Python,来帮助我们分析网页的技术…

通过调整图像hue值并结合ImageEnhance库以实现色调增强

前言 PIL库中的ImageEnhance类可用于图像增强,可以调节图像的亮度、对比度、色度和锐度。 通过RGB到HSV的变换加调整可以对图像的色调进行调整。 两种方法结合可以达到更大程度的图像色调增强。 调整hue值 __author__ TracelessLe __website__ https://blog…

linux 下查看 USB 设备

文章目录 前言目录内容详解usb11-0:1.01-1.1:1.0 结构图设备信息bDeviceClassversionbusnum & devnumdevbMaxPoweridVendor & idProductproductmanufacturerbcdDevicespeedueventbmAttributesdrivers_autoprobe 前言 在 sysfs 文件系统下,查看 USB 设备&am…