Learning to rank总结

本文深入探讨了Learning to Rank中的Ranknet、LambdaRank和LambdaMART算法,从成本函数、模型参数更新到实际应用。Ranknet通过Pairwise方法训练模型,LambdaRank关注Top K的排序效果,调整代价函数,而LambdaMART则是通过梯度提升建立回归树的加法模型,实现Listwise的优化。文章总结了各种方法的特点及其在排序问题中的优势。
摘要由CSDN通过智能技术生成

一、Ranknet

在使用搜索引擎的过程中,对于某一Query(或关键字),搜索引擎会找出许多与Query相关的URL,然后根据每个URL的特征向量对该URL与主题的相关性进行打分并决定最终URL的排序,其流程如下:
这里写图片描述
排序的好坏完全取决于模型的输出,而模型又由其参数决定,因而问题转换成了如何利用带label的训练数据获得最优的模型参数w。Ranknet提供了一种基于Pairwise的训练方法。

1、Cost function

预测相关性概率

对于任意一个URL对(Ui,Uj),模型输出的score分别为si和sj,那么根据模型的预测,Ui比Uj与Query更相关的概率为 Pij=P(Ui>Uj)=11+eσ(sisj) P i j = P ( U i > U j ) = 1 1 + e − σ ( s i − s j ) ,其中 σ σ 是个参数。

真实相关性概率

定义真实相关性概率为 Pij=12(1+Sij) P i j ¯ = 1 2 ( 1 + S i j ) ,对于训练数据中的Ui和Uj,它们都包含有一个与Query相关性的真实label,如果Ui比Uj更相关,那么Sij=1;如果Ui不如Uj相关,那么Sij=−1;如果Ui、Uj与Query的相关程度相同,那么Sij=0。

代价函数定义

C(Pij,Pij) C ( P i j ¯ , P i j )

=Ui>Uj,Ui<Uj,Ui=UjPijlogPij = − ∑ U i > U j , U i < U j , U i = U j P i j ¯ l o g P i j

=PijlogPij(1Pij)log(1Pij)12log12 = − P i j ¯ l o g P i j − ( 1 − P i j ¯ ) l o g ( 1 − P i j ) − 1 2 l o g 1 2

=PijlogPij(1Pij)log(1Pij) = − P i j ¯ l o g P i j − ( 1 − P i j ¯ ) l o g ( 1 − P i j )
化简如下:


下图展示了 Cij C i j PijPij P i j ¯ 、 P i j 的变化情况:

图中t表示 sisj s i − s j ,可以看到当 Sij=1 S i j = 1 时,模型预测的 sisj s i 比 s j 越大,其代价越小; Sij=1 S i j = − 1 时, si s i sj s j 越小,代价越小; Sij=0 S i j = 0 时,代价的最小值在 si s i sj s j 相等处取得。该代价函数有以下特点:
1)当两个相关性不同的文档算出来的模型分数相同时,损失函数的值大于0,仍会对这对pair做惩罚,使他们的排序位置区分开
2)损失函数是一个类线性函数,可以有效减少异常样本数据对模型的影响,因此具有鲁棒性

总代价

C=(i,j)ICij C = ∑ ( i , j ) ∈ I C i j ,I表示所有URL pair的集合,对于 (i,j)I ( i , j ) ∈ I 的pair,i>j,即 Sij=1 S i j = 1

2、梯度下降更新模型参数W

wk:=wkαdCdwk w k := w k − α d C d w k

dCdwk=(i,j)I(dcijdsidsidwk+dcijdsjdsjdwk) d C d w k = ∑ ( i , j ) ∈ I ( d c i j d s i d s i d w k + d c i j d s j d s j d w k )

dCijdsi=σ(12(1sij)11+eσ(sisj))=dCijdsj=λij d C i j d s i = σ ( 1 2 ( 1 − s i j ) − 1 1 + e σ ( s i − s j ) ) = − d C i j d s j = λ i j

dCdwk=(i,j)I(λijdsidwkλijdsjdwk)=(i,j)Iλij(dsidwkdsjdwk) d C d w k = ∑ ( i , j ) ∈ I ( λ i j d s i d w k − λ i j d s j d w k ) = ∑ ( i , j ) ∈ I λ i j ( d s i d w k − d s j d w k )

λi=j:(i,j)Iλijj:(j,i)Iλij λ i = ∑ j : ( i , j ) ∈ I λ i j − ∑ j : ( j , i ) ∈ I λ i j

dCdwk=iλidsjdwk d C d w k = ∑ i λ i d s j d w k

综上 wk:=wkαiλidsjdwk w k := w k − α ∑ i λ i d s j d w k

二、LambdaRank

RankNet以错误pair最少为优化目标,然而NDCG或者ERR等评价指标就只关注top k个结果的排序,所以修改cost function如下。

1、Cost function

Cij=log(1+eσ(sisj))|ΔNDCG| C i j = l o g ( 1 + e − σ ( s i − s j ) ) | Δ N D C G |

λij=σ1+eσ(sisj)|ΔNDCG| λ i j = − σ 1 + e σ ( s i − s j ) | Δ N D C G |

优化方式与RankNet相似。

三、LambdaMART

以上两个方法都是通过cost function,采用随机梯度下降更新模型参数,使得计算URL的score值在所有URL排序中,属于最优位置。但是lambdamart是用梯度 λij=dCijdsi λ i j = d C i j d s i 建立gradient boosting CART回归树,最后得到回归树的加法模型作为最终模型。下面从简单的模型讲解,一步步推导至lambdaMART。

1、AdaBoost算法

AdaBoost思想就是提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值;加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小作用。

计算第m次迭代训练数据更新的权值
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值