BERT在美团搜索核心排序的探索和实践

为进一步优化美团搜索排序结果的深度语义相关性,提高用户体验,搜索与NLP部算法团队从2019年末开始基于BERT优化美团搜索排序相关性,通过三个月的算法迭代优化,离线和线上效果均取得必定进展。本文主要介绍探索过程以及实践经验。html

引言

美团搜索是美团App上最大的链接人和服务的入口,覆盖了团购、外卖、电影、酒店、买菜等各类生活服务。随着用户量快速增加,愈来愈多的用户在不一样场景下都会经过搜索来获取本身想要的服务。理解用户Query,将用户最想要的结果排在靠前的位置,是搜索引擎最核心的两大步骤。可是,用户输入的Query多种多样,既有商户名称和服务品类的Query,也有商户别名和地址等长尾的Query,准确刻画Query与Doc之间的深度语义相关性相当重要。基于Term匹配的传统相关性特征能够较好地判断Query和候选Doc的字面相关性,但在字面相差较大时,则难以刻画出二者的相关性,好比Query和Doc分别为“英语辅导”和“新东方”时二者的语义是相关的,使用传统方法获得的Query-Doc相关性却不一致。git

2018年末,以Google BERT[1]为表明的预训练语言模型刷新了多项NLP任务的最好水平,开创了NLP研究的新范式:即先基于大量无监督语料进行语言模型预训练(Pre-training),再使用少许标注语料进行微调(Fine-tuning)来完成下游的NLP任务(文本分类、序列标注、句间关系判断和机器阅读理解等)。美团AI平台搜索与NLP部算法团队基于美团海量业务语料训练了MT-BERT模型,已经将MT-BERT应用到搜索意图识别、细粒度情感分析、点评推荐理由、场景化分类等业务场景中[2]。github

做为BERT的核心组成结构,Transformer具备强大的文本特征提取能力,早在多项NLP任务中获得了验证,美团搜索也基于Transformer升级了核心排序模型,取得了不错的研究成果[3]。为进一步优化美团搜索排序结果的深度语义相关性,提高用户体验,搜索与NLP部算法团队从2019年末开始基于BERT优化美团搜索排序相关性,通过三个月的算法迭代优化,离线和线上效果均取得必定进展,本文主要介绍BERT在优化美团搜索核心排序上的探索过程以及实践经验。web

BERT简介

近年来,以BERT为表明的预训练语言模型在多项 NLP 任务上都得到了不错的效果。下图1简要回顾了预训练语言模型的发展历程。2013年,Google提出的 Word2vec[4]经过神经网络预训练方式来生成词向量(Word Embedding),极大地推进了深度天然语言处理的发展。针对Word2vec生成的固定词向量没法解决多义词的问题,2018年,Allen AI团队提出基于双向LSTM网络的ELMo[5]。ELMo根据上下文语义来生成动态词向量,很好地解决了多义词的问题。2017年末,Google提出了基于自注意力机制的Transformer[6]模型。算法

相比RNN模型,Transformer语义特征提取能力更强,具有长距离特征捕获能力,且能够并行训练,在机器翻译等NLP任务上效果显著。Open AI团队的GPT[7]使用Transformer替换RNN进行深层单向语言模型预训练,并经过在下游任务上Fine-tuning验证了Pretrain-Finetune范式的有效性。在此基础上,Google BERT引入了MLM(Masked Language Model)及NSP(Next Sentence Prediction,NSP)两个预训练任务,并在更大规模语料上进行预训练,在11项天然语言理解任务上刷新了最好指标。BERT的成功启发了大量后续工做,总结以下:缓存

  • 融合更多外部知识的百度ERNIE[8], 清华ERNIE[9]和K-BERT[10]等;
  • 优化预训练目标的ERNIE 2.0[11],RoBERTa[12],SpanBERT[13],StructBERT[14]等;
  • 优化模型结构或者训练方式的ALBERT[15]和ELECTRA[16]。关于预训练模型的各类后续工做,能够参考复旦大学邱锡鹏老师最近的综述[17],本文再也不赘述。

图1 NLP预训练发展历程

基于预训练好的BERT模型能够支持多种下游NLP任务。BERT在下游任务中的应用主要有两种方式:即Feature-based和Finetune-based。其中Feature-based方法将BERT做为文本编码器获取文本表示向量,从而完成文本类似度计算、向量召回等任务。而Finetune-based方法是在预训练模型的基础上,使用具体任务的部分训练数据进行训练,从而针对性地修正预训练阶段得到的网络参数。该方法更为主流,在大多数任务上效果也更好。微信

