1. RankNet

RankNet是2005年微软提出的一种pairwise的Learning to Rank算法,它从概率的角度来解决排序问题。RankNet的核心是提出了一种概率损失函数来学习Ranking Function,并应用Ranking Function对文档进行排序。这里的Ranking Function可以是任意对参数可微的模型,也就是说,该概率损失函数并不依赖于特定的机器学习模型,在论文中,RankNet是基于神经网络实现的。除此之外,GDBT等模型也可以应用于该框架。

1.1 相关性概率

我们先定义两个概率:预测相关性概率、真实相关性概率。

(1)预测相关性概率

对于任意一个doc对(Ui,Uj),模型输出的score分别为si和sj,那么根据模型的预测,Ui比Uj与Query更相关的概率为:

由于RankNet使用的模型一般为神经网络,根据经验sigmoid函数能提供一个比较好的概率评估。参数σ决定sigmoid函数的形状,对最终结果影响不大。

RankNet证明了如果知道一个待排序文档的排列中相邻两个文档之间的排序概率,则通过推导可以算出每两个文档之间的排序概率。因此对于一个待排序文档序列,只需计算相邻文档之间的排序概率,不需要计算所有pair,减少计算量。

(2)真实相关性概率

对于训练数据中的Ui和Uj,它们都包含有一个与Query相关性的真实label,比如Ui与Query的相关性label为good,Uj与Query的相关性label为bad,那么显然Ui比Uj更相关。我们定义Ui比Uj更相关的真实概率为:

