BST行为序列Transformer模型

导读

阿里Qiwei Chen等人在2019年5月发表的论文《Behavior sequence transformer for e-commerce recommendation in Alibaba》,创造性地将Transformer模型应用于用户行为序列数据,开创了在用户数据上使用Transformer模型的新方向。特此将BST论文全文翻译,总共6107字,以供大家参考和学习。

摘要

基于深度学习的方法已广泛应用于工业推荐系统(RSs)。以前的工作采用了embedding&多层感知器(MLP)范式:原始特征被embedding到低维向量中,然后这些向量被送入MLP以得出最终的推荐。然而,这些工作中的大多数只是简单地连接不同的特征,忽略了用户行为的序列特性。在本文中,我们提议使用强大的Transformer模型来捕捉用户行为序列背后的序列信号,以便在阿里巴巴进行推荐。实验结果证明了所提出模型的优越性,随后该模型在淘宝线上部署,并与两个基线相比,在线上点击率(CTR)方面取得了显著的改进。

1. 引言

在过去十年中,推荐系统(RSs)已成为工业界最受欢迎的应用,在过去五年中,基于深度学习的方法已在工业RSs中得到广泛应用,例如谷歌[2, 3]和爱彼迎[5]。在中国最大的电子商务平台阿里巴巴,RSs一直是其总商品交易额(GMV)和收入的关键引擎,并且在丰富的电子商务场景中部署了各种基于深度学习的推荐方法[1, 8, 10, 11, 14, 15, 17, 18]。正如[15]中介绍的,阿里巴巴的RSs是两阶段管道:匹配和排名。在匹配阶段,根据用户交互的项目选择一组相似的项目,然后学习一个微调的预测模型,以预测用户点击给定候选项目集的概率。

在本文中,我们专注于阿里巴巴旗下的中国最大的消费者对消费者(C2C)平台淘宝的排名阶段,在这里我们有数百万候选项目,我们需要预测用户根据其历史行为点击候选项目的概率。在深度学习时代,embedding和MLP已成为工业RSs的标准范式:大量的原始特征被embedding到低维空间作为向量,然后输入到全连接层,即多层感知器(MLP),以预测用户是否会点击项目。代表性的工作有谷歌的宽深学习(WDL)网络[2]和阿里巴巴的深度兴趣网络(DIN)[17]。

在淘宝,我们在WDL的基础上构建排名模型,其中embedding&MLP范式使用了各种特征,例如项目的类别和品牌、项目的统计数字或用户配置文件特征。尽管这个框架取得了成功,但由于它忽略了实践中的一种非常重要的信号,即用户行为序列中的顺序信号,即用户按顺序点击的项目,因此它本质上远非令人满意。实际上,为了预测用户的后续点击,顺序是重要的。

例如,一个用户在淘宝购买了iPhone后,往往会点击一个手机壳,或者在购买了一条裤子后尝试寻找合适的鞋子。从这个意义上说,当在淘宝的排名阶段部署预测模型时,不考虑这个因素是有问题的。在WDL[2]中,他们简单地连接了所有特征,而没有捕获用户行为序列中的顺序信息。在DIN[17]中,他们提出了使用注意力机制来捕获候选项目与用户之前点击的项目之间的相似性,但没有考虑用户行为序列背后的顺序特性。

因此,在这项工作中,为了解决WDL和DIN所面临的问题,我们试图将用户行为序列的顺序信号纳入淘宝的RS。受到Transformer在自然语言处理(NLP)中机器翻译任务中取得巨大成功的启发[4, 13],我们应用自注意力机制通过考虑embedding阶段的顺序信息,为用户行为序列中的每个项目学习更好的表示,然后输入MLPs以预测用户对候选项目的响应。Transformer的关键优势在于,它可以通过自注意力机制更好地捕获句子中的单词之间的依赖关系,直观地说,用户行为序列中项目的“依赖关系”也可以通过Transformer提取。因此,我们提出了用户行为序列Transformer(BST)用于淘宝的电子商务推荐。线下实验和线上A/B测试显示BST优于现有方法。BST已在淘宝推荐的排名阶段部署,每天为数亿消费者提供推荐服务。

本文的其余部分组织如下:第2节详细阐述了架构,然后第3节展示了包括线下和线上的实验结果。第4节回顾了相关工作,最后我们在第5节总结了我们的工作。

2. 架构

在排名阶段,我们将推荐任务建模为点击率(CTR)预测问题,其定义如下:给定用户u的行为序列 𝑆(𝑢)={𝑣1,𝑣2,...,𝑣𝑛},我们需要学习一个函数 𝐹,来预测用户u点击目标项目 𝑣𝑡(即候选项目)的概率。其他特征包括用户画像、上下文、项目和交叉特征。

