Transformer 在美团搜索排序中的实践

Transformer 在美团搜索排序中的实践

近年来,BERT等Transformer模型大放异彩,在搜索推荐系统应用也成为业界的一种潮流。美美今天介绍的这篇文章,将分享Transformer在美团搜索排序上的实践经验。

引言

美团搜索是美团App连接用户与商家的一种重要方式,而排序策略则是搜索链路的关键环节,对搜索展示效果起着至关重要的效果。目前,美团的搜索排序流程为多层排序,分别是粗排、精排、异构排序等,多层排序的流程主要是为了平衡效果和性能。搜索核心精排策略是DNN模型,美团搜索始终贴近业务,并且结合先进技术,从特征、模型结构、优化目标角度对排序效果进行了全面的优化。

近些年,基于Transformer[1]的一些NLP模型大放光彩,比如BERT[2]等等(可参考《美团BERT的探索和实践》一文),将Transformer结构应用于搜索推荐系统也成为业界的一个潮流。比如应用于对CTR预估模型进行特征组合的AutoInt[3]、行为序列建模的BST[4]以及重排序模型PRM[5],这些工作都证明了Transformer引入搜索推荐领域能取得不错的效果,所以美团搜索核心排序也在Transformer上进行了相关的探索。

本文旨在分享Transformer在美团搜索排序上的实践经验。内容会分为以下三个部分:第一部分对Transformer进行简单介绍,第二部分会介绍Transfomer在美团搜索排序上的应用以及实践经验,最后一部分是总结与展望。希望能对大家有所帮助和启发。

Transformer简介

Transformer是谷歌在论文《Attentionisallyouneed》[1]中提出来解决SequencetoSequence问题的模型,其本质上是一个编解码(Encoder-Decoder)结构,编码器Encoder由6个编码block组成,Encoder中的每个block包含Multi-HeadAttention和FFN(Feed-ForwardNetwork);同样解码器Decoder也是6个解码block组成,每个block包含Multi-HeadAttention、Encoder-DecoderAttention和FFN。具体结构如图1所示,其详细的介绍可参考文献[1,6]。

图1Transformer结构示意图

考虑到后续内容出现的TransformerLayer就是Transformer的编码层,这里先对它做简单的介绍。它主要由以下两部分组成。

Multi-HeadAttention

Multi-HeadAttention实际上是h个Self-Attention的集成,h代表头的个数。其中Self-Attention的计算公式如下:

其中,Q代表查询,K代表键,V代表数值。

在我们的应用实践中,原始输入是一系列Embedding向量构成的矩阵E,矩阵E首先通过线性投影:

得到三个矩阵:

然后将投影后的矩阵输入到Multi-HeadAttention。计算公式如下:

Point-wiseFeed-ForwardNetworks

该模块是为了提高模型的非线性能力提出来的,它就是全连接神经网络结构,计算公式如下:

TransformerLayer就是通过这种自注意力机制层和普通非线性层来实现对输入信号的编码,得到信号的表示。

美团搜索排序Transformer实践经验

Transformer在美团搜索排序上的实践主要分以下三个部分:第一部分是特征工程,第二部分是行为序列建模,第三部分是重排序。下面会逐一进行详细介绍。

特征工程

在搜索排序系统中,模型的输入特征维度高但稀疏性很强,而准确的交叉特征对模型的效果又至关重要。所以寻找一种高效的特征提取方式就变得十分重要,我们借鉴AutoInt[3]的方法,采用TransformerLayer进行特征的高阶组合。

模型结构

我们的模型结构参考AutoInt[3]结构,但在实践中,根据美团搜索的数据特点,我们对模型结构做了一些调整,如下图2所示:

图2Transformer&Deep结构示意图

相比AutoInt[3],该结构有以下不同:

保留将稠密特征和离散特征的Embedding送入到MLP网络,以隐式的方式学习其非线性表达。TransformerLayer部分,不是送入所有特征的Embedding,而是基于人工经验选择了部分特征的Embedding,第一点是因为美团搜索场景特征的维度高,全输入进去会提高模型的复杂度,导致训练和预测都很慢;第二点是,所有特征的Embedding维度不完全相同,也不适合一起输入到TransformerLayer。