如果Ui比Uj更相关,那么Sij=1;如果Ui不如Uj相关,那么Sij=−1;如果Ui、Uj与Query的相关程度相同,那么Sij=0。通常,两个doc的relative relevance judgment可由人工标注或者从搜索日志中获取得到(见http://www.cnblogs.com/bentuwuying/p/6681943.html)。

1.2 损失函数

对于一个排序,RankNet从各个doc的相对关系来评价排序结果的好坏,排序的效果越好,那么有错误相对关系的pair就越少。所谓错误的相对关系即如果根据模型输出Ui排在Uj前面,但真实label为Ui的相关性小于Uj,那么就记一个错误pair,RankNet本质上就是以错误的pair最少为优化目标。而在抽象成cost function时,RankNet实际上是引入了概率的思想:不是直接判断Ui排在Uj前面,而是说Ui以一定的概率P排在Uj前面,即是以预测概率与真实概率的差距最小作为优化目标。最后,RankNet使用Cross Entropy作为cost function,来衡量PijP_{ij}Pij​对Pij‾\overline{P_{ij}}Pij​​的拟合程度:


化简后,有:

当Sij=1,有:

当Sij=-1,有:

下面展示了当Sij分别取1,0,-1的时候cost function以si-sj为变量的示意图:


可以看到当Sij=1时,模型预测的si比sj越大,其代价越小;Sij=−1时,si比sj越小,代价越小;Sij=0时,代价的最小值在si与sj相等处取得。

该损失函数有以下几个特点:

  1. 当两个相关性不同的文档算出来的模型分数相同时,损失函数的值大于0,仍会对这对pair做惩罚,使他们的排序位置区分开。

  2. 损失函数是一个类线性函数,可以有效减少异常样本数据对模型的影响,因此具有鲁棒性。

总代价为:

其中,III表示所有在同一query下,且具有不同relevance judgment的doc pair,每个pair有且仅有一次。

1.3 合并概率

上述的模型Pij需要保持一致性,即如果Ui的相关性高于Uj,Uj的相关性高于Uk,则Ui的相关性也一定要高于Uk。否则,如果不能保持一致性,那么上面的理论就不好使了。

我们使用Ui vs Uj的真实概率 和 Uj vs Uk 的真实概率,计算Ui vs Uk的真实概率:

若Pij‾\overline{P_{ij}}Pij​​ = Pjk‾\overline{P_{jk}}Pjk​​ = PPP ,则有下图所示:

  1. P=0P = 0P=0 时,有Pik‾\overline{P_{ik}}Pik​​ = PPP = 000,表示:DiD_iDi​排在 DjD_jDj​后面,DjD_jDj​排在DkD_kDk​ 后面,则DiD_iDi​也一定排在DjD_jDj​后面(P=0P = 0P=0 时,PijP_{ij}Pij​ 和PjkP_{jk}Pjk​也为0,即SijS_{ij}Sij​和SjkS_{jk}Sjk​均为-1,也就是说UiU_iUi​不如UjU_jUj​相关,UjU_jUj​不如UkU_kUk​相关

  2. 0<P<0.50 < P < 0.50<P<0.5时,有Pik‾<P\overline{P_{ik}} < PPik​​<P

  3. P=0.5P = 0.5P=0.5时,有Pik‾\overline{P_{ik}}Pik​​ = PPP = 0.50.50.5,表示:DiD_iDi​有一半概率排在DjD_jDj​前面,DjD_jDj​也有一半的概率排在DkD_kDk​前面,则DiD_iDi​同样也有一半的概率排在DkD_kDk​前面

  4. 0.5<P<10.5 < P < 10.5<P<1时,Pik‾>P\overline{P_{ik}} > PPik​​>P

  5. P=1P = 1P=1时,有Pik‾=P=1\overline{P_{ik}} = P = 1Pik​​=P=1,表示:DiD_iDi​排在DjD_jDj​前面,DjD_jDj​排在DkD_kDk​前面,则DiD_iDi​也一定排在DkD_kDk​前面

1.4 Gradient Descent

我们获得了一个可微的代价函数,下面我们就可以用随机梯度下降法来迭代更新模型参数wkw_kwk​了,即

η为步长,代价C沿负梯度方向变化:

这表明沿负梯度方向更新参数确实可以降低总代价。

而使用了随机梯度下降法时,有:

其中:

  • 函数微分:

    所以损失函数的微分就是损失函数对wkw_kwk​的偏导乘以wkw_kwk​的微分
  • 损失函数的偏导计算

1.5 加速RankNet训练过程

上面的是对于每一对pair都会进行一次权重的更新,其实是可以对同一个query下的所有文档pair全部带入神经网络进行前向预测,然后计算总差分并进行误差后向反馈,这样将大大减少误差反向传播的次数。

即,我们可以转而利用批处理的梯度下降法:

其中,

我们令:


有:

下面我们来看看这个λi是什么。前面讲过集合I中只包含label不同的doc的集合,且每个pair仅包含一次,即(Ui,Uj)与(Uj,Ui)等价。为方便起见,我们假设I中只包含(Ui,Uj)表示Ui相关性大于Uj的pair,即I中的pair均满足Sij=1,那么:


这个写法是Burges的paper上的写法。下面我们用一个实际的例子来看:有三个doc,其真实相关性满足U1>U2>U3,那么集合I中就包含{(1,2), (1,3), (2,3)}共三个pair

显然λ1=λ12+λ13,λ2=λ23−λ12,λ3=−λ13−λ23,因此我所理解的λi应为:


λi决定着第i个doc在迭代中的移动方向和幅度,真实的排在Ui前面的doc越少,排在Ui后面的doc越多,那么文档Ui向前移动的幅度就越大(实际λi负的越多越向前移动)。这表明每个f下次调序的方向和强度取决于同一Query下可以与其组成relative relevance judgment的“pair对”的其他不同label的文档。

同时,这样的改造相当于是mini-batch learning。可以加速RankNet的学习过程。

原先使用神经网络模型,通过Stochastic gradient descent计算的时候,是对每一个pair对都会进行一次权重的更新。而通过因式分解重新改造后,现在的mini-batch learning的方式,是对同一个query下的所有doc进行一次权重的更新。时间消耗从O(n2n^2n2)降到了O(nnn)。这对训练过程的影响是很大的,因为使用的是神经网络模型,每次权重的更新迭代都需要先进行前向预测,再进行误差的后向反馈。

解释一下:


两个式子对比可以看到上面的式子会对文档i和文档j求一次偏导,然后更新权重,这样的话会多次计算:

而第二个式子只需要计算一次:

2. Information Retrieval的评价指标

评价指标参考

Information Retrieval的评价指标包括:MRR,MAP,ERR,NDCG等。NDCG和ERR指标的优势在于,它们对doc的相关性划分多个(>2)等级,而MRR和MAP只会对doc的相关性划分2个等级(相关和不相关)。并且,这些指标都包含了doc位置信息(给予靠前位置的doc以较高的权重),这很适合于web search。然而,这些指标的缺点是不平滑、不连续,无法求梯度,如果将这些指标直接作为模型评分的函数的话,是无法直接用梯度下降法进行求解的。

这里简单介绍下ERR(Expected Reciprocal Rank)。ERR是受到cascade model的启发,即一个用户从上到下依次浏览doc,直至他找到一个满意的结果,ERR可以定义为:


其中,RiR_iRi​表示第i位的doc的相关性概率:

其中,lm表示相关性评分最高的一档。

ERR可以定义式子表示一个用户从上到下依次浏览doc,直至他找到一个满意的结果。其中R表示item的相关性得分,下式中RrR_rRr​表示浏览到第r个item时用户满意,后面的一堆表示前r-1个item用户均不满意,然后乘以1/r做了normalize

NDCG参考

MRR:

MAP参考

3. LambdaRank

上面我们介绍了以错误pair最少为优化目标的RankNet算法,然而许多时候仅以错误pair数来评价排序的好坏是不够的,像NDCG或者ERR等评价指标就只关注top k个结果的排序,当我们采用RankNet算法时,往往无法以这些指标为优化目标进行迭代,所以RankNet的优化目标和IR评价指标之间还是存在gap的。以下图为例:


如上图所示,每个线条表示文档,蓝色表示相关文档,灰色表示不相关文档,RankNet以pairwise error的方式计算cost,左图的cost为13,右图通过把第一个相关文档下调3个位置,第二个文档上条5个位置,将cost降为11,但是像NDCG或者ERR等评价指标只关注top k个结果的排序,在优化过程中下调前面相关文档的位置不是我们想要得到的结果。图 1右图左边黑色的箭头表示RankNet下一轮的调序方向和强度,但我们真正需要的是右边红色箭头代表的方向和强度,即更关注靠前位置的相关文档的排序位置的提升。LambdaRank正是基于这个思想演化而来,其中Lambda指的就是红色箭头,代表下一次迭代优化的方向和强度,也就是梯度。

还是以上图为例,RankNet训练的时候是以错误的pair最少为目标的,它会考虑到全局的item。从左图变为右图cost从13降为了11,这在RankNet里面是合理的,但是如果用ERR来评价的话从原来的第1个就满意变成了第4个才满意,就算第二个相关文档的ERR增加了,整体的ERR也是下降了,所以并不好。

LambdaRank是一个经验算法,它不是通过显示定义损失函数再求梯度的方式对排序问题进行求解,而是分析排序问题需要的梯度的物理意义,直接定义梯度,即Lambda梯度。

LambdaRank在RankNet的加速算法形式的基础上引入评价指标Z (如NDCG、ERR等),把交换两个文档的位置引起的评价指标的变化∣ΔNDCG∣\begin{vmatrix} \Delta_{NDCG} \\ \end{vmatrix}∣∣​ΔNDCG​​∣∣​作为其中一个因子,实验表明对模型效果有显著的提升:

从左边的式子变成右边的式子完全是人为设定的,这样就可以多考虑Information Retrieval评价指标了,这样会更加关注排名靠前的item。在上图中表现在越靠前的item名次提升力度越大。因为NDCG已经包含了真实的排名信息,所以可以把1−Sij1 - S_{ij}1−Sij​这一项去掉。


3. LambdaMart

1)Mart定义了一个框架,缺少一个梯度。

2)LambdaRank重新定义了梯度,赋予了梯度新的物理意义。

