Pairwise排序损失:让机器学会排序的艺术
Pairwise排序损失(Pairwise Ranking Loss)是机器学习排序(Learning to Rank, LTR)中的核心概念,属于三种主要方法(Pointwise、Pairwise、Listwise)中的一种。其基本思想是将排序问题转化为文档对的相对顺序比较问题,通过比较两个文档与查询的相关性来判断它们的相对顺序,从而学习到一个最优的排序模型。🤖 用一个简单比喻来理解:假设你想
本文由「大千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 基本形式
令 x i x_i xi 和 x j x_j xj 表示两个文档的特征向量, y i y_i yi 和 y j y_j yj 表示它们的真实相关性标签。我们期望学习一个评分函数 f ( x ) f(x) f(x),使得当 y i > y j y_i > y_j yi>yj 时(即文档i比文档j更相关),有 f ( x i ) > f ( x j ) f(x_i) > f(x_j) f(xi)>f(xj)。
对于一对文档 ( i , j ) (i, j) (i,j),Pairwise排序损失函数的一般形式可以表示为:
L ( f ; x i , x j ) = ϕ ( f ( x i ) − f ( x j ) ) L(f; x_i, x_j) = \phi(f(x_i) - f(x_j)) L(f;xi,xj)=ϕ(f(xi)−f(xj))
其中 ϕ \phi ϕ 是一个损失函数,通常要求是凸函数且当 f ( x i ) − f ( x j ) f(x_i) - f(x_j) f(xi)−f(xj) 越大时损失越小。
3.2 常见损失函数形式
-
Hinge Loss(用于支持向量机排序):
ϕ ( f ( x i ) − f ( x j ) ) = max ( 0 , 1 − ( f ( x i ) − f ( x j ) ) ) \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 ( x i ) − f ( x j ) ) = exp ( − ( f ( x i ) − f ( x j ) ) ) \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),定义 P i j P_{ij} Pij 为文档 i i i 比文档 j j j 更相关的概率:
P i j = exp ( f ( x i ) − f ( x j ) ) 1 + exp ( f ( x i ) − f ( x j ) ) = 1 1 + exp ( − ( f ( x i ) − f ( x j ) ) ) 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 ; x i , x j ) = − P i j log ( P i j ) − ( 1 − P i j ) log ( 1 − P i j ) 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)
其中 P i j P_{ij} Pij 是真实的概率(通常从人工标注得到), P i j P_{ij} Pij 是模型预测的概率。
4 经典算法与应用
4.1 GBrank算法
GBrank是一种基于梯度提升树(Gradient Boosted Tree)的Pairwise排序算法。Zheng等人于2007年在SIGIR会议上提出了这一算法。
核心思想:对于每个文档对 ( x i , x j ) (x_i, x_j) (xi,xj),如果 y i > y j y_i > y_j yi>yj,我们希望 f ( x i ) > f ( x j ) + τ f(x_i) > f(x_j) + \tau f(xi)>f(xj)+τ,其中 τ \tau τ 是一个安全边界(通常为1)。损失函数定义为:
L ( f ; x i , x j ) = max ( 0 , ( f ( x j ) − f ( x i ) ) + τ ) 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))+τ)
算法流程:
- 初始化模型 f 0 f_0 f0
- 对于迭代轮数 t = 1 t=1 t=1 到 T T T:
a. 使用当前模型 f t − 1 f_{t-1} ft−1 对每个文档对预测得分
b. 对于违反约束的文档对(即 f ( x j ) > f ( x i ) − τ f(x_j) > f(x_i) - \tau f(xj)>f(xi)−τ 但 y i > y j y_i > y_j yi>yj),创建新的训练样本:
对于 ( x i , x j ) (x_i, x_j) (xi,xj),设置目标值: x i x_i xi 的目标为 f t − 1 ( x j ) + τ f_{t-1}(x_j) + \tau ft−1(xj)+τ, x j x_j xj 的目标为 f t − 1 ( x i ) − τ f_{t-1}(x_i) - \tau ft−1(xi)−τ
c. 使用新生成的样本训练回归树 h t h_t ht
d. 更新模型: f t = f t − 1 + η h t f_t = f_{t-1} + \eta h_t ft=ft−1+ηht,其中 η \eta η 是学习率
GBrank通过不断创建新的训练样本并迭代训练回归树,逐步减少排序错误。
4.2 RankNet算法
RankNet是由Microsoft Research提出的基于神经网络的Pairwise排序算法,使用上述对数损失函数。
优化技巧:RankNet在计算梯度时发现,损失函数对模型参数 w k w_k wk 的梯度可以表示为:
∂ L ∂ w k = ∑ ( i , j ) ∂ L ∂ s i ∂ s i ∂ w k + ∂ L ∂ s j ∂ s j ∂ w k \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
其中 s i = f ( x i ) s_i = f(x_i) si=f(xi), s j = f ( x j ) s_j = f(x_j) sj=f(xj)。有趣的是, ∂ L ∂ s i \frac{\partial L}{\partial s_i} ∂si∂L 和 ∂ L ∂ s j \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 − α ) L pointwise + α L pairwise L = (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技术!
更多推荐
所有评论(0)