跳到主要内容

先收敛、后悄然崩溃的评估

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的每周评估(eval)仪表盘变平了。曾经在 0.71 到 0.78 之间波动的曲线,已经在连续三个发布周期中紧缩成 0.84 左右的一根细线。团队将其解读为达到了天花板——模型已经达到了评分准则(rubric)允许的上限,进一步的工作需要更难的评估。有人安排了一场规划会议来“设计 eval v2”。

这种解读看似合理,有时也确实正确。但还有第二种解释,它会产生同样的图景,并悄悄摧毁你的发布准入信号:你的标注员(无论是人类还是 LLM 评判员)已经在意见上趋同,评估不再是在衡量模型,而是在衡量模型产出标注员心目中“正确”输出形态的能力。

这种失败模式非常隐蔽,因为产生它的每一步看起来都像是高质量的工作。你完善了评分准则。你在 LLM 评判员的提示词中增加了少样本示例(few-shot examples)以解决早期的分歧。你轮换了一批新的人类评分员,并根据前一批人的黄金集(gold set)对他们进行了校准。这些举措中的每一项都让评估变得更紧凑。但它们共同导致了评估的崩塌。标尺变得僵化了,而团队已经在针对这把僵化的标尺优化了两个季度。

为什么一致性并非你想象中的那种指标