因此,所有可以使用梯度下降法求解的模型都可以使用这个梯度,MART就是其中一种,将梯度Lambda和MART结合就是大名鼎鼎的LambdaMART。

MART的原理是直接在函数空间对函数进行求解,模型结果由许多棵树组成,每棵树的拟合目标是损失函数的梯度,在LambdaMART中就是Lambda。LambdaMART的具体算法过程如下:

可以看出LambdaMART的框架其实就是MART,主要的创新在于中间计算的梯度使用的是Lambda,是pairwise的。MART需要设置的参数包括:树的数量M、叶子节点数L和学习率v,这3个参数可以通过验证集调节获取最优参数。

MART支持“热启动”,即可以在已经训练好的模型基础上继续训练,在刚开始的时候通过初始化加载进来即可。下面简单介绍LambdaMART每一步的工作:

LambdaMART具有很多优势:

     1)  适用于排序场景:不是传统的通过分类或者回归的方法求解排序问题,而是直接求解2)  损失函数可导:通过损失函数的转换,将类似于NDCG这种无法求导的IR评价指标转换成可以求导的函数,并且赋予了梯度的实际物理意义,数学解释非常漂亮3)  增量学习:由于每次训练可以在已有的模型上继续训练,因此适合于增量学习4)  组合特征:因为采用树模型,因此可以学到不同特征组合情况5)  特征选择:因为是基于MART模型,因此也具有MART的优势,可以学到每个特征的重要性,可以做特征选择6)  适用于正负样本比例失衡的数据:因为模型的训练对象具有不同label的文档pair,而不是预测每个文档的label,因此对正负样本比例失衡不敏感

补充:

  • Mart即Multiple Additive Regression Tree,Mart是一类底层训练模型,常见的有GBDT和XGBoost
  • Lambda是MART求解过程使用的梯度,其物理含义是一个待排序的文档下一次迭代应该调整的方向(向上或者向下)和强度,这个梯度在LambdaRank里人为地将损失函数的偏导和Information Retrieval评价指标结合在一起定义了

