美团技术团队:大众点评搜索相关性技术探索与实践

2022-07-3120:53:55软件工程与架构Comments1,688 views字数 12579阅读模式

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

1. 背景

点评搜索是大众点评 App 的核心入口之一,用户通过搜索来满足不同场景下对生活服务类商户的找店需求。搜索的长期目标是持续优化搜索体验,提升用户的搜索满意度,这需要我们理解用户搜索意图,准确衡量搜索词与商户之间的相关程度,尽可能展示相关商户并将更相关的商户排序靠前。因此,搜索词与商户的相关性计算是点评搜索的重要环节。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

大众点评搜索场景面临的相关性问题复杂多样,用户的搜索词比较多样,例如搜索商户名、菜品、地址、类目以及它们之间的各种复杂组合,同时商户也有多种类型的信息,包括商户名、地址信息、团单信息、菜品信息以及其他各种设施和标签信息等,导致 Query 与商户的匹配模式异常复杂,容易滋生出各种各样的相关性问题。具体来说,可以分为如下几种类型:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

  • 文本误匹配:在搜索时,为保证更多商户被检索和曝光,Query 可能会被拆分成更细粒度的词进行检索,因此会带来 Query 错误匹配到商户不同字段的问题,如图 1 (a) 所示的用户搜 “生蚝火锅” 应该想找汤底中包含生蚝的火锅,而 “生蚝” 和 “火锅” 分别匹配到商户的两个不同菜品。
  • 语义偏移:Query 与商户字面匹配,但商户与 Query 的主要意图在语义上不相关,如 “奶茶”-“黑糖珍珠奶茶包”,如图 1 (b) 所示。
  • 类目偏移:Query 与商户字面匹配且语义相关,但主营类目与用户需求不符,例如用户搜索 “水果” 时一家提供 “果盘” 的 KTV 商户明显与用户的需求不相关。

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

基于字面匹配的相关性方法无法有效应对上述问题,为了解决搜索列表中的各类不符合用户意图的不相关问题,需要更准确地刻画搜索词与商户的深度语义相关性。本文在基于美团海量业务语料训练的 MT-BERT 预训练模型的基础上,在大众点评搜索场景下优化 Query 与商户(POI,对应通用搜索引擎中的 Doc)的深度语义相关性模型,并将 Query 与 POI 的相关性信息应用在搜索链路各环节。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

本文将从搜索相关性现有技术综述、点评搜索相关性计算方案、应用实战、总结与展望四个方面对点评搜索相关性技术进行介绍。其中点评搜索相关性计算章节将介绍我们如何解决商户输入信息构造、使模型适配点评搜索相关性计算及模型上线的性能优化等三项主要挑战,应用实战章节将介绍点评搜索相关性模型的离线及线上效果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

2. 搜索相关性现有技术

搜索相关性旨在计算 Query 和返回 Doc 之间的相关程度,也就是判断 Doc 中的内容是否满足用户 Query 的需求,对应 NLP 中的语义匹配任务(Semantic Matching)。在大众点评的搜索场景下,搜索相关性就是计算用户 Query 和商户 POI 之间的相关程度。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

文本匹配方法:早期的文本匹配任务仅考虑了 Query 与 Doc 的字面匹配程度,通过 TF-IDF、BM25 等基于 Term 的匹配特征来计算相关性。字面匹配相关性线上计算效率较高,但基于 Term 的关键词匹配泛化性能较差,缺少语义和词序信息,且无法处理一词多义或者多词一义的问题,因此漏匹配和误匹配现象严重。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

传统语义匹配模型:为弥补字面匹配的缺陷,语义匹配模型被提出以更好地理解 Query 与 Doc 的语义相关性。传统的语义匹配模型主要包括基于隐式空间的匹配:将 Query 和 Doc 都映射到同一个空间的向量,再用向量距离或相似度作为匹配分,如 Partial Least Square(PLS) [1] ;以及基于翻译模型的匹配:将 Doc 映射到 Query 空间后进行匹配或计算 Doc 翻译成 Query 的概率 [2] 。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

