当前位置:网站首页>从顶会论文看2022年推荐系统序列建模的趋势
从顶会论文看2022年推荐系统序列建模的趋势
2022-07-06 02:13:00 【kaiyuan_sjtu】
作者 | 猫的薛定谔
最近看了 22 年几篇顶会的序列建模的文章,模型无不复杂高深,但细细看后,发现这些文章本质上均是输入的变化,模型只为了配合输入。看看最近的顶会是怎么玩的吧。
背景
序列建模的目的是从用户的历史行为中挖掘用户的兴趣,进而给用户推荐感兴趣的物品。
先介绍两篇序列建模的经典文章。
第一篇是我认为的开山之作——阿里的 DIN,模型结构如下图所示。该论文认为在选择 target item 时,user behaviors 中的 item 应该具有不同的权重,并采用了 target-attention 的方式计算权重。DIN 的 user behavior 是一个一维的 item 序列,emb 之后多一个 emb 维度,希望大家能记住这种输入格式,后面的算法就是在丰富这种格式。
▲ DIN
第二篇是长序列的经典文章——阿里的 SIM,模型结构如下图所示。在 DIN 的基础上,将用户行为序列变长,如果计算资源允许,无脑采用 DIN 的方式也未尝不可。回到 SIM,论文是这么做的:依旧保留短期行为序列,采用 DIEN(DIN 的一种变体)的方式提取用户短期兴趣;长序列则采用两阶段方法,召回得到 topk 个 item 后,再计算 target-attention。
▲ SIM
插句题外话,阿里的 MIMN 已经证明,序列越长,auc 越高。
玩法一:序列加side info
这是 eBay 在 WSDM 2022 上的文章。
论文标题:
Sequential Modeling with Multiple Attributes for Watchlist Recommendation in E-Commerce
论文链接:
https://arxiv.org/pdf/2110.11072.pdf
之前的序列都只是 item 的序列,eBay 额外加了 item 的属性,比如价格;这个属性是变化的,例如当价格变动时,用户可能会感兴趣。
因此输入由一维序列变成了 2 维矩阵,对应的计算 attention 的方式也变成了 2D 的——attention2D,模型结构如下图。
▲ attention2D
具体的计算过程:
1. Embedding Layer——输入加了属性信息,是个 2D 的矩阵;embedding 之后多了 emb 维,shape 为 ,N 为序列长度,C 为属性个数;
2. 多了个属性维度后,emb 如何转变为 QKV 呢?本文对每种属性(也叫 channel) 进行相同的线性变换,即:
▲ Linear2D,i代表item,j代表属性
3. 那 2D 的 QK 如何计算 attention score 呢?本文介绍了 3 种粒度的计算方式: 是 4 维数据,代表了第 i 个 item 的第 j 个属性与第 个 item 的第 个属性的交互,是最细粒度的交互; 是 2 维数组,对 item 的所有 channel 求和,表示的是 item 维度的交互; 是 2 维数组,对 channel 的所有 item 求和,表示的是 channel 维度的交互。将这三种 score 加权求和就是最后的 score 了(加权系数也是学出来的)。
▲ 2D的attention score
4. 到目前为止,计算了 attention之后,输出仍有 2 维,属性维和 emb 维。降维处理是在 prediction layer 之前,对属性维进行 pooling,将仅剩的 emb 维松儒 mlp。
玩法二:序列加宽
本文是阿里在 WSDM 2022 上的文章。
论文标题:
Triangle Graph Interest Network for Click-throughRate Prediction
论文链接:
https://arxiv.org/pdf/2202.02698.pdf
序列再长也只是这一个用户的序列,这篇论文直接从别的用户的行为中寻找 item。用所有用户的行为序列构建一个 item 图,图上的每个节点都是一个 item,item 有边代表有用户依次点击过这两个 item。
本文首先定义了一个图上的 triangle,triangle 的定义不是重点,可以把 triangle 简单的理解为图上的邻居。
▲ triangle
TGIN 的模型结构如下图,看着复杂,其实很简单。下图中的红框部分就是一个类似于 DIN 的计算 attention 的网络,左边是处理 triangle 的,有边是计算多阶 triangle(理解为图上的多阶邻居)attention 的网络。
▲ TGIN
某阶的 TriangleNet:每一阶会有多个 triangle,每个 triangle 会有 3 个 item,所以就先内部聚合(intra),简单的 avg pooling;再外部聚合(inter),multi-head self-attention。
▲ TriangleNet
玩法三:序列分段并加标签
阿里 WSDM 2022
论文标题:
Modeling Users’ Contextualized Page-wise Feedback for Click-Through Rate Prediction in E-commerce Search
论文链接:
https://guyulongcs.github.io/files/WSDM2022_RACP.pdf
序列以 page 的形似分段,page 内不仅有点击 poi(正反馈),还有未点击 poi(负反馈),捕获页面内的 context 信息和页面间的兴趣演变。页面信息能学到什么?用户不点击可能不是因为不喜欢,而是页面中有一个同类型但更便宜的。
模型结构如下图。一般像这种两层结构的输入,模型也是有两层,一层提取页内信息(intra),一层聚合页间信息(inter)。这个模型有三层,中间加了一层 backtrack 层。还有一个细节,page 是经过过滤的,将其限制在与当前查询向量同类别的范围内。
▲ RACP
重点解释一下兴趣回溯层,即上图中的绿色部分。一般的模型只注重了长期兴趣与 target item 的相关性,而忽略了短期兴趣的一致性。具体到这篇论文,短期兴趣指的就是每个 page 所代表的兴趣。
在这一层引入了一个用户当前兴趣的查询向量 (这是一篇搜索的文章,所以有查询向量),其余的 不再是真正的查询向量,而是 attention query vector。attention query vector 通过 GRU 一层一层往左传,影响 page 内的 attention 计算。
总结
前面介绍了几种序列在输入侧的玩法。
玩法一:加 item 的属性。这个属性的选择非常有讲究,得是变化的、且用户非常敏感的,比如价钱、比如补贴;不能是那种无关痛痒的属性。
玩法二:加更多的 item,不过不是加长,而是通过图(本质是通过其他用户),引入一些用户以前没见过(或没交互过)但可能感兴趣的 item;这种加 item 的方式可以离线完成,可以用一些“高大上”的方法吹牛逼。个人感觉,这种方法有效的本质是学习了更多的共现关系。之前在给 user 选择 poi 时,只学习了 user 自己历史内的 poi 的共现关系;通过某种合理的方式(如其他用户的历史行为)引入更多共现关系可以拓宽模型的视野。
玩法三:序列分段(分 page、分 session),混合序列(不仅仅是点击序列),最真实地还原用户做选择的环境,推理用户在段内的点击逻辑,分析用户的选择心理。
一起交流
想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)
边栏推荐
- Have a look at this generation
- Know MySQL database
- 好用的 JS 脚本
- Comments on flowable source code (XXXV) timer activation process definition processor, process instance migration job processor
- 【coppeliasim】6自由度路径规划
- General process of machine learning training and parameter optimization (discussion)
- Publish your own toolkit notes using NPM
- 抓包整理外篇——————状态栏[ 四]
- RDD conversion operator of spark
- Global and Chinese markets for single beam side scan sonar 2022-2028: Research Report on technology, participants, trends, market size and share
猜你喜欢
[depth first search] Ji Suan Ke: Betsy's trip
Kubernetes stateless application expansion and contraction capacity
Concept of storage engine
Minecraft 1.18.1, 1.18.2 module development 22 Sniper rifle
Virtual machine network, networking settings, interconnection with host computer, network configuration
Minecraft 1.18.1、1.18.2模组开发 22.狙击枪(Sniper Rifle)
2 power view
Executing two identical SQL statements in the same sqlsession will result in different total numbers
【MySQL 15】Could not increase number of max_open_files to more than 10000 (request: 65535)
【clickhouse】ClickHouse Practice in EOI
随机推荐
Redis list
Install redis
Executing two identical SQL statements in the same sqlsession will result in different total numbers
Sword finger offer 12 Path in matrix
Redis daemon cannot stop the solution
更换gcc版本后,编译出现make[1]: cc: Command not found
Dynamics 365 开发协作最佳实践思考
Shutter doctor: Xcode installation is incomplete
Apicloud openframe realizes the transfer and return of parameters to the previous page - basic improvement
Derivation of Biot Savart law in College Physics
【机器人手眼标定】eye in hand
Using SA token to solve websocket handshake authentication
[width first search] Ji Suan Ke: Suan tou Jun goes home (BFS with conditions)
General process of machine learning training and parameter optimization (discussion)
Use image components to slide through photo albums and mobile phone photo album pages
[Clickhouse] Clickhouse based massive data interactive OLAP analysis scenario practice
Audio and video engineer YUV and RGB detailed explanation
Redis key operation
Ali test Open face test
Selenium element positioning (2)