BST

0 阅读6分钟

标题:阿里巴巴电子商务推荐中的行为序列 Transformer
单位:阿里
链接:Behavior Sequence Transformer for E-commerce Recommendation in Alibaba(2019.05)

摘要

基于深度学习的方法已被广泛应用于工业推荐系统。以往工作通常采用“嵌入与多层感知机”范式:先将原始特征嵌入为低维向量,再将其输入多层感知机,得到最终推荐结果。然而,这些工作大多只是简单拼接不同特征,忽略了用户行为的序列性质。

本文提出在阿里巴巴推荐系统中使用强大的 Transformer 模型,捕捉用户行为序列中蕴含的序列信号。实验结果证明了所提出模型的优越性。该模型随后被部署到淘宝线上系统,与两个基线相比,在线点击率(Click-Through Rate,CTR)取得了显著提升。

1 引言

过去十年中,推荐系统一直是最受工业界关注的应用之一;尤其在过去五年,基于深度学习的方法已广泛用于 Google、Airbnb 等公司的工业推荐系统。阿里巴巴是中国最大的电子商务平台,推荐系统是推动其商品交易总额(Gross Merchandise Volume,GMV)和营收增长的核心引擎,多种基于深度学习的推荐方法已经部署到丰富的电子商务场景中。

阿里巴巴的推荐系统采用由匹配和排序组成的两阶段流水线。在匹配阶段,系统根据用户曾经交互的物品选出一组相似物品;随后训练经过精细调优的预测模型,预测用户点击给定候选物品的概率。

本文关注阿里巴巴旗下中国最大消费者对消费者(C2C)平台淘宝中的排序阶段。在该场景中,系统面对数百万个候选物品,需要根据用户的历史行为,预测该用户点击候选物品的概率。

在深度学习时代,嵌入与 MLP 已成为工业推荐系统的标准范式:先将大量原始特征嵌入到低维空间,形成向量;再将其输入全连接层,即多层感知机(Multi-Layer Perceptron,MLP),预测用户是否会点击某个物品。代表性工作包括 Google 的 Wide & Deep Learning(WDL)网络和阿里巴巴的深度兴趣网络(Deep Interest Network,DIN)。

在淘宝中,我们基于 WDL 构建排序模型,并按照嵌入与 MLP 范式使用多种特征,例如物品的类别和品牌、物品的统计数值以及用户画像特征。尽管这一框架已经取得成功,它仍远不能令人满意,因为它忽略了实践中一类非常重要的信号,即用户行为序列中潜藏的序列信号,也就是用户依次点击过的物品。

事实上,行为顺序会影响对用户未来点击的预测。例如,用户在淘宝购买 iPhone 后,往往会点击手机壳;购买一条裤子后,则可能寻找合适的鞋。因此,在淘宝排序阶段部署预测模型时,如果不考虑行为顺序,就会产生问题。WDL 只是简单拼接所有特征,没有捕捉用户行为序列中的顺序信息。DIN 虽然提出使用注意力机制捕捉候选物品与用户此前点击物品之间的相似性,但没有考虑用户行为序列的序列性质。

为解决 WDL 和 DIN 面临的上述问题,本文尝试将用户行为序列中的序列信号引入淘宝推荐系统。受 Transformer 在自然语言处理机器翻译任务中巨大成功的启发,我们在嵌入阶段使用自注意力机制,结合序列信息为用户行为序列中的每个物品学习更好的表征;随后将这些表征输入 MLP,预测用户对候选物品的响应。

Transformer 的关键优势在于,它可以通过自注意力机制更好地捕捉句子中词语之间的依赖关系。直观而言,用户行为序列中物品之间的“依赖关系”同样可以由 Transformer 提取。因此,我们提出面向淘宝电子商务推荐的用户行为序列 Transformer(Behavior Sequence Transformer,BST)。离线实验和在线 A/B 测试均表明,BST 优于现有方法。BST 已经部署到淘宝推荐的排序阶段,每天为中国数亿消费者提供推荐服务。

本文其余部分组织如下:第 2 节详细介绍模型架构;第 3 节给出离线和在线实验结果;第 4 节回顾相关工作;第 5 节总结全文。