EmbeddingLayer部分:众所周知在CTR预估中,除了大规模稀疏ID特征,稠密类型的统计特征也是非常有用的特征,所以这部分将所有的稠密特征和稀疏ID特征都转换成Embedding表示。

Transformer部分:针对用户行为序列、商户、品类、地理位置等Embedding表示,使用TransformerLayer来显示学习这些特征的交叉关系。

MLP部分:考虑到MLP具有很强的隐式交叉能力,将所有特征的Embedding表示concat一起输入到MLP。

实践效果及经验

效果:离线效果提升,线上QV_CTR效果波动。

经验:

三层Transformer编码层效果比较好。调节多头注意力的“头”数对效果影响不大。Transformer编码层输出的Embedding大小对结果影响不大。Transformer和MLP融合的时候,最后结果融合和先concat再接一个全连接层效果差不多。

行为序列建模

理解用户是搜索排序中一个非常重要的问题。过去,我们对训练数据研究发现,在训练数据量很大的情况下,item的大部分信息都可以被ID的Embedding向量进行表示,但是用户ID在训练数据中是十分稀疏的,用户ID很容易导致模型过拟合,所以需要大量的泛化特征来较好的表达用户。这些泛化特征可以分为两类:一类是偏静态的特征,例如用户的基本属性(年龄、性别、职业等等)特征、长期偏好(品类、价格等等)特征;另一类是动态变化的特征,例如刻画用户兴趣的实时行为序列特征。而用户实时行为特征能够明显加强不同样本之间的区分度,所以在模型中优化用户行为序列建模是让模型更好理解用户的关键环节。

目前,主流方法是采用对用户行为序列中的item进行Sum-pooling或者Mean-pooling后的结果来表达用户的兴趣,这种假设所有行为内的item对用户的兴趣都是等价的,因而会引入一些噪声。尤其是在美团搜索这种交互场景,这种假设往往是不能很好地进行建模来表达用户兴趣。

近年来,在搜索推荐算法领域,针对用户行为序列建模取得了重要的进展:DIN引入注意力机制,考虑行为序列中不同item对当前预测item有不同的影响[7];而DIEN的提出,解决DIN无法捕捉用户兴趣动态变化的缺点[8]。DSIN针对DIN和DIEN没有考虑用户历史行为中的Session信息,因为每个Session中的行为是相近的,而在不同Session之间的差别很大,它在Session层面上对用户的行为序列进行建模[9];BST模型通过Transformer模型来捕捉用户历史行为序列中的各个item的关联特征,与此同时,加入待预测的item来达到抽取行为序列中的商品与待推荐商品之间的相关性[4]。这些已经发表过的工作都具有很大的价值。接下来,我们主要从美团搜索的实践业务角度出发,来介绍Transformer在用户行为序列建模上的实践。

模型结构

在Transformer行为序列建模中,我们迭代了三个版本的模型结构,下面会依次进行介绍。

模型主要构成:所有特征(user维度、item维度、query维度、上下文维度、交叉维度)经过底层EmbeddingLayer得到对应的Embedding表示;建模用户行为序列得到用户的Embedding表示;所有Embeddingconcat一起送入到三层的MLP网络。

第一个版本:因为原来的Sum-pooling建模方式没有考虑行为序列内部各行为的关系,而Transformer又被证明能够很好地建模序列内部之间的关系,所以我们尝试直接将行为序列输入到TransformerLayer,其模型结构如图3所示:

图3Transformer行为序列建模

行为序列建模模块

输入部分

分为短期行为序列和长期行为序列。行为序列内部的每个行为原始表示是由商户ID,以及一些商户泛化信息的Embedding进行concat组成。每段行为序列的长度固定,不足部分使用零向量进行补齐。

输出部分

对TransformerLayer输出的向量做Sum-pooling(这里尝试过Mean-pooling、concat,效果差不多)得到行为序列的最终Embedding表示。

该版本的离线指标相比线上Base(行为序列Sum-pooling)模型持平,尽管该版本没有取得离线提升,但是我们继续尝试优化。

第二个版本:第一个版本存在一个问题,对所有的item打分的时候,用户的Embedding表示都是一样的,所以参考BST[4],在第一个版本的基础上引入Target-item,这样可以学习行为序列内部的item与Target-item的相关性,这样在对不同的item打分时,用户的Embedding表示是不一样的,其模型结构如下图4所示:

