从顶会论文看2022年推荐系统序列建模的趋势

2022-11-11 10:46:20 浏览数 (1)

©作者 | 猫的薛定谔

最近看了 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),混合序列(不仅仅是点击序列),最真实地还原用户做选择的环境,推理用户在段内的点击逻辑,分析用户的选择心理。

0 人点赞