我们在WDL[2]的基础上构建BST,概述的架构如图1所示。从图1中,我们可以看到它遵循流行的embedding&MLP范式,其中先前点击的项目和相关特征首先被embedding到低维向量中,然后送入MLP。BST和WDL的关键区别在于我们添加了Transformer层,以通过捕获潜在的序列信号来学习用户点击项目的更好表示。在接下来的部分中,我们自下而上地介绍了BST的关键组成部分:embedding层、Transformer层和MLP。

图片

图1:所提出的BST(用户行为序列Transformer)的概述架构。BST将用户的行为序列作为输入,包括目标项目和“其他特征”。它首先将这些输入特征embedding为低维向量。为了更好地捕捉行为序列中项目之间的关系,使用Transformer层来学习序列中每个项目的更深层次表示。然后,通过将其他特征的embedding和Transformer层的输出进行连接,使用三层MLP(多层感知器)来学习隐藏特征之间的交互,并通过Sigmoid函数生成最终的输出。注意,“位置特征”被整合到“序列项目特征”中。

2.1 Embedding层

第一个组件是embedding层,它将所有输入特征embedding到固定大小的低维向量中。在我们的场景中,有各种特征,如用户画像特征、项目特征、上下文特征,以及不同特征的组合,即交叉特征1。由于这项工作的重点是用Transformer建模行为序列,我们为了简化,将所有这些特征称为“其他特征”,并在表1中给出了一些示例。如图1所示,我们将“其他特征”在左侧部分进行连接,并将它们embedding到低维向量中。对于这些特征,我们创建了一个embedding矩阵 𝑊𝑜∈𝑅∣𝐷∣×𝑑𝑜,其中 𝑑𝑜 是维度大小。

图片

此外,我们还获得了行为序列中每个项目的embedding,包括目标项目。如图1所示,我们使用两种类型的特征来表示一个项目,“序列项目特征”(用红色表示)和“位置特征”(用深蓝色表示),其中“序列项目特征”包括item_id和category_id。请注意,一个项目可能有数百个特征,但在行为序列中选择所有特征来表示项目成本过高。正如我们在之前的作品[15]中介绍的,item_id和category_id对于性能来说已经足够,我们选择这两个作为稀疏特征来表示用户行为序列中的每个项目。“位置特征”对应于下面的“位置embedding”。然后,对于每个项目,我们将序列项目特征和位置特征进行连接,并创建一个embedding矩阵 𝑊𝑉∈𝑅∣𝑉∣×𝑑𝑉,其中 𝑑𝑉是embedding的维度大小,∣𝑉∣是项目的数量。我们用 𝑒𝑖∈𝑅𝑑𝑉 表示给定行为序列中第i个项目的embedding。

位置embedding。在[13]中,作者提出了一种位置embedding来捕获句子中的顺序信息。同样,在用户的行为序列中也存在顺序。因此,我们把“位置”作为每个项目在底层的输入特征,在其被投影为低维向量之前。请注意,项目 𝑣𝑖vi 的位置值计算为 𝑝𝑜𝑠(𝑣𝑖)=𝑡(𝑣𝑡)−𝑡(𝑣𝑖),其中 𝑡(𝑣𝑡)表示推荐时间,𝑡(𝑣𝑖)表示用户点击项目 𝑣𝑖vi 的时间戳。我们采用这种方法,因为在我们的场景中,它优于[13]中使用的正弦和余弦函数。

在这段描述中,作者详细阐述了BST模型的embedding层是如何工作的,包括如何处理不同类型的特征,以及如何通过位置embedding来捕获用户行为序列中的顺序信息。通过这种方式,模型能够更好地理解用户行为的上下文,并为后续的Transformer层和MLP提供有效的输入表示。

2.2 Transformer层

在这部分,我们介绍了Transformer层,它通过捕捉行为序列中与其他项的关系,为每个项学习更深层次的表示。

自注意力层。缩放点积注意力[13]定义如下:

图片

其中,Q代表查询(queries),K代表键(keys),V代表值(values)。在我们的场景中,自注意力操作以项的embedding(embeddings)作为输入,并通过线性投影将它们转换为三个矩阵,然后将它们输入到注意力层。遵循[13],我们使用多头注意力(multi-head attention):

图片

其中,投影矩阵 𝑊𝑄,𝑊𝐾,𝑊𝑉∈𝑅𝑑×𝑑,E是所有项的embedding矩阵,h是头(heads)的数量。

