排序主要的三种损失函数(pointwise、pairwise、listwise)

排序主要的三种损失函数:pointwise、pairwise、listwise

一、单点法(Pointwise)

排序主要的三种损失函数(pointwise、pairwise、listwise)

Pointwise 完全从单文档的分类角度计算,没有考虑文档之间的相对顺序,因此无法区分不同正样本或负样本之间的相关性。

损失函数中没有引入url排序的位置信息,可能导致过多强调那些排序在后面对用户体验影响小的结果。

二、配对法(Pairwise)

排序主要的三种损失函数(pointwise、pairwise、listwise)

使用的是两文档之间相关度的损失函数,与真正衡量排序效果的指标(如NDCG)之间存在很大差异,甚至可能是负相关的。

只考虑了两个文档的先后顺序,没有考虑文档在搜索列表中出现的位置。

不同的查询,其相关文档数量差异很大,转换为文档对后,学习模型可能会优先考虑文档对数量多的查询,导致对机器学习效果的评价造成困难。

三、列表法(Listwise)

由于NDCG等排序标准在数学形式上“非连续”和“非可微分”,因此不方便计算梯度,无法直接优化模型。故而采用一些折中方案来优化NDCG指标,如交叉熵和ListMLE loss。

交叉熵:分别对模型输出结果pred与label进行softmax,得到rank_logits与label_logits,然后对二者求交叉熵,使pred的结果和label的结果尽可能相似。

ListMLE loss:通过计算重新排序后的logits的概率来计算loss。

一些算法需要基于排列来计算loss,导致训练复杂度较高。

位置信息并没有在loss中得到充分利用。

综上所述,Pointwise、Pairwise和Listwise是排序问题中常用的三种损失函数,它们各有优缺点,适用于不同的场景和需求。在实际应用中,需要根据具体问题和数据特点选择合适的损失函数。