2 架构

在排序阶段,我们将推荐任务建模为 CTR 预测问题。给定用户 uu 点击过的行为序列 S(u)={v1,v2,,vn}S(u)=\{v_1,v_2,\ldots,v_n\},需要学习函数 FF,预测用户 uu 点击目标物品 vtv_t,即候选物品,的概率。其他特征包括用户画像特征、上下文特征、物品特征和交叉特征。

我们在 WDL 基础上构建 BST,其整体架构如图 1 所示。从图中可以看出,BST 沿用了常见的嵌入与 MLP 范式:首先将用户此前点击的物品和相关特征嵌入为低维向量,再将其输入 MLP。BST 与 WDL 的关键区别在于,我们加入 Transformer 层,通过捕捉潜在的序列信号,为用户点击过的物品学习更好的表征。

以下将按照自底向上的顺序介绍 BST 的关键组件:嵌入层、Transformer 层和 MLP。

image.png 图 1:所提出 BST 的整体架构。BST 将用户行为序列(包括目标物品)和“其他特征”作为输入。首先将这些输入特征嵌入为低维向量。为了更好地捕捉行为序列中各物品之间的关系,模型使用 Transformer 层为序列中的每个物品学习更深层的表征。随后,拼接其他特征的嵌入与 Transformer 层的输出,通过三层 MLP 学习隐藏特征之间的交互,并使用 Sigmoid 函数生成最终输出。需要注意的是,“位置特征”被纳入“序列物品特征”中。

2.1 嵌入层

第一个组件是嵌入层,它将所有输入特征嵌入为固定大小的低维向量。在我们的场景中,存在用户画像特征、物品特征、上下文特征,以及不同特征的组合,即交叉特征等多种特征。尽管神经网络能够自动学习特征组合,我们仍然使用了一些人工设计的交叉特征,因为在深度学习时代之前,它们已被证明在相关场景中有效。

本文重点研究如何使用 Transformer 建模行为序列,因此为简化表述,将上述特征统一称为“其他特征”,表 1 给出了一些示例。如图 1 左侧所示,我们将其他特征拼接后嵌入为低维向量。对于这些特征,创建嵌入矩阵 WoRD×doW_o\in\mathbb{R}^{|D|\times d_o},其中 dod_o 为嵌入维度。

表 1:图 1 左侧所示的“其他特征”。实际系统使用的特征数量更多,表中仅展示部分有效特征。 image.png

此外,我们还会获取行为序列中每个物品的嵌入,其中包括目标物品。如图 1 所示,我们使用两类特征表示一个物品:红色的“序列物品特征”和深蓝色的“位置特征”。序列物品特征包括物品 ID 和类别 ID。

一个物品往往拥有数百项特征,但在行为序列中使用所有特征表示物品的成本过高。我们此前的工作表明,物品 ID 和类别 ID 已足以取得良好性能,因此在嵌入用户行为序列时,选择这两项作为表示各物品的稀疏特征。位置特征则对应下文的位置嵌入。

对于每个物品,我们拼接序列物品特征和位置特征,并创建嵌入矩阵 WVRV×dVW_V\in\mathbb{R}^{|V|\times d_V},其中 dVd_V 为嵌入维度,V|V| 为物品数量。使用 eiRdVe_i\in\mathbb{R}^{d_V} 表示给定行为序列中第 ii 个物品的嵌入。

位置嵌入

Transformer 的原始工作提出使用位置嵌入捕捉句子中的顺序信息。类似地,用户行为序列也具有明确顺序。因此,在底层将每个物品投影为低维向量之前,我们把“位置”作为该物品的一项输入特征。

物品 viv_i 的位置值计算为 pos(vi)=t(vt)t(vi)\operatorname{pos}(v_i)=t(v_t)-t(v_i),其中 t(vt)t(v_t) 表示发起推荐的时间,t(vi)t(v_i) 表示用户点击物品 viv_i 的时间戳。我们采用这种方法,是因为在实际场景中,它的表现优于 Transformer 原文使用的正弦和余弦函数。

2.2 Transformer 层

本节介绍 Transformer 层。该层通过捕捉行为序列中某个物品与其他物品之间的关系,为每个物品学习更深层的表征。

