1. 大模型应用背景下的LTR算法介绍
大模型在信息检索、推荐系统和自然语言处理等领域展现出很强能力。但是大模型在to C或者to B的场景中,其有效性不仅依赖于强大的生成能力,还需要精准的排序机制,来优化内容的呈现顺序并提升用户体验。在这个背景下,Learn to Rank(LTR)排序算法【1,2,3】作为连接大模型和具体应用场景的重要桥梁,通过学习如何根据特定任务或用户需求对结果进行精准排序,依然相当关键。
Learn to Rank 有三种主流的方法,Pointwise、Pairwise 和 Listwise。它们的核心区别在于处理训练数据的粒度和优化目标。
Pointwise 方法是将排序问题转化为回归或分类问题,针对每个单独的文档/结果预测一个分数或类别。其训练目标是最小化单个文档与目标值(如点击率或评分)之间的误差。Pairwise方法是比较文档对的相关性,训练模型预测文档 A 是否比文档 B 更相关,训练目标是最小化排序对的误分类率或错序率。Listwise方法直接以文档列表为输入,并以全局排序指标(如 NDCG、MRR)为优化目标。训练目标是优化整组文档的排序性能。
Pointwise方法很常见,比如xgboost、lr这类机器学习算法。 Pairwise方法,比如BPR,在《ToB的大模型系统非常有必要引入搜索推荐算法能力(回顾BPR、W&D、DeepFM、ALS等经典算法)》中已经做过原理介绍。 因此,本文重点关注Listwise的LTR算法的介绍。在大模型驱动的应用场景中,任务通常包含复杂的多文档排序问题(如检索生成式问答的候选答案、推荐系统的结果优化)。Listwise Ranking 提供了以下关键能力:
- 全局优化:直接对排序指标进行优化,提升大模型生成结果的用户满意度。
- 上下文感知:通过考虑完整文档列表,帮助大模型更好地理解文档间的语义关系。
- 高效学习:结合大模型的特征表示能力,能高效处理复杂、高维度的排序任务。
通过结合大模型强大的表示能力和 Listwise Ranking 全局优化特性,LTR 算法能为检索和生成任务提供更精准的排序支持。
2. Listwise Learning to Rank
我们以文档检索为例,对列表式方法进行介绍,使用上标表示查询的索引,使用下标表示特定查询对应的文档索引【1】。
2.1 一般化算法原理描述
2.1.1 训练阶段
给定一组查询 。每个查询 关联一个文档列表 ,其中 表示第 i 个查询的第 j 个文档, 表示查询 的文档列表大小。
每个文档列表 都对应一个评价分数列表 ,其中 表示文档 相对于查询 的相关性评分。这个评分 可以是由人工显式或隐式给出的,例如,当文档 被搜索引擎检索和返回给查询 时,其点击率可以用作相关性评分的依据。假设点击率越高,文档 与查询 的相关性越强。
从每个查询-文档对中提取一个特征向量 (其中 )。对文档列表 中的所有文档提取特征后得到特征列表 。对应的分数列表为 ,它们共同构成一个"实例"。训练集可以表示为: 。
接着,训练一个排序函数 f,它对每个特征向量 (对应文档 )输出一个分数 。对于特征列表 ,我们可以得到一个分数列表 。学习目标被形式化为最小化训练数据的总损失: ,其中 L 是一个列表式损失函数。
2.1.2 排序阶段
在排序时,给定一个新查询和其关联的文档列表,从中提取特征列表 。利用训练好的排序函数为文档分配分数。最终按照分数从高到低对文档排序。上述学习问题即为列表式排序学习方法。
2.1.3 与pairwise方法的对比
在pairwise方法中,训练数据 T 被转换为新数据集 T'。在 T' 中,特征向量对和 构成一个实例,其中。如果 ,则为该对赋值 +1,否则赋值 −1。此时,训练数据 T′变成一个二分类数据集,可以使用分类模型进行训练。当然也可以采用BPR等类似算法,引入矩阵分解的思想学习出用户和商品的表征信息。
2.2 Listwise LTR算法思想
以 ListNet(2007)为例:
ListNet采用基于Top-One 概率优化列表损失函数,使用神经网络作为模型,并利用梯度下降作为优化算法。
以文档检索为例进行说明,用神经网络模型的排名函数 表示,给定特征向量 , 会为其分配一个得分。将 定义为指数函数。首先我们需要理解一下排列概率。
对于一个长度为 n 的列表,其特定排列 的概率可表示为:
例如,给定一个包含 3 个项目的列表,返回排列 的概率为:
显然这样做的话,排列组合需要执行n的阶层,采用Plackett-Luce模型,过于耗时。所以listnet采用只计算top-one来简化,也就是将各个项目作为排列第一位产生的概率值作为ground truth,这样就可以获得一个概率分布,我们的目标就是去学习出这个分布。
Top-One 概率重写为:
对于查询 ,排名函数 生成的得分列表为:
此时,文档的 Top-One 概率计算为:
以交叉熵作为度量指标,对查询的损失函数定义为:
通过推导
此外,ListMLE(Listwise Maximum Likelihood Estimation)也是一种经典的列表式学习排序算法。前序思路采用的依然是排列概率表示,但与ListNet不同的是:
最大化排列概率的似然函数 : 排列概率 可以表示预测模型得分序列与实际排序之间的关系。目标是最大化真实排序对应的排列概率,转化为对数似然形式:
其中, 是第 i 个查询的真实排序。
优化目标: 损失函数定义为负对数似然:
使用梯度下降法更新参数,训练模型。
3. 参考材料
【1】Learning to Rank: From Pairwise Approach to Listwise Approach