信息检索排序算法 LambdaRank 和 LambdaMART

信息检索排序算法

信息检索排序算🐒法 LambdaRank 和 LambdaMART

排序算法在搜🐖索引擎中非常重要,🐂需要根据用户的查💙询 q,对一些相关的文🐂档进行排序,尽可能👅地让用户感兴趣的⭐文档排在前面。之前🐻的文章介绍了一种
Learning to rank 🐕的算法 RankNet,现在介绍另👅外两种比较经典的🐒排序模型 LambdaRank 和 lambdaMART。

1.RankNet 的问题

👅信息检索排序问题🎲常用的评价指标有 NDCG、ERR
⭐等,不熟悉的童鞋可🐒以看下之前的文章《🎲信息检索评价指标》,🐕这些评价指标是不🐕平滑不连续的,无法👅直接用于梯度下降。RankNet
👅算法将排序问题转🐂成一个概率问题,使🐒用神经网络计算出🐻一篇文章排在另一🔥篇文章之前的概率,🐒使用交叉熵作为损🐒失函数,最后用梯度🐒下降进行求解。

RankNet 的损:satisfied:失函数如下所示,本🐖质上是计算样本的 pairwise error,🐕即减少排序出错的💙样本数量,注意下式:satisfied:中 σ 是一个参数。

信息🐕检索排序算法 LambdaRank 和 LambdaMART

由💙于 RankNet 优化的是 pairwise error,因此会🐒存在一些问题,我们:satisfied:先看下图。

信息检索💙排序算法 LambdaRank 和 LambdaMART

RankNet 的问题

🎲在上图中包含 16 个文👅档,其中蓝色表示相🎲关的文档,灰色表示🐖不相关的文档。左图🐂中 pairwise error 的个数为 13 (即第二🐖个蓝色文档前有 13
个🐂不相关文档),而右图 pairwise error :satisfied:的个数为 11。RankNet
在优化时:satisfied:关注于文档对的错🎲误,可能会出现有图🔥的结果,但是很多时🐂候这并不是理想的。

🔥很多评价指标,例如 NDCG ⭐和 ERR 等更加关注的时 top k 🐒个结果的排序,因此🐂优化过程中把相关🔥文档往下调并不合⭐适。

另外一点,右边的🐂图中的黑色箭头表🐒示 RankNet 下一次优化时调💙整的方向和梯度大🐕小
(箭头越长梯度越🐖大)。但是我们真正需🐖要的是右边的红色👅箭头,即排名越靠前💙的文档梯度应该越🐂大。因此微软提出了 LambdaRank。

2.LambdaRank

LambdaRank 🐕是在 RankNet 基础上修改的,🐖首先对 RankNet 的损失函数🐒进行分解,得到其中🐻的梯度。分解公式如🐂下所示,wk
表示神经网:satisfied:络模型的参数。

信息:satisfied:检索排序算法 LambdaRank 和 LambdaMART

lambda 可🐻以表示梯度的强度,lambda 🐒可以进一步化简,假🔥设对于训练集里面:satisfied:的文档对 (i, j),都有文档 i 🐒排在文档 j 之前,即 Sij =
1,则 lambda 💙可以如下简化。

信息💙检索排序算法 LambdaRank 和 LambdaMART

LambdaRank 主🐻要创新点在于不直🐻接定义模型的损失👅函数再求梯度,而是:satisfied:通过分析 RankNet 排序损失🐒函数的梯度再直接⭐对梯度 lambda 进行修改。

考👅虑到 NDCG、ERR 等指标不能直👅接求梯度,因此 LambdaRank 直接🐕修改梯度
lambda,从而引入💙评价指标的信息,使🐕梯度能够接近评价:satisfied:指标的表现。论文中⭐的做法是交换两个🎲文档 i,j 的位置,然后计⭐算评价指标的变化💙情况 |ΔZ|,把
|ΔZ| 做为 lambda 的因子。Z 🐻可以是 NDCG 等评价指标。

:satisfied:信息检索排序算法 LambdaRank 🐂和 LambdaMART

通过梯度 lambda 也可以🐕反推出 LambdaRank 的损失函数,🐂如下。

信息检索排序🐕算法 LambdaRank 和 LambdaMART

3.LambdaMART

LambdaMART 是一种结合🐻了 LambdaRank 和 MART 的算法。MART 算法是💙一种集成学习算法,🐻全称是 Multiple Additive
Regression Tree,也称为梯度🐂提升树 GBDT。MART 算法中每一🎲棵树都是串联的关🐂系,每棵树优化的是🐻上一次分类器的残💙差。

3.1 MART 分类

对于样本 x,MART 预:satisfied:测的结果为 F(x),另 P+ 和 P- 分🎲别表示模型预测正💙例和负例的概率,I+ 和 I- 💙表示真实的类标,如🐻果 I+ = 1
(I- = 0),则表示正例;如果 I+ = 0 (I- = 1),🔥则表示负例。可以定🔥义交叉熵损失函数。

💙信息检索排序算法 LambdaRank 🐖和 LambdaMART

MART 每棵树拟合的是🐻当前的负梯度,如下:

🐂信息检索排序算法 LambdaRank 🐂和 LambdaMART

Rjm 表示第 m 棵树的第 j 👅个叶子节点包含的🐂所有样本,则该叶子🔥节点的取值可以如👅下计算,最小化对应:satisfied:的损失函数。对应的 gamma 💙值就是叶子节点的🔥取值。

信息检索排序💙算法 LambdaRank 和 LambdaMART

最终叶子节🐕点的取值可以用牛🎲顿迭代法求解,公式🔥如下,具体推导过程🎲可以参考论文《From RankNet to LambdaRank to
LambdaMART: An Overview》。

信息🐕检索排序算法 LambdaRank 和 LambdaMART

3.2 LambdaMART

LambdaMART 结🐻合了 LambdaRank 和 MART,LambdaRank 中推导出 lambda 的🔥公式

信息检索排序🔥算法 LambdaRank 和 LambdaMART

对应的损失🎲函数如下。

信息检索🐖排序算法 LambdaRank 和 LambdaMART

可以求🐻出损失函数的一阶🐖导数和二阶导数

信🐻息检索排序算法 LambdaRank 和 LambdaMART

🐕第 m 棵树的第 k 个叶子🐕节点的取值用下面🐖的公式进行计算。

信:satisfied:息检索排序算法 LambdaRank 和 LambdaMART

💙算法的伪代码如下💙图所示

信息检索排🐂序算法 LambdaRank 和 LambdaMART

4.参考文献

《From RankNet to LambdaRank to LambdaMART: An Overview》

《Adapting Boosting for Information Retrieval Measures》

《Learning to Rank with Nonsmooth Cost Functions》

onsmooth Cost Functions》

未经允许不得转载:来笔趣阁 » 信息检索排序算法 LambdaRank 和 LambdaMART