Pairwise排序损失:让机器学会排序的艺术
本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!
1 什么是Pairwise排序损失?
Pairwise排序损失(Pairwise Ranking Loss)是机器学习排序(Learning to Rank, LTR)中的核心概念,属于三种主要方法(Pointwise、Pairwise、Listwise)中的一种。其基本思想是将排序问题转化为文档对的相对顺序比较问题,通过比较两个文档与查询的相关性来判断它们的相对顺序,从而学习到一个最优的排序模型。
🤖 用一个简单比喻来理解:假设你想教AI比较水果的甜度。Pointwise方法会让AI直接给每个水果甜度打分;Listwise方法会让AI对一堆水果按甜度直接排序;而Pairwise方法则让AI不断比较两个水果哪个更甜,通过大量两两比较最终学会完整的甜度排序。
本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!
往期文章推荐:
- 20.Dropout:深度学习中的随机丢弃正则化技术
- 19.TruthfulQA:衡量语言模型真实性的基准
- 18.残差:从统计学到深度学习的核心概念
- 17.集值优化问题:理论、应用与前沿进展
- 16.大语言模型强化学习中的熵崩溃现象:机制、影响与解决方案
- 15.线性预热机制(Linear Warmup):深度学习训练稳定性的关键策略
- 14.蚁群算法详解:从蚂蚁觅食到优化利器
- 13.粒子群优化(PSO)算法详解:从鸟群行为到强大优化工具
- 12.NSGA-II多目标优化算法:原理、应用与实现
- 11.SPEA2多目标进化算法:理论与应用全解析
- 10.NSGA系列多目标优化算法:从理论到实践
- 9.Adam优化算法:深度学习的自适应动量估计方法
- 8.VeRL:强化学习与大模型训练的高效融合框架
- 7.BBEH:大模型高阶推理能力的“超难”试金石
- 6.MGSM:大模型多语言数学推理的“试金石”
- 5.灾难性遗忘:神经网络持续学习的核心挑战与解决方案
- 4.内存墙:计算性能的隐形枷锁与突破之路
- 3.阿喀琉斯之踵:从神话传说到现代隐喻的致命弱点
- 2.DS-1000:数据科学代码生成的可靠基准测试
- 1.MultiPL-E: 多语言代码生成的革命性基准测试框架
2 为什么需要Pairwise方法?
在信息检索和推荐系统中,我们往往更关注文档之间的相对顺序而非绝对相关性分数。Pairwise方法直接优化文档对的顺序,比Pointwise方法更符合排序任务的本质需求。
然而,Pairwise方法也有其局限性:它只考虑两篇文档的相对顺序,而不考虑文档在搜索结果列表中的具体位置。此外,不同的查询拥有的文档对数量不同,可能导致结果向拥有较多文档对的查询偏移。
3 Pairwise排序损失的数学原理
3.1 基本形式
令 xix_ixi 和 xjx_jxj 表示两个文档的特征向量,yiy_iyi 和 yjy_jyj 表示它们的真实相关性标签。我们期望学习一个评分函数 f(x)f(x)f(x),使得当 yi>yjy_i > y_jyi>yj 时(即文档i比文档j更相关),有 f(xi)>f(xj)f(x_i) > f(x_j)f(xi)>f(xj)。
对于一对文档 (i,j)(i, j)(i,j),Pairwise排序损失函数的一般形式可以表示为:
L(f;xi,xj)=ϕ(f(xi)−f(xj))L(f; x_i, x_j) = \phi(f(x_i) - f(x_j))L(f;xi,xj)=ϕ(f(xi)−f(xj))
其中 ϕ\phiϕ 是一个损失函数,通常要求是凸函数且当 f(xi)−f(xj)f(x_i) - f(x_j)f(xi)−f(xj) 越大时损失越小。
3.2 常见损失函数形式
-
Hinge Loss(用于支持向量机排序):
ϕ(f(xi)−f(xj))=max(0,1−(f(xi)−f(xj)))\phi(f(x_i) - f(x_j)) = \max(0, 1 - (f(x_i) - f(x_j)))ϕ(f(xi)−f(xj))=max(0,1−(f(xi)−f(xj))) -
指数损失(用于RankBoost):
ϕ(f(xi)−f(xj))=exp(−(f(xi)−f(xj)))\phi(f(x_i) - f(x_j)) = \exp(-(f(x_i) - f(x_j)))ϕ(f(xi)−f(xj))=exp(−(f(xi)−f(xj))) -
对数损失(用于RankNet):
对于一对文档 (i,j)(i, j)(i,j),定义 PijP_{ij}Pij 为文档 iii 比文档 jjj 更相关的概率:
Pij=exp(f(xi)−f(xj))1+exp(f(xi)−f(xj))=11+exp(−(f(xi)−f(xj)))P_{ij} = \frac{\exp(f(x_i) - f(x_j))}{1 + \exp(f(x_i) - f(x_j))} = \frac{1}{1 + \exp(-(f(x_i) - f(x_j)))}Pij=1+exp(f(xi)−f(xj))exp(f(xi)−f(xj))=1+exp(−(f(xi)−f(xj)))1
损失函数使用交叉熵:
L(f;xi,xj)=−Pijlog(Pij)−(1−Pij)log(1−Pij)L(f; x_i, x_j) = -P_{ij}\log(P_{ij}) - (1 - P_{ij})\log(1 - P_{ij})L(f;xi,xj)=−Pijlog(Pij)−(1−Pij)log(1−Pij)
其中 PijP_{ij}Pij 是真实的概率(通常从人工标注得到),PijP_{ij}Pij 是模型预测的概率。
4 经典算法与应用
4.1 GBrank算法
GBrank是一种基于梯度提升树(Gradient Boosted Tree)的Pairwise排序算法。Zheng等人于2007年在SIGIR会议上提出了这一算法。
核心思想:对于每个文档对 (xi,xj)(x_i, x_j)(xi,xj),如果 yi>yjy_i > y_jyi>yj,我们希望 f(xi)>f(xj)+τf(x_i) > f(x_j) + \tauf(xi)>f(xj)+τ,其中 τ\tauτ 是一个安全边界(通常为1)。损失函数定义为:
L(f;xi,xj)=max(0,(f(xj)−f(xi))+τ)L(f; x_i, x_j) = \max(0, (f(x_j) - f(x_i)) + \tau)L(f;xi,xj)=max(0,(f(xj)−f(xi))+τ)
算法流程:
- 初始化模型 f0f_0f0
- 对于迭代轮数 t=1t=1t=1 到 TTT:
a. 使用当前模型 ft−1f_{t-1}ft−1 对每个文档对预测得分
b. 对于违反约束的文档对(即 f(xj)>f(xi)−τf(x_j) > f(x_i) - \tauf(xj)>f(xi)−τ 但 yi>yjy_i > y_jyi>yj),创建新的训练样本:
对于 (xi,xj)(x_i, x_j)(xi,xj),设置目标值:xix_ixi 的目标为 ft−1(xj)+τf_{t-1}(x_j) + \tauft−1(xj)+τ,xjx_jxj 的目标为 ft−1(xi)−τf_{t-1}(x_i) - \tauft−1(xi)−τ
c. 使用新生成的样本训练回归树 hth_tht
d. 更新模型:ft=ft−1+ηhtf_t = f_{t-1} + \eta h_tft=ft−1+ηht,其中 η\etaη 是学习率
GBrank通过不断创建新的训练样本并迭代训练回归树,逐步减少排序错误。
4.2 RankNet算法
RankNet是由Microsoft Research提出的基于神经网络的Pairwise排序算法,使用上述对数损失函数。
优化技巧:RankNet在计算梯度时发现,损失函数对模型参数 wkw_kwk 的梯度可以表示为:
∂L∂wk=∑(i,j)∂L∂si∂si∂wk+∂L∂sj∂sj∂wk\frac{\partial L}{\partial w_k} = \sum_{(i,j)} \frac{\partial L}{\partial s_i} \frac{\partial s_i}{\partial w_k} + \frac{\partial L}{\partial s_j} \frac{\partial s_j}{\partial w_k}∂wk∂L=(i,j)∑∂si∂L∂wk∂si+∂sj∂L∂wk∂sj
其中 si=f(xi)s_i = f(x_i)si=f(xi),sj=f(xj)s_j = f(x_j)sj=f(xj)。有趣的是,∂L∂si\frac{\partial L}{\partial s_i}∂si∂L 和 ∂L∂sj\frac{\partial L}{\partial s_j}∂sj∂L 大小相等符号相反,这使得梯度计算可以高效进行,大大提升了训练速度。
5 Pairwise排序损失的改进与变体
5.1 结合Pointwise的改进方法
传统的Pairwise方法有一个缺点:当一对文档的真实相关性都预测错误时,会导致连锁反应影响最终排序性能。为了解决这个问题,研究人员提出了结合Pointwise和Pairwise的混合方法。
吴佳金等人(2010)基于RankNet算法,加入Pointwise损失函数进行优化,分别使用梯度下降算法和反向传播算法训练网络权重。在OHSUMED数据集上的实验结果表明,加入Pointwise损失函数有助于改善Pairwise方法的排序性能。
5.2 自适应Pointwise-Pairwise学习
RecSys2020上提出了一种自适应Pointwise-Pairwise学习方法,用于基于内容的个性化推荐。该方法设计了一种新的替代损失,将Pointwise和Pairwise损失最佳且自适应地结合起来。
核心思想:Pairwise方法对标签不平衡较不敏感,但对标签噪声较敏感。而隐式反馈数据本身就携带一些噪声,因为一些不相关的物品可能会被误点击,而一些相关物品可能不会被用户点击到。因此作者提出一种学习策略,让模型可以针对每个三元组自行决定采用Pointwise还是Pairwise方法。
损失函数定义为:
L=(1−α)Lpointwise+αLpairwiseL = (1-\alpha)L_{\text{pointwise}} + \alpha L_{\text{pairwise}}L=(1−α)Lpointwise+αLpairwise
其中 α\alphaα 是一个调整系数,当 α=0\alpha=0α=0 时退化为Pointwise损失,当 α=1\alpha=1α=1 时退化为Pairwise损失。
5.3 面向不平衡数据的WPLoss
对于类别不平衡数据,AUC(ROC曲线下面积)是衡量分类器性能的重要指标。由于AUC不可微分,研究人员提出了许多替代的Pairwise损失函数来优化AUC。
姚佳奇等人(2020)提出了加权成对损失函数WPLoss,通过给具有较高Pairwise损失的正负样本分配更高的损失权重,减少了具有较小Pairwise损失的正负样本对的影响。在20 Newsgroup和Reuters-21578数据集上的实验结果验证了WPLoss的有效性。
5.4 基于交叉成对排序的无偏推荐
大多数推荐系统都是对观测到的交互数据进行优化,而这些数据受到之前曝光机制的影响,会表现出许多偏差(如流行偏差)。常用的Pointwise二元交叉熵和Pairwise贝叶斯个性化排序损失函数并非专门设计来考虑观测数据中的偏差。
WWW2022上提出了基于交叉成对排序(Cross Pairwise Ranking, CPR)的无偏推荐算法。CPR改变样本的损失项,创新性地对多次观察到的交互作用进行抽样,并将其作为预测的组合形成损失。理论分析表明这种方法抵消了用户/物品倾向对学习的影响,消除了曝光机制引起的数据偏差的影响。
6 Pairwise排序损失的应用场景
Pairwise排序损失在多个领域有广泛应用:
-
搜索引擎排名:Pairwise方法最初主要用于搜索引擎的结果排序,通过比较文档对的相对相关性来优化搜索质量。
-
推荐系统:在个性化推荐中,Pairwise方法用于学习用户偏好,对物品进行排序推荐。例如GBrank算法可以使用CTR(点击通过率)数据来获取相对相关性判断。
-
计算生物学:用于基因序列分析、蛋白质结构预测等任务。
-
自然语言处理:用于文本蕴含识别、语义相似度计算等任务。
7 实践建议与挑战
在实际应用Pairwise排序损失时,需要考虑以下因素:
-
数据准备:Pairwise方法需要大量的文档对作为训练样本,样本数量随文档数量平方级增长,可能导致计算开销大。
-
偏差处理:如WWW2022 CPR论文指出,传统Pairwise损失可能放大数据中的偏差(如流行偏差),需要考虑去偏技术。
-
算法选择:根据具体任务特点选择适合的算法。对于噪声较多的隐式反馈数据,可以考虑自适应方法结合Pointwise和Pairwise的优点。
-
评估指标:Pairwise排序学习的常用评估指标包括:
- 逆序对数(Number of contradicting pairs):相对相关性预测错误的文档对数量
- Top K准确率(Precision at K%):前K%个文档对的预测准确率
- 折损累积增益(DCG):考虑位置因素的加权评分指标
8 总结与展望
Pairwise排序损失作为学习排序的重要方法,通过比较文档对的相对顺序来学习排序模型,在信息检索和推荐系统等领域有着广泛应用。从经典的GBrank、RankNet算法到最新的自适应混合损失、去偏CPR损失,Pairwise方法在不断演进发展。
未来的研究方向包括:
- 更好处理数据偏差和曝光不公平问题
- 提高对噪声数据的鲁棒性
- 开发更高效的大规模训练算法
- 与深度学习和强化学习等领域的进一步融合
🌟 Pairwise排序损失的核心价值在于它直接优化文档对的相对顺序,更符合排序任务的本质需求。正如GBrank作者所说:“通过将排序问题转化为文档对相对顺序的比较问题,我们可以更有效地学习到高质量的排序模型。”
本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!