因为BERT在NLP任务上的显著优点,一些研究工做开始将BERT应用于文档排序等信息检索任务中。清华大学Qiao等人[18]详细对比了Feature-based和Finetune-based两种应用方式在段落排序(Passage Ranking)中的效果。滑铁卢大学Jimmy Lin团队[19]针对文档排序任务提出了基于Pointwise和Pairwise训练目标的MonoBERT和DuoBERT模型。此外,该团队[20]提出融合基于BERT的Query-Doc相关性和Query-Sentence相关性来优化文档排序任务的方案。为了优化检索性能和效果,Bing广告团队[21]提出一种双塔结构的TwinBERT分别编码Query和Doc文本。2019年10月,Google在其官方博客介绍了BERT在Google搜索排序和精选摘要(Featured Snippet)场景的应用,BERT强大的语义理解能力改善了约10%的Google搜索结果[22],除了英文网页,Google也正在基于BERT优化其余语言的搜索结果。值得一提的是美团AI平台搜索与NLP部在WSDM Cup 2020检索排序评测任务中提出了基于Pairwise模式的BERT排序模型和基于LightGBM的排序模型,取得了榜单第一名的成绩[23]。网络

搜索相关性

美团搜索场景下相关性任务定义以下:给定用户Query和候选Doc(一般为商户或商品),判断二者之间相关性。搜索Query和Doc的相关性直接反映结果页排序的优劣,将相关性高的Doc排在前面,能提升用户搜索决策效率和搜索体验。为了提高结果的相关性,咱们在召回、排序等多个方面作了优化,本文主要讨论在排序方面的优化。经过先对Query和Doc的相关性进行建模,把更加准确的相关性信息输送给排序模型,从而提高排序模型的排序能力。Query和Doc的相关性计算是搜索业务核心技术之一,根据计算方法相关性主要分为字面相关性和语义相关性。架构

字面相关性

早期的相关性匹配主要是根据Term的字面匹配度来计算相关性,如字面命中、覆盖程度、TFIDF、BM25等。字面匹配的相关性特征在美团搜索排序模型中起着重要做用,但字面匹配有它的局限,主要表如今:app

  • 词义局限:字面匹配没法处理同义词和多义词问题,如在美团业务场景下“宾馆”和“旅店”虽然字面上不匹配,但都是搜索“住宿服务”的同义词;而“COCO”是多义词,在不一样业务场景下表示的语义不一样,多是奶茶店,也多是理发店。
  • 结构局限:“蛋糕奶油”和“奶油蛋糕”虽词汇彻底重合,但表达的语义彻底不一样。 当用户搜“蛋糕奶油”时,其意图每每是找“奶油”,而搜“奶油蛋糕”的需求基本上都是“蛋糕”。

语义相关性

为了解决上述问题,业界工做包括传统语义匹配模型和深度语义匹配模型。传统语义匹配模型包括:

  • 隐式模型:将Query、Doc都映射到同一个隐式向量空间,经过向量类似度来计算Query-Doc相关性,例如使用主题模型LDA[24]将Query和Doc映射到同一贯量空间;
  • 翻译模型:经过统计机器翻译方法将Doc进行改写后与Query进行匹配[25]。

这些方法弥补了字面匹配方法的不足,不过从实际效果上来看,仍是没法很好地解决语义匹配问题。随着深度天然语言处理技术的兴起,基于深度学习的语义匹配方法成为研究热点,主要包括基于表示的匹配方法(Representation-based)和基于交互的匹配方法(Interaction-based)。

基于表示的匹配方法:使用深度学习模型分别表征Query和Doc,经过计算向量类似度来做为语义匹配分数。微软的DSSM[26]及其扩展模型属于基于表示的语义匹配方法,美团搜索借鉴DSSM的双塔结构思想,左边塔输入Query信息,右边塔输入POI、品类信息,生成Query和Doc的高阶文本相关性、高阶品类相关性特征,应用于排序模型中取得了很好的效果。此外,比较有表明性的表示匹配模型还有百度提出 SimNet[27],中科院提出的多视角循环神经网络匹配模型(MV-LSTM)[28]等。

基于交互的匹配方法:这种方法不直接学习Query和Doc的语义表示向量,而是在神经网络底层就让Query和Doc提早交互,从而得到更好的文本向量表示,最后经过一个MLP网络得到语义匹配分数。表明性模型有华为提出的基于卷积神经网络的匹配模型ARC-II[29],中科院提出的基于矩阵匹配的的层次化匹配模型MatchPyramid[30]。

基于表示的匹配方法优点在于Doc的语义向量能够离线预先计算,在线预测时只须要从新计算Query的语义向量,缺点是模型学习时Query和Doc二者没有任何交互,不能充分利用Query和Doc的细粒度匹配信号。基于交互的匹配方法优点在于Query和Doc在模型训练时可以进行充分的交互匹配,语义匹配效果好,缺点是部署上线成本较高。

BERT语义相关性

BERT预训练使用了大量语料,通用语义表征能力更好,BERT的Transformer结构特征提取能力更强。中文BERT基于字粒度预训练,能够减小未登陆词(OOV)的影响,美团业务场景下存在大量长尾Query(如大量数字和英文复合Query)字粒度模型效果优于词粒度模型。此外,BERT中使用位置向量建模文本位置信息,能够解决语义匹配的结构局限。综上所述,咱们认为BERT应用在语义匹配任务上会有更好的效果,基于BERT的语义匹配有两种应用方式:

  • Feature-based:属于基于表示的语义匹配方法。相似于DSSM双塔结构,经过BERT将Query和Doc编码为向量,Doc向量离线计算完成进入索引,Query向量线上实时计算,经过近似最近邻(ANN)等方法实现相关Doc召回。
  • Finetune-based:属于基于交互的语义匹配方法,将Query和Doc对输入BERT进行句间关系Fine-tuning,最后经过MLP网络获得相关性分数。

