精通推荐算法6:用户行为序列建模 -- 总体架构

news2024/11/8 10:56:23

1 行为序列建模技术架构

身处目前这个信息爆炸的时代,用户在各推荐场景上有丰富的行为序列。将行为序列特征引入推荐算法中,有利于丰富特征工程体系、获得更立体和更全面的信息,同时可以表达用户兴趣演化过程,并捕获用户实时兴趣。目前主流推荐场景均已加入了用户行为序列建模,并提升了推荐模型准确性和用户体验。

用户行为序列(User Behavior Sequence,UBS)建模,主要包括特征工程序列建模,和长序列建模三大主题。特征工程是序列建模的基础,主要围绕有哪些特征、正反馈和负反馈、短期行为和长期行为,以及全场景建模等方向。序列建模则分为池化序列化两种方式,其中池化包括求和(Sum)/最大(Max)/平均(Mean)和基于注意力(Attention)两大类,序列化包括循环神经网络(Recurrent Neural Network,RNN)和Transformer网络两大类。长序列建模则用来捕获用户长期兴趣,可进一步提升序列建模的表达能力和准确性,包括离线法在线法两种方案,后文详细展开。用户行为序列建模的知识框架如下图所示。

行为序列建模在我的新书《精通推荐算法:核心模块+经典模型+代码详解》第五章中有详细讲解。详细请参见

《精通推荐算法:核心模块+经典模型+代码详解》(谢杨易)【摘要 书评 试读】- 京东图书

2 行为序列建模的意义

近几年用户行为序列建模,已经成为继特征交叉和表征学习后,推荐系统的另一大重点发力方向。行为序列建模可以丰富特征工程体系,引入更全面和更立体的信息,并捕获用户兴趣演化过程和实时兴趣倾向,为各推荐场景业务提升和用户体验优化起到了关键作用。

用户行为序列建模的意义十分重大,目前已经成为了推荐系统核心优化方向,也是推荐算法工程师的必备技能。其意义主要有:

(1) 丰富特征工程体系。特征工程是算法模型的基础,特征越丰富越精细,则模型获取的输入信息越多,最终预估也会越精准。用户行为序列,可以囊括点击、购买、点赞和收藏等正反馈信息,以及不喜欢和曝光未点击等负反馈信息。它由被行为(比如被点击)的物品ID,和其各种属性特征组成,比如物品的品牌ID、卖家ID和价格等。另外,行为序列既可以包括用户的短期行为,还可以包括长期行为。用户行为序列是推荐系统特征工程的重要组成部分,可以极大的丰富特征工程体系。

(2) 获得更立体的信息。与很多其他特征只是一个标量不同,行为序列可以理解为是一个向量,其信息更为立体。比如用户近7天的购买商品数,可以通过其近7天的购买行为序列推导出来。更重要的是,通过行为序列,可以清楚的知道用户在哪几天购买了,什么卖家、什么品牌的商品,其信息更为立体。同时,购买行为距离当前的远近,代表了用户不同的活跃度,普通标量特征难以对其精准表达,而行为序列则可以。

(3) 表达用户兴趣演化过程。用户的兴趣迁移有一定的内在逻辑和关联,比如用户购买了手机,通常会继续购买手机壳和贴膜等。通过用户行为序列,可以清晰的观测到这一变化过程,有利于捕获用户兴趣演化过程,从而更精准的预估其下一次购买行为。

(4) 捕捉用户实时兴趣。用户的点击和购买等行为,代表了其较强的兴趣倾向。用户点击了某件商品后,实时推荐与之相关的其他商品,通常能取得不错的效果。更重要的是,用户兴趣转瞬即逝,而且随时可能退出APP。因此捕获用户实时兴趣,并做出精准推荐十分重要。通过提升行为序列特征的实时性,有助于这一目标的达成。

用户历史点击过的各商品与候选商品相关性

3 行为序列建模的基本范式

行为序列建模,主要分为短序列建模和长序列建模两大研究方向。短序列建模主要有池化和序列化两种方案,如下:

(1) 池化。分为求和/最大/平均池化注意力池化两大类。求和/最大/平均池化,直接将行为序列特征向量,通过累加、求最大值和求平均等方法进行压缩,典型代表就是YouTubeDNN模型。这一方法十分简单,计算速度快,但缺少了与候选物品的特征交叉,无法做到“千物千面”,同时没有考虑不同行为重要性的差异。以DIN为代表的注意力池化,则先计算各历史行为与候选物品的相关性权重,然后再加权求和。通过这种方式,可以有效克服求和/最大/平均池化的上述缺点。