随着深度学习和预训练模型的发展,深度语义匹配模型也被业界广泛应用。深度语义匹配模型从实现方法上分为基于表示(Representation-based)的方法及基于交互(Interaction-based)的方法。预训练模型作为自然语言处理领域的有效方法,也被广泛使用在语义匹配任务中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

基于表示的深度语义匹配模型:基于表示的方法分别学习 Query 及 Doc 的语义向量表示,再基于两个向量计算相似度。微软的 DSSM 模型 [3] 提出了经典的双塔结构的文本匹配模型,即分别使用相互独立的两个网络构建 Query 和 Doc 的向量表示,用余弦相似度衡量两个向量的相关程度。微软 Bing 搜索的 NRM [4] 针对 Doc 表征问题,除了基础的 Doc 标题和内容,还考虑了其他多源信息(每类信息被称为一个域 Field),如外链、用户点击过的 Query 等,考虑一个 Doc 中有多个 Field,每个 Field 内又有多个实例(Instance),每个 Instance 对应一个文本,如一个 Query 词。模型首先学习 Instance 向量,将所有 Instance 的表示向量聚合起来就得到一个 Field 的表示向量,将多个 Field 的表示向量聚合起来得到最终 Doc 的向量。SentenceBERT [5] 将预训练模型 BERT 引入到双塔的 Query 和 Doc 的编码层,采用不同的 Pooling 方式获取双塔的句向量,通过点乘、拼接等方式对 Query 和 Doc 进行交互。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

大众点评的搜索相关性早期模型就借鉴了 NRM 和 SentenceBERT 的思想,采用了图 2 (a) 所示的基于表示的多域相关性模型结构,基于表示的方法可以将 POI 的向量提前计算并存入缓存,线上只需计算 Query 向量与 POI 向量的交互部分,因此在线上使用时计算速度较快。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

基于交互的深度语义匹配模型:基于交互的方法不直接学习 Query 和 Doc 的语义表示向量,而是在底层输入阶段就让 Query 和 Doc 进行交互,建立一些基础的匹配信号,再将基础匹配信号融合成一个匹配分。ESIM [6] 是预训练模型引入之前被业界广泛使用的经典模型,首先对 Query 和 Doc 进行编码得到初始向量,再用 Attention 机制进行交互加权后与初始向量进行拼接,最终分类得到相关性得分。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

引入预训练模型 BERT 进行交互计算时,通常将 Query 和 Doc 拼接作为 BERT 句间关系任务的输入,通过 MLP 网络得到最终的相关性得分 [7] ,如图 2 (b) 所示。CEDR [8] 在 BERT 句间关系任务获得 Query 和 Doc 向量之后,对 Query 和 Doc 向量进行拆分,进一步计算 Query 与 Doc 的余弦相似矩阵。美团搜索团队 [9] 将基于交互的方法引入美团搜索相关性模型中,引入商户品类信息进行预训练,并引入实体识别任务进行多任务学习。美团到店搜索广告团队 [10] 提出了将基于交互的模型蒸馏到基于表示的模型上的方法,实现双塔模型的虚拟交互,在保证性能的同时增加 Query 与 POI 的交互。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

3. 点评搜索相关性计算