Feature-based方式是通过BERT获得Query和Doc的表示向量,而后计算余弦类似度,全部业务场景下Query-Doc类似度都是固定的,不利于适配不一样业务场景。此外,在实际场景下为海量Doc向量创建索引存储成本太高。所以,咱们选择了Finetune-based方案,利用搜索场景中用户点击数据构造训练数据,而后经过Fine-tuning方式优化Query-Doc语义匹配任务。图2展现了基于BERT优化美团搜索核心排序相关性的技术架构图,主要包括三部分:

  • 数据样本加强:因为相关性模型的训练基于搜索用户行为标注的弱监督数据,咱们结合业务经验对数据作了去噪和数据映射。为了更好地评价相关性模型的离线效果,咱们构建了一套人工标注的Benchmark数据集,指导模型迭代方向。
  • BERT领域适配:美团业务场景中,Query和Doc以商户、商品、团购等短文本为主,除标题文本之外,还存在商户/商品描述、品类、地址、图谱标签等结构化信息。咱们首先改进了MT-BERT预训练方法,将品类、标签等文本信息也加入MT-BERT预训练过程当中。在相关性Fine-tuning阶段,咱们对训练目标进行了优化,使得相关性任务和排序任务目标更加匹配,并进一步将两个任务结合进行联合训练。此外,因为BERT模型前向推理比较耗时,难以知足上线要求,咱们经过知识蒸馏将12层BERT模型压缩为符合上线要求的2层小模型,且无显著的效果损失。
  • 排序模型优化:核心排序模型(本文记为L2模型)包括LambdaDNN[31]、TransformerDNN[3]、MultiTaskDNN等深度学习模型。给定<Query, Doc>,咱们将基于BERT预测的Query-Doc相关性分数做为特征用于L2模型的训练中。

图2 美团搜索核心排序相关性优化技术架构图

算法探索

数据加强

BERT Fine-tuning任务须要必定量标注数据进行迁移学习训练,美团搜索场景下Query和Doc覆盖多个业务领域,若是采用人工标注的方法为每一个业务领域标注一批训练样本,时间和人力成本太高。咱们的解决办法是使用美团搜索积累的大量用户行为数据(如浏览、点击、下单等), 这些行为数据能够做为弱监督训练数据。在DSSM模型进行样本构造时,每一个Query下抽取1个正样本和4个负样本,这是比较经常使用的方法,可是其假设Query下的Doc被点击就算是相关的,这个假设在实际的业务场景下会给模型引入一些噪声。

此处以商家(POI)搜索为例,理想状况下若是一个POI出如今搜索结果里,可是没有任何用户点击,可认为该POI和Query不相关;若是该POI有点击或下单行为,可认为该POI和Query相关。下单行为数据是用户“用脚投票”得来的,具备更高的置信度,所以咱们使用下单数据做为正样本,使用未点击过的数据构造负样本,而后结合业务场景对样本进一步优化。数据优化主要包括对样本去噪和引入品牌数据两个方面。此外,为了评测算法离线效果,咱们从构造样本中随机采样9K条样本进行了人工标注做为Benchmark数据集。

样本去噪

无心义单字Query过滤。因为单字Query表达的语义一般不完整,用户点击行为也比较随机,如<优,花漾星球专柜(中央大道倍客优)>,这部分数据若是用于训练会影响最终效果。咱们去除了包含无心义单字Query的所有样本。

正样本从用户下单的POI中进行随机采样,且过滤掉Query只出如今POI的分店名中的样本,如<大润发,小龙坎老火锅(大润发店)>,虽然Query和POI字面匹配,但实际上是不相关的结果。

负样本尝试了两种构造方法:全局随机负采样和Skip-Above采样。

  • 全局随机负采样:用户没有点击的POI进行随机采样获得负例。咱们观察发现随机采样一样存在大量噪声数据,补充了两项过滤规则来过滤数据。① 大量的POI未被用户点击是由于不是离用户最近的分店,但POI和Query是相关的,这种类型的样例须要过滤掉,如<蛙小侠 ,蛙小侠(新北万达店)>。② 用户Query里包含品牌词,而且POI彻底等同于品牌词的,须要从负样本中过滤,如<德克士吃饭 ,德克士>。
  • Skip-Above采样:受限于App搜索场景的展现屏效,没法保证召回的POI一次性获得曝光。若直接将未被点击的POI做为负例,可能会将未曝光但相关的POI错误地采样为负例。为了保证训练数据的准确性,咱们采用Skip-Above方法,剔除这些噪音负例,即从用户点击过的POI之上没有被点击过的POI中采样负例(假设用户是从上往下浏览的POI)。

品牌样本优化