求和池化建模行为序列

DIN:注意力池化建模行为序列

(2) 序列化。其本质思想是通过序列模型来建模用户行为和兴趣的演化过程,与NLP文本序列有一定的共通之处。主要分为循环神经网络Transformer网络两大类。DIEN通过GRU网络(RNN的一种实现)建立了行为序列层、兴趣抽取层和兴趣进化层,从而建模用户行为之间的关联和演化过程。BST和DSIN等模型则利用Transformer网络来实现序列建模,从而解决GRU的长程梯度衰减和无法并行计算等问题。

DIEN:GRU循环神经网络建模行为序列

BST:Transformer建模行为序列

基于Transformer的强大抽取能力和并行计算能力,其已成为目前序列建模的事实标准,目前短序列建模方向,Transformer已经成为了主流。长序列建模则在短序列的基础上,进一步探索用户更长期的兴趣,其难点在于巨大的计算和存储消耗,以及由此导致的线上推理延迟。

提升行为序列长度对提升模型AUC十分重要!!!

长序列建模主要分为离线法和在线法两种方案,如下:

(1) 离线法。将长周期行为序列先离线建模好,在线请求时直接调用,可以大大减少模型耗时,这就是离线法的核心思想。其典型代表是MIMN模型,它以独特的UIC工程模块设计、NTM记忆网络和MIU记忆归纳单元,打响了工业界长序列建模的第一枪。离线法实现简单,但无法与候选物品特征交叉,难以做到“千物千面”。

MIMN:离线法建模长序列

(2) 在线法。针对离线法的缺点,在线法利用两阶段范式,来建模长序列。其先从用户长周期序列中,快速筛选出与候选物品相关的历史行为,然后再对得到的短序列进行建模。与推荐系统先召回后排序的思想一脉相承。在线法的重点为,如何快速而准确地筛选历史行为。SIM模型通过候选物品的类目进行硬检索( Hard-search),另外还构建了一个辅助模型进行软检索(Soft-search)。ETA则利用SimHash和海明距离,进一步加快了筛选速度。从而在线构建Top-K近邻索引,保证两阶段一致性。

SIM:在线法建模长序列

ETA:在线法,索引也实现了在线化

4 行为序列建模的主要难点

用户行为序列建模同时也是推荐系统中落地难度较大的方向,其主要难点有:

(1) 实时性要求高。与其他静态和统计类特征(比如用户年龄和性别)不同,行为序列特征的实时性要求非常高。由于用户行为十分密集且瞬息万变,能否快速捕获其行为和兴趣,直接关系到行为序列建模的成败。通常行为序列特征需要达到秒级实时,而其他特征则小时级即可。这为特征工程体系带来了极大的挑战。

(2) 存储和计算消耗大。特别是长周期行为序列,其体积往往能占到所有特征的80%。同时随着序列长度增加,计算复杂度至少也是线性增加。这为线上推理耗时带来了极大的挑战。这一问题是长周期行为序列建模,贯穿始终的核心难点。

(3) 用户兴趣多样且易变。用户可能对多个品类的物品,均有一定的兴趣,且经常变化。同时用户点击等行为有一定的随机性,带来了较大的噪声。这为精准刻画用户兴趣带来了很大挑战。DIN通过计算候选物品和各历史行为的相关性,为用户各行为赋予了一定权重,有利于抽取集中兴趣,并能起到噪声过滤的作用。

后面有单独文章分别讲解DINDIENBSTDSINMIMNSIMETA等序列建模经典模型,可以学习它们是如何优化这些难点的。可以关注作者,谢杨易知乎主页

5 行为序列特征工程

行为序列建模的首要主题就是,有哪些行为序列,也就是行为序列特征工程。它作为模型的输入,是序列建模的基础。可以从有哪些特征正反馈和负反馈短期行为和长期行为,以及全场景建模四个方向,对其逐步丰富和完善。

一条序列中可以包括哪些特征呢?一般来说,肯定会包括被行为(如被点击)的物品ID。为了提升泛化能力,还可以将物品的各项属性特征加入进来,比如物品的品牌ID、卖家ID、类目ID和价格等。同时,还可以加入一些环境特征,比如该行为距离当前的时间。这些特征经过各自的Embedding转换后,拼接为一个向量。然后再和其他所有历史行为拼接起来,形成一个长向量。为了加快模型收敛,通常会让序列中的这些特征,共享主模型中对应特征的Embedding。

