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

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选择和职业规划的问题,都可以咨询

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

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

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

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

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

相关文章

取代或转型?人工智能对软件测试的影响(内附工具推荐)

在当今快速发展的数字环境中,从移动App到基于Web的平台,软件已成为我们日常生活和工作不可或缺的一部分。然而,随着软件系统变得越来越复杂,如何确保其质量和可靠性已成为开发人员和测试人员所面临的一大重要挑战。 这就是软件测…

python探索时钟模拟之旅:从设计到实现

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、设计时钟类 三、代码实现 四、扩展功能:指定步数后自动停止 五…

<Transition> expects exactly one child element or component.

近日在vue中使用 Transition 标签是发生了如下报错: [plugin:vite:vue] expects exactly one child element or component. 原因: 仅支持单个元素或组件作为其插槽内容。如果内容是一个组件,这个组件必须仅有一个根元素。 原始代码&#xff1…

【产品经理】技术知识

引言:        在最近频繁的产品管理职位面试中,我深刻体会到了作为产品经理需要的不仅仅是对市场和技术的敏锐洞察,更多的是在复杂多变的环境中,如何运用沟通、领导力和决策能力来引导产品从概念走向市场。这一系列博客将分享…

应急通信保障之多链路聚合通信设备在应急救援实施中的解决方案

在当今信息化社会,应急通信保障已成为各类救援任务中不可或缺的一环。尤其在复杂多变的应急救援现场,如何确保通信畅通、信息传递及时,直接关系到救援行动的成败。近年来,多链路聚合通信设备以其独特的优势,逐渐在应急…

一款超好用的国产Redis可视化工具

一、简介 1、这是一款追求极致性能(它可以支持前面100万数据的展示。)海量数据下低内存占用、极简布局、高效交互、跨平台、支持反序列化Java字节码的redis可视化客户端工具。 支持三大操作系统Windows、MacOS、Linux,适合不同操作系统口味的…

网络延迟监控

网络中的延迟是指数据通过网络传输到其预期目的地所需的时间,它通常表示为往返延迟,即数据从一个位置传输到另一个位置所需的时间。 网络延迟(也称为滞后)定义为数据包通过多个网络设备进行封装、传输和处理,直到到达…

linux镜像虚拟机创建共享文件夹详细步骤 -- 和本地电脑传输文件

主机与虚拟机之间传递文件,最快捷的方法莫过于共享文件夹。此方法不需要复制文件,而且可以节省硬盘空间。 具体设置步骤如下: 打开自己的电脑,创建共享的文件夹,完成后鼠标右击刚刚创建的共享文件夹,选择…

《C语言深度解剖》(16):C语言的文件读写操作

🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多C语言深度解剖点击专栏链接查看&…

RTPS协议之Messages Module

目录 Messages ModuleType定义RTPS消息结构RTPS消息头子消息结构 RTPS消息接收者SubmessageElementsRTPS HeaderRTPS Submessages Messages Module RTPS Writer和RTPS Reader之间的交换数据的消息。 Type定义 TypePurposeProtocolId_tSubmessageFlagsub msg flagSubmessageK…

【c++】继承学习(三)菱形继承的挑战与虚拟继承的策略

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好,本篇文章来讲解继承的第三部分,有关多继承和菱形继承的内容 目录 1.菱形继承2.虚拟继承3.虚拟继承解决数据冗余和二义性的原理4.继承的总结和反思继承…

外汇天眼:PayPoint投资100万英镑,深化与Aperidata开放银行合作

PayPoint今日宣布对Aperidata Ltd进行100万英镑的投资,Aperidata是一家创新的消费者和商业信用报告及开放银行平台。 此交易将使PayPoint集团在两家公司之间现有的商业合作基础上更进一步,为包括政府、地方当局、慈善机构和住房协会在内的多个领域的客户…

Java 五种内部类演示及底层原理详解

内部类 什么是内部类 在A类的内部定义B类,B类就被称为内部类 发动机类单独存在没有意义 发动机为独立个体 可以在外部其他类里创建内部类的对象去调用方法 类的五大成员 属性 方法 构造方法 代码块 内部类 内部类的访问特点 内部类可以直接访问外部类的成员&a…

海外代理IP适用业务是哪些?

在当今数字化时代,互联网已经成为商业和个人生活不可或缺的一部分。IP代理作为出海业务的神器之一,备受跨境出海业务人员关注。IPFoxy动态、静态纯净代理IP也根据业务需求的不同,分为静态住宅、动态住宅、静态IPv4、静态IPv6四种类型代理。那…

基于Spring Cloud微服务架构的Java CRM客户关系管理系统源码

在当今竞争激烈的市场环境中,企业要想保持持续的增长和稳定的客户基础,高效管理客户关系显得尤为重要。CRM(客户关系管理)系统作为一种先进的管理工具,正逐渐成为企业不可或缺的一部分。该系统通过集成销售、市场、服务…

Tensorflow 2.0 安装过程

第一步:进入国内清华软件网站 anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirroranaconda 使用帮助 | 镜像站使用帮助 | 清华大学开源软件镜像站,致力于为国内和校内用户提供高质量的开源软件镜像、Linux 镜像源服务&…

WL-3500螺栓卧式拉力试验机

一、产品概述 微机控制卧式拉力试验机适用于额定试验力下的拉伸试验及恒负荷拉伸,主要用于高强螺栓等制品或材料的拉伸强度测试。 二、性能特点 本机采用计算机控制,具有力、位移自动跟踪测量加荷速率任意设定、试验力量程自动切换恒负荷拉伸负荷保持…

linux系统的逻辑卷管理及磁盘配额

目录 逻辑卷管理 磁盘配额 逻辑卷管理 lvm:logical volume manager 逻辑卷管理 linux系统下对硬盘分区的一种管理机制。 lvm机制特别适合于管理大存储设备,可以动态的对硬盘进行扩容。 逻辑上的磁盘,概念上的磁盘&a…

linux部署运维1——centos7.9离线安装部署web或java项目所需的依赖环境,包括mysql8.0,nginx1.20,redis5.0等工具

在实际项目部署运维过程中,如果是云服务器,基本安装项目所需的依赖环境都是通过yum联网拉取网络资源实现自动化安装的;但是对于一些特殊场合,在没有外部网络的情况下,就无法使用yum命令联网操作,只能通过编…

Redhat7.4部署MySQL-5.7.17搭建双主互为主从

一、准备工作 需要先准备已经搭建好的两台数据库,并且保证服务器之间网络是通的,3306端口可以相互访问。 二、修改两台数据库my.cnf 配置文件,将下列内容添加进去,放在 [mysqld] 下 我们暂定两台服务器为A服务和B服务&#xff…