精通推荐算法30:行为序列建模之SIM— 基于检索建模长周期行为序列

news2024/9/24 7:23:56

1 行为序列建模总体架构

2 SIM提出的背景

MIMN第一次真正实现了长周期行为序列的建模,并取得了非常不错的业务效果。但受困于离线建模,它没办法实现用户行为序列和候选物品的交叉。同时采用一个固定大小的记忆网络来压缩超长序列,存在网络容量过低,建模能力不足的问题。针对这个问题,SIM模型应运而生。

SIM由阿里巴巴广告团队于2020年提出,与MIMN是同一作者。全称“ Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction[8]。它采用了在线建模的方案,从而克服离线建模导致的行为序列和候选物品不能充分交叉的问题。同时利用二阶段的方式,先从超长序列中检索出与候选物品相关的历史行为,再对缩减后的序列进行短序列建模。非常类似于推荐系统中的召回和排序的关系。SIM取得了非常不错的业务效果,其工程架构也比较友好,已经被广泛应用到各大推荐场景中。

SIM模型结构

SIM(Search-based Interest Model)的行为序列建模主要分为两个阶段,General Search Unit (GSU) 和 Exact Search Unit (ESU)。其中GSU负责从超长序列(比如长度大于10000)中检索出与候选物品相关的历史行为,从而将其缩减为一个短序列(比如长度不超过200)。ESU负责对缩减后的短序列进行精准建模。然后将建模后的结果和其他特征Embedding合并,经过MLP进行特征交叉并最终得到模型输出。GSU类似于推荐系统中的召回,实现粗略的筛选,减轻系统压力。ESU则类似于推荐系统中的排序,实现精准预估,并得到最终结果。SIM模型结构如图5-17所示。左边为第一阶段,也就是GSU。右边为第二阶段,也就是ESU。

GSU检索单元

联想下召回是怎么设计的,它一般由多个通路组成,一些基于规则策略,比如热门召回。另一些基于Embedding,比如向量召回。同样的,GSU也包括两种方式, Hard-searchSoft-search

Hard-search基于规则策略,不需要训练模型。它基于候选物品的某些属性,从超长序列中挑选出与其相同的历史行为,从而实现序列长度的缩减。SIM原文中采用了候选物品的类目ID,比如当候选物品为手机时,则从用户行为序列中挑选出历史点击过的电脑、耳机等数码商品。实际应用时,可先挖掘场景中有区分度的属性,再根据它进行Hard-search。

实际应用中,SIM设计了两级索引来存储用户超长行为序列。第一级索引为用户ID,第二级索引为类目ID,值即为某个用户在某个类目下的行为序列。这种方式设计十分巧妙,可以大大提高在线Hard-search的速度,同时减少了分布式服务器传递超长序列的通信成本。

Hard-search基于的设想是,属性相同的物品相关性高,而属性不同的物品相关性低。在电商场景中,类目ID确实可以做到这一点。但一方面商品存在类目错放的情况,类目ID本身有一定准确率问题。另一方面不同类目之间可能存在一定的相关性,比如啤酒和尿布。再者,其他业务场景要找到一个高区分度的属性,可能并不是那么容易。基于此,SIM又提出了Soft-search

Soft-search先计算物品的Embedding,再利用内积计算物品间相关性,最后从行为序列中挑选出top-K个与候选物品相关度高的。这是一个基于Embedding的top-K近邻搜索问题,可以利用 ALSH等向量检索算法。故关键在于怎么得到Embedding。很容易想到从精排模型中获取,比如物品ID的特征Embedding。能否使用已有的DIEN等短序列模型呢?可能不大合适。由于序列长度差异过大,导致特征Embedding分布可能差别比较大,直接复用可能有准确度不足的问题。SIM构建了一个基于长序列的辅助模型来解决这一问题。模型结构如图5-17最左边所示。它与DIN类似,采用Attention池化的手段,先计算各历史行为和候选物品的相关性权重,然后将所有行为加权求和,得到长序列的表征。然后将它与候选物品等其他特征向量一起合并,经过MLP多层神经网络充分交叉并得到输出。

Hard-search和Soft-search是SIM检索阶段的两种实现方式。二者各有优劣,Hard-search实现简单,不需要训练模型,可解释性高,线上延迟低Soft-search准确率高,通用性强。可根据业务场景实际情况,灵活选择。电商场景下,类目ID区分度比较高,实验中发现Hard -search与Soft-search效果几乎相同。综合考虑后,SIM最终采用了Hard-search。