自注意力层

缩放点积注意力定义如下:

Attention(Q,K,V)=softmax(QKTd)V.(1)\operatorname{Attention}(Q,K,V)=\operatorname{softmax}\left(\frac{QK^T}{\sqrt{d}}\right)V.\tag{1}

其中,QQ 表示查询,KK 表示键,VV 表示值。在本文场景中,自注意力操作以物品嵌入为输入,通过线性投影将其转换为三个矩阵,再送入注意力层。我们使用多头注意力:

S=MH(E)=Concat(head1,head2,,headh)WH.(2)S=\operatorname{MH}(E)=\operatorname{Concat}(\operatorname{head}_1,\operatorname{head}_2,\ldots,\operatorname{head}_h)W^H.\tag{2}
headi=Attention(EWQ,EWK,EWV).(3)\operatorname{head}_i=\operatorname{Attention}(EW^Q,EW^K,EW^V).\tag{3}

其中,投影矩阵 WQ,WK,WVRd×dW^Q,W^K,W^V\in\mathbb{R}^{d\times d}EE 是所有物品组成的嵌入矩阵,hh 是注意力头数。

逐位置前馈网络

我们加入逐位置前馈网络(Feed-Forward Network,FFN),通过非线性进一步增强模型,其定义如下:

F=FFN(S).(4)F=\operatorname{FFN}(S).\tag{4}

为避免过拟合并按层次学习有意义的特征,我们在自注意力和 FFN 中都使用 Dropout 与 LeakyReLU。自注意力层和 FFN 层的整体输出如下:

S=LayerNorm(S+Dropout(MH(S))).(5)S'=\operatorname{LayerNorm}\left(S+\operatorname{Dropout}(\operatorname{MH}(S))\right).\tag{5}
F=LayerNorm(S+Dropout(LeakyReLU(SW(1)+b(1))W(2)+b(2))).(6)F=\operatorname{LayerNorm}\left(S'+\operatorname{Dropout}\left(\operatorname{LeakyReLU}(S'W^{(1)}+b^{(1)})W^{(2)}+b^{(2)}\right)\right).\tag{6}

其中,W(1)W^{(1)}b(1)b^{(1)}W(2)W^{(2)}b(2)b^{(2)} 是可学习参数,LayerNorm\operatorname{LayerNorm} 是标准归一化层。

堆叠自注意力块

第一个自注意力块会聚合此前所有物品的嵌入。为了进一步建模物品序列中潜藏的复杂关系,我们继续堆叠自注意力块,其中第 bb 个块定义为:

Sb=SA(F(b1)).(7)S^b=\operatorname{SA}(F^{(b-1)}).\tag{7}
Fb=FFN(Sb),i{1,2,,n}.(8)F^b=\operatorname{FFN}(S^b),\qquad \forall i\in\{1,2,\ldots,n\}.\tag{8}

实验中观察到,与 b=2b=2b=3b=3 相比,b=1b=1 能取得更好的性能,具体见表 4。出于效率考虑,我们没有尝试更大的 bb,并将其留作未来工作。

2.3 MLP 层与损失函数

将其他特征的嵌入与 Transformer 层应用于目标物品得到的输出拼接后,我们使用三个全连接层,进一步学习稠密特征之间的交互。这是工业推荐系统中的标准做法。

为了预测用户是否会点击目标物品 vtv_t,我们将任务建模为二分类问题,因此使用 Sigmoid 函数作为输出单元。模型训练采用交叉熵损失:

L=1N(x,y)D(ylogp(x)+(1y)log(1p(x))).(9)L=-\frac{1}{N}\sum_{(x,y)\in D}\left(y\log p(x)+(1-y)\log(1-p(x))\right).\tag{9}

其中,DD 表示全部样本,y{0,1}y\in\{0,1\} 是表示用户是否点击物品的标签,p(x)p(x) 是网络经过 Sigmoid 单元后的输出,表示样本 xx 被点击的预测概率。

3 实验

本节介绍实验结果。

3.1 实验设置

数据集