点式前馈网络(Point-wise Feed-Forward Networks, FFN)。遵循[13],我们添加点式前馈网络以进一步通过非线性增强模型,定义如下:

图片

为了避免过拟合并分层学习有意义的特征,我们在自注意力层和前馈网络中都使用了dropout和LeakyReLU。然后,自注意力层和前馈网络层的整体输出如下:

图片

其中 𝑊(1),𝑏(1),𝑊(2),𝑏(2)是可学习的参数,而 LayerNorm 是标准的归一化层。

堆叠自注意力块。在第一个自注意力块之后,它聚合了所有之前项的embedding,并且为了进一步模拟项目序列背后的复杂关系,我们堆叠了自构建块,第b个块定义如下:

图片

在实践中,我们通过实验观察到 𝑏=1 比 𝑏=2,3有更好的性能表现(见表4)。为了效率起见,我们没有尝试更大的 𝑏b 值,并将此留作未来的工作。

2.3 多层感知器(MLP)层和损失函数

通过将其他特征的embedding与应用到目标项 𝑣𝑡 的Transformer层的输出进行拼接,我们随后使用三个全连接层来进一步学习密集特征之间的交互,这是工业推荐系统(RSs)的标准做法。

图片

为了预测用户是否会点击目标项 𝑣𝑡,我们将其建模为一个二元分类问题,因此我们使用sigmoid函数作为输出单元。为了训练模型,我们使用交叉熵损失:

图片

其中 𝐷D代表所有的样本,𝑦∈{0,1}是标签,表示用户是否点击了一个项,𝑝(𝑥)是经过sigmoid单元后的网络输出,代表样本𝑥被点击的预测概率。

3. 实验

在本节中,我们展示实验结果。

3.1 设置

数据集。数据集是从淘宝App的日志中构建的。

我们基于用户在八天内的行为构建了一个离线数据集。我们使用前七天作为训练数据,最后一天作为测试数据。数据集的统计信息显示在表2中。我们可以看到,数据集非常大且稀疏。

基线模型。为了展示BST的有效性,我们将其与两个模型进行比较:WDL [2] 和 DIN [17]。此外,我们创建了一个基线方法,将序列信息整合到WDL中,记作WDL(+Seq),它平均聚合了之前点击的项的embedding。我们的框架是在WDL的基础上添加了Transformer的序列建模,而DIN被提出来使用注意力机制捕捉目标项和之前点击的项之间的相似性。

评估指标。对于离线结果,我们使用曲线下面积(Area Under Curve, AUC)得分来评估不同模型的性能。对于在线A/B测试,我们使用点击通过率(CTR)和平均响应时间(RT)来评估所有模型。RT是响应时间(response time)的缩写,是为给定查询生成推荐结果的时间成本,即淘宝用户的一次请求。我们使用平均RT作为评估在线生产环境中不同模型效率的指标。

设置。我们的模型使用Python 2.7和TensorFlow 1.4实现,选择“Adagrad”作为优化器。此外,我们在表3中给出了模型参数的详细信息。

图片

3.2 结果分析

结果在表4中展示,从中我们可以看到BST相较于基线模型的优越性。具体来说,离线实验的AUC从WDL的0.7734和DIN的0.7866提高到了BST的0.7894。比较WDL和WDL(+Seq)时,我们可以看到以简单平均方式整合序列信息的有效性。这意味着在自注意力的帮助下,BST具有强大的能力来捕捉用户行为序列下的序列信号。请注意,根据我们的实际经验,即使是离线AUC的小幅提升也可能导致在线CTR的巨大提升。Google的研究人员在WDL [2]中报告了类似的现象。

此外,在效率方面,BST的平均响应时间(RT)与WDL和DIN相近,这保证了像Transformer这样复杂模型在现实世界大规模推荐系统(RSs)中部署的可行性。

最后,我们还展示了第2.2节中堆叠自注意力层的影响。从表4中,我们可以看到𝑏=1b=1获得了最佳的离线AUC。这可能是因为用户行为序列中的序列依赖性并不像机器翻译任务中的句子那样复杂,因此较少数量的块就足以获得良好的性能。类似的观察结果在[7]中也有报道。因此,我们选择𝑏=1在生产环境中部署BST,并仅在表4中报告𝑏=1b=1的在线CTR增益。

图片

4. 相关工作

