一句话定义:排序学习(Learning to Rank,LTR)是一类把「一组候选项的相对顺序」当作学习目标的机器学习方法——训练时关心的不是单个条目得分准不准,而是整张列表排得好不好。
原理
传统做法是给每个候选项单独打分,再按分数从高到低排。这个思路有个隐患:分数是绝对的,而排序是相对的。一条结果的得分是 0.3 还是 0.5,单独看没有意义,只有和同屏其他候选项放在一起比较才有意义。
打个比方:面试官不需要给每位候选人打一个「综合分 78.5」,只需要说「A 比 B 更合适」。阅卷要精确到小数点,而评审委员会排座次,只需要两两比较就能排出正确顺序。排序学习就是用后一种方式训练的。
常见做法大致分三代:
| 范式 | 训练单位 | 直觉 |
|---|---|---|
| 逐点(Pointwise) | 单个候选项 | 每个人单独打分 |
| 成对(Pairwise) | 一对候选项 | 「A 应该排在 B 前面」 |
| 列表(Listwise) | 整张列表 | 直接优化整张列表的质量 |
成对和列表范式是现在的主流,因为它们的优化目标更贴近 NDCG、MAP 这类真正在乎「顺序」的指标:前几名排错的代价,远大于排在第十几名时的错位。
和相邻概念的区别
CTR 预估预测的是单个物品被点击的绝对概率;排序学习优化的是列表内部的相对次序。两者通常配合使用——先用召回、粗排筛出候选,再用排序模型决定最终顺序。换句话说,CTR 是「这个东西好不好」,LTR 是「这些东西里谁先谁后」。
实际意义
搜索结果、短视频推荐、电商货架、简历筛选,背后几乎都有一层排序模型。搜索里常见的特征也能看出它的性格:查询词特征、文档本身特征、以及最关键的「查询—文档交叉特征」,都是为了让模型判断在当前这个查询下谁更该靠前。
对从业者:衡量标准要从单点误差转向 NDCG、MRR 这类列表级指标;训练样本要按「组」组织,而不是打散成独立样本;离线指标再好看,最终仍要看线上 A/B 实验。具体选用哪套方案,以官方文档和你们自己的实验结论为准。
对普通人:你看到的内容顺序,本身就是被优化出来的产品。它决定了你会先点开什么,也决定了你没机会看到什么。
