学习排序算法(二):Pairwise方法之RankNet

学习排序算法(二):Pairwise方法之RankNet

前面一篇博文介绍的Ranking SVM是把LTR问题转化为二值分类问题,而RankNet算法是从另外一个角度来解决,那就是概率的角度。

1. RankNet的基本思想

RankNet方法就是使用交叉熵作为损失函数,学习出一些模型(例如神经网络、决策树等)来计算每个pair的排序得分,学习模型的过程可以使用梯度下降法。

2. 方法流程

首先,我们要明确RankNet方法的目的就是要学习出一个模型,这个模型就是给文档算法的函数f(d, w)。其中d为文档特征,w为模型参数。

输入:query的许多个文档结果,每个文档需要人为标注得分,等分越高的说明排名越靠前;

输出:打分模型f(d, w)。

Step 1:把query的结果分成pair,计算pair中排名的概率。在pair中,如果Ui排在Uj的前面,概率为:

而Ui排在Uj的前面的真实概率计算为:

其中Sij=1表明Ui真实情况就是排在Uj的前面;否则,就是Ui排在Uj的后面。

    Step 2:交叉熵作为损失函数。

这个损失函数是用来衡量Pij和Pij_的拟合程度的,当两个文档的不相关时,给与了一定的惩罚,让它们分开。RankNet算法没有使用学习排序中的一些衡量指标直接作为损失函数的原因在于,它们的函数形式都不是很连续,不太好求导,也就不太好用梯度下降法。而交叉熵的函数形式比较适合梯度下降法。

Step 3:梯度下降法更新迭代求最优的模型参数w。显然,我们需要设置一定的学习步长,不断的更新学习新的w,具体公式如下:

后面就是求损失函数C关于w的偏导计算公式了,如下:

上式中,得分s关于w的偏导和具体的学习模型有关,原始的RankNet方法使用的是神经网络模型。这个需要具体模型,具体分析。

这样我们便直到了如何通过梯度下降法来求RankNet中的打分模型了~

最后我们说一下RankNet算法的一大好处:使用的是交叉熵作为损失函数,它求导方便,适合梯度下降法的框架;而且,即使两个不相关的文档的得分相同时,C也不为零,还是会有惩罚项的。

时间: 2024-10-11 22:26:04

学习排序算法(二):Pairwise方法之RankNet的相关文章

学习排序算法(二):Pairwise方法之Ranking SVM

学习排序算法(二):Pairwise方法之Ranking  SVM 1. Pairwise方法的基本思想 Pairwise考虑了文档顺序的关系.它将同一个query的相关文档其中起来,把任意两个文档组成一个pair.我们研究就是以这个pair文档对来研究的. 2. Ranking SVM 在测试的时候,我们就把一个query的所有结果先构建所有可能的pair,然后输入到学习到的模型中,得到每个pair的相对顺序.根据推算就可以得到所有搜索结果的排序了. 典型的Pairwise方法就有rankin

学习排序算法(一):单文档方法 Pointwise

学习排序算法(一):单文档方法 Pointwise 1. 基本思想 这样的方法主要是将搜索结果的文档变为特征向量,然后将排序问题转化成了机器学习中的常规的分类问题,并且是个多类分类问题. 2. 方法流程 Pointwise方法的主要流程例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHVxdXRvZ2V0aGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity

学习排序算法简介

学习排序算法简介 学习排序(Learning to Rank, LTR)是一类基于机器学习方法的排序算法. 传统经典的模型,例如基于TFIDF特征的VSM模型,很难融入多种特征,也就是除了TFIDF特征之外,就无法融入其他种类的特征了. 而机器学习的方法很容易融合多种特征,而且有成熟深厚的理论基础,参数也是通过迭代计算出来的,有一套成熟理论来解决稀疏.过拟合等问题. LTR方法大致可以分成三类: 1) Pointwise 单文档方法 2) Pairwise 文档对方法 3) Listwise 文

程序员必须要掌握的排序算法以及查找方法

程序员必须要掌握的排序算法以及查找方法 经典的排序算法要一个一个的弄懂.借个图,列出学习提纲. 三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表 2016-04-17 09:08:04

高效学习排序算法

排序是一个经典的问题,它以一定的顺序对一个数组或列表中的元素进行重新排序.而排序算法也是各有千秋,每个都有自身的优点和局限性.虽然这些算法平常根本就不用自己去编写,但作为一个有追求的程序员,还是要了解它们从不同角度解决排序问题的思想. 学习算法是枯燥的,那怎么高效的理解它的原理呢?显然,如果以动图的方式,生动形象的把算法排序的过程展示出来,非常有助于学习.visualgo.net 就是一个可视化算法的网站,第一次访问的时候,真的是眼前一亮.本文就对常用的排序进行下总结. 1. 冒泡排序 冒泡排序

(转载)[直观学习排序算法] 视觉直观感受若干常用排序算法

1 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性. 步骤: 从数列中挑出一个元素,称为 "基准"(pivot), 重新排序数列,所有元素

算法学习-排序算法

数据结构-算法复杂度 时间复杂度 事件频度 一个算法花费的时间与算法种语句的执行次数成正比,哪个算法种语句执行次数多,它花费时间就多. 一个算法中的语句执行次数称为语句频度或时间频度.记为T(n) eg:计算1-100的和 方法一:for循环 T(n) = n + 1 方法二:直接计算 T(n) = 1 时间复杂度 一般情况下,算法中的基本操作语句的重复执行次数时问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n) / f(n) 的极限值为不等于0的常

[排序算法二]选择排序

选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾.以此类推,直到全部待排序的数据元素的个数为零.选择排序是不稳定的排序方法. 算法性能 时间复杂度:O(n^2),总循环次数 n(n-1)/2.数据交换次数 O(n),这点上来说比冒泡排序要好,因为冒泡是把数据一位一位的移上来,而选择排序只需要在子循环结束后移动一次

基本排序算法<二>

希尔排序 原理:希尔排序也称之为递减增量排序,它是对插入排序的改进.在插入排序中,我们知道,插入排序对于近似已排好序的序列来说,效率很高,可以达到线性排序的效率.但是插入排序效率也是比较低的,他一次只能将数据向前移一位.比如如果一个长度为N的序列,最小的元素如果恰巧在末尾,那么使用插入排序仍需一步一步的向前移动和比较,要N-1次比较和交换.希尔排序通过将待比较的元素划分为几个区域来提升插入排序的效率.这样可以让元素可以一次性的朝最终位置迈进一大步,然后算法再取越来越小的步长进行排序,最后一步就是