RankNet,LambdaRank,LambdaMart相关推荐

  1. 徐博 From RankNet to LambdaRank to LambdaMART: An Overview

    徐博 From RankNet to LambdaRank to LambdaMART: An Overview 新闻来源:IR实验室       发布时间:2012/10/17 15:44:39   ...

  2. 员外带你读论文:From RankNet to LambdaRank to LambdaMART: An Overview

    严格来说,这并不是一篇论文,只是一个  ,里面系统的介绍了三个比较著名的排序模型 ,链接 Rank[1] 本篇博文将分析总结下这三个排序模型.其参考的代码RankNet.LambdaRank[2],L ...

  3. 排序学习(LTR)经典算法:RankNet、LambdaRank和LambdaMart

    ©PaperWeekly 原创 · 作者 | yancy 单位 | 字节跳动 研究方向 | 推荐系统 背景 在许多场景中我们都需要模型学习到排序的能力,比如网页搜索场景下我们需要根据搜索词和文档的相关 ...

  4. 机器学习排序算法:RankNet to LambdaRank to LambdaMART

    使用机器学习排序算法LambdaMART有一段时间了,但一直没有真正弄清楚算法中的所有细节. 学习过程中细读了两篇不错的博文,推荐给大家: 梯度提升树(GBDT)原理小结 徐博From RankNet ...

  5. From RankNet to LambdaRank to LambdaMART: An Overview

    Abstract LambdaMART 是 LambdaRank 的提升树版本,而 LambdaRank 又是基于 RankNet 的.RankNet, LambdaRank, 以及 LambdaMA ...

  6. 近200篇机器学习&amp;深度学习资料分享(含各种文档,视频,源码等)

    转自:http://www.tuicool.com/articles/jUz2Y3b 编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.而且原文也会不定期的更新,望看到文 ...

  7. 近200篇机器学习深度学习资料分享(含各种文档,视频,源码等)(1)

    原文:http://developer.51cto.com/art/201501/464174.htm 编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.而且原文也会不定 ...

  8. 再谈排序算法的pairwise,pointwise,listwise

    NewBeeNLP·干货 作者:DOTA 大家好,这里是 NewBeeNLP. 最近因为工作上的一些调整,好久更新文章和个人的一些经验总结了,下午恰好有时间,看了看各渠道的一些问题和讨论,看到一个熟悉 ...

  9. Mysql,SqlServer,Oracle主键自动增长的设置

    Mysql,SqlServer,Oracle主键自动增长的设置 参考文献 http://blog.csdn.net/andyelvis/article/details/2446865 1.把主键定义为 ...

最新文章

  1. 【node】Sequelize常用操作、基本增删改查
  2. CSS Sprite的应用
  3. BLE 包结构及传输速率
  4. EasyUI DataGrid 合并单元格
  5. ping命令时常碰到的问题
  6. 嵌套矩形——DAG上的动态规划
  7. Linux下使用ps命令来查看Oracle相关的进程
  8. MVC html 控件扩展【转载】
  9. 码表的理解(ASCII,GBK,Unicode,UTF-8等)。
  10. 专用集成电路设计实用教程(学习笔记一)
  11. 无法获得下列许可solidworks standard无效的(不一致的)使用许可号码(-8,544,0) solidworks2020 (亲测有效)
  12. Win7连接网络打印机步骤
  13. php富强民主,给你的网站添加“富强民主”点击特效
  14. Yank-Note笔记软件的37个特色功能,值得下载
  15. 梭子鱼网络:2018年网络安全威胁预测
  16. Android性能优化方案
  17. 计算机时间小于会计期间错误,会计期间手工记账和电脑记账不一样问题
  18. vue-cli 3 和 vue-cli 2的区别[转]
  19. 高性能v100 gpu服务器,TESLA V100 GPU 加速性能指南
  20. la是什么牌子_LA是什么牌子

热门文章

  1. 【深度学习】综述 | 深度学习的最新进展
  2. Java多数据源最通俗讲解
  3. 27、fd_set与FD_SETSIZE详解
  4. 蓝牙 - 技术演变史
  5. html pre 转义,html转义-HTML转义字的转换问题
  6. PHP 抽奖概率计算(经典)
  7. 测度不变变换(Measure Preserving Transformation)
  8. 网络基本概念之TCP, UDP, 单播(Unicast), 组播(Multicast)
  9. unable to create jaxbcontext 最终解决办法
  10. 机器学习中的ground-truth