推荐系统遇上深度学习(一四三)-[快手]一致性终身用户行为建模方法TWIN

news2024/12/29 0:23:05

fa98b787b57856148138f0c58bdeb491.jpeg

标题:《TWIN: TWo-stage Interest Network for Lifelong User Behavior Modeling in CTR Prediction at Kuaishou》
链接:https://arxiv.org/pdf/2302.02352.pdf

今天给大家分享的是快手近期发表的终身行为序列建模上的工作,当前工业界主流的方法大都是两阶段的方法,如SIM、ETA和SDIM,这些两阶段的方法面临的主要问题是阶段一致性问题,即一阶段筛选出的行为,并不一定是二阶段所认为的高度相关的行为。如果一阶段不能精确的筛选行为,那么无论二阶段如何设计良好的attention机制,其效果也只能是次优的。论文从这个角度出发,提出了两阶段一致的终身行为序列建模方法,称为TWIN(TWo-stage Interest Network)。接下来,一起了解一下。

1、背景

从用户的行为序列中准确建模用户的兴趣,已经成为CTR预估中的一个重要研究方向。其中一条重要的研究主线就是如何不断扩充用户的行为序列长度,从长度几十到几百,再到几千最终到终身行为序列建模。用户的终身行为序列能够更有效捕捉用户的长期兴趣,但也带来了计算耗时问题。因此业界大多数终身行为序列建模的方法采取一种两阶段的范式:GSU和ESU。

General Search Unit (GSU):从终身行为序列中快速挑选一小部分历史行为,如SIM-Hard按照简单的规则方式,挑选与target item品类相同的item;SIM-Soft通过预训练的embedding和内积进行item的筛选;ETA通过simhash和hamming distance进行相关性的筛选等等。
Exact Search Unit (ESU):通过高效的Target Attention(TA),建模从GSU筛选出的item与target item的相关性,得到用户的兴趣表示。

这种两阶段架构的研究重点为如何精确的从长用户行为序列中筛选出少量的item用于第二阶段的建模,上述所提及的工作均从相关性角度对item抽取,从SIM到ETA,实现了两阶段的端到端的建模,但论文认为,光有端到端是不足够的,还有很关键的一点是两阶段的一致性,即GSU筛选出的item也必须是ESU认为更相关的。如果GSU不能精确的筛选item,那么无论ESU如何设计良好的attention机制,其效果也只能是次优的。如下图所示,蓝色线为ESU认为最相关的top100的item,橙色线是SIM-Hard所认为的最相关的100个item,当SIM-Hard筛选100个时,只包含40个ESU所认为的最相关item。

0e496b7031f7e33936fc59f1a2f30b82.jpeg

为了解决上述提到的一致性问题,一种思路是如何提升TA的计算效率,即从数百个序列长度扩展到数万个序列长度。沿着这个思路出发,论文提出了两阶段一致性的终身行为序列建模方法,称为TWIN(TWo-stage Interest Network),下一节,将会对TWIN进行详细介绍。

2、方法介绍

2.1 整体结构

TWIN的整体结构如下图所示:

0a96c67669841734a53459fa1f22adf2.jpeg

从图的右边可以看到,Embedding层之后,有三部分输入到后续的MLP层,分别是:
1)Short-term behavior modeling/TWIN:即论文重点优化的一致性终身行为序列建模方法,包含两个子模块,CP-GSU和ESU,这两部分将在后文进行详细介绍,这里不再展开
2)Short-term behavior modeling:从用户最近期的50个行为中建模用户的短期兴趣
3)Others Task Modelings:除用户行为建模外的一些信息,包含用户的一些属性信息、target item的属性信息以及一些上下文信息。

接下来,重点介绍TWIN的内容。

2.2 TWIN

为了精确建模用户的兴趣,用户行为通常通过Multi-Head Target Attention(MHTA)进行建模,由于MHTA计算复杂度较高,为满足工业耗时的要求,MHTA输入的用户行为长度通常限制在几百个。而TWIN解决的关键问题是,如何提升MHTA的计算效率,从数百个序列长度扩展到数万个序列长度。为此,论文提出了特征拆分和线性映射的思路。

2.2.1 特征拆分和线性映射

MHTA计算分析

