跳到主要内容

强制一致性偏见:当模型将你的意图向分布众数取整时

· 阅读需 12 分钟
Tian Pan
Software Engineer

一名用户请求“一首关于 Postgres 复制的俳句”。模型返回了一首关于数据库的五行诗,其中提到了服务器和同步,听起来很有信心,读起来像模像样的英语,但并不是俳句。另一名用户请求“一个匹配 IPv6 地址但明确拒绝 IPv4 映射形式的正则表达式”。模型返回了一个匹配 IPv6 地址(包括它被要求拒绝的 IPv4 映射形式)的正则表达式,并用文字断言该正则符合规范。第三名用户请求“仅使用烹饪隐喻来解释 Monad(单子),不提及函数(function)或类型(type)”。模型给出了一个主要基于烹饪的解释,但其中使用了两次“函数”和三次“类型”。

这些都不是拒绝回答。这些也不是明显的幻觉。模型并没有说“我做不到”。它产生了一个自信、格式良好的响应,悄悄地放宽了请求中距离其训练分布众数最远的部分,而用户必须非常仔细地观察才能注意到。这种失效模式有一个值得使用的名称:强制符合偏见 (forced conformance bias) —— 模型将你的意图向典型答案“取整”,用户将结果视为忠实的响应,而本应捕捉到这一问题的评估套件本身也是从典型表述中提取的。

这在通常意义上并不是模型质量问题。模型正在做其训练推动它去做的事情。这是一个产品可靠性问题,如果评估团队的测试用例处于意图分布的众数位置,那么他们实际上只是针对其真实工作负载中简单的后半部分进行校准。

机制:贯穿始终的典型性偏见

其根源在于后训练流水线 (post-training pipeline) 中。最近关于 RLHF 和偏好数据的研究表明,人类标注者系统性地更倾向于更典型的回答,而与任务特定的正确性无关。纯粹接触效应 (mere-exposure effects)、加工流畅度以及评估熟悉文本时的认知轻松感,都促使评分者转向那些在相应语境下模式匹配起来更像“胜任的回答”的答案。这种偏见并不小 —— 实证估计典型性系数接近 0.57,这意味着偏好标注中很大一部分“偏好”仅仅是因为“更典型”。

当这种信号被输入到 KL 正则化的 RLHF 目标中时,数学计算会复合这种偏见。KL 项将策略锚定在一个非均匀的参考分布上,而奖励梯度会强化该参考分布,而不是拓宽它。输出分布坍缩到基础模型的众数上,少数派响应(包括大多数不寻常的用户请求)会面临概率质量匮乏。研究人员称这种极端版本为“偏好坍缩” (preference collapse)。从业者在每次请求哪怕稍微偏离分布的内容时,都会遇到这种温和的、日常的版本。

一旦你了解了要寻找什么,可见的症状就是可以预见的:

  • 不确定性抑制。 在相同的创意写作任务中,经过对齐的 LLM 表现出的输出不确定性明显低于专业人类作家,并且无论提示词如何,它们都会使用相同的陈词滥调。
  • 多样性丧失。 对于相同的提示词,从经过 RLHF 处理的模型中采样的补全结果,其多样性明显低于从底层基础模型中采样的结果。
  • 约束松弛。 当一个请求包含不寻常的约束组合时,模型会满足那些与频繁训练样本一致的约束,并悄悄丢弃或回避那些不一致的约束。

这三者对用户可见的影响是:一个看起来正确、听起来自信,但在关键维度上却有细微错误的答案。

为什么标准评估抓不住它

默认的评估流水线是一个将失效模式固化在内的闭环。评估提示词通常由编写训练数据的同一批工程师和承包商编写,来源于是体现典型用户意图的产品分析,并根据奖励流畅响应的整体“有用性”准则进行评分。每一步都将评估分布推向模型偏向的同一个众数。

其结果是一个模型看起来表现良好的基准测试,领导层看到了绿色的仪表盘,而生产流量中非平凡的一部分 —— 即处于意图长尾的部分 —— 被悄悄地近似化了。团队意识到出问题的第一个信号通常是来自眼神犀利的客户投诉。到那时,团队已经针对一个旨在筛选失败而非捕捉失败的评估进行了交付。

这在指令遵循基准测试中具体表现为三种方式。在 IFEval 上得分较高的模型,在多约束扩展(如 RECAST 和 IFEval++)上往往会严重退化,这些扩展在一个提示词中包含四个或更多约束,或者生成包含重新表述、干扰项和约束变体的“近亲提示词”。在 DriftBench 等多轮对话场景中,性能下降得更为严重,据测量,随着对话的积累,模型会损失近 40% 的约束遵循度。这些基准测试中的每一个都是通过故意偏离典型表述来工作的,每一个都揭示了典型表述评估无法看到的行为差距。

如果你的评估套件没有针对偏离众数的提示词进行过刻意的压力测试,那么分数有多高并不重要。你测量的是别的东西。

落地规范:离众数评估切片

修复的方法并非弃用常规评估,而是增加一个常规评估在结构上无法替代的切片。

离众数评估切片(off-mode eval slice)是针对意图分布尾部刻意构建的一组提示词。它可以通过以下三个来源构建:

  1. 罕见的约束组合。采用模型明显能单独处理的约束(写一首诗、每个词仅限一个音节、避免使用字母 "e"、正好写七行),并将它们组合在一起,这些组合几乎肯定从未在训练数据中出现过。确保每个约束都可以独立测试。
  2. 稀有的格式请求。要求模型以极少输出的格式进行响应 —— 比如用 Mermaid 时序图描述一个模型通常用散文回答的领域;使用特定分隔符和引号转义规则的 CSV;或者具有固定字符长度的单句。
  3. 分布边缘的意图。从分析数据长尾部分真实用户的请求中汲取原型 —— 那些每周出现一次且从未形成聚类的查询。这些是典型评估流程从未见过、模型也从未被以此评分过的意图。
加载中…
References:Let's stay in touch and Follow me for more thoughts and updates