随着大模型(LLM)技术的日益成熟,其应用场景也越来越广泛。在GovTech’s AI Practice,一种名为“LLM-as-a-judge”的方法正在被广泛应用,即利用大模型作为裁判,评估各类AI工作流程的输出。这种方法凭借其快速、可扩展和低成本的优势,已成为AI评估工具箱中不可或缺的一部分。然而,一个核心问题浮出水面:我们如何确定这些大模型裁判是否真的称职? 如何评估LLM的评估结果?

大模型裁判的挑战:验证的难度

利用大模型作为裁判面临诸多挑战。近期研究表明,多种因素可能影响评估结果,例如:位置偏差(LLM可能偏好第一个或最后一个选项)、权威偏差(自信的表达方式可能影响判断)、风格偏差(可能更喜欢较长的文本)以及模型之间的自我偏好(同一家族的模型倾向于给自己的输出更高的评价)。此外,大模型固有的随机性和对提示词的敏感性也会对结果造成影响。

更重要的是,当处理主观任务时,验证的难度会进一步增加。以内容审核为例,一些评论明显违规,但许多内容则处于灰色地带,不同的人可能有不同的解读。如果使用另一个大模型来验证第一个大模型,则会引入新的误差和偏差,导致误差在系统中以不可预测的方式累积。例如,假设一个大模型的错误率为5%,使用另一个错误率也为5%的大模型来检测这些错误,最终的准确率将降至90.25%,错误率则上升至约9.75%。因此,需要一种更有效的方法来验证LLM的评估能力。

重新定义问题:与人类标注的一致性

与其寻找绝对的“正确性”衡量标准,不如将目标重新定义为:大模型在多大程度上与人类标注达成一致? 这种转变促使我们探索统计推断和假设检验,这些工具比简单的协议率或“感觉良好”式的检查更具科学性。

在研究中,我们发现了“替代标注者测试”(Alt-Test)方法,该方法提供了一种系统的方式来证明使用大模型作为人类标注者的更好替代方案是合理的。其基本思想非常简单:如果大模型能够始终如一地与人类标注保持一致,我们就可以信任其对人类判断进行建模的能力。

Alt-Test框架允许你使用少量样本(>= 30个)和至少三个人类标注者来对大模型进行基准测试。其核心思想如下:

  1. 留一法 (Leave-one-out): 从一组标注者(至少3个)中,排除一个人,并将剩余的人视为“集体分布”。然后,比较目标大模型的标签与剩余人类的标签的对齐程度,以及被排除的人与同一组人类的对齐程度。

  2. 假设检验: 对于每个被排除的人 j,计算两个概率:

    • pᶠⱼ: 目标大模型至少与被排除的人j一样好的概率。
    • pʰⱼ: 被排除的人j至少与目标大模型一样好的概率。

    然后进行t检验,检验 pᶠⱼ — pʰⱼ 是否超过一个小的成本效益 margin ε。(ε 对 pʰⱼ 进行惩罚,以反映人类标注带来的更高成本。)

  3. 控制假阳性: 由于要进行多重假设检验,因此使用错误发现率 (FDR) 程序(如 Benjamini–Yekutieli (BY) 程序)来控制假阳性。这会将 p 值阈值设置为目标 FDR 水平(在本例中为 0.05),确保平均而言,LLM “胜出” 的假阳性不超过 5%。

  4. 汇总假设检验结果: 获得两个关键指标:

    • 胜率 (ω): 目标大模型“胜出”的被排除人类 j 的百分比(即拒绝原假设)。如果 ω ≥ 0.5,则现在有统计证据表明,目标大模型是招募成本高昂的人类标注者的更好替代方案。
    • 平均优势概率 (AP): pᶠⱼ 的平均计数:目标大模型至少与被排除的人 j 一样好的概率。这比较了目标大模型与剩余人类对齐的频率,而没有给大模型任何统计优势,并用于直接比较大模型

内容审核中的应用:多标签毒性检测

为了验证该框架,我们将其应用于多标签毒性检测,这是一项高度主观且与我们的工作高度相关的任务。对于我们而言,找出哪些大模型能够可靠地识别本地语境中的有害内容至关重要,因为文化和语言的差异使这项任务极具挑战性。

