推荐系统-电商直播 多目标排序算法探秘

前言:

        电商直播已经成为电商平台流量的主要入口,今天我们一起探讨推荐算法在直播中所面临的核心问题和解决方案。以下内容参考阿里1688的技术方案整理完成。

一、核心问题介绍

  • 在电商网站中,用户的主要行为是在商品上的行为,直播的内容行为数据比较稀疏,因此商品行为应与直播行为结合来优化直播推荐。

  • 多目标学习,直播推荐的效能类指标和满意度指标很多,包括用户看到直播间的点击率,进入直播间的停留时长,转化率,关注率,留言率等。

  • 减少偏差,position bias 与 selection bias 会影响模型的准确性,增强马太效应,损害腰部、尾部主播的利益。

           此内容将在下一遍文章中详细探讨。

二、特征工程

        特征包括了推荐系统中非常经典的一些特征体系,也就是直播测, item 侧,用户侧,用户和 item 侧交叉的特征体系。

  • 直播侧

        第一是直播的实时和历史的统计特征,包括实时以 30 分钟,3 天,7 天,15 天为窗口的开播次数,曝光数,点击数,CTR,CVR 等特征。

        第二是内容侧特征,包括封面图和标题的 embedding。

        第三是商家画像特征,静态信息有商家等级和店铺交易数据,B 类信息有商家工厂能力。

  • 用户侧

用户侧特征里,我们一方面采用了网站的用户画像,包括网站的身份,等级,来访频次等,另一方面采用直播画像,包括偏好,访问天数,下单数,RFM 等特征。

  • 直播用户交叉

        用户和直播的交叉特征,以非常好地反映用户对直播的偏好程度。我们分别用到了用户在 item 的序列和用户在 live 序列在不同的时间和次数窗口上与直播间的商品,以及直播间本身的一些交叉的次数,点击率和转化率的特征。

三、直播排序模型迭代

  1、第一版:我们采用的模型是一个以 CTR 为目标的 GBDT point-wise 模型

  2、第二版: 基于YouTube 的 DNN 和 DIN,演化开发的异构双序列 Attention 模型

   

  • 行为异构性:商品序列、直播序列

      采用了两个 Target Attention 的结构,分别基于用户在 Item 上的序列 和 当前直播正在讲解的商品做一个 Attention。也就是说,如果用户的 Item 序列与当前直播的商品匹配程度比较高,模型即可捕捉对应的兴趣。

       第二是 基于用户历史点过直播的序列与直播间的 ID 做一个 Attention。用户如果历史看的直播与当前直播间比较相似,模型也能捕捉到用户对应的兴趣,来提升预测 CTR 准确度。

  • 直播实时性:大量实时统计特征

总结:

大量的用户只有关于商品(item)的行为,缺少直播相关的行为。因此用户直播的序列的 Attention 结构就不会生效

3、第三版:HIN 异构网络建模

1、构建图:

2、Metapath 选取

  • 人工指定语义

        例如 User-Item-User(user CF)或者 Item-user-item(item CF),item-user-item 相当于一个用户同时点了两个商品,这两个商品就会较为相似。但对于节点类型多,metapath 比较长的序列,效果不好,可解释性较差

  • 集合中取最优

       首先在图中做 random walk,采样出不同的序列,再做一些规则筛选,比如要求至少要覆盖两种不同的节点的类型。所以再用打分公式做一个打分,打分公式核心关注该 metapath 被采样出了多少条不同的 ID 组合序列,条数越多说明这样的 metapath 在图中共性越高,同时我们会更关注核心节点,比如直播节点的出现次数,依此制定打分公式来选出对应三到五条 metapath 做采样学习。

3、图游走采样

基于选出的 metapath 在图中做游走采样,再用 Skip-Gram 训练出 metapath 语义下的 Embedding。

4、Embedding 融合

融合多个 Metapath Embedding 的语义网络

总结:V3 的模型仍存在一些问题,其一它不是端到端模型,其二,T+1 更新无法表征实时商品

4、第四版:直播 Transformer 异构行为建模

直播 transformer,一方面可以让 HIN 融合多个商品表征,另一方面可以引入实时直播正在讲解的多个商品的信息。

        transformer 方案中,直播表征 包含三部分数据:  m 个历史核心商品, k 个实时讲解商品的集合序列 ,用户的商品足迹行为序列。

        三组序列进行拼接输入进 Transformer 后即可用来对任意用户商品行为足迹到直播间核心品或实时品进行建模。Transformer 层包括四部分:

  • Embedding:输入的 Embedding 包括 Type Embedding 和 Position Embedding

  • Multi head Self Attention:任意用户足迹与直播商品表征的交叉

  • Feed Forward Layer:加强模型的非线性能力

  • Pooling Layer:直播 Item 表征为不定长,Average&Max pooling