基于表示的模型重在表示 POI 的全局特征,缺乏线上 Query 与 POI 的匹配信息,基于交互的方法可以弥补基于表示方法的不足,增强 Query 和 POI 的交互,提升模型表达能力,同时,鉴于预训练模型在文本语义匹配任务上的强劲表现,点评搜索相关性计算确定了基于美团预训练模型 MT-BERT [11] 的交互式方案。将基于预训练模型的交互式 BERT 应用在点评搜索场景的相关性任务中时,仍存在诸多挑战:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

  • 如何更好地构造 POI 侧模型输入信息:Doc 侧模型输入信息的构造是相关性模型中的重要环节。在通用网页搜索引擎中,Doc 的网页标题对相关性的判断极为重要,但在点评搜索场景下,POI 信息具有字段多、信息复杂的特点,不存在能提供类似 “网页标题” 信息量的字段,每个商户都通过商户名、类目、地址、团单、商户标签等多种结构化信息来表达。在计算相关性分数时,大量多源商户信息无法全部输入到模型中,而仅使用商户名和类目等基础信息又会因为信息缺失无法达到满意的效果,因此如何更好地构造具有丰富信息量的 POI 侧模型输入是我们要解决的首要问题。
  • 如何优化模型来更好地适配点评搜索相关性计算:大众点评搜索场景中的文本信息与通用的预训练模型语料信息有一定差异,例如通用语义场景下 “开心” 和 “高兴” 同义,但在点评搜索的场景下 “开心烧烤” 和 “高兴烧烤” 却是两家完全不同的品牌。同时,Query 和 POI 的相关性判定逻辑与通用 NLP 场景的语义匹配任务也不完全相同,Query 和 POI 的匹配模式非常复杂,当 Query 匹配到 POI 的不同字段时,相关性的判定结果也有所不同,例如 Query “水果” 匹配到 “水果店” 商户类目时相关性较高,而命中 KTV 的 “水果拼盘” 标签时则相关性较弱。因此,相比通用的基于交互的 BERT 句间关系语义匹配任务,相关性计算还需要关注 Query 和 POI 两部分之间的具体匹配情况。如何优化模型来适配点评搜索的场景,并能处理复杂多样的相关性判断逻辑,尽可能地解决各种不相关问题,是我们面临的主要挑战;
  • 如何解决预训练相关性模型的在线性能瓶颈:基于表示的模型虽计算速度较快但表达能力有限,基于交互的模型可以增强 Query 和 POI 的交互从而提升模型效果,但在线上使用时存在较大的性能瓶颈。因此,在线上使用 12 层 BERT 的基于交互的模型时,如何在保证模型计算效果的同时保证整个计算链路的性能,使其在线上稳定高效运行,是相关性计算线上应用的最后一道关卡。

经过不断探索与尝试,我们针对 POI 侧的复杂多源信息,构造了适配点评搜索场景的 POI 文本摘要;为了让模型更好地适配点评搜索相关性计算,采用了两阶段训练的方法,并根据相关性计算的特点改造了模型结构;最后,通过优化计算流程、引入缓存等措施,成功降低了模型实时计算和整体应用链路的耗时,满足了线上实时计算 BERT 的性能要求。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

3.1 如何更好地构造 POI 侧模型输入信息

在判定 Query 与 POI 的相关程度时,POI 侧有十几个参与计算的字段,某些字段下的内容特别多(例如一个商户可能有上百个推荐菜),因此需要找到合适的方式抽取并组织 POI 侧信息,输入到相关性模型中。通用搜索引擎(如百度),或常见垂类搜索引擎(如淘宝),其 Doc 的网页标题或商品标题信息量丰富,通常是相关性判定过程中 Doc 侧模型输入的主要内容。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

如图 3 (a) 所示,在通用搜索引擎中,通过搜索结果的标题可以一眼看出对应网站的关键信息及是否与 Query 相关,而在图 3 (b) 的搜索结果中,仅通过商户名字段无法得到充足的商户信息,需要结合商户类目(奶茶果汁)、用户推荐菜品(奥利奥利奶茶)、标签(网红店)、地址(武林广场)多个字段才能判断该商户与 Query “武林广场网红奶茶” 的相关性。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

标签抽取是业界比较通用的抽取主题信息的途径,因此我们首先尝试了通过商户标签来构造 POI 侧模型输入的方法,根据商户的评论、基础信息、菜品、商户对应的头部搜索点击词等抽取出具有代表性的商户关键词来作为商户标签。在线上使用时,将已抽取的商户标签,及商户名和类目基础信息一起作为模型的 POI 侧输入信息,与 Query 进行交互计算。然而,商户标签对商户信息的覆盖仍不够全面,例如用户搜索菜品 “鸡蛋羹” 时,某个距用户很近的韩式料理店有鸡蛋羹售卖,但该店的招牌菜、头部点击词等均与 “鸡蛋羹” 无关,导致该店所抽取的标签词也与 “鸡蛋羹” 相关性较低,因此模型会将该店判断为不相关,从而对用户体验带来伤害。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