我们的设置很简单:我们固定了系统提示,并对每个大模型使用零样本提示,使用来自内部 Singlish(新加坡式英语)毒性数据集的一组一致的文本样本。我们的样本量为 N=50,遵循作者推荐的 N>=30 以保证统计有效性。我们的数据集包含六个毒性标签,如附件所示。

我们招募了来自组织内部的六位熟悉该分类法的工作人员作为标注者,并测试了 6 个当时领先的开源和闭源大模型,以比较它们的表现。这些模型包括:

  • OpenAI 的 o3-mini (在高、中、低三种推理强度下)
  • Gemini 2.0 Flash
  • Llama 3.3 70B
  • Mistral Small 3 (2501) 24B
  • Claude 3.5 Haiku
  • Amazon Nova Lite

该框架适用于任意数量的大模型和人类标注者,只要您至少有三个人类标注者。

框架的优化:更精细的评估指标

虽然原始的 Alt-Test 提供了坚实的基础,但我们针对具体需求进行了三项关键修改。核心实现基于作者 GitHub 存储库中的原始代码,并在其基础上进行了以下修改:

  1. 添加多标签指标

    引入的框架使用准确率进行分类任务,我们添加了三个额外的指标来捕获多标签场景中的部分正确性,从而实现更稳健的评估。

    • 基于集合的 Jaccard 相似度: 计算预测标签和真实标签之间的整体重叠。
    # 简单集合基础 Jaccard 相似度
    def simple_jaccard_similarity(pred: List[str], annotations: List[List[str]]) -> float:
        jaccard_scores = []
        for ann in annotations:
            # 如果两者都为空,则返回 1.0
            if not pred and not ann:
                jaccard_scores.append(1.0)
                continue
            intersection = len(set(pred) & set(ann))
            union = len(set(pred) | set(ann))
            jaccard_scores.append(intersection / union)
        return float(np.mean(jaccard_scores))
    
    • 宏平均 Jaccard 相似度: 在平均之前计算每个标签的 Jaccard 指数。
    # 宏平均 Jaccard 相似度
    def jaccard_similarity(pred: List[str], annotations: List[List[str]]) -> float:
        jaccard_scores = []
        for ann in annotations:
            jaccard_scores.append(jaccard_score(y_true=ann, y_pred=pred, average="macro"))
        return float(np.mean(jaccard_scores))
    
    • 汉明相似度: 计算位置相似度的分数。
    # 汉明相似度
    def hamming_similarity(pred: List[str], annotations: List[List[str]]) -> float:
        hamming_scores = []
        for ann in annotations:
            hamming_scores.append(1 - hamming_loss(y_true=ann, y_pred=pred))
        return float(np.mean(hamming_scores))
    
  2. Epsilon (ε) 的改进:更直观的性能差距

    原始论文试验了不同的 ε 值,并根据使用场景提供了建议(例如,对于专家标注,将其设置为 0.2,对于众包标注,将其设置为 0.1)。但是,我们发现这个任意数字难以解释,并且无法确定为我们的任务设置的最佳 ε 值。

    我们没有使用抽象的绝对边距,而是使用与人类表现成比例的相对分数。与加性 ε 类似,ε 越高,LLM 获得的优势就越大。

    乘法 epsilon 表示 LLM 和人类之间的“性能差距”,这更容易解释和证明是合理的。如果将 epsilon 设置为 0.1,则目标 LLM 只需要达到被排除人类的 90% 即可“赢得”该比较。

  3. 人类表现洞察

    除了计算 LLM 的 AP 之外,我们还计算了每个人类标注者的 AP。此扩展使我们能够深入了解人类标注者的一致性。

    ... 原始代码 ...
    human_advantage_probs = {}
    p_values, advantage_probs, humans = [], [], []
    for excluded_h in humans_annotations:
        llm_indicators = []
        excluded_indicators = []
        instances = [i for i in i_set[excluded_h] if i in llm_annotations]
        for i in instances:
            human_ann = humans_annotations[excluded_h][i]
            llm_ann = llm_annotations[i]
            remaining_anns = [
                humans_annotations[h][i] for h in h_set[i] if h != excluded_h
            ]
            human_score = scoring_function(human_ann, remaining_anns)
            llm_score = scoring_function(llm_ann, remaining_anns)
            llm_indicators.append(1 if llm_score >= human_score else 0)
            ############################################################
            ### 修改:在此处计算人类 AP
            excluded_indicators.append(1 if human_score >= llm_score else 0)
            ############################################################
        ############################################################
        ### 修改:根据 epsilon 类型计算 p 值
        if multiplicative_epsilon:
            diff_indicators = [
                exc_ind - (llm_ind / (1 - epsilon))
                for exc_ind, llm_ind in zip(excluded_indicators, llm_indicators)
            ]
            p = ttest(diff_indicators, 0)
        ############################################################
        else:
            diff_indicators = [
                exc_ind - llm_ind
                for exc_ind, llm_ind in zip(excluded_indicators, llm_indicators)
            ]
            p = ttest(diff_indicators, epsilon)
        p_values.append(p)
        advantage_probs.append(float(np.mean(llm_indicators)))
        humans.append(excluded_h)
        ############################################################
        ### 修改:使用相应的 LLM AP 保存人类 AP
        human_advantage_probs[excluded_h] = (
            float(np.mean(llm_indicators)),
            float(np.mean(excluded_indicators)),
        )
        ############################################################
    ... 原始代码 ...
    

