本文由「大千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技术!

往期文章推荐:

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 常见损失函数形式

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

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

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

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

算法流程

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

其中 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} siL ∂ L ∂ s j \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 − α ) 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排序损失在多个领域有广泛应用:

  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技术!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