美文网首页
RankNet 信息检索排序算法

RankNet 信息检索排序算法

作者: NLP与人工智能 | 来源:发表于2021-04-09 00:04 被阅读0次

排序算法是信息检索里面很重要的一环,例如用户提交了一个查询 q,搜索引擎会返回很多相关的文档,然后需要采用排序算法根据文档与 q 的相关性对文档进行排序。可以采用机器学习的方法解决排序的问题,称为 Learning To Rank (LTR) 。LTR 主要分三类 PointWise,PairWise,ListWise,本文主要介绍一种 PairWise 的算法 RankNet。

1.信息检索排序

在信息检索时,系统需要根据用户的查询 q,对文档进行相关性排序。信息检索中有很多经典的排序算法。

布尔模型(Boolean Model)

将查询表示成关键词的布尔组合,用 "与","或","非" 将查询组合起来,然后计算文档和查询的匹配程度。但是布尔模型通常只能检索出符合条件的文档,不能进行排序,例如我们有如下三个文档:

文档1: a b c d e f
文档2: a x b y y z
文档3: a c d e f g

根据文档和单词可以构造出一个单词-文档矩阵,表示单词是否出现在文档中。

布尔模型

如果用户要查询有 a 或者 b,但是一定有 z 的文档。首先从上述矩阵中找出 a,b,z 对应的向量 a(1, 1, 1),b(1, 1, 0),z(0, 1, 0),然后按照查询所描述的布尔组合将向量组合在一起。如下所示,只有文档 2 符合条件。

布尔模型检索

向量空间模型 Vectos Space Model

将文档和查询转成向量空间中的向量,然后计算查询向量和文档向量的内积得到相似度,按相似度进行排序。向量可以用 TF-IDF 向量表示。

PageRank

给定一个网页 u,其影响力等于所有链接到 u 的网页加权影响力之和,如下所示。

PageRank

v 表示所有能够跳转到网页 u 的页面,L(v) 表示网页 v 所有跳转链接个数。另外用户也有可能通过输入网址访问页面而不是通过跳转链接,因此 PageRank 算法还加上了一个因子 d,表示用户按照跳转链接上网的概率。

PageRank

2.Learning To Rank

Learning To Rank 主要是使用机器学习的方法学习出文档的排序,主要分为三类:

PointWise:给定查询 q,PointWise 模型的输入是单个文档,直接计算出 q 和该文档的相关性,再根据相关性进行排序。这一类方法没有考虑文档之间的相互依赖关系,而且损失函数是不知道排序后文档的相对位置的。

PairWise:给定查询 q,PairWise 模型的输入是文档对 (即两个文档),然后计算 q 更偏向于哪个文档。因此模型可以知道文档之间的相对顺序。

ListWise:输入的是查询 q 以及一组文档,输出为所有文档的排序结果。

本文主要介绍一种 PairWise 的 LTR 算法,RankNet 是微软研究院 2005 年提出的,用在搜索引擎 Bing 中,对应的论文是《Learning to Rank Using Gradient Descent》。RankNet 提出了一种概率损失函数,然后使用神经网络学习排名函数 (ranking function),最后用使用梯度下降的方法训练模型。

3.RankNet

RankNet 使用神经网络对文档进行打分,f(x1) 表示样本 x1 的分数,如果 f(x1) > f(x2),则表示 x1 排名高于 x2 (用 x1->x2 表示)。

我们可以利用函数 f 计算得到样本 xi 比样本 xj 排名更高的概率,如下所示。

Pij

另外还需要 xi 比 xj 排名更高 (即 xi 比 xj 更加相关) 的真实概率,在数据集中有参数 Sij。如果 xi 相关性比 xj 更高,则 Sij = 1;如果 xi 相关性比 xj 低,则 Sij = -1;如果 xi 相关性和 xj 一样,则 Sij = 0。我们可以通过下面的公式计算 xi 比 xj 排名更高的真实概率。

真实概率

RankNet 的损失函数采用了 cross entrophy,根据 损失函数进行梯度下降,优化神经网络的参数 (即函数 f),损失函数如下所示。

损失函数

下图是不同真实概率下,损失函数取值和 (oi-oj) 的关系。

4.参考文献

《Learning to Rank using Gradient Descent》

相关文章

  • RankNet 信息检索排序算法

    排序算法是信息检索里面很重要的一环,例如用户提交了一个查询 q,搜索引擎会返回很多相关的文档,然后需要采用排序算法...

  • 数据结构+算法

    排序算法 基本排序:冒泡、选择、插入 高级排序希尔、归并、快速 检索算法 顺序查找、二分查找 高级算法 动态规划斐...

  • 信息检索排序算法 LambdaRank 和 LambdaMART

    排序算法在搜索引擎中非常重要,需要根据用户的查询 q,对一些相关的文档进行排序,尽可能地让用户感兴趣的文档排在前面...

  • 排序算法和检索算法

    排序算法 1.基本排序算法 基本排序算法,其核心思想是指对一组数组按照一定的顺序重新排列。重新排列时用到的技术是一...

  • SQL 对检索结果进行排序

    ORDER BY 子句 有如下的顾客信息表: 检索出所有的客户名称: 检索结果: 检索结果未进行过排序的,数据可能...

  • 快速排序(Java)

    快速排序算法思想: (1)输入的数据信息:输入一个待排序的数组a[n],利用QuickSort算法实现此数组的排序...

  • 社交网络信息流,哪种更合理

    社交网络信息流,时间排序和算法排序哪个更合理? 1.存在即合理,时间排序和算法排序在现在的社交网络中同时存在,且都...

  • 《写给大家看的算法书》笔记

    一、什么是算法 算法是对特定问题的解决步骤(对信息进行排序、搜索目标信息等); 算法→更优质的算法→好的程序; 算...

  • java实现快速排序、归并排序、希尔排序、基数排序算法...

    快速排序算法 归并排序算法 希尔排序算法 基数排序算法

  • 第二课 检索数据

    一、SELECT语句 关键字SELECT,可从一个或多个表中检索信息 二、检索单个列 说明:如若没有明确排序查询,...

网友评论

      本文标题:RankNet 信息检索排序算法

      本文链接:https://www.haomeiwen.com/subject/aobbkltx.html