在本节中,我们简要回顾了深度学习方法在点击率(CTR)预测方面的相关工作。自从WDL [2]提出以来,一系列工作被提出来通过基于深度学习的方法提高CTR,例如DeepFM [6]、XDeepFM [9]、Deep and Cross networks [16]等。然而,所有这些先前的工作都集中在特征组合或不同的神经网络架构上,忽略了现实世界推荐场景中用户行为序列的序列特性。最近,DIN [17]被提出来通过注意力机制处理用户的行为序列。我们的模型与DIN的关键区别在于,我们提出使用Transformer [13]来学习用户行为序列中每个项的更深层次表示,而DIN试图捕捉之前点击的项和目标项之间的不同相似性。换句话说,我们的模型使用Transformer更适合捕捉序列信号。在[7, 12]中,Transformer模型被提出以序列到序列的方式解决序列推荐问题,而架构与我们在CTR预测方面的模型不同。

5. 结论

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

6. 致谢

我们要感谢我们团队的同事——Jizhe Wang, Chao Li, Zhiyuan Liu, Yuchi Xu 和 Mengmeng Wu,感谢他们对这项工作进行的有益讨论和支持。我们感谢阿里巴巴分布式计算团队的Jinbin Liu, Shanshan Hao 和 Yanchun Yang,以及阿里巴巴在线推理团队的Kan Liu 和 Tao Lan,他们帮助我们将模型部署到生产环境中。我们还要感谢匿名审稿人,他们宝贵的评论和建议帮助提高了这篇手稿的质量。

### 时间序列预测中的混合模型 #### 方法论概述 时间序列预测中的混合模型通常指的是结合两种或更多不同类型的模型来提高预测性能的方法。这些模型可以是统计学上的(如ARIMA)、机器学习的(如XGBoost),或者是基于深度学习的技术(如LSTM)。通过组合多个模型的优点,混合模型能够提供更稳健和精确的时间序列预测。 对于特定的应用场景,比如企业级预测精度的需求,在实践中经常采用的是将传统的时间序列分解技术与现代机器学习算法相结合的方式[^1]。例如,Holt-Winters指数平滑法作为一种经典的时间序列分析工具被广泛应用于短期销售量、库存水平等方面的预测;而当它与其他高级建模策略联合使用时,则能显著提升整体表现。 #### 实现方式 一种常见的实现方式是在预处理阶段利用简单的线性回归或其他基础模型捕捉数据的主要趋势成分之后,再引入复杂的非参数化方法去拟合残差部分。这样做的好处是可以减少复杂度较高的组件所需承担的工作负荷,并使得最终集成后的系统更加易于解释和维护。 另一种流行的方案就是应用堆叠泛化(Stacked Generalization),即先训练一组初级分类器/回归器作为基底层(Base Layer), 然后再构建一个次级元学习者(Meta-Learner) 来综合所有底层估计的结果给出最终输出。这种方法不仅适用于静态特征空间下的监督学习任务, 对于动态变化的时间序列同样有效。 ```python from statsmodels.tsa.holtwinters import ExponentialSmoothing as HWES import xgboost as xgb # 假设我们有一个名为dataframe的时间序列DataFrame对象 model_holts_winter = HWES(dataframe['value'], seasonal='mul', trend='add').fit() residuals = dataframe['value'] - model_holts_winter.fittedvalues dtrain = xgb.DMatrix(residuals.values.reshape(-1, 1)) params = {'objective': 'reg:squarederror'} bst = xgb.train(params=params, dtrain=dtrain) def predict_combined_model(new_data_point): hw_prediction = model_holts_winter.predict(start=len(dataframe), end=len(dataframe)+len(new_data_point)-1) residual_pred = bst.predict(xgb.DMatrix((new_data_point-hw_prediction).reshape(-1, 1))) final_predictions = hw_prediction + residual_pred return final_predictions ``` #### 案例研究 在一个实际的企业环境中实施上述提到的混合模型可能涉及以下几个方面: - **需求评估**:确定业务目标并识别哪些因素会影响所关心的关键绩效指标(KPI)。 - **数据准备**:收集历史记录以及其他潜在影响变量的数据集,并对其进行清洗整理以便后续加工处理。 - **模型开发**:选择合适的初始模型进行初步探索性数据分析(EDA),随后设计更为精细的复合结构用于进一步改进准确性。 - **验证测试**:运用诸如k-fold交叉验证这样的手段确保新创建出来的解决方案具备良好的泛化能力。 - **部署上线**:一旦完成内部调试并通过必要的审批流程后就可以正式投入使用了。 在这个过程中,可能会遇到各种挑战,例如如何有效地管理计算资源以支持大规模运算操作,怎样调整超参数使各组成部分之间达到最佳平衡等等。然而只要遵循科学严谨的研发路径加上持续不断的迭代优化就有可能获得满意的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值