-->

AI内参_49_047_多轮打分系统概述

你好,我是洪亮杰。

今天我和你分享的主题是多轮打分系统概述。

周一我为你介绍了搜索系统的一个宏观分类,包括传统的文本匹配、信息检索系统和机器学习信息检索系统。

这个分类可以让你非常清晰的了解信息搜索系统的历史进程,并对这两种搜索系统的特点有所了解。

今天我们就来剖析搜索系统的另外一个框架体系。

多轮打分系统。

什么是多轮打分系统呢?为什么搜索系统需要多轮打分呢?我们拿上次介绍的机器学习搜索系统为例。

从整体来说,机器学习搜索系统的目的是利用机器学习模型来预测文档和搜索关键字之间的相关性。

那么在理想状态下,针对每一个查询关键字,我们需要针对数据集中每一个文档进行打分。

如果是一个类似互联网搜索引擎的应用场景,那么理论上每一个查询关键字都需要对几亿甚至十几亿的网页进行打分。

很显然,仅仅从这上亿个数量级来说,这样做就是不现实的。

从另一方面来讲,目前比较通用的机器学习模型,特别是在排序问题上有强劲表现的数模型,比如GBDT或者神经网络都有较高的计算时间复杂度。

要想在实时响应的反应时间内,比如几百毫秒内,对相对比较多的文档进行打分是很困难的。

我们这里说的相对较多的是指是几千甚至上万。

那我们刚才提到的整个数据集中是有几亿甚至十几亿的文档,就更是难上加难了。

于是,在这样的情况下,我们就需要有这么一种机制。

对于每个查询关键词而言,能够先有一个方法。

在整个数据集上快速评价出几百到几千不等的文档,然后在这个几百到几千不等的集合上,运用复杂的模型进行计算并且排序。

这种需要对文档进行两轮打分的流程,就叫做两轮打分框架。

第一轮打分又常常被称作是顶部k提取。

你可以看到,在这样的机制下,相对比较简单的模型和方法,可以用第一轮的打分。

因为这一轮是有可能在全部的数据集上来进行操作的这一轮也是被优化的最彻底的一轮。

毕竟需要在海量的数据集中快速找到几百或者几千个合适文档。

然后在第二轮当文档的数目已经降到了几千甚至几百的时候,我们就可以使用比较复杂的模型了。

这其实也是整个多轮打分的一个目的,那就是可以在一个比较适量的数据集上应用复杂模型。

实际上,我们不仅可以对文档进行两轮打分,甚至可以扩展到多轮打分。

比如雅虎搜索引擎的三轮打分机制。

第三轮根据第二轮打分所产生文档的上下文特征,从而可以进一步精准的提高搜索结果。

如果你有兴趣了解更多内容,我在文末列了几个参考文献,你可以进一步阅读。

一般来说,多轮打分系统有两个明显的特点,一个特点是每一轮都比上一轮使用的文档数目要少。

也就是说,多轮打分的目的是经过每一轮都筛选出更少的文档。

另外一个特点是每一轮使用的特性都比上一轮更加复杂,模型也更加复杂。

我刚才说了一下多轮打分系统的机理,现在我们就来看一看第一轮打分,也就是俗称的顶部k提取都有什么技术特点?顶部k提取的一个核心问题就是如何快速的从非常巨大的数据集中返回,有价值的几百到几千的文档。

这就需要对获取文档的数据结构以及使用的模型有一定的要求。

首先,倒排缩引是一个非常重要的机制,是否能够建立有效的缩引,是第一轮打分能否达到目的的关键。

传统的倒排缩引已经可以在很大程度上有效的消减。

没必要的文档。

我在简要的对这个基本的数据结构进行一个讲解,我们一起复习一下。

倒排缩引的编号除以中的字段是某一个查询关键字。

而每个字段所对应的则是包含这个查询关键字的文档列表。

这个文档列表大多按照某种重要的顺序排列,比如某个文档整体和查询关键字的相关度大,那么就会排列到这个列表的前面。

当然也并不一定所有包含这个查询关键字的文档都会包含到这个列表中。

另外之所以叫做缩引,也是因为这个列表中并不实际存储整个文档,而是往往只存储文档的编号。

除了最基本的通过缩引来提取文档以外,我们还可以通过一些简单的模型来提取文档。

比如线性模型,一个经典的方法叫做one的操作符。

当然严格来说,one操作符并不是把一个通用的普遍的线性模型应用到文档索引上。

而是说如果我们能够把模型给简简化为只有正系数的线性模型,那么整个就模型其实就可以看作是两个向量的点击,而忘的则是对点积在索引上的一种优化。

当然,研发人员不仅想把线性模型直接使用到倒排索引上,实际上这么多年来也有不少的尝试,希望能够把数模型直接应用到倒排搜索上。

然而,因为我们之前提到的性能因素,数模型通常情况下都没法直接应用,应该说数模型的优化还处在一个研究阶段。

当我们结束了第一轮之后,就来到了第二阶段,也就是经常所说的重排阶段。

在这个阶段,文档已经从索引中到达了内存。

一般来说在比较普通的架构下,所有的几百到几千不等的文档。

在这个时候已经合到了某一台机器的内存中。

我们在思考考一轮轮第二轮的时候,需要先理解解这两轮的一个重要区别,才般知道什么样的模型能够比较好的应用。

在这两个不同的场景中,首先第一轮必须能够应用在搜索倒排缩引上。

而现代的缩影模型往往是部署在很多的节点上的,也就是说每一个节点都拥有一部分,但不是完整的文档集合。

这也就导致了我们之前介绍过的单点法、配对法和列表法。

这些机器学习方法很难在缩引这个级别直接使用。

因为每一个节点为了计算效率问题,只能访问到一部分的文档,并且进行打分。

因此,两轮的最大区别就是,第一轮一般都是针对单一文档的打分,而只有第二轮才能利用上配对法或者列表法。

针对文档打分。

我们之前曾经提过配对法或者列表法,都比单点法的效果要好。

因此,如何平衡这两者在两轮中的表现差异就变得越来越重要了。

这里我简单提一下第二轮之后的其他轮数。

当我们应用了第二后,其实也基本上就已经产生了最后的结果。

集合,为什么还需要其他轮数呢?我们可能还需要其他轮数,至少有两个原因。

第一,很多搜索系统中相关排序只是搜索系统的一个方面。

搜索系统还可能引入多元化或者其他的商业规则,这些规则或者进一步的重新排序,很难完整的在前面的轮述中进行。

第二,当最后文档集合生成之后,有证据表明,我们还可以生成一些更加精细的特性来进一步提高排序的精度。

因此,多轮打分是值得探索的。

今天我为你讲了现代搜索技术中一个很重要的思路,多轮打分系统一起来回顾一下要点。

第一,我们讲了为什么需要多轮打分,多轮打分的核心思路是什么?第二,我们分别讲了第一轮和第二轮以及后面轮数的一些特点,最后给你留一个思考题,在多轮打分系统的情况下,如何评测第一轮模型的好坏呢?欢迎你给我留言,和我一起讨论。