文档重排序(Rerank)中的损失函数选择看似抽象,实则涉及效率、数据与模型能力之间的综合权衡。本教程将带你由浅入深,理解单点、成对、列表三种损失函数范式的核心差异、适用场景,以及为什么在大模型时代,最简单的单点模式反而成为主流选择。
排序损失函数的三种范式
要理解模型训练方法的选择,首先需要弄清几种主流的损失函数范式。它们的核心区别在于:模型在计算损失时,究竟“看到”了多少信息。
单点 (Pointwise) 模式
单点模式是最基础的一种。模型每次只关注一个查询(Query)和一个候选文档(Document)的组合 (q, d),并独立地为这个组合预测一个分数或标签。它的目标是让这个预测分数尽可能接近真实的标签。
早期的 BERT 重排模型就是一个典型例子。在论文《PASSAGE RE-RANKING WITH BERT》中,研究者将查询和文档拼接后输入 BERT,并利用 [CLS] 位置的输出向量来进行二元分类,判断该文档是否与查询相关。它的损失函数是标准的交叉熵损失,独立地计算每一个正样本和负样本的损失值。对于单个样本,其损失可以简化为:
L = - [ y * log(p) + (1-y) * log(1-p) ]
其中 y 是真实标签(例如1代表相关,0代表不相关),而 p 是模型预测该文档相关的概率。
优点:简单、直观且易于扩展。训练数据只需要是独立的 (query, doc, label) 三元组即可,非常容易获取和处理。