Transformer 模型中,Embedding 的构建十分关键。输入的 Embedding 不仅包含了商品的 ID Embedding,还包含 Type 和 Position Embedding。

  • Type Embedding

        Type Embedding 表征 self attention layer 中每个 token 的类型,比如用户序列,直播间历史品,或是实时品。同时用户序列的商品分为点击,加购,下单商品三种类型。

  • Position Embedding

        Position Embedding 用来表征一个序列时间或者空间上的先后顺序,此处我们建模了三种不同的条件:

一是用户行为序列长度,时间由近到远,编号由 0 到 n-1;

二是直播历史核心商品,重要程度由强到弱,编号由 0 到 m-1;

三是直播实时讲解商品,当前商品为 0,下一个商品为 1,一直到 k-1。同时,position embedding 都是端到端的学习。重要性强的位置交叉,给予模型更强的信号。例如用户某个最近的历史行为与当前直播的商品有较强的相关性,模型信号将会更强。

四、直播多目标排序方案

        直播是一个非常经典的多目标学习的场景,优化目标包括直播背景页面的点击(CTR)、进入直播间后的停留时长(Stay Time)、转换率(CVR)、互动率(CMR)、关注率(FLR)。业务往往需要同时优化多个目标,因此多目标学习是非常重要的技术。

1、多目标优化有两套方案:

1.1、方案 1:目标独立建模

        为每个目标单独去建立一个模型,这种方案可能会面临着成本高的问题。另外有些目标会面临着数据稀疏的问题,更重要的是忽略了目标间之间的信息共享关系。比如一个 5 秒钟的点击和一个 5 分钟的点击,它带来这个效果是不一样的,如果能把这种时间上的信息作用到点击上,也是可以提升点击效果的。

1.2、方案 2:多目标联合建模

        我们的目标都是通过用户行为来反馈标定的。而在推荐场景下,用户的行为有一定的时序关系,比如先有点击,再有点赞、评论等等其他互动行为,所以在做多目标联合建模的时候,也需要去考虑目标时序关系,也就是 target-target 层面。

2、多目标技术方案演进:

多目标业界有两种做法:

一种做法是:目标之间的独立性假设。没有刻画目标之间的联系,而是通过底层的共享机制来完成,像这种原生的 Multi-task Learning 也称为 share-bottom 的这种方法。然后还有谷歌提出的 MMoE 的方法,腾讯提的这种 PLE 的方法。

另外一类做法是:建模目标关系。像阿里巴巴提出的 ESMM,然后还有 lazada 提出的这种 GMSL 的模型。

                                  图一:Multi-task Learning

        图一 是原生 Multi-task Learning,也是我们 2018 年升级之后的 base 模型。它是通过底层的共享网络来实现信息的迁移共享,每个目标之间共享 share layer,然后在上层会有各自的 specific layer,通过这种人为去定义哪些要共享,哪些不要共享的网络形式来实现信息的迁移。因为这种方式是通过人工方式来指定的,所以我们也称为 hard parameter sharing 的一个方法。

                                   图二:谷歌提出的 MMoE

        图二是 Google 的 MMoE,它是采用 soft parameter sharing 方法来实现。因为它通过定义多组的专家网络,每一个目标会在网络里自适应的学习,我们要选择哪一些专家网络来实现信息的共享,所以它会有一个门控的机制。通过这种门控来学习每个目标对每一个专家网络组的权重关系,实现底层特征的信息共享。

                                                           图三 :腾讯的 PLE

        腾讯的 PLE,认为 MMoE 是所有的专家组都是共享的,它没有每个目标自己的一个专家组网络,所以又提出了在每个目标都有一个 Specific 的 Expert 的优化方案。

                                                     图四:阿里巴巴的 ESMM

         图四 是阿里巴巴的 ESMM,它最初的一个目标是要去优化 pCVR,然后通过引入 pCVR=pCTR*pCTCVR 这样的目标关系刻画,解决了样本选择空间偏差的问题,进一步优化 pCVR。

                                                图五:azada 提出的 GMSL

        图五是 lazada 提出的 GMSL,它是通过 GRU 结构去优化目标之间的链式关系。无论是 ESMM 的这种乘积,还是 GMSL 这种 GRU 的结构,它都只能去刻画特定关系的目标。像下面的网络框架图(属于有向无环图),从点击到评论,点击到进店,到成交,然后到时长,这个相对比较复杂的贝叶斯网络,就没法很好的来满足目标的刻画。

