【BST】Behavior Sequence Transformer for E-commerceRecommendation in Alibaba

一、提出背景

传统的Embedding&MLP模型结构将原始特征嵌入到低维向量中,然后将其concat后输入MLP进行最终推荐。DIN提出使用注意力机制来捕获候选项与用户先前点击的项之间的相似性。

然而,大多数这些工作只是连接不同的特征,而没有捕获用户行为序列之间的顺序信息,忽略了用户行为的顺序性,即用户点击的项目的顺序。实际上,顺序对于预测用户未来的点击很重要。

例如,用户在淘宝上买了一部iPhone后,往往会点击手机壳,或者在买了一条裤子后,试图找到一双合适的鞋子。从这个意义上说,在淘宝排名阶段部署预测模型时,如果不考虑这一因素,就会出现问题。

为了解决WDL和DIN面临的上述问题,尝试将用户行为序列的顺序信号纳入RS中。

受自然语言处理(NLP)中机器翻译任务的Transformer的巨大成功的启发,我们应用自注意机制,通过考虑嵌入阶段的序列信息来学习用户行为序列中每个项目的更好表示,然后将它们馈送到MLP中以预测用户对候选项目的响应。Transformer的关键优势在于,它可以通过自注意机制更好地捕捉句子中词与词之间的依赖关系,直观地说,用户行为序列中项与项之间的"依赖关系"也可以通过Transformer提取出来。

二、模型结构

在排名阶段,推荐任务可建模为点击率(CTR)预测问题:给定用户的行为序列S(u)= {v1,v2,.,vn}被用户u点击,我们需要学习函数F来预测点击目标项Vt的概率。

BST和WDL之间的关键区别在于我们添加了Transformer层,通过捕获底层的序列信息来学习用户点击项目的更好表示。

2.1、Embedding层

将所有输入特征嵌入到固定大小的低维向量中。

2.1.1其他特征包括:

将它们嵌入到低维向量中并连接起来。嵌入矩阵Wo ∈ R| D| ×do,其中do是维度大小。

2.1.2行为序列特征

行为序列中每个项目的嵌入,包括目标项目。

使用两种类型的特征来表示一个item:"Sequence Item Features"包括item_id和category_id;以及Positional Features对应于位置embedding。

(一个item往往有数百个特征,而选择所有特征来表示行为序列中的项代价太高,实践中也发现,item_id和category_id对于性能来说已经足够好了,可以选择这两个作为稀疏特征来表示嵌入用户行为序列中的每个item。)

对于每个项目,我们连接Sequence Item FeaturesPositional Features。嵌入矩阵WV ∈ R| v| × dV,其中dV是嵌入的维数大小,以及|v|是项目的数量。我们使用ei ∈ RdV来表示给定行为序列中第i项的嵌入。

2.1.3位置embedding

Transformer提出了一种位置embedding来捕获句子中的顺序信息。同样,用户的行为序列中也存在顺序。因此,可以在底层中添加"位置"作为每个item的输入特征,然后将其投影为低维向量。

项目vi的位置值计算为pos(vi)= t(vt)- t(vi),其中t(vt)表示推荐时间,t(vi)表示用户点击项目vi时的时间戳。

2.2、Transformer 层

Transformer层通过捕获行为序列中与其他项的关系来学习每个项的更深层次的表示。

在我们的场景中,自我注意力操作将项目的embedding作为输入,并通过线性投影将其转换为三个矩阵,并将其馈送到注意力层。

多头注意力:

其中投影矩阵WQ、WK、WV ∈ Rd×d,E是所有项的嵌入矩阵,h是头的数目。

前馈网络Feed-Forward Networks (FFN):F = FFN(S)

为了避免过度拟合并分层学习有意义的特征,我们在自我注意力和FFN中使用dropout和LeakyReLU。然后,自注意和FFN层的总体输出如下:

2.3、MLP层

将Other Features的嵌入和应用于目标项的Transformer层的输出连接起来,我们然后使用三个全连接层来进一步学习密集特征之间的交互。