对评分者间一致性(inter-rater agreement)的直觉解读是“越高越好”。团队发布一个克里本多夫 α 系数(Krippendorff's α)约为 0.4 的评估,将其视为待解决的问题,并不断修改评分准则,直到 α 超过 0.8。数字上升被解读为评估变得更加可靠。在定义明确、任务单一的情况下——例如“该字符串是否包含电话号码”——这种解读是正确的。天花板很高,因为答案是明确的,评分者向真实答案靠拢就是全部意义所在。

对于决定前沿模型发布的评估来说,答案很少是明确的。“模型对这个医学问题的回答是否有帮助”、“智能体是否遵循了用户的意图”或“这段摘要是否忠实于原文”,在这些任务中,两个称职的标注员有时应该产生分歧,因为理性的从业者本身就存在分歧。针对真正具有歧义的任务,一个定义良好的评分准则应该产生一个有界的不一致区间,而不是零分歧。如果你看到 α 在六个月内从 0.6 漂移到 0.85,而任务定义或标注员培训没有相应变化,那么首要假设不应该是标注员变强了,而应该是标注员变得越来越像了。

这种区别至关重要,因为这两种情况产生的仪表盘看起来一模一样,但真相却截然相反。真正的可靠性提升意味着评分准则终于清晰地描述了任务,评分者向真正正确的答案靠拢,评估变得更具决定性。而标注员的单一化(monoculture)则意味着评分准则被内化为一套风格惯例,评分者现在识别的是惯例而非评估底层属性,评估在自我一致性上变得更高,却失去了对原本想要衡量的属性的把握。

运作良好的评估是如何漂移到单一化陷阱的

三种力量推动评估走向标注员单一化,而且大多数团队在没有察觉的情况下同时运行这三者。

第一是评分准则的完善。每当团队遇到困惑的案例,他们就会在评分准则中添加一个澄清条款。在加入足够多的条款后,评分准则不再是描述任务,而是开始描述一个产生准则首选答案的流程。遵循该流程的评分者彼此达成一致,而不管该流程是否追踪到了底层属性。最近关于评分准则漂移的研究明确指出了这种模式:评分准则会产生连贯的、带有方向性的偏好转变,看起来像是质量提升,实则是人为制造的共识。

第二是少样本评判提示词。当 LLM 评判员与人类意见不一时,标准的修复方法是添加少样本示例——一个高分回答、一个中分回答、一个低分回答——来锚定模型的判断。每一个锚点都会将评判员拉向示例。当锚点足够多时,评判员本质上是在针对锚点进行模式匹配,而不是应用提示词中描述的标准。评判员的输出现在与锚点一致,也与自身一致,这提高了与根据相同锚点校准的人类之间的一致性指标。

第三是团队更迭。人类评分员会轮换。新评分员根据离职团队产出的黄金集决策进行培训。雇佣新团队是为了让他们认同黄金集,而不是独立地将评分准则应用于新案例。在两三次轮换后,“黄金集”不再是正确判断的记录,而是特定群体对已发生漂移的评分准则的特定解读记录。随后的每一位评分员都被训练去复制那种解读。一致性指标攀升,因为评估已经变成了一个训练自身从众性的闭环。

孤立来看,这些举措都没有错。每一项都是针对现实问题的教科书式回应。失败在于同时运行它们,却没有任何制衡力量去惩罚那些本不该存在的一致性。

将分歧视为预算,而非缺陷

防止评估崩溃的规范是将评分者间的分歧视为一个带有预期范围的“预算”,而不是一个需要被降到最低的缺陷。团队在运行评估之前,会写下针对该任务的定义明确的评分准则(rubric)应当产生的分歧分布。对于一个界限清晰的任务,该范围(α)可能在 0.85 到 0.95 之间。对于一个真正具有模糊性的任务——比如评价一个有多个可接受答案的医学回答的帮助程度——该范围可能在 0.55 到 0.75 之间。

如果测得的一致性“低于”该范围,说明评分准则定义不足或评分者培训不足。这是常见的失败模式,团队知道如何修复。如果测得的一致性“高于”该范围,说明评估正在崩溃。同样的仪表盘告警,但补救措施截然相反。当 α 升出上限时的补救措施比 α 跌破下限时更难,因为团队必须引入“更多”的分歧,这对于习惯于将分歧解释为噪音的执行者来说,感觉是错误的。

引入良性分歧的机制是建立一个“留出标注组”(hold-out labeler cohort)。一小部分评分者(对于非公开评估,三到五人通常足够)进行盲评。他们永远看不到评分准则的更新,永远看不到黄金数据集(gold-set)的更新,也永远不会针对现有的标注组进行培训。他们的工作是无限期地将原始任务定义应用于评估抛给他们的任何内容。他们与主标注组之间的分歧,才是评估是在衡量任务本身还是已漂移到衡量“对评分准则的依从性”的真实信号。

留出组需要真金白银的投入,并且会产生一个有时会让组织其他部门感到反感的指标,因为它让头条数据变得复杂。这种成本正是意义所在。一个其健康状况由更便宜的内部流程验证的评估,其健康是有条件的,即取决于流程本身是否崩溃。留出组存在的价值,就是去捕捉那些流程无法捕捉的东西。

证明评估仍具备分辨能力的对抗性样本

分歧分布能告诉你标注者是否仍保持独立,但它们无法告诉你评估是否仍能区分模型的优劣。为此需要进行单独的检查,而这是最简单的规范实践之一。

团队维护一个已知表现糟糕的模型输出存档——包括团队公认明显更差的旧模型检查点(checkpoint)的冻结快照,以及少量由团队手工构建的故意损坏的输出(如截断的答案、幻觉事实、在本应提供帮助时拒绝、以及标准目录中的其他错误)。在每个评估周期中,这些存档会以标注者不可见的标签混合到实时评估集中。如果评估仍能以团队可以明确的差距将存档内容与当前输出区分开来,那么评估就是健康的。如果不能,说明评估已经崩溃。

这是一种反向的古德哈特式(Goodhart-style)测试。古德哈特定律指出,当指标变成目标时,它就不再是一个好的衡量标准了。对抗性存档将这种诊断变成了一套程序:保持一组已知错误输出的冻结样本不变,观察你的评估在已知错误和当前输出之间是否仍能检测出分值差距。当差距压缩时,评估就停止了衡量质量,转而衡量某种风格上的相关性。团队随后可以准确查看哪些维度发生了崩溃——评估是否还能检测出截断?还能检测出幻觉?还能检测出拒绝服务的失败?——并从损坏的维度向外重建。

存档本身需要缓慢更新,因为团队最终会想淘汰那些已经变得极易辨别的输出。更新频率应该足够慢,以迫使评估必须持续处理过时的样本。季度更新是合理的。按月更新太快了,会产生这套方法论试图逃避的闭环问题。

为什么团队会发布针对已崩溃评估的倒退版本

评估崩溃的代价在模型升级发布前是不可见的,甚至在发布后,如果现场遥测(field telemetry)与评估采用相同的信号,它仍然可以是不可见的。一个模型升级发布了,评估显示提升了 1.2 分,评估旨在预测的发布后指标也显示提升了 1.2 分,而某些评估“曾经衡量”但现在不再衡量的能力倒退,直到数周后客户投诉浮出水面时才会被发现。评估和现场遥测都处于相同的标注者惯例下游,因此它们会同步退化。

这是过去 18 个月中几个公开事件背后的模式:团队发布了内部评估报告为明显改进的版本,但在用户暴露出特定的能力倒退后不得不收回声明。内部评估并不是在恶意的意义上撒谎,它只是诚实地报告了它已经漂移去衡量的那个属性,而那个属性已不再是团队认为自己在衡量的东西了。代价体现在从发布到发现的滞后时间里:评估处于漂移状态的时间越长,在评估盲区下积累的倒退就越多,当一个真实的倒退暴露出真实的能力差距时,追赶的过程就越痛苦。

避开这些陷阱的团队并不是那些拥有最聪明评分准则的团队。他们是那些将评估本身视为一个会老化、衰变并需要像生产技术栈一样精心维护的系统的团队。评估的健康不是任何单一版本的属性。它是关于评估如何更新、由谁评分,以及是否有人在检查评分是否仍能追踪你所关心的事物。

本周你可以进行的一次健康检查

如果你的 eval 已经沉寂了一个季度或更久,且你不记得上次审查分歧画像(disagreement profile)是什么时候了,那么一个下午的工作就能产生有用的信号。从本周的 eval 集中抽取 20 个样本。让你团队中的三名评分员根据原始任务定义——注意,不是当前的评分细则(rubric),而是该细则原本应该执行的任务定义——独立地对它们进行评分。将这些评分与 eval 流水线产生的基于评分细则的评分进行比较。如果在超过两三个样本上存在分歧,说明评分细则和任务已经脱节了。如果所有 20 个样本都达成了一致,那么你要么拥有一个非常清晰的任务,要么处于一种非常严重的单一文化(monoculture)状态,而对抗性存档检查(adversarial archive check)将告诉你属于哪种情况。

更深层次的架构要点是,eval 产生的绝对分数并不是它的主要输出。它的主要输出是在已知良好的标注流程下生成的分歧画像。一个只看分数而不看画像的团队,正在操作一个它无法校准的仪器。当分数最终发生变化——或停止变化时——团队将无法得知是模型发生了变化、评分细则发生了变化,还是标注员发生了变化,因为他们保留的唯一数字无法区分这三种情况。

解决方法不是在仪表盘上增加另一个指标。解决方法是写下 eval 应该衡量的内容,并将其与评分细则目前的衡量方式分开,让一组标注员对前者负责,而流水线的其余部分则服务于后者。随着时间的推移,追踪这两个读数之间的差距,才是 eval 真正的健康信号。除此之外的一切都只是 eval 在给自己打分。

References:Let's stay in touch and Follow me for more thoughts and updates