实验结果:大模型与人类的对齐程度

我们的结果表明,Gemini 2.0 Flash 在毒性标签任务中与我们的人类标注者样本对齐得最好。

我们测量了不同 epsilon 值下的胜率 (ω),以了解每个 LLM 需要多大的优势才能胜过人类标注者。 简单回顾一下:

  • ε = 0:LLM 没有获得任何优势,它必须与人类一样好
  • ε = 0.1:LLM 只需要达到被排除人类的 90% 即可“赢得”胜利,依此类推

如上所述,我们认为如果计算出的 ω >= 0.5,则 LLM 比人类标注者具有优势。

Gemini 2.0 Flash 是唯一在 ε = 0 (没有给予优势) 时在 4 个指标中的 3 个指标中实现了非零 ω 的 LLM,并且在所有指标的 ε=0.05 时 ω >= 0.5,这表明它为我们的特定毒性检测任务提供了使用人类标注者的良好替代方案。

相反,OpenAI o3-mini(高推理)仅在 ε=0.25 时才设法达到 ω >= 0.5,而较小的 LLM(Llama 3.3 70B 和 Mistral Small 3 (2501) 24B)仍然保持在 ω = 0。

为了比较 LLM 之间的一致性大小,我们使用了通过此过程计算出的第二个指标,即平均优势概率 (AP)。

查看每个 LLM 的 AP,我们可以得出结论,Gemini 2.0 Flash 具有最好的人类对齐性,其次是 Claude Haiku 3.5,然后是 OpenAI o3-mini(在高推理强度下)。

在以三种不同的推理强度级别(高、中和低)测试 OpenAI 的 o3-mini 时,我们观察到更高的推理强度与更好的人类标注者对齐直接相关,这表明花费在推理上的额外计算时间可以提高在细致和主观任务(如本地化毒性检测)上的性能。

分析标注者偏差:人类与大模型的对比

我们绘制了每次比较的 LLM AP 与人类 AP 的对比图,其解释如下:

  • X 轴:目标 LLM 与其余人类的一致程度
  • Y 轴:每个被排除的人与其余人类的一致程度
  • 蓝色区域 (人类 AP > LLM AP):被排除的人类比目标 LLM 具有更好的一致性
  • 红色区域 (LLM AP > 人类 AP):目标 LLM 比被排除的人类具有更好的一致性
  • 灰色线:目标 LLM 和被排除的人类之间的一致性水平相等

Gemini 2.0 Flash、Claude 3.5 Haiku 和 o3-mini(高推理)始终位于红色区域,这意味着它们与人类共识的对齐程度高于个体人类之间的对齐程度。 相反,我们发现所有人与较小的 LLM(Llama 3.3 70B 和 Mistral Small 3 (2501) 24B)的一致性都很低。

有趣的是,我们还发现 o3-mini 倾向于落在 45 度线上,这表明与人类标注者几乎一致。 这表明 LLM 能够像普通人一样同意(和不同意)其他人。 我们假设这可能是由于 LLM 在后训练期间经历的对齐过程所致。

最后,在这张图表中,我们观察到没有任何一个人在与其余人类的一致性方面存在显着偏差。

Alt-Test 与传统指标:优势与局限