图4Transformer行为序列建模

该版本的离线指标相比线上Base(行为序列Sum-pooling)模型提升,上线发现效果波动,我们仍然没有灰心,继续迭代优化。

第三个版本:和第二个版本一样,同样针对第一个版本存在的对不同item打分,用户Embedding表示一样的问题,尝试在第一个版本引入Transformer的基础上,叠加DIN[7]模型里面的Attention-pooling机制来解决该问题,其模型结构如图5所示:

图5Transformer行为序列建模

该版本的离线指标相比第二个版本模型有提升,上线效果相比线上Base(行为序列Sum-pooling)有稳定提升。

实践效果及经验

效果:第三个版本(Transformer+Attention-pooling)模型的线上QV_CTR和NDCG提升最为显著。

经验:

Transformer编码为什么有效?Transformer编码层内部的自注意力机制,能够对序列内item的相互关系进行有效的建模来实现更好的表达,并且我们离线实验不加Transformer编码层的Attention-pooling,发现离线NDCG下降,从实验上证明了Transformer编码有效。Transformer编码为什么优于GRU?忽略GRU的性能差于Transformer;我们做过实验将行为序列长度的上限往下调,Transformer的效果相比GRU的效果提升在缩小,但是整体还是行为序列的长度越大越好,所以Transformer相比GRU在长距离时,特征捕获能力更强。位置编码(Pos-Encoding)的影响:我们试过加Transformer里面原生的正余弦以及距当前预测时间的时间间隔的位置编码都无效果,分析应该是我们在处理行为序列的时候,已经将序列切割成不同时间段,一定程度上包含了时序位置信息。为了验证这个想法,我们做了仅使用一个长序列的实验(对照组不加位置编码,实验组加位置编码,离线NDCG有提升),这验证了我们的猜测。Transformer编码层不需要太多,层数过多导致模型过于复杂,模型收敛慢效果不好。调节多头注意力的“头”数对效果影响不大。

重排序

在引言中,我们提到美团搜索排序过去做了很多优化工作,但是大部分都是集中在PointWise的排序策略上,未能充分利用商户展示列表的上下文信息来优化排序。一种直接利用上下文信息优化排序的方法是对精排的结果进行重排,这可以抽象建模成一个序列(排序序列)生成另一个序列(重排序列)的过程,自然联想到可以使用NLP领域常用的SequencetoSequence建模方法进行重排序建模。

目前业界已有一些重排序的工作,比如使用RNN重排序[10-11]、Transformer重排序[5]。考虑到Transformer相比RNN有以下两个优势:(1)两个item的相关性计算不受距离的影响(2)Transformer可以并行计算,处理效率比RNN更高;所以我们选择Transformer对重排序进行建模。

模型结构

模型结构参考了PRM[5],结合美团搜索实践的情况,重排序模型相比PRM做了一些调整。具体结构如图6所示,其中D1,D2,…,Dn是重排商户集合,最后根据模型的输出Score(D1),Score(D2),…,Score(Dn)按照从大到小进行排序。

图6Transformer重排序

主要由以下几个部分构成:

特征向量生成:由原始特征(user、item、交叉等维度的稠密统计特征)经过一层全连接的输出进行表示。输入层:其中X表示商户的特征向量,P表示商户的位置编码,将特征向量X与位置向量P进行concat作为最终输入。Transformer编码层:一层Multi-HeadAttention和FFN的。输出层:一层全连接网络得到打分输出Score。

模型细节:

特征向量生成部分和重排序模型是一个整体,联合端到端训练。训练和预测阶段固定选择TopK进行重排,遇到某些请求曝光item集不够TopK的情况下,在末尾补零向量进行对齐。

实践效果及经验

效果:Transformer重排序对线上NDCG和QV_CTR均稳定正向提升。

经验:

重排序大小如何选择?考虑到线上性能问题,重排序的候选集不能过大,我们分析数据发现95%的用户浏览深度不超过10,所以我们选择对Top10的商户进行重排。位置编码向量的重要性:这个在重排序中很重要,需要位置编码向量来刻画位置,更好的让模型学习出上下文信息,离线实验发现去掉位置向量NDCG@10下降明显。性能优化:最初选择商户全部的精排特征作为输入,发现线上预测时间太慢;后面进行特征重要性评估,筛选出部分重要特征作为输入,使得线上预测性能满足上线要求。调节多头注意力的“头”数对效果影响不大。