为了获取最全面的 POI 表征,一种方案是不抽取关键词,直接将商户的所有字段拼接到模型输入中,但是这种方式会因为模型输入长度过长而严重影响线上性能,且大量冗余信息也会影响模型表现。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

为构造更具信息量的 POI 侧信息作为模型输入,我们提出了 POI 匹配字段摘要抽取的方法,即结合线上 Query 的匹配情况实时抽取 POI 的匹配字段文本,并构造匹配字段摘要作为 POI 侧模型输入信息。POI 匹配字段摘要抽取流程如图 4 所示,我们基于一些文本相似度特征,将与 Query 最相关且最具信息量的文本字段提取出来,并融合字段类型信息构建成匹配字段摘要。线上使用时,将已抽取的 POI 匹配字段摘要、商户名及类目基础信息一起作为 POI 侧模型输入。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

在确定 POI 侧模型输入信息后,我们采用 BERT 句间关系任务,先用 MT-BERT 对 Query 侧和 POI 侧匹配字段摘要信息进行编码,然后使用池化后的句向量计算相关分。采用 POI 匹配字段摘要的方案构造 POI 侧模型输入信息后,配合样本迭代,相比基于标签的方法,模型的效果有了极大的提升。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

3.2 如何优化模型来更好地适配点评搜索相关性计算

让模型更好地适配点评搜索相关性计算任务包含两层含义:大众点评搜索场景下的文本信息与 MT-BERT 预训练模型使用的语料在分布上存在着一定的差异;预训练模型的句间关系任务与 Query 和 POI 的相关性任务也略有不同,需要对模型结构进行改造。经过不断探索,我们采用基于领域数据的两阶段训练方案,结合训练样本构造,使预训练模型更适配点评搜索场景的相关性任务;并提出了基于多相似矩阵的深度交互相关性模型,加强 Query 和 POI 的交互,提升模型对复杂的 Query 和 POI 信息的表达能力,优化相关性计算效果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

3.2.1 基于领域数据的两阶段训练

为了有效利用海量用户点击数据,并使预训练模型 MT-BERT 更适配点评搜索相关性任务,我们借鉴百度搜索相关性 [12] 的思想,引入多阶段训练方法,采用用户点击和负采样数据进行第一阶段领域适配的预训练(Continual Domain-Adaptive Pre-training),采用人工标注数据进行第二阶段训练(Fine-Tune),模型结构如下图 5 所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

基于点击数据的第一阶段训练文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

引入点击数据作为第一阶段训练任务的直接原因是在点评搜索场景下存在着一些特有的问题,例如 “开心” 和 “高兴” 两个词在通用场景下是几乎完全同义的词,但是在点评搜索的场景下 “开心烧烤” 和 “高兴烧烤” 却是两家完全不同的品牌商户,因此点击数据的引入能够帮助模型学习到搜索场景下的一些特有知识。但是直接将点击样本用于相关性判断会存在较大噪声,因为用户点击某个商户可能是由于排序较为靠前导致的误点击,而未点击某个商户也可能仅仅是因为商户距离较远,而并不是因为相关性问题,因此我们引入了多种特征和规则来提高训练样本自动标注的准确率。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

在构造样本时,通过统计是否点击、点击位次、最大点击商户距用户的距离等特征筛选候选样本,将曝光点击率大于一定阈值的 Query-POI 对作为正例,并根据业务特点对不同类型商户调整不同的阈值。在负例的构造上,Skip-Above 采样策略将位于点击商户之前且点击率小于阈值的商户才做为负样本。此外,随机负采样的方式可以为训练样本补充简单负例,但考虑随机负采样时也会引入一些噪声数据,因此我们利用人工设计的规则对训练数据进行降噪:当 Query 的类目意图与 POI 的类目体系较为一致时或者与 POI 名高度匹配时,则将其从负样本中剔除。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