用户行为种类十分丰富,可以构建点击、购买、点赞和收藏等行为序列。它们表达了用户喜欢什么,属于正反馈。同时,还可以构建不喜欢和曝光未点击等负反馈序列,从而表达用户不喜欢什么。需要注意的是,通常曝光未点击行为十分密集,序列长度很大,而且充满了噪声,对其建模具有很大挑战。

时间周期上看,可以分为Session内行为短期行为长期行为三种。Session内行为兴趣十分集中,而长期行为兴趣则多样性强。同时建模三者,可以捕获不同时间跨度下用户的兴趣分布,有利于提升模型表达能力。

最后,全场景建模也十分重要。可以既构建用户在推荐场景的行为序列,又构建用户在搜索等其他场景的行为序列,从而获取用户完整的兴趣变化。更进一步的,如果能挖掘兄弟APP,甚至竞争对手APP上的用户行为,那就更好了。

6 总结

用户行为序列建模是推荐算法中至关重要的一环,也是目前较为核心和前沿的研究方向。其主要分为短序列建模和长序列建模两大方向。短序列建模又主要分为池化和序列化两种方式,其中池化包括求和池化、平均池化和最大值池化等非特征交叉型,和以DIN为代表的注意力池化。序列化则包括以DIEN为代表的RNN型,和以BST、DSIN等为代表的Transformer型。目前基于Transformer强大的特征抽取和并行计算能力,Transformer型已经成为了短序列建模的主流。

长序列建模则更进一步,考虑如何挖掘用户长期兴趣。其主要分为离线法和在线法两大类。离线法以MIMN为代表。它通过独特的工程设计,将长周期行为序列先离线建模好,在线请求时直接调用,大大减少了模型耗时,从而满足上线需求。在线法以SIM和ETA为代表,它们基于两阶段范式,先搜索出长序列中与当前候选物品相关的行为,得到一个短序列,再基于Transformer等短序列建模方法,得到最终的序列表征。

用户行为序列建模是推荐系统中的重点和难点,目前越来越多的公司在这个方向投入重兵,并取得了非常不错的业务效果。同时,其与NLP中的文本序列建模一脉相承,有不少共同点,很多思想和方法可以相互借鉴。

7 作者新书推荐

历经两年多,花费不少心血,终于撰写完成了这部新书。

购书方式:新书发布,京东限时15天内5折优惠。原价89,现价44.5,一杯咖啡的价钱。

发货速度:京东自营,半天即可送到。

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

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

售后:支持京东七天无理由退货,售后无忧。

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

《精通推荐算法:核心模块+经典模型+代码详解》(谢杨易)【摘要 书评 试读】- 京东图书

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

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

相关文章

信号处理中简单实用的方法

最小二乘法拟合消除趋势项 消除趋势项函数 在MATLAB的工具箱中已有消除线性趋势项的detrend函数;再介绍以最小二乘法拟合消除趋势项的polydetrend 函数。 函数:detrend功能:消除线性趋势项 调用格式:ydetrend(x) 说明:输入参数x是带有线性趋势项的信号序列,输出…

OrangePi Kunpeng Pro 开发板测评 | AI 边缘计算 大模型部署

0 前言 此次很幸运能够参与 OrangePi Kunpeng Pro 开发板的测评,感谢 CSDN 给予这次机会。 香橙派联合华为发布了基于昇腾的 OrangePi Kunpeng Pro 开发板,具备 8TOPS 的 AI 算力,能覆盖生态开发板者的主流应用场景,具备完善的配…

这些项目,我当初但凡参与一个,现在也不至于还是个程序员

10年前,我刚开始干开发不久,我觉得这真是一个有前景的职业,我觉得我的未来会无限广阔,我觉得再过几年,我一定工资不菲。于是我开始像很多大佬说的那样,开始制定职业规划,并且坚决执行。但过去这…

使用C语言openssl库实现 RSA加密 和 消息验证

