在专栏里我们已经讲解过最经典的信息检索技术。这些技术为 2000 年之前的搜索引擎提供了基本的算法支持。不管是 TF-IDF、BM25 还是语言模型(Language Model),这些方法和它们的各类变种在很多领域(不限文本)都还继续发挥着作用。
然而,自从机器学习的思想逐渐渗透到信息检索等领域之后,一个最直观的想法就是如何用机器学习来提升信息检索的性能水平。这个思想引领了 2000 年到 2010 年这个领域的研究,产生了各类基于机器学习的排序算法,也带来了搜索引擎技术的成熟和发展。
我今天就从最简单也是最实用的一类机器学习排序算法讲起,那就是单点法排序学习(Pointwise Learning to Rank)。这类方法在工业界非常实用,得到广泛应用,在实际效果中也表现得很强健(Robust)。同时,理解这类模型可以为后面学习复杂的排序算法打下基础。
单点法排序学习的历史
早在 1992 年,德国学者诺伯特·福尔(Norbert Fuhr)就在一篇论文中最早尝试了用机器学习来做搜索系统参数估计的方法。三年之前,他还发表过一篇利用“多项式回归”(Polynomial Regression)来做类似方法的论文。诺伯特因其在信息检索领域的长期贡献,于 2012 年获得美国计算机协会 ACM 颁发的“杰拉德·索尔顿奖”。
1992 年,加州大学伯克利分校的一批学者在 SIGIR 上发表了一篇论文,文中使用了“对数几率”(Logistic Regression)分类器来对排序算法进行学习。可以说这篇论文是最早利用机器学习思维来解决排序算法学习的尝试。然而,由于机器学习和信息检索研究在当时都处于起步阶段,这些早期结果并不理想。
2000 年之后支持向量机在工业界和学术界逐渐火热,随之,利用机器学习进行排序算法训练重新进入人们的视野。搜索引擎成了第一次互联网泡沫的重要阵地,各类搜索引擎公司都开始投入使用机器学习来提升搜索结果的精度。这股思潮开启了整整十年火热的机器学习排序算法的研究和开发。
单点法排序学习详解
要想理解单点法排序学习,首先要理解一些基本概念。这些基本概念可以帮助我们把一个排序问题转换成一个机器学习的问题设置,特别是监督学习的设置。
我之前介绍的传统搜索排序算法比如 TF-IDF、BM25 以及语言模型,都是无监督学习排序算法的典范,也就是算法本身事先并不知道哪些文档对于哪些关键字是“相关”的。这些算法其实就是“猜测”相关性的一个过程。因此,传统信息检索发展出一系列理论来知道算法对每一个“关键字和文档对”(Query-Document Pair)进行打分,寄希望这样的分数是反映相关性的。
然而,从现代机器学习的角度看,毫无疑问,这样的排序算法不是最优的,特别是当相关信息存在的时候,是可以直接用这些相关信息来帮助算法提升排序精度的。
要想让训练排序算法成为监督学习,首先来看需要什么样的数据集。我们要建模的对象是针对每一个查询关键字,对所有文档的一个配对。也就是说,每一个训练样本至少都要包含查询关键字和某个文档的信息。这样,针对这个训练样本,就可以利用相关度来定义样本的标签。