基于人工标注数据的第二阶段训练文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

经过第一阶段训练后,考虑到无法完全清除掉点击数据中的噪音,以及相关性任务的特点,因此需要引入基于人工标注样本的第二阶段训练来对模型进行纠偏。除了随机采样一部分数据交给人工去标注外,为了尽可能提升模型的能力,我们通过难例挖掘和对比样本增强方式生产大量高价值样本交给人工去标注。具体如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

1)难例挖掘文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

  • 特定类型样本挖掘:通过设计一种基于 Query 和 POI 的特征和两者的匹配情况来刻画 BadCase 类型的方法,自动化从候选数据集中筛选出特定 BadCase 类型的样本进行送标。
  • 用户点击过但线上旧版模型判定为不相关的:该方法可以挖掘出当前线上模型预测错误及语义接近的用户难以区分的难例。
  • 边缘采样:通过边缘采样的方式挖掘具有较高不确定性的样本,如抽取模型预测得分在阈值附近的样本。
  • 模型或人工识别困难的样本:用当前模型预测训练集,将模型预测结果与标注标签不一致的样本,及人工标注标签有冲突的样本类型重新送标。

2)对比样本增强:借鉴对比学习的思想,为一些高度匹配的样本生成对比样本进行数据增强,并进行人工标注确保样本标签的准确率。通过对比样本之间的差异,模型可以关注到真正有用的信息,同时提升对同义词的泛化能力,从而得到更好的效果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

  • 针对菜品词较容易出现的跨菜品匹配的相关性问题(例如搜 “鹅肝汉堡” 匹配到售卖 “牛肉汉堡” 和 “鹅肝寿司” 的商家),分别用菜品的各个子成分与推荐菜字段进行匹配,生产大量对比样本,加强模型对于跨菜品匹配问题的识别能力。
  • 针对菜品词命中推荐菜前缀的问题,通过改造完全匹配到推荐菜的情况(搜 “榴莲蛋糕” 匹配到售卖 “榴莲蛋糕” 的商家),仅保留搜索词中的前缀,构造出匹配推荐菜前缀的对比样本(搜 "榴莲" 和售卖 "榴莲蛋糕" 的商家),使模型能更好的区分匹配推荐菜前缀时的情况。

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

以跨菜品匹配的相关性问题为例,如上图 6 所示,同样是 Query 拆开后与商户的多个推荐菜字段匹配的情况,Query “榴莲蛋糕” 与推荐菜 “榴莲千层、黑森林蛋糕” 是相关的,但 Query “鹅肝汉堡” 与 “铁板鹅肝、芝士牛肉汉堡” 是不相关的,为了增强模型对这类高度匹配但结果相反的 Case 的识别能力,我们构造了 “榴莲蛋糕” 与 “榴莲千层”、“鹅肝汉堡” 与 “铁板鹅肝” 这两组对比样本,去掉了与 Query 在文本上匹配但对模型判断没有帮助的信息,让模型学到真正决定是否相关的关键信息,同时提升模型对 “蛋糕” 和 “千层” 这类同义词的泛化能力。类似地,其他类型的难例同样可以用这种样本增强方式来提升效果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

3.2.2 基于多相似矩阵的深度交互模型

BERT 句间关系是一个通用的 NLP 任务,用于判断两个句子的关系,而相关性任务是计算 Query 和 POI 的相关程度。在计算过程中,句间关系任务不仅计算 Query 与 POI 的交互,还计算 Query 内部和 POI 内部的交互,而相关性计算更关注 Query 与 POI 的交互。此外,在模型迭代过程中,我们发现部分类型的困难 BadCase 对模型的表达能力有更高要求,例如文本高度匹配但不相关的类型。因此,为进一步提升模型对复杂的 Query 和 POI 在相关性任务上的计算效果,我们对第二阶段训练中的 BERT 句间关系任务进行改造,提出了基于多相似矩阵的深度交互模型,通过引入多相似矩阵来对 Query 和 POI 进行深度交互,引入 indicator 矩阵以更好地解决困难 BadCase 问题,模型结构如下图 7 所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