总结和展望

2019年底,美团搜索对Transformer在排序中的应用进行了一些探索,既取得了一些技术沉淀也在线上指标上取得比较明显的收益,不过未来还有很多的技术可以探索。

在特征工程上,引入Transformer层进行高阶特征组合虽然没有带来收益,但是在这个过程中也再次验证了没有万能的模型对所有场景数据有效。目前搜索团队也在探索在特征层面应用BERT对精排模型进行优化。

在行为序列建模上,目前的工作集中在对已有的用户行为数据进行建模来理解用户,未来要想更加深入全面的认识用户,更加丰富的用户数据必不可少。当有了这些数据后如何进行利用,又是一个可以探索的技术点,比如图神经网络建模等等。

在重排序建模上,目前引入Transformer取得了一些效果,同时随着强化学习的普及,在美团这种用户与系统强交互的场景下,用户的行为反馈蕴含着很大的研究价值,未来利用用户的实时反馈信息进行调序是个值得探索的方向。例如,根据用户上一刻的浏览反馈,对用户下一刻的展示结果进行调序。

除了上面提到的三点,考虑到美团搜索上承载着多个业务,比如美食、到综、酒店、旅游等等,各个业务之间既有共性也有自己独有的特性,并且除了优化用户体验,也需要满足业务需求。为了更好的对这一块建模优化,我们也正在探索PartitionModel和多目标相关的工作,欢迎业界同行一起交流。

参考资料

[1]VaswaniA,ShazeerN,ParmarN,etal.Attentionisallyouneed[C]//Advancesinneuralinformationprocessingsystems.2017:5998-6008.

[2]DevlinJ,ChangMW,LeeK,etal.Bert:Pre-trainingofdeepbidirectionaltransformersforlanguageunderstanding[J].arXiv:1810.04805,2018.

[3]SongW,ShiC,XiaoZ,etal.Autoint:Automaticfeatureinteractionlearningviaself-attentiveneuralnetworks[C]//Proceedingsofthe28thACMInternationalConferenceonInformationandKnowledgeManagement.2019:1161-1170.

[4]ChenQ,ZhaoH,LiW,etal.Behaviorsequencetransformerfore-commercerecommendationinAlibaba[C]//Proceedingsofthe1stInternationalWorkshoponDeepLearningPracticeforHigh-DimensionalSparseData.2019:1-4.

[5]PeiC,ZhangY,ZhangY,etal.Personalizedre-rankingforrecommendation[C]//Proceedingsofthe13thACMConferenceonRecommenderSystems.2019:3-11.

[6]http://jalammar.github.io/illustrated-transformer/

[7]ZhouG,ZhuX,SongC,etal.Deepinterestnetworkforclick-throughrateprediction[C]//Proceedingsofthe24thACMSIGKDDInternationalConferenceonKnowledgeDiscovery&DataMining.ACM,2018:1059-1068.

[8]ZhouG,MouN,FanY,etal.Deepinterestevolutionnetworkforclick-throughrateprediction[C]//ProceedingsoftheAAAIConferenceonArtificialIntelligence.2019,33:5941-5948.

[9]FengY,LvF,ShenW,etal.DeepSessionInterestNetworkforClick-ThroughRatePrediction[J].arXiv:1905.06482,2019.

[10]ZhuangT,OuW,WangZ.Globallyoptimizedmutualinfluenceawarerankingine-commercesearch[J].arXiv:1805.08524,2018.

[11]AiQ,BiK,GuoJ,etal.Learningadeeplistwisecontextmodelforrankingrefinement[C]//The41stInternationalACMSIGIRConferenceonResearch&DevelopmentinInformationRetrieval.2018:135-144.

作者简介

肖垚,家琪,周翔,陈胜,云森,永超,仲远等,均来自美团AI平台搜索与NLP部。

———-END———-

招聘信息

美团搜索核心排序组,长期招聘搜索推荐算法工程师,坐标北京。欢迎感兴趣的同学发送简历到:tech@meituan.com(邮件标题请注明:美团搜索核心排序组)

本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。