美团商家中有不少品牌商家,一般品牌商家拥有数百上千的POI,如“海底捞”、“肯德基”、“香格里拉酒店”等,品牌POI名称可能是“品牌+地标”文本形式,如“北京香格里拉饭店”。对Query和POI的相关性进行建模时,若是仅取Query和POI名进行相关性训练,POI名中的“地标”会给模型带来很大干扰。例如,用户搜“香格里拉酒店”时会召回品牌“香格里拉酒店”的分店,如“香格里拉酒店”和“北京香格里拉饭店”等,相关性模型受地标词影响,会给不一样分店会打出不一样的相关性分数,进而影响到后续排序模型的训练。所以,咱们对于样本中的品牌搜索样本作了针对性优化。搜索品牌词有时会召回多个品牌的结果,假设用户搜索的品牌排序靠后,而其余品牌排序靠前会严重影响到用户体验,所以对Query和POI相关性建模时召回结果中其余品牌的POI可认为是不相关样本。针对上述问题,咱们利用POI的品牌信息对<Query, POI>样本进行了重点优化。

  • POI名映射到品牌:在品牌搜Query不包含地标词的时候,将POI名映射到品牌(非品牌POI不进行映射),从而消除品牌POI分店名中地标词引入的噪声。如Query是“香格里拉酒店”,召回的“香格里拉大酒店”和“北京香格里拉饭店”统一映射为品牌名“香格里拉酒店”。Query是“品牌+地标”形式(如“香格里拉饭店 北京”)时,用户意图明确就是找某个地点的POI,不须要进行映射,示例以下图3所示。
  • 负样本过滤:若是搜索词是品牌词,在选取负样本的时候只在其余品牌的样本中选取。如POI为“香格里拉实力希尔顿花园酒店”、“桔子香格里拉古城酒店”时,同Query “香格里拉酒店”虽然字面很类似,但其明显不是用户想要的品牌。

通过样本去噪和品牌样本优化后,BERT相关性模型在Benchmark上的Accuracy提高23BP,相应地L2排序排序模型离线AUC提高17.2BP。

图3 POI品牌信息优化样本示意图

模型优化

知识融合

咱们团队基于美团业务数据构建了餐饮娱乐领域知识图谱—“美团大脑”[32],对于候选Doc(POI/SPU),经过图谱能够获取到该Doc的大量结构化信息,如地址、品类、团单,场景标签等。美团搜索场景中的Query和Doc都以短文本为主,咱们尝试在预训练和Fine-tuning阶段融入图谱品类和实体信息,弥补Query和Doc文本信息的不足,强化语义匹配效果。

引入品类信息的预训练

因为美团搜索多模态的特色,在某些状况下,仅根据Query和Doc标题文本信息很难准确判断二者之间的语义相关性。如<考研班,虹蝶教育>,Query和Doc标题文本相关性不高,可是“虹蝶教育”三级品类信息分别是“教育-升学辅导-考研”,引入相关图谱信息有助于提升模型效果,咱们首先基于品类信息作了尝试。

在相关性判别任务中,BERT模型的输入是<Query, Doc>对。对于每个输入的Token,它的表征由其对应的词向量(Token Embedding)、片断向量(Segment Embedding)和位置向量(Position Embedding)相加产生。为了引入Doc品类信息,咱们将Doc三级品类信息拼接到Doc标题以后,而后跟Query进行相关性判断,如图4所示。

图4 BERT输入部分加入Doc(POI)品类信息

对于模型输入部分,咱们将Query、Doc标题、三级类目信息拼接,并用[SEP]分割,区分3种不一样来源信息。对于段向量,原始的BERT只有两种片断编码EA和EB,在引入类目信息的文本信息后,引入额外的片断编码EC。引入额外片断编码的做用是防止额外信息对Query和Doc标题产生交叉干扰。因为咱们改变了BERT的输入和输出结构,没法直接基于MT-BERT进行相关性Fine-tuning任务。咱们对MT-BERT的预训练方式作了相应改进,BERT预训练的目标之一是NSP(Next Sentence Prediction),在搜索场景中没有上下句的概念,在给定用户的搜索关键词和商户文本信息后,判断用户是否点击来取代NSP任务。

添加品类信息后,BERT相关性模型在Benchmark上的Accuracy提高56BP,相应地L2排序模型离线AUC提高6.5BP。

引入实体成分识别的多任务Fine-tuning

在美团搜索场景中,Query和Doc一般由不一样实体成分组成,如美食、酒店、商圈、品牌、地标和团购等。除了文本语义信息,这些实体成分信息对于Query-Doc相关性判断相当重要。若是Query和Doc语义相关,那二者除了文本语义类似外,对应的实体成分也应该类似。例如,Query为“Helens海伦司小酒馆”,Doc为“Helens小酒馆(东鼎购物中心店)”,虽然文本语义不彻底匹配,但两者的主要的实体成分类似(主体成分为品牌+POI形式),正确的识别出Query/Doc中的实体成分有助于相关性的判断。微软的MT-DNN[33]已经证实基于预训练模型的多任务Fine-tuning能够提高各项子任务效果。因为BERT Fine-tuning任务也支持命名实体识别(NER)任务,于是咱们在Query-Doc相关性判断任务的基础上引入Query和Doc中实体成分识别的辅助任务,经过对两个任务的联合训练来优化最终相关性判别结果,模型结构以下图5所示:

图5 实体成分一致性学习模型结构

多任务学习模型的损失函数由两部分组成,分别是相关性判断损失函数和命名实体识别损失函数。其中相关性损失函数由[CLS]位的Embedding计算获得,而实体成分识别损失函数由每一个Token的Embedding计算获得。2种损失函数相加即为最终优化的损失函数。在训练命名实体识别任务时,每一个Token的Embedding得到了和自身实体相关的信息,从而提高了相关性任务的效果。

引入实体成分识别的多任务Fine-tuning方式后,BERT相关性模型在Benchmark上的Accuracy提高219BP,相应地L2排序模型AUC提高17.8BP。

Pairwise Fine-tuning

Query-Doc相关性最终做为特征加入排序模型训练中,所以咱们也对Fine-tuning任务的训练目标作了针对性改进。基于BERT的句间关系判断属于二分类任务,本质上是Pointwise训练方式。Pointwise Fine-tuning方法能够学习到很好的全局相关性,但忽略了不一样样本以前的偏序关系。如对于同一个Query的两个相关结果DocA和DocB,Pointwise模型只能判断出二者都与Query相关,没法区分DocA和DocB相关性程度。为了使得相关性特征对于排序结果更有区分度,咱们借鉴排序学习中Pairwise训练方式来优化BERT Fine-tuning任务。

Pairwise Fine-tuning任务输入的单条样本为三元组<Query, Doc+, Doc->,对于同一Query的多个候选Doc,选择任意一个正例和一个负例组合成三元组做为输入样本。在下游任务中只须要使用少许的Query和Doc相关性的标注数据(有监督训练样本),对BERT模型进行相关性Fine-tuning,产出Query和Doc的相关性特征。Pairwise Fine-tuning的模型结构以下图6所示:

图6 Pairwise Fine-tuning模型结构

对于同一Query的候选Doc,选择两个不一样标注的Doc,其中相关文档记为Doc+,不相关文档记Doc-。输入层经过Lookup Table 将Query, Doc+以及Doc-的单词转换为 Token 向量,同时会拼接位置向量和片断向量,造成最终输入向量。接着经过BERT模型能够分别获得(Query, Doc+)以及(Query, Doc-)的语义相关性表征,即BERT的CLS位输出。 通过Softmax归一化后,能够分别获得(Query, Doc+)和(Query, Doc-)的语义类似度打分。

对于同一Query的候选Doc,选择两个不一样标注的Doc,其中相关文档记为Doc+,不相关文档记Doc-。输入层经过Lookup Table 将Query, Doc+以及Doc-的单词转换为 Token 向量,同时会拼接位置向量和片断向量,造成最终输入向量。接着经过BERT模型能够分别获得(Query, Doc+)以及(Query, Doc-)的语义相关性表征,即BERT的CLS位输出。 通过Softmax归一化后,能够分别获得(Query, Doc+)和(Query, Doc-)的语义类似度打分。

Pairwise Fine-tuning除了输入样本上的变化,为了考虑搜索场景下不一样样本之间的偏序关系,咱们参考RankNet[34]的方式对训练损失函数作了优化。
令$P_{ij}$为同一个Query下$Doc_i$相比$Doc_j$更相关的几率,其中$s_i$和$s_j$分别为$Doc_i$和$Doc_j$的模型打分,则$P_{ij}=1/({1+e^{-\sigma(s_i-s_j)}})$。使用交叉熵损失函数,令$S_{ij}$表示样本对的真实标记,当$Doc_i$比$Doc_j$更相关时(即$Doc_i$为正例而$Doc_j$为负例),$S_{ij}$为1,不然为-1,损失函数能够表示为:$C = \sum_{(i,j)\in N} \frac{1}{2} (1-S_{ij} )\sigma(s_i-s_j )+log⁡(1+e^{-\sigma(s_i-s_j)})$,其中$N$表示全部在同Query下的Doc对。
使用Pairwise Fine-tuning方式后,BERT相关性模型在Benchmark上的Accuracy提高925BP,相应地L2排序模型的AUC提高19.5BP。

联合训练

前文所述各类优化属于两阶段训练方式,即先训练BERT相关性模型,而后训练L2排序模型。为了将二者深刻融合,在排序模型训练中引入更多相关性信息,咱们尝试将BERT相关性Fine-tuning任务和排序任务进行端到端的联合训练。

因为美团搜索涉及多业务场景且不一样场景差别较大,对于多场景的搜索排序,每一个子场景进行单独优化效果好,可是多个子模型维护成本更高。此外,某些小场景因为训练数据稀疏没法学习到全局的Query和Doc表征。咱们设计了基于Partition-model的BERT相关性任务和排序任务的联合训练模型,Partition-model的思想是利用全部数据进行全场景联合训练,同时必定程度上保留每一个场景特性,从而解决多业务场景的排序问题,模型结构以下图7所示:

图7 联合训练模型结构