受 CEDR [8] 的启发,我们将经过 MT-BERT 编码后的 Query 和 POI 向量进行拆分,用于显式地计算两部分的深度交互关系,将 Query 和 POI 拆分并进行深度交互,一方面可以专门用于学习 Query 与 POI 的相关程度,另一方面,增加的参数量可以提升模型的拟合能力。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

参考 MatchPyramid [13] 模型,深度交互相关性模型计算了四种不同的 Query-Doc 相似矩阵并进行融合,包括 Indicator、Dot-product、余弦距离及欧氏距离,并与 POI 部分的输出进行 Attention 加权。其中 Indicator 矩阵用来描述 Query 与 POI 的 Token 是否一致,计算方式如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

Indicator 矩阵可以较好地刻画 Query 和 POI 的匹配关系,该矩阵的引入主要考虑到判定 Query 和 POI 相关程度时的一个难点:有时即使文本高度匹配,两者也不相关。基于交互的 BERT 模型结构更容易将文本匹配程度高的 Query 和 POI 判定为相关,但是在点评搜索场景中,有些难例却未必如此。比如 “豆汁” 和 “绿豆汁” 虽然高度匹配,但并不相关。“猫空” 和 “猫的天空之城” 虽然是拆开匹配,但因为前者是后者的缩写而相关。因此,将不同的文本匹配情况通过 Indicator 矩阵直接输入给模型,让模型显式地接收 “包含”、“拆开匹配” 等文本匹配情况,在帮助模型提升对难例判别能力的同时,也不会影响大部分正常的 Case 的表现。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

基于多相似矩阵的深度交互相关性模型将 Query 和 POI 拆分后计算相似矩阵,相当于让模型对 Query 和 POI 进行显式交互,使模型更加适配相关性任务。多个相似矩阵则增加了模型对 Query 和 POI 相关程度计算的表征能力,而 Indicator 矩阵则是针对相关性任务中复杂的文本匹配情况做的特殊设计,让模型对不相关结果的判断更加准确。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

3.3 如何解决预训练相关性模型的在线性能瓶颈

将相关性计算部署在线上时,现有方案通常会采用知识蒸馏的双塔结构 [10,14] 以保证线上计算效率,但此种处理方式或多或少对于模型的效果是有损的。点评搜索相关性计算为保证模型效果,在线上使用了基于交互的 12 层 BERT 预训练相关性模型,需要对每个 Query 下的数百个 POI 经过 12 层 BERT 的模型预测。为保证线上计算效率,我们从模型实时计算流程和应用链路两个角度出发,通过引入缓存机制、模型预测加速、引入前置黄金规则层、将相关性计算与核心排序并行化等措施优化相关性模型在线上部署时的性能瓶颈,使得 12 层基于交互的 BERT 相关性模型在线上稳定高效运行,保证可以支持数百个商户和 Query 间的相关性计算。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

3.3.1 相关性模型计算流程性能优化

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

点评搜索相关性模型的线上计算流程如图 8 所示,通过缓存机制及 TF-Serving 模型预测加速来优化模型实时计算的性能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

为有效利用计算资源,模型线上部署引入缓存机制,将高频 Query 的相关性得分写入缓存。后续调用时会优先读取缓存,若命中缓存则直接输出打分,未命中缓存的则进行线上实时计算。缓存机制大大节省了计算资源,有效缓解在线计算的性能压力。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

对未命中缓存的 Query,将其处理为 Query 侧模型输入,通过图 4 所述的流程获取每个 POI 的匹配字段摘要,并处理为 POI 侧模型输入格式,再调用线上相关性模型输出相关分。相关性模型部署在 TF-Serving 上,在模型预测时,采用美团机器学习平台的模型优化工具 ART 框架(基于 Faster-Transformer [15] 改进)进行加速,在保证精度的同时极大地提高了模型预测速度。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