3、DBMTL3.0 介绍

        DBMTL模型阿里是近来在贝叶斯网络的基础上,提出了自己的多目标学习框架 DBMTL,全名是 Deep Bayesian Multi-task Learning,就是通过贝叶斯网络来建模这种相对比较复杂的目标时序关系,目的是要达到多目标的联合建模。

这个框架也在 3 个场景里面落地实践,已经取得了明显正向的效果提升。

  • 猜你喜欢直播 TAB:pctr+12%,uctr+7%,人均时长+6%

  • 淘宝直播 APP:pctr+2%,uctr+2%,人均时长 +2.5%

  • 宫格频道:pctr+2.5%,uctr+2%,人均时长持平)

代码实现

基于EasyRec推荐算法框架,我们实现了DBMTL算法,具体实现可移步至github:EasyRec-DBMTL。

4、DMR2.0(Deep Match & Rank)

 阿里 2020 年推出模型。目前CTR的提升,主要从两个方向:

1.在自动学习特征交互和增强模型的表征方面,如:Wide&Deep、PNN等;

2.从用户历史行为序列中挖掘潜在兴趣,再与目标商品内积获取对于目标商品的兴趣评分。如DIN、DIEN。

而本论文出发点就是利用历史序列,刻画用户兴趣,直接得到U2I(user和target item)相关性,具体优化:[1]

1) 充分挖掘用户历史交互过的商品与目标商品之间的相关性,借鉴召回侧的思路,采用了U2I和I2I两个子网络学习user与item之间的相关性:DMR 模型是一个将召回和排序联合起来训练的模型;

论文中采用了两类CF思想:

  • U2I CF:通过用户表征和商品表征的内积直接得到 U2I 相关性。
  • I2I CF :计算 I2I (target 和his item)的相似度,然后根据用户的行为和 I2I 相似度间接得到 U2I 相关性【类似DIN】

2) 引入了auxiliary match network来使U2I子网络学习的更加充分;

3) 引入注意力机制和位置编码来学习行为的权重;

参考文章:

1、阿里1688直播推荐算法实践_大数据_DataFunTalk_InfoQ精选文章

2、【CTR】DMR:阿里深度召回排序模型 【CTR】DMR:阿里深度召回排序模型_mb5fca0c87ea3a4的技术博客_51CTO博客

3、深度排序模型在淘宝直播的演进与应用_架构_DataFunTalk_InfoQ精选文章

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

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

相关文章

深度学习:(五)初识神经网络

(一)神经网络的层数 除去输入层,但包括输出层,每一层都有自己的参数。 输入层称为第零层。 (二)最简单的神经网络(逻辑回归) 下图中的小圆圈,代表了一种运算。且一个小…

阿里开源多模态大模型Ovis1.6,重塑出海电商AI格局

阿里开源Ovis1.6:多模态领域再夺第一 阿里再一次证明了自己在多模态领域的实力。这一次,阿里国际AI团队开源的多模态大模型Ovis1.6,不仅成功开源,还在多模态评测基准OpenCompass上击败了Qwen2VL-7B、InternVL2-26B和MiniCPM-V-2.…

Docker 进入容器并运行命令的方法

目录 理解 Docker 容器的基本概念 使用 docker exec 进入运行中的容器 基本用法 常用选项解析 选项详解 实际案例演示 1. 进入容器的交互式 Shell 2. 在容器中运行单个命令 3. 以指定用户运行命令 4. 设置环境变量并运行命令 5. 指定工作目录 使用 docker attach 附…

标准库标头 <bit>(C++20)学习

<bit>头文件是数值库的一部分。定义用于访问、操作和处理各个位和位序列的函数。例如&#xff0c;有函数可以旋转位、查找连续集或已清除位的数量、查看某个数是否为 2 的整数幂、查找表示数字的最小位数等。 类型 endian (C20) 指示标量类型的端序 (枚举) 函数 bit_ca…

使用LangGPT提示词让大模型比较浮点数

使用LangGPT提示词让大模型比较浮点数 背景介绍环境准备创建虚拟环境安装一些必要的库安装其他依赖部署大模型启动图形交互服务设置提示词与测试 LangGPT结构化提示词 背景介绍 LLM在对比浮点数字时表现不佳&#xff0c;经验证&#xff0c;internlm2-chat-1.8b (internlm2-cha…

HObject复制耗时试用

测试源码一 //第一步const int N 1000;HObject[] imgs new HObject[N];for (int i 0; i < N; i){HOperatorSet.GenImageConst(out imgs[i], "byte", 1024 i, 1024 i);}//第二步List<HObject> lists new List<HObject>();for(int i 0; i < …

基于PHP的新闻管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于phpMySQL的新闻管理系统。…

MySQL的缓存策略