输入层:模型输入是由文本特征向量、用户行为序列特征向量和其余特征向量3部分组成。

  • 文本特征向量使用BERT进行抽取,文本特征主要包括Query和POI相关的一些文本(POI名称、品类名称、品牌名称等)。将文本特征送入预训练好的MT-BERT模型,取CLS向量做为文本特征的语义表示。
  • 用户行为序列特征向量使用Transformer进行抽取[3]。
  • 其余特征主要包括:① 统计类特征,包含Query、Doc等维度的特征以及它们之间的交叉特征,使用这些特征主要是为了丰富Query和Doc的表示,更好地辅助相关性任务训练。② 文本特征,这部分的特征同1中的文本特征,可是使用方式不一样,直接将文本分词后作Embedding,端到端的学习文本语义表征。③ 传统的文本相关性特征,包括Query和Doc的字面命中、覆盖程度、BM25等特征,虽然语义相关性具备较好的做用,但字面相关性仍然是一个不可或缺的模块,它起到信息补充的做用。

共享层:底层网络参数是全部场景网络共享。

场景层:根据业务场景进行划分,每一个业务场景单独设计网络结构,打分时只通过所在场景的那一路。

损失函数:搜索业务更关心排在页面头部结果的好坏,将更相关的结果排到头部,用户会得到更好的体验,所以选用优化NDCG的Lambda Loss[34]。

联合训练模型目前还在实验当中,离线实验已经取得了不错的效果,在验证集上AUC提高了234BP。目前,场景切分依赖Query意图模块进行硬切分,后续自动场景切分也值得进行探索。

应用实践

因为BERT的深层网络结构和庞大参数量,若是要部署上线,实时性上面临很大挑战。在美团搜索场景下,咱们对基于MT-BERT Fine-tuning好的相关性模型(12层)进行了50QPS压测实验,在线服务的TP99增长超过100ms,不符合工程上线要求。咱们从两方面进行了优化,经过知识蒸馏压缩BERT模型,优化排序服务架构支持蒸馏模型上线。

模型轻量化

为了解决BERT模型参数量过大、前向计算耗时的问题,经常使用轻量化方法有三种:

  • 知识蒸馏:模型蒸馏是在必定精度要求下,将大模型学到的知识迁移到另外一个轻量级小模型上,目的是下降预测计算量的同时保证预测效果。Hinton在2015年的论文中阐述了核心思想[35],大模型通常称做Teacher Model,蒸馏后的小模型通常称做Student Model。具体作法是先在训练数据上学习Teacher Model,而后Teacher Model对无标注数据进行预测获得伪标注数据,最后使用伪标注数据训练Student Model。HuggingFace提出的DistilBERT[36]和华为提出的TinyBERT[37] 等BERT的蒸馏模型都取得了不错的效果,在保证效果的状况下极大地提高了模型的性能。
  • 模型裁剪:经过模型剪枝减小参数的规模。
  • 低精度量化:在模型训练和推理中使用低精度(FP16甚至INT八、二值网络)表示取代原有精度(FP32)表示。

在Query意图分类任务[2]中,咱们基于MT-BERT裁剪为4层小模型达到了上线要求。意图分类场景下Query长度偏短,语义信息有限,直接裁剪掉几层Transformer结构对模型的语义表征能力不会有太大的影响。在美团搜索的场景下,Query和Doc拼接后整个文本序列变长,包含更复杂的语义关系,直接裁剪模型会带来更多的性能损失。所以,咱们在上线Query-Doc相关性模型以前,采用知识蒸馏方式,在尽量在保持模型性能的前提下对模型层数和参数作压缩。两种方案的实验效果对比见下表1:

表1 裁剪和知识蒸馏方式效果对比

在美团搜索核心排序的业务场景下,咱们采用知识蒸馏使得BERT模型在对响应时间要求苛刻的搜索场景下符合了上线的要求,而且效果无显著的性能损失。知识蒸馏(Knowledge Distillation)核心思想是经过迁移知识,从而经过训练好的大模型获得更加适合推理的小模型。首先咱们基于MT-BERT(12 Layers),在大规模的美团点评业务语料上进行知识蒸馏获得通用的MT-BERT蒸馏模型(6 Layers),蒸馏后的模型能够做为具体下游任务Fine-tuning时的初始化模型。在美团搜索的场景下,咱们进一步基于通用的MT-BERT蒸馏模型(6 Layers)进行相关性任务Fine-tuning ,获得MT-BERT蒸馏(2 Layers)进行上线。

排序服务架构优化

图8 核心排序框架图

美团搜索线上排序服务框架如上图8所示,主要包括如下模块:

  • 模型在线预估框架(Augur):支持语言化定义特征,配置化加载和卸载模型与特征,支持主流线性模型与TF模型的在线预估;基于Augur能够方便地构建功能完善的无状态、分布式的模型预估服务。为了能方便将BERT特征用于排序模型,Augur团队开发了Model Stacking功能,完美支持了BERT as Feature;这种方式将模型的分数当作一个特征,只须要在Augur服务模型配置平台上进行特征配置便可,很好地提高了模型特征的迭代效率。
  • 搜索模型实验平台(Poker):支持超大规模数据和模型的离线特征抽取、模型训练,支持BERT模型自助训练/Fine-tuning和预测;同时打通了Augur服务,训练好的模型能够实现一键上线,大大提高了模型的实验效率。