数据集根据淘宝 App 的日志构建。我们使用用户连续八天的行为构造离线数据集,以前七天作为训练数据,最后一天作为测试数据。数据集统计信息见表 2。可以看出,该数据集规模极大且非常稀疏。淘宝网站:www.taobao.com/

表 2:所构建淘宝数据集的统计信息。 image.png

基线

为验证 BST 的有效性,我们将其与 WDL 和 DIN 两个模型进行比较。此外,我们还创建了一个将序列信息引入 WDL 的基线方法,记为 WDL(+Seq),它对用户此前点击物品的嵌入取平均进行聚合。

本文框架以 WDL 为基础,通过 Transformer 加入序列建模;DIN 则使用注意力机制,捕捉目标物品与用户此前点击物品之间的相似性。

评估指标

离线实验使用 ROC 曲线下面积(Area Under Curve,AUC)评估不同模型的性能。在线 A/B 测试使用 CTR 和平均响应时间评估所有模型。响应时间(Response Time,RT)是为给定查询生成推荐结果所花费的时间,也就是淘宝用户一次请求的处理耗时。我们使用平均 RT 衡量不同模型在在线生产环境中的效率。

配置

模型使用 Python 2.7 和 TensorFlow 1.4 实现,并选择 Adagrad 作为优化器。详细模型参数见表 3。

表 3:BST 的配置,参数含义可由参数名称推断。 image.png

3.2 结果分析

结果见表 4,可以看出 BST 优于各个基线。具体而言,离线实验的 AUC 从 WDL 的 0.7734 和 DIN 的 0.7866 提升至 BST 的 0.7894。

比较 WDL 与 WDL(+Seq) 可以发现,即使仅以简单平均方式引入序列信息,也能取得明显效果。这表明,在自注意力的帮助下,BST 具备强大的能力,可以捕捉用户行为序列中潜藏的序列信号。根据我们的实践经验,即使离线 AUC 只取得很小提升,也能带来巨大的在线 CTR 收益。Google 的 WDL 研究也报告了类似现象。

在效率方面,BST 的平均 RT 接近 WDL 和 DIN,保证了在真实大规模推荐系统中部署 Transformer 这类复杂模型的可行性。

最后,我们还研究了第 2.2 节所述自注意力层堆叠的影响。根据表 4,b=1b=1 可以取得最佳离线 AUC。这可能是因为,用户行为序列中的序列依赖关系不像机器翻译任务中句子里的依赖关系那样复杂,因此较少的块已经足以取得良好性能。其他研究也报告了类似观察。因此,我们选择在生产环境中部署 b=1b=1 的 BST,并且表 4 只报告 b=1b=1 对应的在线 CTR 增益。

表 4:不同方法的离线 AUC 和在线 CTR 增益。在线 CTR 增益均相对于对照组计算。 image.png

4 相关工作

本节简要回顾用于 CTR 预测的深度学习方法。

自 WDL 提出以来,人们又提出了 DeepFM、xDeepFM、Deep & Cross Network 等一系列基于深度学习的方法来改善 CTR。然而,这些以往工作都聚焦于特征组合或不同神经网络架构,忽略了真实推荐场景中用户行为序列的序列性质。

近期,DIN 提出使用注意力机制处理用户行为序列。本文模型与 DIN 的关键区别在于,我们使用 Transformer 为用户行为序列中的每个物品学习更深层的表征,而 DIN 试图捕捉用户此前点击的不同物品与目标物品之间的相似性。换言之,采用 Transformer 的本文模型更适合捕捉序列信号。

另有研究提出使用 Transformer,以序列到序列方式解决序列推荐问题,但其架构与本文用于 CTR 预测的模型不同。

5 结论

本文介绍了将 Transformer 应用于淘宝推荐的技术细节。通过利用 Transformer 捕捉序列关系的强大能力,我们以广泛实验展示了它在推荐用户行为序列建模方面的优越性。此外,本文还介绍了在淘宝生产环境中部署所提出模型的细节。该系统为中国数亿用户提供推荐服务。

6 致谢

感谢团队同事在有益讨论和研究支持方面作出的贡献,感谢阿里巴巴分布式计算团队和在线推理团队对模型生产部署的帮助。我们也感谢匿名审稿人提出的宝贵意见和建议,这些反馈帮助提升了论文质量。