提升Multi-Head Target Attention计算效率的一个思路是能否减少其计算量,将其中的一些计算提前算好并进行存储?MHTA涉及到Q、K、V的计算,以及Q、K的attention的计算,以及attention和V的计算几个过程。那么我们来分析下哪些是线上推理可以减少的计算过程。
1)Q的计算依赖于target item,这块肯定是线上推理所必须的,不可减少,但只用计算一次。
2)K的计算如果包含一些用户相关的特征如user-item的交叉特征等,是不能减少其线上推理计算量的,但如果特征中全是item自身的特征,不包含用户以及上下文信息,那么这块是可以提前计算并进行存储的,线上直接抽取即可。从这个角度出发,论文提出了特征拆分的思路。
3)V的计算可以放在attention计算之后,即放在ESU阶段,只对attention score最高的top行为计算即可,同时无需进行特征拆分。
4)attention计算:内积的方式,这部分耗时其实和SIM-soft是一样的
5)attention和V计算的到用户兴趣表示:ESU阶段计算,暂不考虑。

从上述分析可以看出,主要的优化思路是,通过特征拆解和线性映射,快速计算Q和K的attention score。

特征拆分

特征拆分的主要思路是将item的特征拆解为item的固有属性Kh如item id、作者、主题等和item-user交叉特征Kc如用户的观看时长等。对于固有属性,可以提前计算KhWh并进行存储,线上推理不再进行额外计算;对于交叉特征,通过简单的线性映射,作为偏置项加入到最终的attention score中。特征拆分和attention score的计算如下:

ee46f4f4bb8168a63daf109222973398.jpeg

5f0ae3824d3e1bfabacdf23d729ce325.jpeg

通过上述的两部分来计算attention score,兼顾了相关性和用户的兴趣程度:
1)对于target item,只能拿到固有属性信息,而user-item的交互信息属于穿越特征,线上无法获取。因此第一部分只使用固有属性信息,这可以看作是从相关性角度计算attention score,如品类、作者是否相同。
2)第二部分偏置项可以看作是从用户的兴趣程度出发,计算attention score,如两个相关性相同的视频(如作者、时长、类型相同),用户观看时间长的视频是用户更加感兴趣的,那么优先筛选观看时长长的视频。

2.2.2 Target Attention

计算得到attention score之后,可以筛选出top的行为,并计算最终的用户兴趣向量表示,该过程仅计算top的行为,不需要再对特征K进行拆分。计算如下:

5f1ca5d47235de7a7e0741a5213ece84.jpeg

上述是从单头的角度进行介绍,TWIN最终使用4个head的MHTA:

fb5a472ee60fe1934892019fd8814453.jpeg

TWIN的相关介绍就到这里,出于篇幅考虑,时间复杂度和部署部分就不再进行介绍,前文或多或少都已经有所提及,感兴趣的同学可以阅读原文。

3、实验结果

最后来看下实验结果,首先是与Base模型的AUC指标对比:

a513b99bcf6ba94c419f7e5a1ee1d298.jpeg

接下来看下一致性指标的对比,TWIN对比SIM有了大幅度的提升(好奇为什么没有贴ETA的对比):

5a570c24ca54e61b7739a8efb6b8bca6.jpeg

好了论文就介绍到这里,整个论文的思路还是较为清晰,也是给了很多在用户行为序列建模上的启发,感兴趣的同学可以阅读原文~~

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

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

相关文章

一文打通计算机字符编码

有关编码的基础知识 1. 位 bit 最小的单元 字节 byte 机器语言的单位 1byte8bits 1KB1024byte 1MB1024KB 1GB1024MB 2.进制 二进制 binary 八进制 octal 十进制 decimal 十六进制 hex 3.字符 字符:是各种文字和符号的总称&#x…

Linux 自带的 LED 灯驱动实验

目录 一、配置内核 二、设备树节点编写 1、确定compatible 属性值 2、编写节点 三、验证 测试 其实 Linux 内核已经自带了 LED 灯驱动,要使用 Linux 内核自带的 LED 灯驱动首先得先配置 Linux 内核,使能自带的 LED 灯驱动。 一、配置内核 在Linux内…

【LeetCode】剑指 Offer(10)

目录 题目:剑指 Offer 27. 二叉树的镜像 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 题目:剑指 Offer 28. 对称的二叉树 - 力扣&#xff0…

【人脸识别】FROM:提升遮挡状态下的人脸识别效果

论文题目:《End2End Occluded Face Recognition by Masking Corrupted Features》 论文地址:https://arxiv.org/pdf/2108.09468v3.pdf 代码地址:https://github.com/haibo-qiu/from 1.前言 人脸识别技术已经取得了显著的进展,主要…

几个开源 RUST 安全算法库

这段时间把 RUST 语法过了一遍,写一些简单的 Demo 程序没啥问题了,但离掌握这门语言还差的远,需要项目实战才行。我决定从之前研究过的国密算法入手,使用 RUST 实现国密算法。从头编写算法不太现实,上网搜了一下&#…

pandas数据分析36——快速独热和反独热处理

