其他
BERT在美团搜索核心排序的探索和实践
The following article is from 美团技术团队 Author 李勇 佳昊 杨扬等
来源 | 美团技术团队(ID: meituantech)
为进一步优化美团搜索排序结果的深度语义相关性,提升用户体验,搜索与NLP部算法团队从2019年底开始基于BERT优化美团搜索排序相关性,经过三个月的算法迭代优化,离线和线上效果均取得一定进展。本文主要介绍探索过程以及实践经验。
相比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],本文不再赘述。
词义局限:字面匹配无法处理同义词和多义词问题,如在美团业务场景下“宾馆”和“旅店”虽然字面上不匹配,但都是搜索“住宿服务”的同义词;而“COCO”是多义词,在不同业务场景下表示的语义不同,可能是奶茶店,也可能是理发店。 结构局限:“蛋糕奶油”和“奶油蛋糕”虽词汇完全重合,但表达的语义完全不同。 当用户搜“蛋糕奶油”时,其意图往往是找“奶油”,而搜“奶油蛋糕”的需求基本上都是“蛋糕”。
隐式模型:将Query、Doc都映射到同一个隐式向量空间,通过向量相似度来计算Query-Doc相关性,例如使用主题模型LDA[24]将Query和Doc映射到同一向量空间; 翻译模型:通过统计机器翻译方法将Doc进行改写后与Query进行匹配[25]。
Feature-based:属于基于表示的语义匹配方法。类似于DSSM双塔结构,通过BERT将Query和Doc编码为向量,Doc向量离线计算完成进入索引,Query向量线上实时计算,通过近似最近邻(ANN)等方法实现相关Doc召回。 Finetune-based:属于基于交互的语义匹配方法,将Query和Doc对输入BERT进行句间关系Fine-tuning,最后通过MLP网络得到相关性分数。
数据样本增强:由于相关性模型的训练基于搜索用户行为标注的弱监督数据,我们结合业务经验对数据做了去噪和数据映射。为了更好地评价相关性模型的离线效果,我们构建了一套人工标注的Benchmark数据集,指导模型迭代方向。 BERT领域适配:美团业务场景中,Query和Doc以商户、商品、团购等短文本为主,除标题文本以外,还存在商户/商品描述、品类、地址、图谱标签等结构化信息。我们首先改进了MT-BERT预训练方法,将品类、标签等文本信息也加入MT-BERT预训练过程中。在相关性Fine-tuning阶段,我们对训练目标进行了优化,使得相关性任务和排序任务目标更加匹配,并进一步将两个任务结合进行联合训练。此外,由于BERT模型前向推理比较耗时,难以满足上线要求,我们通过知识蒸馏将12层BERT模型压缩为符合上线要求的2层小模型,且无显著的效果损失。 排序模型优化:核心排序模型(本文记为L2模型)包括LambdaDNN[31]、TransformerDNN[3]、MultiTaskDNN等深度学习模型。给定,我们将基于BERT预测的Query-Doc相关性分数作为特征用于L2模型的训练中。,>
全局随机负采样:用户没有点击的POI进行随机采样得到负例。我们观察发现随机采样同样存在大量噪声数据,补充了两项过滤规则来过滤数据。① 大量的POI未被用户点击是因为不是离用户最近的分店,但POI和Query是相关的,这种类型的样例需要过滤掉,如<蛙小侠 ,蛙小侠(新北万达店)>。② 用户Query里包含品牌词,并且POI完全等同于品牌词的,需要从负样本中过滤,如<德克士吃饭 ,德克士>。 Skip-Above采样:受限于App搜索场景的展示屏效,无法保证召回的POI一次性得到曝光。若直接将未被点击的POI作为负例,可能会将未曝光但相关的POI错误地采样为负例。为了保证训练数据的准确性,我们采用Skip-Above方法,剔除这些噪音负例,即从用户点击过的POI之上没有被点击过的POI中采样负例(假设用户是从上往下浏览的POI)。
POI名映射到品牌:在品牌搜Query不包含地标词的时候,将POI名映射到品牌(非品牌POI不进行映射),从而消除品牌POI分店名中地标词引入的噪声。如Query是“香格里拉酒店”,召回的“香格里拉大酒店”和“北京香格里拉饭店”统一映射为品牌名“香格里拉酒店”。Query是“品牌+地标”形式(如“香格里拉饭店 北京”)时,用户意图明确就是找某个地点的POI,不需要进行映射,示例如下图3所示。 负样本过滤:如果搜索词是品牌词,在选取负样本的时候只在其他品牌的样本中选取。如POI为“香格里拉实力希尔顿花园酒店”、“桔子香格里拉古城酒店”时,同Query “香格里拉酒店”虽然字面很相似,但其明显不是用户想要的品牌。
使用Pairwise Fine-tuning方式后,BERT相关性模型在Benchmark上的Accuracy提升925BP,相应地L2排序模型的AUC提升19.5BP。联合训练前文所述各种优化属于两阶段训练方式,即先训练BERT相关性模型,然后训练L2排序模型。为了将两者深入融合,在排序模型训练中引入更多相关性信息,我们尝试将BERT相关性Fine-tuning任务和排序任务进行端到端的联合训练。由于美团搜索涉及多业务场景且不同场景差异较大,对于多场景的搜索排序,每个子场景进行单独优化效果好,但是多个子模型维护成本更高。此外,某些小场景由于训练数据稀疏无法学习到全局的Query和Doc表征。我们设计了基于Partition-model的BERT相关性任务和排序任务的联合训练模型,Partition-model的思想是利用所有数据进行全场景联合训练,同时一定程度上保留每个场景特性,从而解决多业务场景的排序问题,模型结构如下图7所示:输入层:模型输入是由文本特征向量、用户行为序列特征向量和其他特征向量3部分组成。
文本特征向量使用BERT进行抽取,文本特征主要包括Query和POI相关的一些文本(POI名称、品类名称、品牌名称等)。将文本特征送入预训练好的MT-BERT模型,取CLS向量作为文本特征的语义表示。 用户行为序列特征向量使用Transformer进行抽取[3]。 其他特征主要包括:① 统计类特征,包含Query、Doc等维度的特征以及它们之间的交叉特征,使用这些特征主要是为了丰富Query和Doc的表示,更好地辅助相关性任务训练。② 文本特征,这部分的特征同1中的文本特征,但是使用方式不同,直接将文本分词后做Embedding,端到端的学习文本语义表征。③ 传统的文本相关性特征,包括Query和Doc的字面命中、覆盖程度、BM25等特征,虽然语义相关性具有较好的作用,但字面相关性仍然是一个不可或缺的模块,它起到信息补充的作用。
知识蒸馏:模型蒸馏是在一定精度要求下,将大模型学到的知识迁移到另一个轻量级小模型上,目的是降低预测计算量的同时保证预测效果。Hinton在2015年的论文中阐述了核心思想[35],大模型一般称作Teacher Model,蒸馏后的小模型一般称作Student Model。具体做法是先在训练数据上学习Teacher Model,然后Teacher Model对无标注数据进行预测得到伪标注数据,最后使用伪标注数据训练Student Model。HuggingFace提出的DistilBERT[36]和华为提出的TinyBERT[37] 等BERT的蒸馏模型都取得了不错的效果,在保证效果的情况下极大地提升了模型的性能。 模型裁剪:通过模型剪枝减少参数的规模。 低精度量化:在模型训练和推理中使用低精度(FP16甚至INT8、二值网络)表示取代原有精度(FP32)表示。
模型在线预估框架(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推理,提升了线上的预估速度。
融合知识图谱信息对长尾流量相关性进行优化:美团搜索承接着多达几十种生活服务的搜索需求,当前头部流量相关性问题已经较好地解决,长尾流量的相关性优化需要依赖更多的高质量数据。我们将利用知识图谱信息,将一些结构化先验知识融入到BERT预训练中,对长尾Query的信息进行增强,使其可以更好地进行语义建模。 相关性与其他任务联合优化:美团搜索场景下Query和候选Doc都更结构化,除文本语义匹配外,Query/Doc文本中蕴含的实体成分、意图、类目也可以用于辅助相关性判断。目前,我们将相关性任务和成分识别任务结合进行联合优化已经取得一定效果。后续我们考虑将意图识别、类目预测等任务加入相关性判断中,多视角、更全面地评估Query-Doc的相关性。 BERT相关性模型和排序模型的深入融合:当前两个模型属于两阶段训练方式,将BERT语义相关性作为特征加入排序模型来提升点击率。语义相关性是影响搜索体验的重要因素之一,我们将BERT相关性和排序模型进行端到端联合训练,将相关性和点击率目标进行多目标联合优化,提升美团搜索排序的综合体验。
[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 部。