RankNet -> LambdaRank -> LambdaMART

Ranking 问题的常见的评价指标如NDCG、MAP等,都是不平滑、不连续、无法求梯度,因此不能直接用梯度下降法求解。
RankNet、LambdaRank 和 LambdaMART 是由微软提出的LTR的三个算法。它们将排序问题转化为 pairwise 的分类或者回归问题,使用梯度下降进行求解。

RankNet

RankNet最初是用神经网络开发的,但底层模型可以不局限于神经网络。**RankNet的损失函数旨在最小化排序中的逆序数量。**这里的逆序代表一对结果之间不正确的顺序,比如我们在排序列表中将较低评级的结果排在较高评级结果之上。RankNet使用随机梯度下降算法优化损失函数。
RankNet 的创新之处在于,它将不适宜用梯度下降求解的Ranking问题,转化为对概率的交叉熵损失函数的优化问题,从而适用梯度下降方法。RankNet 的梯度下降表现在结果的整体变化中是逆序对的下降。
RankNet 的目标是得到一个打分函数:s=f(x;w)s=f(x;w)s=f(x;w)根据这个算法函数,我们可以计算文档xix_ixi​和文档xjx_jxj​的得分sis_isi​和sjs_jsj​ si=f(xi;w),sj=f(xj;w)s_i=f(x_i;w), s_j=f(x_j;w)si​=f(xi​;w),sj​=f(xj​;w)
然后根据得分计算二者的偏序概率Pij=P(xi⊳xj)=exp⁡(σ⋅(si−sj))1+exp⁡(σ⋅(si−sj))=11+exp⁡(−σ⋅(si−sj))P_{ij} = P(x_i \rhd x_j) = \frac{\exp\bigl(\sigma\cdot(s_i - s_j)\bigr)}{1 + \exp\bigl(\sigma\cdot(s_i - s_j)\bigr)} = \frac{1}{1 + \exp\bigl(-\sigma\cdot(s_i - s_j)\bigr)}Pij​=P(xi​⊳xj​)=1+exp(σ⋅(si​−sj​))exp(σ⋅(si​−sj​))​=1+exp(−σ⋅(si​−sj​))1​
再定义交叉熵为损失函数Lij=−Pˉijlog⁡Pij−(1−Pˉij)log⁡(1−Pij)=12(1−Sij)σ⋅(si−sj)+log⁡{1+exp⁡(−σ⋅(si−sj))}L_{ij} = -\bar{P}_{ij}\log P_{ij} - (1 - \bar{P}_{ij})\log (1 - P_{ij}) = \frac12 (1 - S_{ij})\sigma\cdot(s_i - s_j) + \log\Bigl\{1 + \exp\bigl(-\sigma\cdot(s_i - s_j)\bigr)\Bigr\}Lij​=−Pˉij​logPij​−(1−Pˉij​)log(1−Pij​)=21​(1−Sij​)σ⋅(si​−sj​)+log{1+exp(−σ⋅(si​−sj​))}
进行梯度下降wk→wk−η∂L∂wkw_k \to w_k - \eta\frac{\partial L}{\partial w_k}wk​→wk​−η∂wk​∂L​

LambdaRank

RankNet 告诉我们如何绕开 NDCG 等无法求导的评价指标得到一个可用的梯度。
后来发现在训练 RankNet 的过程中,其实是不需要损失函数的,只需要损失函数的梯度,可以通过交换每对文档后 NDCG 的变化来衡量梯度。LambdaRank 的核心思想是不通过显示定义损失函数的方式来求梯度,而是分析排序问题需要的梯度的意义,直接定义梯度。实验显示它在速度和准确度上都比原始 RankNet 要好。

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

LambdaMART

LambdaMART 组合了 LambdaRank 和 MART(Multiple Additive Regression Trees)。LambdaMART 使用 LambdaRank 里的损失函数和梯度提升决策树来求解 Rank 任务。 实验显示 LambdaMART 比 LambdaRank 和原始 RankNet 都要好。

Reference:

https://www.microsoft.com/en-us/research/publication/from-ranknet-to-lambdarank-to-lambdamart-an-overview/?from=http%3A%2F%2Fresearch.microsoft.com%2Fpubs%2F132652%2Fmsr-tr-2010-82.pdf