3.3.2 应用链路性能优化

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

相关性模型在搜索链路中的应用如上图 9 所示,通过引入前置黄金规则、将相关性计算与核心排序层并行化来优化整体搜索链路中的性能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

为了进一步对相关性调用链路加速,我们引入了前置黄金规则对 Query 分流,对部分 Query 通过规则直接输出相关分,从而缓解模型计算压力。在黄金规则层中利用文本匹配特征对 Query 和 POI 进行判断,例如,若搜索词跟商户名完全一致,则通过黄金规则层直接输出 “相关” 的判定,而无需通过相关性模型计算相关分。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

在整体计算链路中,相关性计算过程与核心排序层进行并发操作,以保证相关性计算对搜索链路的整体耗时基本无影响。在应用层,相关性计算被用在搜索链路的召回和排序等多个环节。为降低搜索列表的首屏不相关商户占比,我们将相关分引入到 LTR 多目标融合排序中进行列表页排序,并采用多路召回融合策略,利用相关性模型的结果,仅将补充召回路中的相关商户融合到列表中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

4. 应用实战

4.1 离线效果

为精准反映模型迭代的离线效果,我们通过多轮人工标注方式构造了一批 Benchmark,考虑到当前线上实际使用时主要目标为降低 BadCase 指标,即对不相关商户的准确识别,我们采用负例的准确率、召回率、F1 值作为衡量指标。经过两阶段训练、样本构造及模型迭代带来的收益如下表 1 所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

初始方法(Base)采用 Query 拼接 POI 匹配字段摘要信息的 BERT 句对分类任务,Query 侧模型输入采用用户输入的原始 Query,POI 侧采用商户名、商户类目及匹配字段摘要文本拼接方式。引入基于点击数据的两阶段训练后,负例 F1 指标相比 Base 方法提升 1.84%,通过引入对比样本、难例样本持续迭代训练样本并配合第二阶段的模型输入构造,负例 F1 相比 Base 显著提升 10.35%,引入基于多相似矩阵的深度交互方法后,负例 F1 相比 Base 提升 11.14%。模型在 Benchmark 上的整体指标也达到了 AUC 为 0.96,F1 为 0.97 的高值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

4.2 线上效果

为有效衡量用户搜索满意度,点评搜索每天对线上实际流量进行抽样并人工标注,采用列表页首屏 BadCase 率作为相关性模型效果评估的核心指标。相关性模型上线后,点评搜索的月平均 BadCase 率指标相比上线前显著下降了 2.9pp(Percentage Point,百分比绝对点),并在后续几周 BadCase 率指标稳定在低点附近,同时,搜索列表页的 NDCG 指标稳定提升 2pp。可以看出相关性模型可以有效识别不相关商户,显著降低了搜索的首屏不相关性问题占比,从而提升了用户的搜索体验。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

下图 10 列举了部分线上 BadCase 解决示例,小标题是该示例对应的 Query,左边为应用了相关性模型的实验组,右边为对照组。图 10 (a) 中当搜索词为 “佩姐” 时,相关性模型将商户核心词包含 “佩姐” 的商户 “佩姐名品” 判断为相关,并将用户可能想找但输错的高质目标商户 “珮姐老火锅” 也判断为相关,同时,通过引入地址字段标识,将地址中位于 “珮姐” 旁边的商户判断为不相关;图 10 (b) 中用户通过 Query “柚子日料自助” 想找一家名为 “柚子” 的日料自助店,相关性模型将拆词匹配到有柚子相关商品售卖的日料自助店 “竹若金枪鱼” 正确判断为不相关并将其排序靠后,保证展示在靠前的均为更符合用户主要需求的商户。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

美团技术团队:大众点评搜索相关性技术探索与实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

5. 总结与展望

