首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >推荐系统中的常用算法——行为序列Transformer(BST)

推荐系统中的常用算法——行为序列Transformer(BST)

作者头像
felixzhao
发布于 2022-03-04 09:47:13
发布于 2022-03-04 09:47:13
5.7K0
举报
文章被收录于专栏:null的专栏null的专栏

1. 概述

Behavior Sequence Transformer(BST)算法是由阿里在2019年提出的算法,应用于淘宝推荐中的ranking阶段。在目前的推荐系统中,主流的深度学习方案,如WDL,并没有充分利用用户的行为序列(User’s Behavior Sequence),在BST算法中,利用Transformer充分挖掘用户的行为序列,实现对用户行为序列的建模。

2. 算法原理

BST算法的模型结构如下图所示:

在BST模型结构中,主要包括了三个部分:第一,特征的embedding层;第二,用户行为序列的Transformer层;第三,最终的MLP层。

2.1. Embedding层

Embedding层的结构如下所示:

从上图可以看出,在特征的Embedding层,主要包括三个部分:第一,其他的特征,主要包括用户画像特征,item特征,上下文特征以及交叉特征;第二,用户行为序列特征;第三,目标item的特征。

2.1.1. 其他特征

在其他特征部分,主要包括了用户画像特征,item特征,上下文特征以及交叉特征,具体特征形式在论文中也给出,如下所示:

将这些特征的embedding向量concat在一起,得到对应的embedding形式。

2.1.2. 用户行为序列和目标item

假设用户u 的行为序列为S\left ( u \right )=\left \{ v_1,v_2,\cdots ,v_n \right \} ,同时还包括目标item v_t 。对于每一个item(包括行为序列中的item以及目标item),包括两种类别的特征:第一,item的特征,如图中的红色部分;第二,位置特征,如图中的蓝色部分。对于item的特征,文章中指出使用的是item_id和category_id。为了使用Transformer刻画序列的特征,因此需要位置的特征,位置特征的计算方式为:pos\left ( v_i \right )=t\left ( v_t \right )-t\left ( v_i \right ) 其中,t\left ( v_i \right ) 表示item v_i 被点击的时间戳。

将item特征和位置特征concat在一起,得到对应item的embedding表示。

2.2. Transformer层

在Transformer层中使用Multi-Head Attention来学习目标item与用户行为序列中的item之间的相关关系。完整的Transformer指的是基于Attention机制的经典Encoder-Decoder框架,Transformer的框架结构如下图所示:

而在BST模型中,使用的是多个Multi-Head Attention结构,即Transformer的Encoding部分。Multi-Head Attention和Scaled Dot-Product Attention结构如下图所示:

其中,Scaled Dot-Product Attention的值为:Attention\left ( \mathbf{Q},\mathbf{K},\mathbf{V} \right )=softmax\left ( \frac{\mathbf{Q}\mathbf{K}^T}{\sqrt{d}} \right )\mathbf{V}

其中,\mathbf{Q} 表示的是查询,\mathbf{K}\mathbf{V} 分别表示的是键和值,在BST中, \mathbf{Q}\mathbf{K}\mathbf{V} 由用户行为序列和目标item的embedding的线性映射得到。

通过将Scaled Dot-Product Attention的结果concat在一起并通过线性变换得到最终的Multi-Head Attention结果:

\mathbf{S}=Concat\left ( head_1,head_2,\cdots ,head_h \right )\mathbf{W}^H

其中,head_i=Attention\left ( \mathbf{EW}^Q,\mathbf{EW}^K,\mathbf{EW}^V \right ) 。除了上述的Multi-Head Attention部分,在Transformer的Encoding部分,还包括了Point-wise Feed-Forward Networks(FFN)部分,FFN的目的是增加模型的非线性。为了防止模型的过拟合,在self-attention和FFN中都使用dropout和LeakyReLU,最终的self-attention和FFN为:

{\mathbf{S}}'=LayerNorm\left ( \mathbf{S}+Dropout\left ( MH\left ( \mathbf{S} \right ) \right ) \right )
\mathbf{F}=LayerNorm\left ( {\mathbf{S}}'+Dropout\left ( LeakyReLU\left ( {\mathbf{S}}'\mathbf{W}^{\left ( 1 \right )}+b^{\left ( 1 \right )} \right )\mathbf{W}^{\left ( 2 \right )}+b^{\left ( 2 \right )} \right ) \right )

通过堆叠多个上述的self-attention block,得到最终的多层结构,通过论文中的实验可知,只需要一层上述结构就能获得最好的结果,其可能的原因是用户行为序列间的依赖关系没有那么强。

2.3. MLP层以及损失函数

最终将其他特征的embedding以及Transformer的结果concat在一起,并通过三层的MLP得到最终的CTR预测。最终的损失函数为:

L=-\frac{1}{N}\sum _{\left ( x,y \right )\in D}\left ( y\log\; p\left ( x \right ) +\left ( 1-y \right )log\left ( 1-p\left ( x \right ) \right )\right )

其中,N 表示样本个数,D 表示所有的样本,y\in \left \{ 0,1 \right \} 表示的是label,p\left ( x \right ) 为模型的输出。

参考文献

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档