目录 一、MySQL 缓存方案用来干什么 二、提升MySQL访问性能的方式 1、读写分离&#xff08;MySQL的主从复制&#xff09; 2、连接池 3、异步连接 三、缓存方案是怎么解决的 1、缓存与MySQL一致性状态分析 2、制定热点数据的读写策略 四、缓存方案问题的解决方法 1、缓…

酸枣病虫害智能化防控系统的探索与实践,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建枣类作物种植场景下酸枣病虫害智能检测识别系统

智慧农业&#xff0c;作为现代农业的高级形态&#xff0c;通过集成物联网、大数据、人工智能等先进技术&#xff0c;实现了农业生产过程的精准化、智能化管理。在酸枣等经济作物的种植过程中&#xff0c;病虫害的及时监测与防控直接关系到作物的产量与质量&#xff0c;进而影响…

react hooks--React.memo

基本语法 React.memo 高阶组件的使用场景说明&#xff1a; React 组件更新机制&#xff1a;只要父组件状态更新&#xff0c;子组件就会无条件的一起更新。 子组件 props 变化时更新过程&#xff1a;组件代码执行 -> JSX Diff&#xff08;配合虚拟 DOM&#xff09;-> 渲…

Knife4j 一款基于Swagger的开源文档管理工具

一、简单介绍 1.1 简介 Knife4j 是一款基于Swagger的开源文档管理工具&#xff0c;主要用于生成和管理 API 文档 二、使用步骤&#xff1a; 2.1 添加依赖&#xff1a; <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spr…

spark之不同序列化对比

一&#xff0c;spark的rdd的序列话不同介绍 下面是使用不同序列化后的占用资源和数据大小 2&#xff0c;sparksql中序列化的区别 sparksql中使用序列化和不使用差别不大&#xff0c;英文sparksql中默认使用了encode自己实现的序列化方法&#xff0c;加上与不加序列化差别不大…

编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动(MSVC版)

相邻你找了很多博文&#xff0c;都没有办法。现在终于找到了正宗。 参考 GitHub - thecodemonkey86/qt_mysql_driver: Typical symptom: QMYSQL driver not loaded. Solution: get pre-built Qt SQL driver plug-in required to establish a connection to MySQL / MariaDB u…

.whl文件下载及pip安装

以安装torch_sparse库为例 一、找到自己需要的版本&#xff0c;点击下载。 去GitHub的pyg-team主页中找到pytorch-geometric包。网址如下&#xff1a; pyg-team/pytorch_geometric​github.com/pyg-team/pytorch_geometric 然后点击如图中Additional Libraries位置的here&am…

Leetcode Hot 100刷题记录 -Day18(反转链表)

反转链表&#xff1a; 问题描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&a…

基于阿里云免费部署Qwen1-8B-chat模型并进行lora参数微调从0到1上手操作

文章目录 一、申请资源二、创建实例三、克隆微调数据四、部署Qwen1-8B-chat模型1、环境配置2、模型下载3、本地模型部署 五、模型微调1、拉取Qwen仓库源码2、微调配置3、合并微调参数4、本地部署微调模型 一、申请资源 阿里云账号申请PAI资源详细教程我已于部署ChatGLM3时写过…

双立方(三次)卷积插值

前言 图像处理中有三种常用的插值算法&#xff1a; 最邻近插值 双线性插值 双立方&#xff08;三次卷积&#xff09;插值 其中效果最好的是双立方&#xff08;三次卷积&#xff09;插值&#xff0c;本文介绍它的原理以及使用 如果想先看效果和源码&#xff0c;可以拉到最底…

关于若尔当矩阵中过渡矩阵的求法

关于若尔当矩阵中过渡矩阵的求法 豆瓜爱数学 ​关注 桜井雪子 等 114 人赞同了该文章 本文主要介绍考研中常考的另一类问题&#xff0c;当我们确认一个Jordan标准形时&#xff0c;对于过渡矩阵如何确定&#xff1f;这个常常是我们复习过程中容易忽略的一部分内容&#xff0c;…

物联网——USART协议

接口 串口通信 硬件电路 电平标准 串口参数、时序 USART USART主要框图 TXE: 判断发送寄存器是否为空 RXNE: 判断接收寄存器是否非空 RTS为输出信号&#xff0c;用于表示MCU串口是否准备好接收数据&#xff0c;若输出信号为低电平&#xff0c;则说明MCU串口可以接收数据&#…

简单题69.x的平方根 (Java)20240919

问题描述&#xff1a; java代码&#xff1a; class Solution {public int mySqrt(int x) {if (x < 2) {return x; // 0 和 1 的平方根分别是它们自己}int left 2; // 从2开始&#xff0c;因为0和1已经处理了int right x / 2; // 最大可能的平方根不会超过 x / 2int mid;w…