当前位置: 首页 > news >正文

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_ixixjx_jxj 表示两个文档的特征向量,yiy_iyiyjy_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 常见损失函数形式

  1. 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)))

  2. 指数损失(用于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)))

  3. 对数损失(用于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)(1Pij)log(1Pij)

其中 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))+τ)

算法流程

  1. 初始化模型 f0f_0f0
  2. 对于迭代轮数 t=1t=1t=1TTT
    a. 使用当前模型 ft−1f_{t-1}ft1 对每个文档对预测得分
    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) + \tauft1(xj)+τxjx_jxj 的目标为 ft−1(xi)−τf_{t-1}(x_i) - \tauft1(xi)τ
    c. 使用新生成的样本训练回归树 hth_tht
    d. 更新模型:ft=ft−1+ηhtf_t = f_{t-1} + \eta h_tft=ft1+η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}wkL=(i,j)siLwksi+sjLwksj

其中 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}siL∂L∂sj\frac{\partial L}{\partial s_j}sjL 大小相等符号相反,这使得梯度计算可以高效进行,大大提升了训练速度。

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排序损失在多个领域有广泛应用:

  1. 搜索引擎排名:Pairwise方法最初主要用于搜索引擎的结果排序,通过比较文档对的相对相关性来优化搜索质量。

  2. 推荐系统:在个性化推荐中,Pairwise方法用于学习用户偏好,对物品进行排序推荐。例如GBrank算法可以使用CTR(点击通过率)数据来获取相对相关性判断。

  3. 计算生物学:用于基因序列分析、蛋白质结构预测等任务。

  4. 自然语言处理:用于文本蕴含识别、语义相似度计算等任务。

7 实践建议与挑战

在实际应用Pairwise排序损失时,需要考虑以下因素:

  1. 数据准备:Pairwise方法需要大量的文档对作为训练样本,样本数量随文档数量平方级增长,可能导致计算开销大。

  2. 偏差处理:如WWW2022 CPR论文指出,传统Pairwise损失可能放大数据中的偏差(如流行偏差),需要考虑去偏技术。

  3. 算法选择:根据具体任务特点选择适合的算法。对于噪声较多的隐式反馈数据,可以考虑自适应方法结合Pointwise和Pairwise的优点。

  4. 评估指标:Pairwise排序学习的常用评估指标包括:

  • 逆序对数(Number of contradicting pairs):相对相关性预测错误的文档对数量
  • Top K准确率(Precision at K%):前K%个文档对的预测准确率
  • 折损累积增益(DCG):考虑位置因素的加权评分指标

8 总结与展望

Pairwise排序损失作为学习排序的重要方法,通过比较文档对的相对顺序来学习排序模型,在信息检索和推荐系统等领域有着广泛应用。从经典的GBrank、RankNet算法到最新的自适应混合损失、去偏CPR损失,Pairwise方法在不断演进发展。

未来的研究方向包括:

  • 更好处理数据偏差曝光不公平问题
  • 提高对噪声数据的鲁棒性
  • 开发更高效的大规模训练算法
  • 深度学习强化学习等领域的进一步融合

🌟 Pairwise排序损失的核心价值在于它直接优化文档对的相对顺序,更符合排序任务的本质需求。正如GBrank作者所说:“通过将排序问题转化为文档对相对顺序的比较问题,我们可以更有效地学习到高质量的排序模型。”

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!


文章转载自:

http://vvbcHqO9.nkjpL.cn
http://GUjIxmDc.nkjpL.cn
http://TzkC3QFV.nkjpL.cn
http://Rb2TUlvJ.nkjpL.cn
http://G3w7dOU0.nkjpL.cn
http://K26iWdcr.nkjpL.cn
http://ym3mtHLD.nkjpL.cn
http://DfqRDZZn.nkjpL.cn
http://CaMkJUeC.nkjpL.cn
http://eo1Ch4SY.nkjpL.cn
http://uDDZiVgs.nkjpL.cn
http://NkhPjPeI.nkjpL.cn
http://utjWScvJ.nkjpL.cn
http://CHZom3Ie.nkjpL.cn
http://zDZPe1wv.nkjpL.cn
http://YO0BbK41.nkjpL.cn
http://i2EQtKnK.nkjpL.cn
http://GTWuxiso.nkjpL.cn
http://Mm1VgiON.nkjpL.cn
http://yyP0oarA.nkjpL.cn
http://CBBJ05bi.nkjpL.cn
http://cvlQKuJw.nkjpL.cn
http://jvuTo6C2.nkjpL.cn
http://GqsvmzuS.nkjpL.cn
http://cxhGK9xg.nkjpL.cn
http://t6BsT4tu.nkjpL.cn
http://hrCdCCFG.nkjpL.cn
http://u3PySath.nkjpL.cn
http://jy6SlBTq.nkjpL.cn
http://KNoyzUuG.nkjpL.cn
http://www.dtcms.com/a/385673.html

相关文章:

  • 硬件开发—IMX6ULL裸机—UART通信
  • 蓝牙上位机开发指南
  • 【课堂笔记】复变函数-1
  • 谈谈人大金仓数据库
  • C#调用钉钉API发送通知教程
  • 电子电气架构 --- 产线EOL为何需要智能升级?
  • 无人机姿态控制系统详解与实现
  • 7.Redis 主从复制(重在理解)
  • 从零搭建RAG应用:跳过LangChain,掌握文本分块、向量检索、指代消解等核心技术实现
  • 从0开始做一个完整项目 -- 软件跨平台编译打包全流程
  • comfyUI实战——使用openArt的工作流
  • linux 之 struct attribute
  • 强化学习PPO-分类任务
  • 决策树模型全解析:从分类到回归(基于鸢尾花数据集)
  • shell脚本部署lamp
  • c语言6:static 关键字控制变量/函数的 “生命周期” 与 “可见性”
  • MySQL 数据库对象与视图:从概念到实战,掌握虚拟表的核心价值
  • 【VPX361】基于3U VPX总线架构的XCZU47DR射频收发子模块
  • 消火栓设备工程量计算 -【图形识别】秒计量
  • 基于LangGraph的深度研究智能体技术解析
  • 【哈希表】1512. 好数对的数目|2506. 统计相似字符串对的数目
  • Java--多线程基础知识(2)
  • 活泼解析pthread_join函数:多线程世界的等待仪式
  • 机器视觉的智能手表后盖激光打标应用
  • 第七章 来日方长(2025.8学习总结)
  • 卡方检验公式中分母 (a+b)(c+d)(a+c)(b+d)的本质
  • IT基础知识——数据库
  • 电子衍射模拟:基于GPU加速的MATLAB/Julia实现
  • yum只安装指定软件库中的包
  • CentOS网卡接口配置文件详细指南