#论文题目:【序列推荐】RETR:Recommender Transformers with Behavior Pathways(RETR:具有行为路径的推荐transformer)
#论文地址:https://arxiv.org/abs/2206.06804
#论文源码开源地址:暂无
#论文所属会议:ICKM 2022
#论文所属单位:清华大学软院、阿里巴巴
在这里插入图片描述

一、摘要/挑战

序列推荐中,只有一小部分关键行为可以演变成用户未来的行为不同的用户有其独特的行为路径;然而传统的DIN/DIEN/Transformer等无法摆脱其他无关行为带来的负面影响,使得最终的预测被每个用户的琐碎行为所淹没;SIM可以从一定程度上解决该问题,但是仍然不够soft。


但是:

  • 本次仅仅是一个对序列小的局部模块的创新,简单新颖;
  • 对比Base实验2018年SASRec和2019年BERT4Rec,对比实验不够新且距离落地有差异,把工业场景中的大量连续统计、交叉特征全部隐藏或去除了

传统做法的弊端:

序列推荐要求推荐者从记录的用户行为数据中获取不断变化的行为特征,以便进行准确的推荐。然而,用户行为序列被视为一个多个正在进行的线交织在一起组成的路径。我们发现,只有一小部分关键行为可以演变成用户未来的行为

  1. 因此,用户未来的行为很难预测。我们将每个用户连续行为的这一特征归纳为行为路径不同的用户有其独特的行为路径。在已有的序列模型中,transformer在捕获全局相关特征方面表现出了很大的能力,所以此模型是在传统Transformer上进行改进的。

  2. 然而,已有的模型们主要是利用自我注意机制在所有之前的行为上提供一个密集的分布,使得最终的预测被没有调整到每个用户的琐碎行为所淹没(可以看成是引入了琐碎行为的噪声)


为了表明上述弊端是真实存在的,作者针对现阶段传统序列中总结出了三种范式:有关系的行为路径、偶然行为途径、漂移行为路径
在这里插入图片描述
3. correlated behavior pathway: 用户的行为路径与特定时期的行为密切相关;比如,最近鼠标被点击了很多次,导致最终决定购买鼠标。
4. casual behavior pathway: 用户的行为路径是在休闲时间对特定物品感兴趣; 比如,背包按顺序随机点击。
5. drifted behavior pathway: 用户在特定品牌中的行为路径可能会随着时间的推移而变化; 比如,用户最初对键盘感兴趣,但突然间对购买手机产生了兴趣。


二、模型结构

所以,作者针对上述问题,提出了RETR模型,该模型可以动态规划每个用户指定的行为路径,并通过该行为路径有节制地激活网络,从而有效地捕捉到对推荐有用的进化模式。关键设计是一个可学习的二进制路由,以防止行为路径被琐碎的行为所淹没

在这里插入图片描述
可以看到,上图分为两部分。左侧为二进制路由生成过程,右侧为作者改进传统的Transformer的过程。


在这里插入图片描述
上述为模型总体公式表达(可以忽略),提到他只是证明该方法是在Transformer上进行改进的。


模型的输入和SASRec等模型一样,先设定一个滑动窗口,使得每个序列的输入都是同样的形状,之后将序列的位置信息融入进初始化的item向量中。(第一项是item的向量表征,第二项是位置信息, X X X是最终经过预处理得到的向量表征)
在这里插入图片描述

2.1 左侧的路径选择

给定一个用户交互序列,我们是要有选择性的得到序列中的商品(而不是将全部序列商品进入到模型中训练),

2.1.1路径路由器

路径路由器采用序列自适应路径路由器为用户定制行为路径路由,路由器生成一个二进制路由 R R Rl∈{0, 1}N为了确定行为标记是否是行为路径的一部分。每个路由器由其上一步骤生成的 R R R(l-1)与用户的行为序列 Z Z Z(l) R \R Rn×d作为输入。
在路线生成中纳入全局信息至关重要。所以论文将此阶段保留的行为(item embedding)取均值并通过归一化原理,经过MLP和此阶段的items做Hadamard乘积并加到此阶段保留的行为(item)上,最终所得的 Z Z Zembl是经过遮盖修正后的序列表征。
在这里插入图片描述
之后我们将修正得到的 Z Z Zembl经过MLP和Softmax函数将其变成N×2维的数组(N为当前序列的长度——包含的item的个数),将其命名为 Π Π Π。这个 Π Π Π就是经过有选择性的遮蔽后得到的0/1二进制路由。
在这里插入图片描述
其中 Π Π Π因为是二进制分布的,所以对于t∈{1, 2, …, N},使 Π Π Πt=[1-αt, αt],α表示为行为路径保留第t个行为(item)标记的概率。


那么我们对于 Π Π Π是怎么修正训练的呢?文章说采用了Gumbel-Softmax方法,进行修正。(详细部分就不再细说了,直接上图,有兴趣的读者可以查看上述超链接)
在这里插入图片描述
最后我们要得到的 R ^ \hat{R} R^lt∈{0, 1}就可以近似等于 v v vt此步骤我们得到的二进制编码 R ^ \hat{R} R^l就是每个序列中item的遮盖信息。


Π Π Π中进行取样得到的 R ^ \hat{R} R^l,我们要用他对序列中的item进行遮盖(一旦某个item未能在某个块中被路由激活,它将永久失去在随后的前馈过程中成为行为路径的一部分的表征,从而构成分层路径路由器策略)。最后我们准确表达路线 R R Rl为下述。
在这里插入图片描述

2.2 多头注意力机制

大体上还是遵循Q、K、V原则,只不过文章中的查询向量矩阵Q也是加上了遮盖后的生成的。
在这里插入图片描述
下面是对各个参数的描述,就不细说了。
在这里插入图片描述

三、预测层

上面不是得到了每个item的embedding了吗,我们用该embedding和在t时间中第L层RETR模型的输出相乘。
在这里插入图片描述

损失函数就是点对损失函数。
在这里插入图片描述

四、实验数据及结果

在这里插入图片描述

五、概述

在这里插入图片描述

GitHub 加速计划 / tra / transformers
130.24 K
25.88 K
下载
huggingface/transformers: 是一个基于 Python 的自然语言处理库,它使用了 PostgreSQL 数据库存储数据。适合用于自然语言处理任务的开发和实现,特别是对于需要使用 Python 和 PostgreSQL 数据库的场景。特点是自然语言处理库、Python、PostgreSQL 数据库。
最近提交(Master分支:3 个月前 )
13493215 * remove v4.44 deprecations * PR comments * deprecations scheduled for v4.50 * hub version update * make fiuxp --------- Co-authored-by: Marc Sun <57196510+SunMarc@users.noreply.github.com> Co-authored-by: Arthur <48595927+ArthurZucker@users.noreply.github.com> 5 天前
8d50fda6 * Remove FSDP wrapping from sub-models. * solve conflict trainer.py * make fixup * add unit test for fsdp_auto_wrap_policy when using auto_find_batch_size * put back extract_model_from_parallel * use transformers unwrap_model 5 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