小言_互联网的博客

揭秘!阿里巴巴基于Transformer的推荐系统

470人阅读  评论(0)

全文共3074字,预计学习时长6分钟

 

中国最大的电商平台阿里巴巴,不仅是电商界的巨头,在推荐系统研究领域也处于领军地位。其最新论文《阿里巴巴电商推荐系统的行为顺序Transformer模型》(https://arxiv.org/pdf/1905.06874.pdf)成为推动推荐系统发展的又一力作。

 

在这项研究中,阿里巴巴使用当下流行的Transformer模型捕捉在线购物过程中用户行为的序列信号,以此对用户的下一次点击进行预测。

 

候选商品排名

 

推荐系统经常使用两层的检索和排名范式,阿里巴巴也不例外。在检索步骤,阿里巴巴以高召回率筛选整个商品集(当然数量远远大于一百万个)中的一百万个相关候选商品集。在排名步骤,对准确度高的候选商品进行排序。本论文聚焦排名步骤,主要介绍其在阿里巴巴旗下中国最大的C2C平台——淘宝之中如何工作。 

序列行为的重要性

 

当预测用户网上购物的下一次点击时,顺序十分重要。举例来说,用户买了一部iPhone后,往往会惦记手机壳,或者刚买了一条裤子后试图找与之搭配的鞋子。以往的工作要么完全忽视用户行为的序列信号(Cheng et. al, 2016),要么对过往点击商品和候选商品之间的关系进行编码,但并未将用户点击的序列特性并入在内(Zhou et. al, 2017)。然而,由于Transformer模型使用了自注意力,所以它能在用户行为序列中捕捉商品间的相关度以及顺序的重要性。正因如此,阿里巴巴和淘宝团队计划在他们称之为行为序列Transformer模型(BST)中运用这项功能。

 

BST架构

 

 

图1:BST和Transformer层架构

推荐任务建模为一个二元分类问题:给定用户u的点击行为顺序为S(u) = {v1, v2, …, vn},用户点击商品n时,任务是在序列的过往商品中,习得一个函数以预测用户u在时间t时点击目标候选商品v1的可能性。BST模型是谷歌WDL(Wide & Deep Learning)模型的改版(Cheng et. al, 2016),其中过往点击商品和相关特征(类别、价格等)的嵌入都连在一起并嵌入低维向量中,然后送入多层感知器中。BST模型在WDL模型中添加了一个Transformer层,通过捕捉那些点击的序列特性更好地学习用户点击商品的表示。

 

从下至上,BST模型架构由以下几个部分组成:

嵌入层

 

在模型的第一层,几种类型的特征都被嵌入到低维向量中,因此得名“嵌入层”。这些特征分别是:1)各种商品级和用户级特征,统称为“其它特征”(论文未作详细阐释),2)用户点击每个商品的序列被称为“用户行为序列”,3)目标候选商品。温馨提示,候选商品源自某个候选级模型,这一点论文中也未提及。

用户行为中每个商品的点击序列被看作是以下两个特征的结合:

 

1. “序列商品特征”包含item_id 和category_id。文中指出,尽管商品特征很多,但笔者发现使用这两个特征效果最好。

 

2. “位置特征”用于捕获序列中的顺序信息,因为Transformer架构不像RNN,前者没有序列顺序的定义。商品vi 的位置值表示为pos(vi) = t(vt) - t(vi),其中 t(vt) 代表推荐时间, t(vi) 是用户点击商品 vi时的时间戳。笔者发现这比之前Transformer论文中使用的sin函数和cos函数表现更好。

 

用户行为序列和目标商品嵌入然后跨过Transformer层,然而“其它特征”并非如此。

 

Transformer层

 

Transformer层由两个子层组成(见图1),其中用户行为点击序列和候选商品的嵌入都经历了多次转换。这导致每个商品的嵌入包含点击序列中与其他商品相关的顺序和重要性。依次浏览每个子层:

 

1. 自注意子层

 

自注意操作首先将序列中的商品嵌入作为输入,然后为每个商品创建query、key和value向量。这三个向量通过将嵌入和三个训练时习得的投影矩阵相乘得出,其中d表示商品嵌入的维度。所有商品的query、key和value都可以表示为矩阵形式,嵌入矩阵E中的每行对应用户行为点击序列中的每一件商品。接下来,将Q、K、V矩阵输入到缩放点积注意层中,获得一个输出,其定义如下:

 

 

运行操作一次以上后,可以将其看作一个attention的“头”。与原始的Transformer论文一样,其中运用到了多头注意(MH),对各种随机初始化投影矩阵, 进行了attention操作,随后结果合并到一起,并与另一个权重矩阵相乘, 此过程如下所示:

 

其中的h代表多头的数量,最终结果S将传递给Transformer模型中的下一子层。

 

 

2. 前馈网络子层

 

与原始的Transformer相关论文一样,自注意子层的输出S会通过逐点前馈神经网络。

 

3. 合并子层

 

对每个子层进行处理后,要进行层规范化、LeakyReLU和dropout。自注意和FFN子层的整体输出如下:

其中是可学习的参数。

 

Transformer层的结果是矩阵F,其代表用户行为点击序列中商品的嵌入,以及包含用户点击序列特性的目标商品。

 

MLP

 

“其它特征”的嵌入和Transformer层的输出向量相连,然后使用ReLU激活函数和sigmoid激活函数通过三个完全连接的层,由此,可预测出用户点击目标商品v_tvt的可能性。为训练此模型,此处使用了交叉熵(cross-entropy)损失函数:

 

函数中的D代表所有样本;表示用户是否点击了某个商品,y为1时表示用户已点击,y为0则未点击;p(x)是BST网络的输出值,表示用户点击候选商品x的概率。

实验

 

表1: BST模型的参数

 

BST模型和基准线是用Python 2.7和Tensorflow 1.4实现的,并选用“Adagrad”作为优化器。模型参数如表1所示。

 

使用淘宝app的8天运行日志进行实验,前7天用于训练,最后1天用于测试。数据集的数据如下表2所示:

 

表2: 来自淘宝数据集的数据

 

实验中使用的基准线是WDL、DIN和整合序列信息的WDL——WDL(+Seq),这些基准线包含过往已点击商品的嵌入平均值。AUC用于评估模型离线时的表现。对于在线A/B测试,使用CTR和平均应答时间(RT,对于给定query生成推荐所需的花费)评估模型。

 

结果如表3所示。在离线实验中,把WDL比作WDL(+Seq)时,很显然,即使用简单的平均方式,合并序列信息也很重要。结果表明,BST模型对基准线所做的改进很有必要。作者指出,由于此RT与WDL和DIN的RT差不多,因此保证了在现实世界大型案例中将RT等复杂模型部署到生产中的可行性。

 

表3: 实验结果。BST(b=1)表示含一个自注意模块的BST模型,经发现其可以提供最佳离线和在线结果。

结论

 

阿里巴巴的研究员强调了另一案例,即NLP中的想法可以成功地应用于推荐系统。本论文作出了两项主要贡献。第一,BST模型与以往模型不同,前者可通过把Transformer模型并入一个标准多层感知器中,成功捕获用户网上购物行为中的序列信号。第二,大规模的在生产中部署BST模型不仅是一个可行方法,同时还适合阿里巴巴和淘宝当前的生产模式。阿里巴巴推荐系统搜索团队接下来会做些什么,让我们拭目以待。

留言 点赞 关注

我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)


转载:https://blog.csdn.net/duxinshuxiaobian/article/details/101154749
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场