2.4、损失函数

为了预测用户是否会点击目标itemvt,我们将其建模为二进制分类问题,因此我们使用sigmoid函数作为输出单元。为了训练模型,我们使用交叉熵损失:

其中D表示所有样本,y ∈ {0,1}是表示用户是否点击过某个项目的标签,p(x)是sigmoid单元后网络的输出,表示样本x被点击的预测概率。

三、实验设置

3.1、评估指标

离线结果:AUC

在线A/B测试:CTR、平均RT(RT是响应时间(RT)的缩写,它是为给定查询生成推荐结果的时间成本,即一位淘宝用户的请求。用来评估不同的在线生产环境中的效率)

和DIN之间的关键区别在于,使用Transformer 来学习用户行为序列中每个项目的更深层次的表示,而DIN试图捕捉之前点击的项目和目标项目之间的不同相似性。换句话说,BST模型与Transformer更适合捕捉的顺序信号。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通过 Java 操作 redis -- hash 哈希表基本命令

目录 使用命令 hset,hget 使用命令 hexists 使用命令 hdel 使用命令 hkeys,hvals 使用命令 hmget,hmset 关于 redis hash 哈希表类型的相关命令推荐看Redis - hash 哈希表 要想通过 Java 操作 redis,首先要连接上 redis 服务…

AVL Cruise与Simulink联合仿真(通过MATLAB DLL方式)

最近毕业设计需要用到AVL Cruise与Simulink进行联合仿真,分析汽车模型的经济性。下面介绍一下我所知的AVL Cruise与Simulink联合仿真的几种方式,它们各自的优缺点,以及DLL方式联合仿真的具体配置过程。我这里用的MATLAB软件版本是2021a&#…

运行Spring Boot项目失败?显示java: 无法访问org.springframework.boot.SpringApplication,让我来看看~

idea项目运行报错截图: (1)查看错误提示“类文件具有错误的版本 61.0, 应为 52.0”,61.0对应的是jdk17,52.0对应1.8。 通过这个网址可以查询版本: https://stackoverflow.com/questions/9170832/list-of-ja…

Linux文本三剑客

文章目录 一、文本搜索工具--grep1、简介2、工作原理3、语法格式4、选项介绍5、实例测试5.1、-i选项5.2、-v选项5.3、-n选项5.4、-c选项5.5、-o选项5.6、-B选项5.7、-A选项5.8、-C选项5.9、-w选项5.10、-E选项5.11、-e选项 二、流编辑器--sed1、简介2、工作原理3、语法格式4、选…

AI换脸原理(6)——人脸分割介绍

一、介绍 人脸分割是计算机视觉和图像处理领域的一项重要任务,它主要涉及到将图像中的人脸区域从背景或其他非人脸区域中分离出来。这一技术具有广泛的应用场景,如人脸识别、图像编辑、虚拟背景替换等。 在计算机视觉(CV)领域,经典的分割技术可以主要划分为三类:语义分…

程序员侠李飞

李飞,这位程序员侠,肩负着消灭黑暗势力的使命。他的代码如同一把利剑,切割着虚拟世界中的恶意程序,保护着数字领域的和平。他的键盘敲击声如同战鼓的轰鸣,警示着那些企图侵入系统的黑客。在代码的世界里,他…

【离散数学】集合上二元关系性质判定的实现(c语言实现)

实验要求 关系矩阵的初始化和打印 我们将关系矩阵存入一个二维数组中,因为集合元素个数不会超过5个所以就用一个5行5列二维数组来表示。 在我们得到了集合元素个数之后我们就可以对数组进行0,1随机赋值 //初始关系矩阵 void init_matrix(int array[][5], int n) {…

后端开发面经系列 -- 地平线C++一面

地平线C一面 公众号:阿Q技术站 来源:https://www.nowcoder.com/discuss/608452700895711232 1、分布式事务是否了解? 分布式事务是指涉及多个数据库或应用之间的事务操作,需要确保这些操作要么全部成功,要么全部失败…