你可能会问,为什么选择 Alt-Test 而不是传统的标注者间一致性 (IAA) 指标或性能指标 (F1/准确率)? IAA 指标也解决了 LLM 与人类的一致性问题,而传统的性能指标提供了 LLM 在给定人类基线作为基本事实的情况下表现如何的估计。

作者在其常见问题解答中解决了这个问题,指出传统的 IAA 指标评估了标注者之间的一致性,而他们的目标是 “将 LLM 与该组进行比较,以确定它是否可以取代他们”。 另一方面,传统的性能指标 “仅评估 LLM 是否与人类表现相符,而不是它是否提供了更好的替代方案”。 在这些方面,Alt-Test 提供了两个关键优势。

首先,它是可操作的。 胜率提供了统计证据,我们可以用它来证明部署 LLM 来模拟人类执行标注任务是合理的。 其他 IAA 指标虽然提供了信息,但纯粹给我们提供了一个描述性统计,需要对什么样的一致性才算 “足够好” 进行主观解释。

其次,Alt-Test 分析更稳健,因为它捕获了人类自身的差异,考虑到人类彼此之间存在分歧这一事实。

为了将我们的结果置于上下文中,我们将其与其他 IAA 指标(即 Cohen 的 kappa)进行了比较,发现 Cohen 的 kappa 对于验证仍然有价值。 在测量 LLM-人类和人类-人类之间的一致性后,结果强化了我们的 Alt-Test 发现。 相同的三个模型(Gemini 2.0 Flash、Claude 3.5 Haiku 和 o3-mini)在这两个框架中都表现出色。

人类-LLM 平均 Cohen 的 kappa…… 人类-人类 kappa 分数也表明,每个人类与其他所有人的一致性水平非常相似,这证实了没有显着的标注者偏差。

局限性和重要提示:领域特定性与标注偏差

这些结果来自我们特定于 Singlish 毒性检测的使用场景,我们无法确认它们可以推广到其他领域、语言或标注任务。 Singlish 中的文化细微差别和语言模式带来了独特的挑战,可能无法转化为其他环境。

因此,我们建议读者在他们自己的数据集上运行原始作者的代码,以验证 LLM 在其特定用例中的性能。

我们的标注者都是从同一组织招募的,并且精通我们的毒性分类法。 这在几个方面引入了潜在的偏差:

  • 组织偏差: 标注者具有相似的培训和观点
  • 专业知识偏差: 熟悉分类法可能无法反映一般人群的理解
  • 文化同质性: 标注者背景的多样性有限

为了获得更稳健的验证,未来的研究应包括来自不同背景的标注者,以更好地代表目标用户群体。

正如原始作者所描述的那样,当人类标注者较弱或人类之间存在高度分歧时,存在固有的局限性。

如果标注者较弱,则 Alt-Test 将识别哪些 LLM 与弱标注者对齐,而不是与专家判断对齐。 这是任何人类验证方法中固有的局限性。 我们能做的最好的事情是仔细选择专家标注者并控制标注设置,以获得高质量的基本事实数据。 尽管如此,标注者偏差分析可能有助于识别弱标注者,如果大多数标注者都有良好的判断力。

此外,当人类之间存在显着分歧时,会在结果中产生高度差异,并且 LLM 在这种情况下不太可能获得高胜率。 在这些情况下:(i) 可以应用更高的 epsilon 值以赋予 LLM 更多优势;或者 (ii) 可能需要更多的人类标注者才能建立更清晰的共识。

未来展望:可信赖的大模型评估

尽管存在这些局限性,但 Alt-Test 框架提供了一种有原则的 LLM 验证方法,它是基于直觉的(或基于感觉的)选择的系统性替代方案。 关键在于:

  • 承认您特定用例的约束
  • 选择与您的目标人群相匹配的具有代表性的标注者
  • 在不同的数据集和环境中验证发现

我们推荐这个框架,因为它使我们对我们的 LLM 选择更有信心,然后我们扩大我们的标注或评估。

总而言之,大模型作为裁判在AI评估中具有巨大的潜力,但必须采用严谨的方法来验证其准确性和一致性。Alt-Test框架提供了一种有效的方法,通过比较大模型与人类标注的一致性,评估LLM在特定任务中的适用性。通过不断优化评估方法,我们可以更充分地利用大模型的能力,推动AI技术的可靠发展。在未来,我们需要不断探索更先进的LLM评估技术,以确保AI系统的公正和可靠。