TF-Serving在线模型服务:L2排序模型、BERT模型上线使用TF-Serving进行部署。TF-Serving预测引擎支持Faster Transformer[38]加速BERT推理,提高了线上的预估速度。

为了进一步提高性能,咱们将头部Query进行缓存只对长尾Query进行在线打分,线上预估结合缓存的方式,即节约了GPU资源又提高了线上预估速度。通过上述优化,咱们实现了50 QPS下,L2模型TP99只升高了2ms,知足了上线的要求。

线上效果

针对前文所述的各类优化策略,除了离线Benchmark上的效果评测以外,咱们也将模型上线进行了线上AB评测,Baseline是当前未作任何优化的排序模型,咱们独立统计了各项优化在Baseline基础上带来的变化,因为线上真实环境影响因素较多,为了确保结论可信,咱们同时统计了QVCTR和NDCG两个指标,结果如表2所示:

表2 线上AB效果对比(*表示AB一周稳定正向)

从表2能够看出,各项优化对线上排序核心指标都带来稳定的提高。用户行为数据存在大量噪声不能直接拿来建模,咱们基于美团搜索排序业务特色设计了一些规则对训练样本进行优化,还借助POI的品牌信息对样本进行映射和过滤。经过人工对样本进行评测发现,优化后的样本更加符合排序业务特色以及“人”对相关性的认知,同时线上指标的提高也验证了咱们优化的有效性。知识融合的BERT模型引入大量结构化文本信息,弥补了POI名自己文本信息少的问题,排序模型CTR和NDCG都有明显的提高。对数据样本的优化有了必定的效果。为了更加匹配业务场景,咱们从模型的角度进行优化,模型损失函数改用排序任务经常使用的Pairwise Loss,其考虑了文档之间的关系更加贴合排序任务场景,线上排序模型NDCG取得了必定的提高。

总结与展望

本文总结了搜索与NLP算法团队基于BERT在美团搜索核心排序落地的探索过程和实践经验,包括数据加强、模型优化和工程实践。在样本数据上,咱们结合了美团搜索业务领域知识,基于弱监督点击日志构建了高质量的训练样本;针对美团搜索多模态特色,在预训练和Fine-tuning阶段融合图谱品类和标签等信息,弥补Query和Doc文本较短的不足,强化文本匹配效果。

在算法模型上,结合搜索排序优化目标,引入了Pairwise/Listwise的Fine-tuning训练目标,相比Pointwise方式在相关性判断上更有区分度。这些优化在离线Benchmark评测和线上AB评测中带来了不一样幅度的指标提高,改善了美团搜索的用户体验。

在工程架构上,针对BERT在线预估性能耗时长的问题,参考业界经验,咱们采用了BERT模型轻量化的方案进行模型蒸馏裁剪,既保证模型效果又提高了性能,同时咱们对总体排序架构进行了升级,为后续快速将BERT应用到线上预估奠基了良好基础。

搜索与NLP算法团队会持续进行探索BERT在美团搜索中的应用落地,咱们接下来要进行如下几个优化:

  • 融合知识图谱信息对长尾流量相关性进行优化:美团搜索承接着多达几十种生活服务的搜索需求,当前头部流量相关性问题已经较好地解决,长尾流量的相关性优化须要依赖更多的高质量数据。咱们将利用知识图谱信息,将一些结构化先验知识融入到BERT预训练中,对长尾Query的信息进行加强,使其能够更好地进行语义建模。
  • 相关性与其余任务联合优化:美团搜索场景下Query和候选Doc都更结构化,除文本语义匹配外,Query/Doc文本中蕴含的实体成分、意图、类目也能够用于辅助相关性判断。目前,咱们将相关性任务和成分识别任务结合进行联合优化已经取得必定效果。后续咱们考虑将意图识别、类目预测等任务加入相关性判断中,多视角、更全面地评估Query-Doc的相关性。
  • BERT相关性模型和排序模型的深刻融合:当前两个模型属于两阶段训练方式,将BERT语义相关性做为特征加入排序模型来提高点击率。语义相关性是影响搜索体验的重要因素之一,咱们将BERT相关性和排序模型进行端到端联合训练,将相关性和点击率目标进行多目标联合优化,提高美团搜索排序的综合体验。

参考资料

[1] Devlin, Jacob, et al. "BERT: Pre-training of deep bidirectional transformers for language understanding." arXiv preprint arXiv:1810.04805 (2018).

[2] 杨扬、佳昊等. 美团BERT的探索和实践

[3] 肖垚、家琪等. Transformer在美团搜索排序中的实践

[4] Mikolov, Tomas, et al. "Efficient estimation of word representations in vector space." arXiv preprint arXiv:1301.3781 (2013).

[5] Peters, Matthew E., et al. "Deep contextualized word representations." arXiv preprint arXiv:1802.05365 (2018).

[6] Vaswani, Ashish, et al. "Attention is all you need." Advances in neural information processing systems. 2017.

[7] Radford, Alec, et al. "Improving language understanding by generative pre-training."

[8] Sun, Yu, et al. "Ernie: Enhanced representation through knowledge integration." arXiv preprint arXiv:1904.09223 (2019).