Q:什么是RSA? A:RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,是最早的一种用于公开密钥加密和数字签名的算法。它使用一对公钥(public key)和私钥(private key&…

小阿轩yx-Shell编程之正则表达式与文本处理器

小阿轩yx-Shell编程之正则表达式与文本处理器 正则表达式 (RegularExpression,RE) 正则表达式概述 正则表达式的定义 又称 正规表达式常规表达式 代码中常简写为 regex、regexp 或 RE 正则表达式 使用单个字符串来描述、匹配一系列符…

社会网络,生态网络,贸易网络,复杂网络边介数蓄意和随机攻击(增边策略)

网络分析工具使用说明 简介 本工具是一个用于进行网络分析的客户端应用。用户可以加载包含网络边信息的Excel文件,根据设定的百分比增加网络边,并将结果导出为新的Excel文件。以下是详细的使用说明。 使用步骤 1. 加载输入文件 输入文件: 输入文件…

大数据技术分享 | Kylin入门系列:基础介绍篇

Kylin入门教程 在大数据时代,如何高效地处理和分析海量数据成为了企业面临的挑战之一。Apache Kylin作为一个开源的分布式分析引擎,提供了Hadoop之上的SQL查询接口及多维分析(OLAP)能力,使得对超大规模数据集的分析变…

4月平板电脑行业线上销售数据分析

由于全球科技发展趋势,如AI技术的应用,以及厂商新品发布计划;同时,平板电脑作为个人电脑的延伸产品,其便携性和生产力相较于手机具有明显优势,这也为行业的进一步发展提供了动力。 据鲸参谋数据统计&#…

【PB案例学习笔记】-12秒表实现

写在前面 这是PB案例学习笔记系列文章的第11篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…

安卓赤拳配音v1.0.2Ai配音神器+百位主播音色

Ai配音神器 本人自用版本!超级稳定!百位主播音色 登陆即可用 链接:https://pan.baidu.com/s/1WVsrYZqLaPAriHMMLMdPBg?pwdz9ru 提取码:z9ru

如何编写高效的单片机代码?

单片机的程序比软开少一些,真正想编写出高效的代码,还是要积累很多年的。 在做研发工程师的10年里,我经历过几个公司,看过很多工程师写的代码,但真正能让我跪着看完的,极少。哪怕是大厂工程师,也…

装机必备——截图软件PixPin安装教程

装机必备——截图软件PixPin安装教程 软件下载 软件名称:PixPin 1.5 软件语言:简体中文 软件大小:30.1M 系统要求:Windows7或更高, 64位操作系统 硬件要求:CPU2GHz ,RAM2G或更高 下载通道①迅…

断开自定义模块与自定义库的链接

断开自定义模块与自定义库的链接 1、断开模块与库的链接 1、断开模块与库的链接 如果摸个库文件添加到模型中,无法“Disable Link”时,可以使用save_system命令进行断开到模型中用户定义的库模块的链接; 参考链接: 传送门 save…

软件无线电学习-发射机体系结构

本文知识内容摘自《软件无线电原理和应用》 软件无线电主要由发射机和接收机两大部分组成。软件无线电发射机的主要功能是把需发射或传输的用户信息(话音、数据或图像)经基带处理(完成诸如FM、AM、FSK、PSK、MSK、QAM 等调制)和上变频,调制到规定的载频(中心频率)上…

leetCode-hot100-数组专题之子数组+二维数组

数组专题之子数组二维数组 子数组238.除自身以外数组的乘积560.和为K的子数组 二维数组48.旋转图像 子数组 数组的子数组问题是算法中常见的一类问题,通常涉及到数组的连续元素。在解决这类问题时,常用的方法有前缀和、滑动窗口、双指针,分治…

SAP 没有项目类别表存在(表 T184L LF LEIH CHSP)

在项目上,客户在废品出库的时候,出现这个报错 查了相关资料,是因为后台确少配置:IMG-后勤执行-装运-交货-在交货时定义项目类别确定

敏感数据的授权和传输加密解决方案

需求背景:解决敏感数据的访问授权和安全传输。 KSP密钥管理系统结合USB Key实现CA证书签发的过程可以大致分为以下几个步骤: 1. 生成密钥对: 用户首先使用USB Key生成一对密钥,包括公钥和私钥。公钥用于加密和验证数字签名&…

Keil5 ~STM32报错Solutions#1

一、error: #268: declaration may not appear after executable statement in block

STM32的时钟介绍

目录 前言1. 简介1.1 时钟是用来做什么的1.2 时钟产生的方式 2. 时钟树的组成2.1 时钟源2.1.1 内部时钟2.1.2 外部时钟 2.2 PLL锁相环2.3 SYSCLK2.4 AHB和HCLK2.5 APB和PCLK2.6 总结 3. STM32时钟的如何进行工作4.我的疑问4.1 使用MSI和HSI有什么区别吗?4.2 MSI的频…

tensorrt输出结果为nan的解决方案

系统环境: ubuntu20.04 python3.9 cuda11.8 cudnn8.9.7.29 torch1.13.1cu117(pip install torch1.13.1) 1.针对cuda版本查了一下trt支持版本,发现V10和V8版本都支持 本着用新不用旧标准,果断下载了8.6&#xff0c…