RankNet - LambdaRank - LambdaMART相关推荐

  1. From RankNet to LambdaRank to LambdaMART: An Overview

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

  2. 求解LambdaMART的疑惑?

     求解LambdaMART的疑惑? 研究这个LambdaMART好久了,无奈自己在这瞎研究,脑子实在不够用,网上也看了博客,到最后还是看不懂,我明白的是MART是一个学习打分的算法,通过让多棵树进 ...

  3. 2017年度NLP领域论文TOP10(附链接)

    来源:PaperWeekly 本文共2672字,建议阅读5分钟. 本文为大家带来10篇精选的2017度值得阅读的AI论文. 历时九天,我们收到了近千份有效读者投票,2017 年度最值得读的 AI 论文 ...

  4. 2017年度最值得读的AI论文 | NLP篇 · 评选结果公布

    历时九天,我们收到了近千份有效读者投票,2017 年度最值得读的 AI 论文评选也正式结束. 我们根据读者的投票情况,选出了自然语言处理和计算机视觉领域"2017 年最值得读的十大论文&qu ...

  5. 搜索研发工程师需要掌握的一些技能

    文章目录 基础 语言 数据结构与算法 工程方面 搜索相关 搜索主要模块 电商搜索流程 分词相关 搜索召回 相似度算法 相关词推荐 排序相关 国美搜索 搜索算法工程师需要掌握的技能 基础 语言 大部分公 ...

  6. 【每周一篇】常用推荐算法总结

    本文主要来源:阿里云天池技术圈常用推荐算法(50页干货) 部分进行总结和详细解释(原文属于比较精炼没有侧重点的提纲) 适合和我一样的推荐算法小白和入门者 主要内容 一.推荐系统简介 信息过载 从海量信 ...

  7. Learning to Rank模型总结

    文章目录 LTR介绍 pointwise pairwise listwise 经典算法 RankNet LambdaRank 信息检索常用指标 MAP nDCG ERR 指标代码实现 LTR介绍 搜索 ...

  8. 西瓜书习题详解 机器学习能在互联网搜索的哪些环节起什么作用?

    看完了西瓜书的第一章,课后习题有这个问题.我先将这个问题定义为:机器学习在搜索引擎上的应用. 维基百科:搜索引擎(英语:Search Engine)是一种信息检索系统,旨在协助搜索存储在计算机系统中的 ...

  9. ranklib java_[LTR] RankLib.jar 包介绍

    一.介绍 RankLib.jar 是一个学习排名(Learning to rank)算法的库,目前已经实现了如下几种算法: MART RankNet RankBoost AdaRank Coordin ...

最新文章

  1. Python实现“鸟脸识别”,看看什么鸟最贪吃
  2. ReactiveCocoa
  3. python创建打开文件-python打开文件方式
  4. python turtle库画图案-Python如何使用turtle库绘制图形
  5. 每个程序员都必读的10篇文章
  6. python中的 set 中的元素
  7. Scala伴生类和伴生对象
  8. 支持向量机—核函数源码分析(2)
  9. 【Git学习笔记5】以普通模式合并(--no-ff)、push到远程库及分支管理策略
  10. Java中如何解决double和float精度不准的问题
  11. merge into on多个条件_“京沪二线”贯穿山东半岛,沿线多个城市将受益,来了解一下吧...
  12. extjs5(05--主界面上加入顶部和底部区域)
  13. 在windows文件系统中加右键执行程序
  14. [译]A Simple CSS Animation Tutorial
  15. 面试—每日一题(5)
  16. vb以类名或窗口标题查找句柄并关闭
  17. 关于hankcs库的自然语言处理
  18. django-xadmin定制之分页显示数量
  19. Windows迅雷X去广告美化终结版Thunder X来了!
  20. 北风网-Spark视频从入门到精通(高级特性、案例实战、内核源码、性能调优)-中华石杉老师

热门文章

  1. 都说打印机又笨又丑 这一回联想小新给你好看!
  2. 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例
  3. 【迭代器】迭代器相应型别
  4. 2018年如何挣钱 ?
  5. TC275can总结
  6. java窗口弹出的位置_java的窗口弹出和动手动脑
  7. sqlserver ssis
  8. windows10在哪修改内网网段或者固定IP
  9. libuv 源码分析 —— 1.queue
  10. Lenet、Alexnet 、VGG、 GoogleNet、ResNet模型