[9] Zhang, Zhengyan, et al. "ERNIE: Enhanced language representation with informative entities." arXiv preprint arXiv:1905.07129 (2019).

[10] Liu, Weijie, et al. "K-bert: Enabling language representation with knowledge graph." arXiv preprint arXiv:1909.07606 (2019).

[11] Sun, Yu, et al. "Ernie 2.0: A continual pre-training framework for language understanding." arXiv preprint arXiv:1907.12412 (2019).

[12] Liu, Yinhan, et al. "Roberta: A robustly optimized bert pretraining approach." arXiv preprint arXiv:1907.11692 (2019).

[13] Joshi, Mandar, et al. "Spanbert: Improving pre-training by representing and predicting spans." Transactions of the Association for Computational Linguistics 8 (2020): 64-77.

[14] Wang, Wei, et al. "StructBERT: Incorporating Language Structures into Pre-training for Deep Language Understanding." arXiv preprint arXiv:1908.04577 (2019).

[15] Lan, Zhenzhong, et al. "Albert: A lite bert for self-supervised learning of language representations." arXiv preprint arXiv:1909.11942 (2019)

[16] Clark, Kevin, et al. "Electra: Pre-training text encoders as discriminators rather than generators." arXiv preprint arXiv:2003.10555 (2020).

[17] Qiu, Xipeng, et al. "Pre-trained Models for Natural Language Processing: A Survey." arXiv preprint arXiv:2003.08271 (2020).

[18] Qiao, Yifan, et al. "Understanding the Behaviors of BERT in Ranking." arXiv preprint arXiv:1904.07531 (2019).

[19] Nogueira, Rodrigo, et al. "Multi-stage document ranking with BERT." arXiv preprint arXiv:1910.14424 (2019).

[20] Yilmaz, Zeynep Akkalyoncu, et al. "Cross-domain modeling of sentence-level evidence for document retrieval." Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP). 2019.

[21]Wenhao Lu, et al. "TwinBERT: Distilling Knowledge to Twin-Structured BERT Models for Efficient Retrieval." arXiv preprint arXiv: 2002.06275

[22] Pandu Nayak.

[23]帅朋、会星等.WSDM Cup 2020检索排序评测任务第一名经验总结

[24] Blei, David M., Andrew Y. Ng, and Michael I. Jordan. "Latent dirichlet allocation." Journal of machine Learning research 3.Jan (2003): 993-1022.

[25] Jianfeng Gao, Xiaodong He, and JianYun Nie. Click-through-based Translation Models for Web Search: from Word Models to Phrase Models. In CIKM 2010.

[26] Huang, Po-Sen, et al. "Learning deep structured semantic models for web search using clickthrough data." Proceedings of the 22nd ACM international conference on Information & Knowledge Management. 2013.

[27] SimNet.

[28] Guo T, Lin T. Multi-variable LSTM neural network for autoregressive exogenous model[J]. arXiv preprint arXiv:1806.06384, 2018.

[29] Hu, Baotian, et al. "Convolutional neural network architectures for matching natural language sentences." Advances in neural information processing systems. 2014.

[30] Pang, Liang, et al. "Text matching as image recognition." Thirtieth AAAI Conference on Artificial Intelligence. 2016.

[31] 非易、祝升等. 大众点评搜索基于知识图谱的深度学习排序实践.

[32] 仲远、富峥等. 美团餐饮娱乐知识图谱——美团大脑揭秘.

[33] Liu, Xiaodong, et al. "Multi-task deep neural networks for natural language understanding." arXiv preprint arXiv:1901.11504 (2019).

[34] Burges, Christopher JC. "From ranknet to lambdarank to lambdamart: An overview." Learning 11.23-581 (2010): 81.

[35] Hinton, Geoffrey, Oriol Vinyals, and Jeff Dean. "Distilling the knowledge in a neural network." arXiv preprint arXiv:1503.02531 (2015).

[36] Sanh, Victor, et al. "DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter." arXiv preprint arXiv:1910.01108 (2019).

[37] Jiao, Xiaoqi, et al. "Tinybert: Distilling bert for natural language understanding." arXiv preprint arXiv:1909.10351 (2019).

[38] Faster Transformer.

做者简介

  • 李勇,美团 AI 平台搜索与 NLP 部算法工程师。
  • 佳昊,美团 AI 平台搜索与 NLP 部算法工程师。
  • 杨扬,美团 AI 平台搜索与 NLP 部算法工程师。
  • 金刚,美团 AI 平台搜索与 NLP 部算法专家。
  • 周翔,美团 AI 平台搜索与 NLP 部算法专家。
  • 朱敏,美团 AI 平台搜索与 NLP 部技术专家。
  • 富峥,美团 AI 平台搜索与 NLP 部资深算法专家。
  • 陈胜,美团 AI 平台搜索与 NLP 部资深算法专家。
  • 云森,美团 AI 平台搜索与 NLP 部研究员。
  • 永超,美团 AI 平台搜索与 NLP 部高级研究员。

阅读更多技术文章,请扫码关注微信公众号-美团技术团队!

相关文章
相关标签/搜索