ESU建模单元

GSU对超长序列进行检索,将其转化为一个短序列。ESU则对这个短序列进行建模,并得到最终的序列表征。故ESU本质上是一个短序列建模问题,跟之前的DIN、DIEN、BST等模型出发点相同。鉴于Transformer长序列建模能力较强,ESU采用它来实现,整体跟BST比较像。

考虑到超长序列中,行为发生的历史时间差别比较大,因此ESU同样将时序信息加入进来。其时序信息表达为,历史行为发生时间,与当前时刻的间隔。然后将时序信息分桶离散化,进行Embedding后,和物品其他特征一起合并(Concat)作为输入。这一点与BST如出一辙。

需要指出的是,ESU本质上是短序列建模,DIN、DIEN、BST等其他方法仍然适用。可根据实际情况灵活选择。

SIM总结和思考

SIM通过先检索后建模的二阶段方式,有效将超长行为序列转化为了短序列。从而克服了离线建模时用户行为不能与候选物品交叉等问题,实现了在线建模。其Hard-search和Soft-search检索方式的思考和落地,也充分体现了作者对业务特点的充分理解,是一次不错的理论结合实际。SIM工程落地也比较友好,特别是Hard-search方案,已经被应用到了各大推荐场景。

作者新书推荐

历经两年多,花费不少心血,终于撰写完成了这部新书。本文在5.7节中重点阐述了。

源代码:扫描图书封底二维码,进入读者群,群公告中有代码下载方式

微信群:图书封底有读者微信群,作者也在群里,任何技术、offer选择和职业规划的问题,都可以咨询。

详细介绍和全书目录,详见

《精通推荐算法》,限时半价,半日达icon-default.png?t=O83Ahttps://u.jd.com/mq5gLOH

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

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

相关文章

redis-shake v4全量增量同步redis数据

1 概述 RedisShake是一个用于处理和迁移 Redis 数据的工具,github地址是https://github.com/tair-opensource/RedisShake。它提供以下特性: 1)Redis 兼容性: RedisShake 兼容从 2.8 到 7.2 的 Redis 版本,并支持各种部…

Spring Event 业务解耦神器(泛型喔!)

一.前言 又与我一直负责Cocos Creator的开发,我发现在TS领域,是可以自定义事件(有兴趣的大宝可以坐飞机直达:[CocosCreator]自定义事件(订阅/发布)管理器),这样做有什么好处呢?回答:解耦! 于是乎,我就觉得前端能干的事,后端也一样能干!当然,如果后端是TS或JS写的,比如nodeJS,…

Cyber Weekly #24

赛博新闻 1、OpenAI发布最强模型o1 本周四(9月12日),OpenAI宣布推出OpenAIo1系列模型,标志着AI推理能力的新高度。o1系列包括性能强大的o1以及经济高效的o1-mini,适用于不同复杂度的推理任务。新模型在科学、编码、数…

自动排课管理系统(源代码+论文+开题报告)

一、题目摘要 题目简要说明: 选排课系统功能的设计上,选排课系统可以分为登录、排课和选课3个子系统。登录子系统区分排课者(也即系统的管理者)、教师和学生这三者的不同身份,给出不同的权限,在页面中根据身份判断其相应具有的功…

Java 入门指南:JVM(Java虚拟机)——类的生命周期与加载过程

