RankNet -> LambdaRank -> LambdaMART

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)根据这个算法函数,我们可以计算文档 x i x_i xi和文档 x j x_j xj的得分 s i s_i si s j s_j sj s i = f ( x i ; w ) , s j = f ( x j ; w ) s_i=f(x_i;w), s_j=f(x_j;w) si=f(xi;w),sj=f(xj;w)
然后根据得分计算二者的偏序概率 P i j = P ( x i ⊳ x j ) = exp ⁡ ( σ ⋅ ( s i − s j ) ) 1 + exp ⁡ ( σ ⋅ ( s i − s j ) ) = 1 1 + exp ⁡ ( − σ ⋅ ( s i − s j ) ) 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(xixj)=1+exp(σ(sisj))exp(σ(sisj))=1+exp(σ(sisj))1
再定义交叉熵为损失函数 L i j = − P ˉ i j log ⁡ P i j − ( 1 − P ˉ i j ) log ⁡ ( 1 − P i j ) = 1 2 ( 1 − S i j ) σ ⋅ ( s i − s j ) + log ⁡ { 1 + exp ⁡ ( − σ ⋅ ( s i − s j ) ) } 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ˉijlogPij(1Pˉij)log(1Pij)=21(1Sij)σ(sisj)+log{1+exp(σ(sisj))}
进行梯度下降 w k → w k − η ∂ L ∂ w k w_k \to w_k - \eta\frac{\partial L}{\partial w_k} wkwkηwkL
在这里插入图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值