本文介绍了大众点评搜索相关性模型的技术方案及应用实战。为了更好地构造商户侧模型输入信息,我们引入了实时抽取商户匹配字段摘要文本的方法来构造商户表征作为模型输入;为了优化模型来更好地适配点评搜索相关性计算,使用了两阶段训练的方式,采用基于点击和人工标注数据的两阶段训练方案来有效利用大众点评的海量用户点击数据,并根据相关性计算的特点提出了基于多相似矩阵的深度交互结构,进一步提升相关性模型的效果;为缓解相关性模型的线上计算压力,在线上部署时引入缓存机制和 TF-Serving 预测加速,引入黄金规则层对 Query 分流,将相关性计算与核心排序层并行化,从而满足了线上实时计算 BERT 的性能要求。通过将相关性模型应用在搜索链路各环节,显著降低了不相关问题占比,有效改善了用户的搜索体验。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

目前,点评搜索相关性模型在模型表现及线上应用上仍有提升空间,在模型结构方面,我们将探索更多领域先验知识的引入方式,例如识别 Query 中实体类型的多任务学习、融入外部知识优化模型的输入等;在实际应用方面,将进一步细化为更多档位,以满足用户对于精细化找店的需求。我们还会尝试将相关性的能力应用到非商户模块中,优化整个搜索列表的搜索体验。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

6. 参考文献

  • [1] Rosipal R, Krämer N. Overview and recent advances in partial least squares[C]//International Statistical and Optimization Perspectives Workshop" Subspace, Latent Structure and Feature Selection". Springer, Berlin, Heidelberg, 2005: 34-51.
  • [2] Gao J, He X, Nie J Y. Clickthrough-based translation models for web search: from word models to phrase models[C]//Proceedings of the 19th ACM international conference on Information and knowledge management. 2010: 1139-1148.
  • [3] Huang P S, He X, Gao J, et al. Learning deep structured semantic models for web search using clickthrough data[C]//Proceedings of the 22nd ACM international conference on Information & Knowledge Management. 2013: 2333-2338.
  • [4] Zamani, H., Mitra, B., Song, X., Craswell, N., & Tiwary, S. (2018, February). Neural ranking models with multiple document fields. In Proceedings of the eleventh ACM international conference on web search and data mining(WSDM) (pp. 700-708).
  • [5] Reimers N, Gurevych I. Sentence-bert: Sentence embeddings using siamese bert-networks[J]. arXiv preprint arXiv:1908.10084, 2019.
  • [6] Chen Q, Zhu X, Ling Z H, et al. Enhanced LSTM for Natural Language Inference[C]//Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2017: 1657-1668.
  • [7] Nogueira R, Yang W, Cho K, et al. Multi-stage document ranking with bert[J]. arXiv preprint arXiv:1910.14424, 2019.
  • [8] MacAvaney S, Yates A, Cohan A, et al. CEDR: Contextualized embeddings for document ranking[C]//Proceedings of the 42nd International ACM SIGIR Conference on Research and Development in Information Retrieval. 2019: 1101-1104.
  • [9] 李勇,佳昊等. BERT 在美团搜索核心排序的探索和实践.
  • [10] 邵雯,杨扬等。预训练技术在美团到店搜索广告中的应用.
  • [11] 杨扬,佳昊等。美团 BERT 的探索和实践.
  • [12] Zou L, Zhang S, Cai H, et al. Pre-trained language model based ranking in Baidu search[C]//Proceedings of the 27th ACM SIGKDD Conference on Knowledge Discovery & Data Mining. 2021: 4014-4022.
  • [13] Pang L, Lan Y, Guo J, et al. Text matching as image recognition[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2016, 30(1).
  • [14] 阿里文娱深度语义搜索相关性探索. https://mp.weixin.qq.com/s/1aNd3dxwjCKUJACSq1uF-Q.
  • [15] Faster Transformer. https://github.com/NVIDIA/DeepLearningExamples/tree/master/FasterTransformer.

7. 本文作者

校娅 *、沈元 *、朱迪、汤彪、张弓等,均来自美团 / 点评事业部搜索技术中心。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/26295.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/arc/26295.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定