文章目录 类的生命周期类加载过程1)载入(Loading)2)验证(Verification)文件格式验证符号引用验证 3)准备(Preparation)4)解析(Resolution&#xf…

FreeRTOS—任务通知

一,概念介绍 队列、信号量、事件组等IPC技术都需要创建一个中间对象进程之间通过这些中间对象进行通讯或同步。创建对象就需要分配内存,占用一定内存。 二,任务通知的特点: 一个任务或ISR向另外一个指定的任务发送通知&#xff0c…

2024年最新版Vue3学习笔记

本篇文章是记录来自尚硅谷禹神2023年课程的学习笔记,不得不说禹神讲的是真的超级棒! 文章目录 创建Vue3工程main.ts文件解析初始化项目写一个简单的效果 Vue3核心语法setup函数setup和选项式的区别setup语法糖指定组件名称 响应式数据ref函数定义基本类…

C#学习系列之Gmap地图界面上的实时绘制问题

C#学习系列之Gmap地图界面上的实时绘制问题 前言总结 前言 在地图控件上增加绘制不规则图形,在之前的经验来看, System.InvalidOperationException:“无法使用 DependencyObject,它属于其父 Freezable 之外的其他线程。” 其实就是ui线程中…

9.15javaweb项目总结

1.贴吧界面算是完成了基本的 能通过url打开多个贴吧信息的界面了,界面水平不是很高,界面还有待提升,然后该界面的功能点还差点有点远,完成度不是很高。 2.解决了关注的功能问题 要考虑的地方有点多,最简单的就是点击…

SpringSecurity 5

springSecurity是spring的一个顶级项目 也是一个安全框架,可以在spring框架中直接引用。 springSecurity基于RBAC用来处理登录功能和各种权限校验。 〇、配置和运行springSecurity 导入security启动器和web启动器,写一个springBoot的启动类,可…

VMamba: Visual State Space Model 论文总结

题目:VMamba: Visual State Space Model(视觉状态空间模型) 论文:[2401.10166] VMamba: Visual State Space Model (arxiv.org) 源码:https://arxiv.org/pdf/2401.10166 (github.com) 目录 一、摘要 二、引言 三、方…

URP 线性空间 ui资源制作规范

前言: 关于颜色空间的介绍,可参阅 unity 文档 Color space URP实现了基于物理的渲染,为了保证光照计算的准确,需要使用线性空间; 使用线性空间会带来一个问题,ui资源在unity中进行透明度混合时&#xff…

嵌入式常用轻量级校验算法

在嵌入式中涉及通信基本都需要用到校验算法,如:UART常用的奇偶校验、CAN通信常用的CRC校验等等。下面我们将介绍几种常用的校验算法: 一、校验和 校验和是最基本,也是嵌入式软件工程师最常用的一种校验算法,其实现方法…

jdk知识

jdk,jre,jvm jdk>jre>jvm jdk的bin目录下有编译工具,平时写完java文件用jdk编译; jre的lib文件夹里面是java的jar包(.class文件),用来给jvm运行编译后的.class文件。 jvm:运行.class文件,.class文件读入到虚拟机…

JVM 垃圾回收机制和GC案例分析

1. 引言 Java 虚拟机(JVM)的垃圾回收(Garbage Collection, GC)机制,是自动内存管理的重要组成部分。它通过回收不再使用的对象,避免手动释放内存的麻烦。然而,随着系统复杂性的增加&#xff0c…

C/C++——野指针处理

在C++中,“野指针”(dangling pointer)指的是指向已释放或无效内存的指针。使用野指针可能导致程序崩溃或产生未定义行为。避免野指针的关键在于确保指针始终指向有效内存。下面是一些避免野指针的方法和最佳实践: 1、释放内存后置空指针 当释放掉分配的动态内存后,将指…

文本到3D生成

文本到3D生成是一种通过文本描述直接创建三维数字模型的技术。这种技术能够将语言描述转换成可视化的三维模型,使得内容创作者和设计师可以直接从概念阶段跳转到三维可视化,大大加快创作流程并提供更直观的设计和修改过程。 该技术的核心应用之一是基于…

【乐吾乐大屏可视化组态编辑器】使用手册

1 总览 开始设计:大屏可视化设计器 - 乐吾乐Le5le 1.1 画布 画布即绘画区域,将图形拖拽到画布进行编辑,绘制大屏。 1.2 菜单栏 顶部菜单导航,一级菜单可设置Logo、公司名称、文件编辑、常用编辑、查看、帮助,设置大…

MySQL篇(SQL - 分类)(持续更新迭代)

目录 简介 一、DDL 1. 简介 2. 数据库操作 2.1. 查库 查询所有数据库 查询当前数据库 2.2. 创库 2.3. 删库 2.4. 切库 3. 表操作 3.1. 查询 查询当前数据库所有表 查看指定表结构 查询指定表的建表语句 3.2. 创表 3.3. 改表 添加字段 修改数据类型 修改字段…

unity3d入门教程六

unity3d入门教程六 15.1预制体15.2编辑预制体15.3在场景中编辑15.4动态创建实例15.5实例的销毁16.1(练习)子弹发射16.2定时器16.3键盘事件 15.1预制体 火神山10天建成,使用了预制体技术 一个个小房间都是事先建造好的,最后吊车装…