©作者 | 猫的薛定谔
最近看了 22 年几篇顶会的序列建模的文章,模型无不复杂高深,但细细看后,发现这些文章本质上均是输入的变化,模型只为了配合输入。看看最近的顶会是怎么玩的吧。
背景
序列建模的目的是从用户的历史行为中挖掘用户的兴趣,进而给用户推荐感兴趣的物品。 第一篇是我认为的开山之作——阿里的 DIN,模型结构如下图所示。该论文认为在选择 target item 时,user behaviors 中的 item 应该具有不同的权重,并采用了 target-attention 的方式计算权重。DIN 的 user behavior 是一个一维的 item 序列,emb 之后多一个 emb 维度,希望大家能记住这种输入格式,后面的算法就是在丰富这种格式。
第二篇是长序列的经典文章——阿里的 SIM,模型结构如下图所示。在 DIN 的基础上,将用户行为序列变长 ,如果计算资源允许,无脑采用 DIN 的方式也未尝不可。回到 SIM,论文是这么做的:依旧保留短期行为序列,采用 DIEN(DIN 的一种变体)的方式提取用户短期兴趣;长序列则采用两阶段方法,召回得到 topk 个 item 后,再计算 target-attention。
插句题外话,阿里的 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,模型结构如下图。
具体的计算过程: 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。
玩法二:序列加宽
Triangle Graph Interest Network for Click-throughRate Prediction 论文链接:
https://arxiv.org/pdf/2202.02698.pdf 序列再长也只是这一个用户的序列,这篇论文直接从别的用户的行为中寻找 item。用所有用户的行为序列构建一个 item 图,图上的每个节点都是一个 item,item 有边代表有用户依次点击过这两个 item。 本文首先定义了一个图上的 triangle,triangle 的定义不是重点,可以把 triangle 简单的理解为图上的邻居 。
TGIN 的模型结构如下图,看着复杂,其实很简单。下图中的红框部分就是一个类似于 DIN 的计算 attention 的网络,左边是处理 triangle 的,有边是计算多阶 triangle(理解为图上的多阶邻居)attention 的网络。
▲ TGIN
某阶的 TriangleNet:每一阶会有多个 triangle,每个 triangle 会有 3 个 item,所以就先内部聚合(intra),简单的 avg pooling;再外部聚合(inter),multi-head self-attention。
▲ TriangleNet
玩法三:序列分段并加标签
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 是经过过滤的,将其限制在与当前查询向量同类别的范围内。
重点解释一下兴趣回溯层,即上图中的绿色部分。一般的模型只注重了长期兴趣与 target item 的相关性,而忽略了短期兴趣的一致性。具体到这篇论文,短期兴趣指的就是每个 page 所代表的兴趣。 在这一层引入了一个用户当前兴趣的查询向量 (这是一篇搜索的文章,所以有查询向量),其余的 不再是真正的查询向量,而是 attention query vector。attention query vector 通过 GRU 一层一层往左传,影响 page 内的 attention 计算。
总结
玩法一:加 item 的属性。这个属性的选择非常有讲究, 得是变化的、且用户非常敏感的 ,比如价钱、比如补贴;不能是那种无关痛痒的属性。 玩法二:加更多的 item,不过不是加长,而是通过图(本质是通过其他用户),引入一些用户以前没见过(或没交互过)但可能感兴趣的 item;这种加 item 的方式可以离线完成,可以用一些“高大上”的方法吹牛逼。个人感觉,这种方法有效的本质是 学习了更多的共现关系 。之前在给 user 选择 poi 时,只学习了 user 自己历史内的 poi 的共现关系;通过某种合理的方式(如其他用户的历史行为)引入更多共现关系可以拓宽模型的视野。 玩法三:序列分段(分 page、分 session),混合序列(不仅仅是点击序列),最真实地 还原用户做选择的环境 ,推理用户在段内的点击逻辑,分析用户的选择心理。
#投 稿 通 道 #
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读 ,也可以是学术热点剖析 、科研心得 或竞赛经验讲解 等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品 ,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬 ,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱: hr@paperweekly.site
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02 )快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」 也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」 订阅我们的专栏吧