Dynamic Extraction of Subdialogues for Dialogue Emotion Recognition

对话情感识别的子对话动态提取 摘要1. 介绍2 相关工作2.1 对话上下文建模2.2 常识知识 3 方法3.1 问题定义3.2 模型概述3.3 特征提取模块3.4 依赖性建模3.5 交互式子对话提取模块3.6 重要性增强的多头自注意力模块3.7 子对话框主题提取模块3.8. 分类模块 四、实验4.1 数据集4.1…

IDEA使用Maven生成普通项目没有生成iml文件解决方法

右击主目录选择: Open in Terminal 在生成的控制台输入: mvn idea:module 回车便自动生成iml文件啦! 双击下主目录就可以看见啦

javax.net.ssl.SSLException: Received fatal alert: protocol_version已经解决

起因: 在帮别人讲解项目时,将项目的tomcat配置完,点击运行后,报错,信息如标题。 解决办法: 在csdn百度问题,得到的方法主要有几个: 1.jdk要配置在1.8以上; 2.数据库地…

【MySQL】ON WHERE 和 ON AND 的区别

1. 查询语句语法规则 “[ ]” 包含的内容可以省略; “{ }” 包含的内容必须存在; DISTINCT: 设定 **distinct** 可以去掉重复记录; AS: 表明或字段名过长时,可以用 **AS** 关键字起别名,也可…

06.配置邮件报警

配置邮件报警 我的授权码:HCHNVOAENURLOACG 1.定义发件人 密码是163邮箱的授权码 2.配置收件人 我就配置收件人是qq邮箱了 3.启动动作 验证邮件发送成功

Redis如何避免数据丢失?——AOF

目录 AOF日志 1. 持久化——命令写入到AOF文件 写到用户缓冲区 AOF的触发入口函数——propagate 具体的实现逻辑——feedAppendOnlyFile 从用户缓冲区写入到AOF文件(磁盘) 函数write、fsync、fdatasync Redis的线程池 AOF文件的同步策略 触发的入口函数——…

特斯拉擎天柱机器人:工厂自动化的未来

随着技术的进步,工业自动化已经逐步进入了一个新的纪元。特斯拉最近公布的擎天柱机器人Optimus的演示,不仅仅展示了一个高科技机器人的能力,更是向我们揭示了未来工厂的可能性。 特斯拉擎天柱机器人的功能展示 马斯克在最新的演示中向我们展…

使用Nuxt.js实现服务端渲染(SSR)

Nuxt.js 是一个基于 Vue.js 的框架,它提供了服务器端渲染(SSR)和静态站点生成(SSG)的能力,使开发者能够轻松地构建高效、优雅的前端应用。Nuxt.js 集成了许多开箱即用的功能和工具,帮助开发者快…

C语言—深入理解指针(2)

1.数组名的理解 不难发现,数组名就是数组首元素的地址。 但是有两个例外: 1.sizeof(数组名) 这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。 2.&数组名 这里的数组名也表示整个数…

MacOS miniconda安装方法

打开macos “终端” 应用 执行命令 mkdir -p ~/miniconda3curl https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o ~/miniconda3/miniconda.shbash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3rm -rf ~/miniconda3/mini…

CPU基本知识点

目录 1.概念 2.分类 3.运作原理 4.指令系统 1.概念 CPU:英文Central Processing Unit,即中央处理器。 解释和执行指令的功能单元,它是计算机的中枢神经系统(即核心)。 是计算机最核心的部件,主要是运算…

嵌入式数据库SQLite 3配置使用详细笔记教程

0、惨痛教训 随着管理开发的项目体积越来越庞大,产品系统涉及的数据量也越来越多,并且伴随着项目不久就要交付给甲方了。如果项目的数据信息没有被妥善管理,后期设备的运行状态、操作状况等数据流信息不能被溯源,当出现了一些特殊…
最新文章