做数据预处理的时候,很多文本分类变量需要变为数值型。 下面提供一些方法,就以最经典的泰但尼克号数据集作为例子。 先导包读取数据 import numpy as np import pandas as pd datapd.read_csv(train.csv) datadata.drop(columns[Name,Ticket,Cabin],…

jmeter报错: java.io.EOFException: Unexpected end of ZLIB input stream

一、背景: 1.1 报错信息 java.io.EOFException: Unexpected end of ZLIB input stream at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:240) at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158) at java.util.zip…

分割线-----

各位好,之前的文章就不再回复和更新了,都是大学的时候随便玩玩的。真的不能算学术研究。致敬过去的自己。努力真的可以幸福!虽然还是一样在搬砖!

Allegro如何快速锁定整板测试点操作指导

Allegro如何快速锁定整板测试点操作指导 在做PCB设计的时候,会需要给整板添加测试点,用于飞针测试,如下图 在测试点添加好之后,文件输出之前需要把测试点全部锁定,避免因为测试点模具开好,测试点被移动的情况出现 如果逐个锁定Via,容易遗漏 Allegro支持快速锁定整板测…

计算机网络高频知识点(一)

目录 一、http状态码 二、浏览器怎么数据缓存 三、强缓存与协商缓存 1、强缓存 2、协商缓存 四、简单请求与复杂请求 五、PUT 请求类型 六、GET请求类型 七、GET 和 POST 的区别 八、跨域 1、什么时候会跨域 2、解决方式 九、计算机网络的七层协议与五层协议分别指…

华纬科技冲刺A股上市:毛利率下降幅度较大,金雷为实控人

近日,华纬科技股份有限公司(下称“华纬科技”)递交招股书,准备在深圳证券交易所主板上市。本次冲刺上市,华纬科技计划募资4.34亿元,将用于新增年产8000万只各类高性能弹簧及表面处理技改项目、高精度新能源…

经验之谈——指标异常了怎么办?

本文参考了数据万花筒的文章,结合我自己工作经验。希望给大家一些帮助。 指标异常排查,是数据分析师的工作重点之一,是各行各业数据分析师都绕不开的话题。 本文试图回答: 1、指标波动的影响因素有哪些? 2、如何快速…

Verilog 数据类型和数组简介

在这篇文章将讨论 verilog 中最常用的数据类型,包括对数据表示,线网类型、变量类型,向量类型和数组的讨论。尽管 verilog 被认为是一种弱类型语言(loosely typed),但设计者仍必须在 Verilog 设计中为每个端…

处理器管理

处理器状态处理器管理是操作系统中重要组成部分,负责管理、调度和分配计算机系统的重要资源——处理器,并控制程序执行由于处理器管理是操作系统最核心的部分,无论是应用程序还是系统程序,最终都要在处理器上执行以实现其功能&…

5.OCR文本识别CRNN算法

文章目录1.基础介绍2.CRNN模型结构2.1 特征提取2.2 双向循环神经网络层2.3 转录层(Transcription Layers)参考资料欢迎访问个人网络日志🌹🌹知行空间🌹🌹 title: 2.OCR文本识别Convolution Recurrent Neural Network toc: true ca…

记一次冲突的产生与解决

冲突的概念 git在使用中,如果遵循了它的使用的步骤,比如,在上班之前先去拉取,下班的时候,先提交,如果遵循这个步骤,一般在用的时候没有错误会产生的,但是,因为在开发的时…

Unity 之 实现读取代码写进Word文档功能实现 -- 软著脚本生成工具

Unity 之 实现读取代码写进Word文档功能前言一,实现步骤1.1 逻辑梳理1.2 用到工具二,实现读写文件2.1 读取目录相关2.2 读写文件三,编辑器拓展3.1 编辑器拓展介绍3.2 实现界面可视化四,源码分享4.1 工具目录4.2 完整代码前言 之所…

【SPSS】两独立样本T检验分析详细操作教程(附案例实战)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

消除“马路黑洞”,计讯物联智能井盖综合管理系统平台有绝招

窨井盖作为市政公用设施的重要组成部分,一旦出现松动、损坏等问题时,不仅会影响市容市貌,还会给道路上的车辆、行人带来安全隐患,对社会安定与安全造成极大负面影响。 痛点分析 01 由于地下管线错综复杂、窨井盖分布广泛,加之信…

Linux 进程:父子进程

目录一、了解子进程二、创建子进程1.创建子进程2.区分父子进程三、理解子进程四、创建子进程的意义进程就是运行中的应用程序,如果一个程序较为庞大,我们可以给这个程序创建多个进程,每个进程负责一部分代码的运行。 A进程如果创建了B进程&am…