区域分层评估 (Locale-Stratified Evals):如何捕捉英语测试集无法发现的非英语回归问题
在最近一次 prompt 变更后,你的综合评估分数上升了 1.2 个点。但在同一周,法语查询的 CSAT(客户满意度)下降了 4 个点。这两个数字都是正确的。它们之所以不一致,是因为评估集(eval set)中 88% 是英语,6% 是西班牙语,其余的是长尾语言,其中任何一种语言的流量都不足以触动汇总数据的变化。法语的性能回归就在你的数据中 —— 它只是恰好位于顶级指标(top-line metric)噪声基底以下三个小数点位。
这是我在生产级 AI 系统中看到的最常见的区域漂移(locale drift)形式:不是突然的崩溃,也不是翻译字符串的 bug,而是一种被汇总数据掩盖、并最终在支持队列中浮现的持续性能差距。当巴黎办公室的人转发一张截图时,你已经在那个回归之上又发布了两个 prompt 变更,而二分查找(bisect)的成本需要耗费三个工程师工作日。
修复方法并不是“翻译更多的评估案例”。这虽然有必要,但仅凭这一点只会让仪表盘看起来更好看,而不会让产品变得更好。因为翻译后的评估集继承了原有的所有以英语为中心的假设 —— 包括那些已经失效的假设。正确的做法是按区域对评估报告进行分层,为每种语言校准评审员(judge),按流量份额对回归进行加权,并将每个主要区域视为其独立的准入通道(gated channel)。本文的其余部分将详细介绍这些做法的含义以及它们通常在哪些地方容易失败。
为什么以英语为中心的评估会隐藏非英语的失败
以英语优先的评估集存在结构性盲区,这些盲区在四种独立的失败模式中叠加,其中任何一种都足以掩盖真实的回归。
第一种是 Tokenizer(分词器)不对称。英语中常见的 Latin-1 文本大约以每个单词 0.75 个 token 的速度进行分词;而日语、中文、韩语和阿拉伯语的分词密度通常是这个数字的 2 到 3 倍。逻辑相同的 prompt —— 相同的指令、相同的 few-shot 示例、相同的上下文预算 —— 留给日语查询的实际问题和实际回答的空间要小得多。在被压缩的工作空间内,注意力(attention)退化得更快,指令遵循(instruction-following)变得更嘈杂,你在英语中验证的长上下文行为无法迁移。你的英语评估案例永远不会揭示这一点,因为它们不是那些超出预算的案例。
第二种是 潜空间偏差(latent-space bias)。大多数生产级前沿模型都是在一个以英语(以及长尾的高资源语言)为主的语料库上训练的。其内部表示是英语形 状的,非英语查询在进行推理之前通常会经过一个类似翻译的中间步骤。这一步会引入其自身的损失,特别是对于那些通过复合产生含义、而部分无法预测整体的语言 —— 例如日语地名、德语技术复合词、中文的“父母”(父母 = 父亲 + 母亲)。推理质量的下降看起来像是模型“变得更糟了”,但实际上是特定于语言的。
第三种是 指令保持力漂移(instruction-retention drift)。BenchMAX 风格的多语言评估研究中被广泛引用的发现是:英语表现在 6 到 10 轮对话中保持稳定,而非英语表现则会发生实质性退化。模型会更早地丢失约束,更早地忽略格式规则,更早地丢掉人设(persona)。几乎没有英语评估是针对捕捉第六轮指令保持失败而设计的,因为这种失败不会在英语中表现出来。
第四种是 文化和语法渗透。许多英语语境下的约束 —— “以第二人称回答”、“使用友好但不随意的语气”、“直呼用户的名字” —— 在不同语言之间并不能 1:1 映射。日语中“友好但不随意”的语气涉及 prompt 从未指定的敬语选择。韩语中礼貌的第二人称称呼涉及 prompt 从未提及的尊称。模型会选择一些东西,通常是最通用的选项,对于母语人士来说,答案读起来会显得异常僵硬或异常亲昵 —— 但英语评审员(judge)根本无法为此评分。
综合评估分数看不到其中的任何一个,因为它是在对以英语为主的样本进行平均。修复必须是结构性的,而不是统计性的。
