RankNet 信息检索排序算法

排序算法是信息检索里面很重要的一环,例如用户提交了一个查询 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》

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容

  • 为什么要用LTR 传统的检索模型靠人工拟合排序公式,并通过不断的实验确定最佳的参数组合,以此来形成相关性打分。这种...
    Yespon阅读 6,766评论 0 5
  • LambdaMART是一种state-of-art的Learning to rank算法,由微软在2010年提出[...
    天行剑阅读 16,859评论 3 52
  • 最近工作中需要调研一下搜索排序相关的方法,这里写一篇水文,总结一下几天下来的调研成果。包括 Learning to...
    y_felix阅读 12,614评论 3 16
  • 前言 推荐的Rerank排序有两种情况,一个是离线计算的时候为每个用户提前用Rerank排序算法算好推荐结果,另一...
    充电了么阅读 2,906评论 0 0
  • 夜莺2517阅读 127,717评论 1 9