如何优化排名指标,例如标准化折扣累积增益(NDCG)是一个重要但具有挑战性的问题,因为排名指标在任何地方都是平坦的或不连续的,这使得它们很难直接优化。在现有的方法,LambdaRank 是一种新颖的算法,它在loss计算上结合了Metric排序指标,一般来说loss是尽可能拉近pred和label之间的关系,metric却不关心具体的值,只关心顺序。尽管在经验上是有效的,但它仍然缺乏理论依据。例如,LambdaRank 优化的潜在损失仍然未知,直到现在。因此,没有原则性的方法可以进一步推进 LambdaRank 算法。在本文中,我们提出了 LambdaLoss,一个用于排名度量优化的概率框架。LambdaRank 是LambdaLoss的一种特殊配置,具有明确定义的损失。在 LambdaLoss 框架中,从而为其提供理论依据。更重要的是,LambdaLoss 框架允许我们定义具有明确联系的度量驱动损失函数到不同的排名指标。我们在本文中展示了一些案例,并在三个公开可用的数据集上评估它们。实验性的结果表明,我们的度量驱动损失函数可以显着改进最先进的学习排序算法
1 INTRODUCTION
信息检索 (IR) 系统性能通过以下方式衡量排名指标,例如标准化累积收益(NDCG) [16],平均精度 (MAP) [1],平均倒数Rank (MRR) [37]等。这些指标是在检索到的文档列表,并旨在最终捕获其效用户。 由于用户在看到文档的排序列表时,更有可能从顶部开始向下扫描文档,大多数排名指标是排名相关的,奖励相关性排名靠前的文件更多。
Learning-to-rank 是一个跨学科研究领域,它采用机器学习技术来解决 IR 中的排名问题系统。 而传统的机器学习算法主要是设计用于分类或回归,它们已被用于学习排名设置中的排名问题[23]。 众所周知的pairwise方法定义了损失函数以优化文档对 [3-5, 17, 22] 和 listwise 之间的偏好方法在整个文档列表中定义损失函数优化预测和地面实况之间的一致性排名 [6, 39]。 这些方法中的损失函数是平滑的和凸的,从而有效地优化。 此外,它们显示为受到排名指标 [22, 23] 的限制,并且在实践。 然而,这些损失函数的边界通常是粗糙,因为它们不是以度量驱动的方式设计的
如何直接优化排名指标是一个重要但具有挑战性的问题。 主要困难在于排名指标取决于通常通过按分数对文档进行排序获得的排名。 因此,排名指标是处处平坦或不连续; 他们既不光滑也不凸。 直接非梯度优化技术,如网格搜索 [24, 31, 34] 可以使用,但它们不能很好地扩展。 因此,之前工作探索了三个研究方向来解决优化问题以可扩展的方式解决问题
我们的论文的动机是希望了解 LambdaRank 的理论方面。 LambdaRank潜在优化的损失是什么? 没有这些知识,就没有理论上保证 LambdaRank 迭代最终会收敛。 据我们所知,尽最大努力通过经验假设检验证明收敛的合理性,显示其局部最优性 [4, 11]。 此外,还提出了关注LambdaRank 是否直接优化 NDCG [23]。 更多的重要的是,缺乏理论依据使我们无法通过创建新的类似 LambdaRank 的 learningto-rank 算法来推动其成功
在本文中,我们通过提出 LambdaLoss 来填补这一理论空白,这是一种用于排名度量优化的概率框架。LambdaRank 就是其一个特例。因此,本文为 LambdaRank 提出了 LambdaLoss 框架和定义明确的损失。 LambdaRank 算法使用EM来优化损失。更有趣的是,我们的 LambdaLoss 框架允许我们自定义metric函数,同时优化metric和score。我们展示了几个案例。沿着这条线,我们发现metric建立在理解Lambda-loss之上,并表明它比本文中开发的更粗糙。我们在三个基准 LETOR 数据集 [26]验证了 LambdaLoss 框架。我们的实验结果表明我们在 LambdaLoss 框架中定义的度量驱动损失函数可以显着提高最先进的水平学习排序算法。
3 问题表述
3.1 Learning-to-Rank
q代表一个query,Xq代表对应每一个doc的特征向量,yq代表对应的label。后面为了描述简单一旦,就直接换成 q x y。学习排序算法是找到一个排序模型 Φ,可以预测查询中所有文档的相关性分数 s:
我们在论文中采用了排名模型 Φ 的通用形式。 在实践中,Φ可以以不同的形式实现。 例如,RankingSVM [17] 使用线性模型;LambdaMART [4] 使用基于树的模型; RankNet [3] 使用神经网络模型。 虽然实现可以不同,所有的学习排序算法使用损失函数作为目标来学习 Φ。 损失函数是通常基于相关标签 y 和预测分数定义
3.2 Simple Loss Functions
下面这种是基于交叉熵,并且用在RankNet这种中
3.3 Ranking Metrics
有许多现有的排名指标,例如 NDCG 和 MAP用于 IR 问题。 这些指标的一个共同属性是他们依赖于排名,更注重绩效排名靠前的文档。 例如,普遍采用的对文档列表的单个查询的 NDCG 指标,排名为降低分数 s 定义为
Gi Di 分别是增益和折扣函数,maxDCG 是每个查询的归一化因子并计算为按查询的相关性标签 y 递减排列的列表。 请请注意,maxDCG 是 NDCG 中每个查询的常数因子。
这里讲的NDCG和传统的NDCG不太一样,传统的NDCG是DCG/IDCG,这里是DCG/maxDCG,具体参考:搜索评价指标——NDCG - 胖喵~ - 博客园
理想情况下,学习排名算法应该使用排名指标作为学习目标。 但是,很容易看出,需要分数才能获得排名。 这使得排名指标在任何地方都是平坦或不连续的,因此它们不能直接高效优化。
3.4 LambdaRank
整合评估指标、损失函数之间的差距过去被积极研究[23]。 其中,LambdaRank或其基于树的变体 LambdaMART 是最出名的。 基本思想是在训练过程中基于metric动态调整loss。 以 NDCG 为例,ΔNDCG 定义为交换两个文档 i 和 j 时的NDCG 值之间的绝对差
3.5 Research Problems
LambdaRank 已被证明可以提高排名质量,并且看起来与 NDCG 指标非常相关。 然而,有有几个悬而未决的问题:(1)理论角度来看,LambdaRank 采用的迭代过程是收敛的吗? (2) 等式 1 中是否存在潜在的全局损失函数,对于 LambdaRank,它与 NDCG 指标有什么关系? 这些问题,尤其是第二个问题,一直困扰着研究人员。 例如,在刘的著作 [23] 的第 3.3.7 章中,作者提出了对声称 LambdaRank 直接优化的担忧NDCG。 从广义上讲,我们更感兴趣的是缩小两者之间的差距
学习损失函数和排名指标。
4 THE LAMBDALOSS FRAMEWORK
我们以概率的方式制定损失函数。 和之前的工作 [33] 相同,我们假设文档的分数决定了所有可能的排序列表或排列的分布。设 π 表示一个排序列表,我们使用 {P(π |s) : π ∈ Π} 来表示分布,其中s是所有文档的socre,也就是在如此score的情况下,得到π这个排序列表的概率。在我们的框架中,我们将排名列表 π 视为一个隐藏变量,并根据以下可能性定义损失
可以看到是两个概率相乘,第一个 P(π |s) 在文章中已经写到是:所有doc的score情况下得到如此一个排序列表的概率;第二个 P(y|s, π)代表在这样一个排序列表的情况下,得到真实的label -> y的概率
其中 s = Φ(x),我们可以互换使用它们。 给定一组训练实例 T = {(x, y)},我们将公式 2 中的损失 l(y, s) 定义为基于最大似然的负对数似然
损失函数中有两个主要项:似然 P(y|s, π)和排序列表分布 P(π |s)。 显然,这两项中的任何一项都有不同的配方,给出了不同的损失函数。我们展示几个。
4.1.1 Likelihood P(y|s, π)
总结:LambdaLoss同时考虑了打分score和排序指标,在使用NDCG的时候不仅考虑了本身的计算,还乘以了排序列表的概率
备注三个文章链接,后面再继续完善下LambdaLoss在搜索推荐中是如何实际使用的。Learning2Rank-lambda loss解读(1)_北漂~的博客-CSDN博客_lambda loss