【BST】Behavior Sequence Transformer for E-commerceRecommendation in Alibaba

发布于:2024-05-09 ⋅ 阅读:(29) ⋅ 点赞:(0)

一、提出背景

传统的Embedding&MLP模型结构将原始特征嵌入到低维向量中,然后将其concat后输入MLP进行最终推荐。DIN提出使用注意力机制来捕获候选项与用户先前点击的项之间的相似性。

然而,大多数这些工作只是连接不同的特征,而没有捕获用户行为序列之间的顺序信息,忽略了用户行为的顺序性,即用户点击的项目的顺序。实际上,顺序对于预测用户未来的点击很重要。

例如,用户在淘宝上买了一部iPhone后,往往会点击手机壳,或者在买了一条裤子后,试图找到一双合适的鞋子。从这个意义上说,在淘宝排名阶段部署预测模型时,如果不考虑这一因素,就会出现问题。

为了解决WDL和DIN面临的上述问题,尝试将用户行为序列的顺序信号纳入RS中。

受自然语言处理(NLP)中机器翻译任务的Transformer的巨大成功的启发,我们应用自注意机制,通过考虑嵌入阶段的序列信息来学习用户行为序列中每个项目的更好表示,然后将它们馈送到MLP中以预测用户对候选项目的响应。Transformer的关键优势在于,它可以通过自注意机制更好地捕捉句子中词与词之间的依赖关系,直观地说,用户行为序列中项与项之间的"依赖关系"也可以通过Transformer提取出来。

二、模型结构

在排名阶段,推荐任务可建模为点击率(CTR)预测问题:给定用户的行为序列S(u)= {v1,v2,.,vn}被用户u点击,我们需要学习函数F来预测点击目标项Vt的概率。

BST和WDL之间的关键区别在于我们添加了Transformer层,通过捕获底层的序列信息来学习用户点击项目的更好表示。

2.1、Embedding层

将所有输入特征嵌入到固定大小的低维向量中。

2.1.1其他特征包括:

将它们嵌入到低维向量中并连接起来。嵌入矩阵Wo ∈ R| D| ×do,其中do是维度大小。

2.1.2行为序列特征

行为序列中每个项目的嵌入,包括目标项目。

使用两种类型的特征来表示一个item:"Sequence Item Features"包括item_id和category_id;以及Positional Features对应于位置embedding。

(一个item往往有数百个特征,而选择所有特征来表示行为序列中的项代价太高,实践中也发现,item_id和category_id对于性能来说已经足够好了,可以选择这两个作为稀疏特征来表示嵌入用户行为序列中的每个item。)

对于每个项目,我们连接Sequence Item FeaturesPositional Features。嵌入矩阵WV ∈ R| v| × dV,其中dV是嵌入的维数大小,以及|v|是项目的数量。我们使用ei ∈ RdV来表示给定行为序列中第i项的嵌入。

2.1.3位置embedding

Transformer提出了一种位置embedding来捕获句子中的顺序信息。同样,用户的行为序列中也存在顺序。因此,可以在底层中添加"位置"作为每个item的输入特征,然后将其投影为低维向量。

项目vi的位置值计算为pos(vi)= t(vt)- t(vi),其中t(vt)表示推荐时间,t(vi)表示用户点击项目vi时的时间戳。

2.2、Transformer 层

Transformer层通过捕获行为序列中与其他项的关系来学习每个项的更深层次的表示。

在我们的场景中,自我注意力操作将项目的embedding作为输入,并通过线性投影将其转换为三个矩阵,并将其馈送到注意力层。

多头注意力:

其中投影矩阵WQ、WK、WV ∈ Rd×d,E是所有项的嵌入矩阵,h是头的数目。

前馈网络Feed-Forward Networks (FFN):F = FFN(S)

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

2.3、MLP层

将Other Features的嵌入和应用于目标项的Transformer层的输出连接起来,我们然后使用三个全连接层来进一步学习密集特征之间的交互。

2.4、损失函数

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

其中D表示所有样本,y ∈ {0,1}是表示用户是否点击过某个项目的标签,p(x)是sigmoid单元后网络的输出,表示样本x被点击的预测概率。

三、实验设置

3.1、评估指标

离线结果:AUC

在线A/B测试:CTR、平均RT(RT是响应时间(RT)的缩写,它是为给定查询生成推荐结果的时间成本,即一位淘宝用户的请求。用来评估不同的在线生产环境中的效率)

和DIN之间的关键区别在于,使用Transformer 来学习用户行为序列中每个项目的更深层次的表示,而DIN试图捕捉之前点击的项目和目标项目之间的不同相似性。换句话说,BST模型与Transformer更适合捕捉的顺序信号。