一人工程 · solus opus

← 全部作品

simedw一人工程评估autoregressiverolloutvalidation lossexposure bias

两套评估维度:rollout 跟 autoregressive 不一致

两套评估维度:rollout 跟 autoregressive 不一致

simedw 的实验发现 autoregressive validation loss 跟 rollout 偏好不一致。两个指标是两个维度,不是同一维度。

现象

实验 8(scheduled sampling):

  • 验证 loss:升 5%
  • rollout 偏好:64.3% vs 35.7%

同一模型,两个指标方向相反。

直觉上「验证 loss 升 = 模型变差」,但 rollout(让模型自己续写)偏好率从 50% 涨到 64.3%。

autoregressive validation loss 是什么

训练 + 评估时,模型输入是 ground truth 前缀,预测下一个 token 的概率。

loss = -log P(token[i] | ground_truth_token[0:i-1])

这是「teacher forcing」评估——模型永远看到正确答案。

优点:

  • 计算快(一次 forward)。
  • 梯度信号干净。
  • 教科书默认评估方式。

缺点:

  • 不反映 rollout 时模型「没有 ground truth 怎么办」。
  • 模型在 autoregressive 评估里表现好,不等于 rollout 时表现好。

rollout 偏好是什么

训练 + 评估时,模型输入只有自己的预测,预测下一个 token 的概率。

rollout = 真实使用场景:模型从「开始符」出发,一个 token 一个 token 续写,所有 token 都是模型自己生成的。

评估 rollout 时:

  • 用 Gemini 3.5 Flash pairwise(A/B 偏好)。
  • 给模型一个 prompt(前 N 个 token),让模型续写 K 个 token。
  • A/B 比较两个模型(基线 vs 实验)的续写。
  • Gemini 给偏好 = 「哪个续写更好」。
  • 翻转 prompt 验证一致性(70% 一致)。

优点:

  • 反映真实使用。
  • 抓住 autoregressive 评估抓不到的「错了一个 token 后能不能恢复」。

缺点:

  • 计算慢(要 rollout K 个 token)。
  • 评估者一致性依赖 Gemini 70%。
  • 不直接给梯度信号。

两套评估的方向不一致

模型 validation loss rollout 偏好
baseline(不开 scheduled sampling) 0.92 50%
实验 8(50% scheduled sampling) 0.97 64.3%
差距 loss +5% 偏好 +14.3 pp

为什么 validation loss 升:

  • scheduled sampling 让模型「见过自己错」,所以 autoregressive 评估时「给定 ground truth 前缀预测下一个 token」的纯净度略降(部分 capacity 用来学「错恢复」)。

为什么 rollout 好:

  • scheduled sampling 让模型「练过从错恢复」,所以 rollout 时「一个 token 错 = 模型学过的场景 = 能继续」。

两个维度反映不同能力:

  • autoregressive loss = 「在理想条件下预测下一个 token 的能力」。
  • rollout 偏好 = 「在没有 ground truth 条件下持续生成的能力」。

OpenAI / Anthropic 训 RLHF 时用「人类反馈」对齐 rollout 偏好——不是因为 validation loss 不准,是因为 rollout 才是用户最终体验到的。

两套评估的真实代价

simedw 的两套评估:

  • autoregressive loss:每个 epoch 跑一次(计算便宜)。
  • rollout 偏好:每个 epoch 跑 50 次 Gemini pairwise(计算贵 + API 钱)。

成本差 10×。所以 simedw 不是每个 epoch 都跑 rollout——只对「看起来不错」的 epoch 跑 rollout。

OpenAI 的两套评估:

  • autoregressive loss:每个 epoch 跑一次。
  • rollout 偏好:每个 epoch 跑 10000 次人工 pairwise(成本极高 + 人海)。
  • 加 RLHF reward model:训练一个模型模拟 rollout 偏好,便宜但有失真。

成本差 1000×。OpenAI 之所以能负担,是因为 RLHF reward model 把 rollout 偏好的成本从 10000 次人海降到 1 次模型前向。

一人工程的简化评估

simedw 的两套评估是「一人工程的简化版」:

  • autoregressive loss = 标准做法(每个 epoch 跑)。
  • rollout 偏好 = 简化版(50 次 Gemini pairwise,不是 10000 次人工)。

一人工程能负担的「rollout 偏好评估」是 50 次 Gemini pairwise。

如果 simedw 想做 OpenAI 那样的 RLHF:

  • 训 reward model:~2 周(一个人)
  • 训 PPO:~2 周(一个人)
  • 加起来 4 周 = 14 次实验里的 4 次 = 28% 实验时间

simedw 没做 RLHF,选 DPO(1 周内可完成)。一人工程的预算 = 「能 1 周做完的事」,不是「能 4 周做完的事」。

14 次实验里两套评估的位置

  • 实验 1-3:MIDI 表征(autoregressive loss 为主,没 rollout)。
  • 实验 4:DPO β=0.10(autoregressive loss 升,rollout 偏好掉到 38%)。
  • 实验 5-7:β=0.01/0.03/共识去噪(autoregressive loss 降,rollout 偏好 57%-69%)。
  • 实验 8:scheduled sampling(autoregressive loss 升 5%,rollout 偏好 +14.3 pp)。

实验 4 和实验 8 是「两套评估方向相反」的经典案例:

  • 实验 4:loss 升 + rollout 掉 → 两个指标一致 → 真失败。
  • 实验 8:loss 升 + rollout 涨 → 两个指标矛盾 → 看 rollout。

实验 8 是 simedw 「不要只看 validation loss」哲学的核心案例。

两套评估的「哲学」

OpenAI 的评估哲学:

  • autoregressive loss 是「学生考试」—— 模型在标准测试上表现好。
  • rollout 偏好是「实际工作」—— 模型在真实任务上表现好。
  • 学生考试好不等于工作好。
  • RLHF = 让模型朝「工作好」优化。

simedw 的评估哲学:

  • autoregressive loss 是「开发工具」—— fast feedback,方便调试。
  • rollout 偏好是「产品标准」—— 决定是否发布。
  • autoregressive loss 涨不一定是坏事。
  • DPO + scheduled sampling = 让模型朝「rollout 好」优化。

simedw 一个人做实验,rollout 偏好比 autoregressive loss 重要——因为 V0 上线后用户感受到的是 rollout,不是 autoregressive loss。

14 次实验公开记里的两套评估

simedw 在 HN 评论里写:

验证 loss漏了 rollout质量

这是 14 次实验里他公开的 8 个没用之一(实验 8 之前的实验 1-3 都只看了 autoregressive loss)。

但「验证 loss 漏了 rollout」是「问题陈述」,不是「解决方案」。实验 8 的 scheduled sampling 才是解决方案。

把两个合起来写:

  • 问题:验证 loss 漏了 rollout 质量(实验 1-3 时的盲点)。
  • 解决方案:scheduled sampling 训练时模拟 rollout(实验 8)。

两个一起写,才是一人工程的完整记录。

signature

solus opus。