一人工程 · solus opus

← 全部作品

simedw一人工程scheduled samplingteacher forcingvalidation lossrollout

Scheduled Sampling:验证 loss 升但 rollout 变好

Scheduled Sampling:验证 loss 升但 rollout 变好

simedw 的 scheduled sampling 实验跑出一个反直觉的曲线:验证 loss 升了,rollout 质量反而更好。

现象

训练时 50% 概率把 ground truth 换成模型自己的预测,让模型「适应自己的错误」。

  • 验证 loss:升 5%
  • Gemini pairwise 偏好:64.3% vs 35.7%(vs 不开 schedule sampling 的同模型)

直觉上「验证 loss 升 = 模型变差」,但 rollout(让模型自己续写)时反而更好。

为什么 validation loss 升

训练时:

  • 一半时间用 ground truth(teacher forcing)
  • 一半时间用模型自己的预测(free running)

验证时:

  • 100% 用 ground truth(teacher forcing)——这是「标准做法」
  • 模型评估的是「给定 ground truth 前缀,下一个 token 预测对的概率」

scheduled sampling 让模型「见过自己错」,所以当验证时强制用 ground truth,模型在「预测下一个 token」的纯净度上反而略降(它一部分 capacity 用来「学如何从错误恢复」)。

为什么 rollout 好

rollout 时:

  • 模型没有任何 ground truth
  • 必须用自己预测的音作为后续输入
  • 一旦一个音预测错,所有后续音都基于错的输入

不训练 scheduled sampling 的模型:rollout 时「一个音错 = 后面全乱」(曝光偏差)。 训练 scheduled sampling 的模型:rollout 时「一个音错 = 模型学过的场景 = 能继续」。

验证 loss 升 5% 换来 rollout 偏好 64.3%。这不是 trade-off,是「训练和评估匹配」——既然 rollout 时永远会错,训练时也要学会从错恢复。

训练-评估 mismatch

simedw 实验里最值得展开的一点:教科书的标准做法是「训练用 ground truth,评估用 ground truth」,干净。但 rollout 永远没有 ground truth——这意味着训练分布和 rollout 分布不一致。

scheduled sampling 直接把这个 mismatch 摆到训练目标里:50% 时间走「真实 rollout 分布」。

Bengio 2015 提的 Scheduled Sampling for Sequence Prediction 是这个思路的经典论文。simedw「deliberately haven't read a lot of papers」是不是独立想到的不重要,但「验证 loss 升但 rollout 好」是实战里才会注意到的现象——教科书只写了「loss 升」,没说 rollout 实际偏好多少。

一人工程的解读

  • OpenAI 训大模型:scheduled sampling 默认开(GPT 系列都用过类似机制)+ 大量人工评估 + RLHF。
  • simedw 训小模型:一个人跑 scheduled sampling 实验,发现 validation loss 升但 rollout 偏好 64.3%。

simedw 的实验哲学:不在「validation loss」这个单一指标上纠结,看 rollout 质量。如果只看 validation loss,他会把 scheduled sampling 当成「失败的实验」删掉。但看 rollout 偏好,64.3% 是 6 个有效实验里涨得最大的一次。

50% 概率的选择

simedw 试过 25% / 50% / 75%:

  • 25%:rollout 偏好 55%(略涨,温和)
  • 50%:rollout 偏好 64.3%(最大涨)
  • 75%:rollout 偏好 60%(开始回落)

直觉:50% 是「既见过足够多自己错、又不过度依赖错恢复」的甜蜜点。75% 时模型「学错恢复」学过头,反而对 ground truth 分布的拟合变差。

三档对比

实验 1-3(MIDI 表征)→ 没用飘音 → 找到 compound 表征。 实验 4-7(DPO)→ β=0.10 崩坏 → β=0.01/0.03 微调 → 共识去噪 69.05%。 实验 8(scheduled sampling)→ validation loss 升但 rollout 偏好 64.3%。

实验 8 是「14 次实验里涨得最大的一次」。从 50% 偏好(同模型 baseline)到 64.3%(scheduled sampling)= +14.3 个百分点。比 DPO β=0.03 共识去噪的 69.05%(vs base 24.55% = +44.5 个百分点)涨得小,但 DPO 是从 base 涨起,scheduled sampling 是从已经训好的 125M 涨起,绝对值更可观。

一人工程的「不要只看单一指标」

simedw 的 14 次实验里,「验证 loss 升但 rollout 好」这件事单独看不一定是好事——可能是「模型崩坏但 rollout 听起来像」。但 Gemini pairwise 70% 一致率(每次翻转都能保持 70% 一致)+ rollout 偏好 64.3% = 「真实偏好」。

OpenAI 的 eval team 不会因为 validation loss 升就把模型删掉,他们看「真用户反馈 + 真评估员 pairwise + 多个独立维度」。simedw 也是——他用 Gemini pairwise + rollout 持续测试 + iOS app 真用户反馈三重验证。

14 次实验公开记里 scheduled sampling 的位置

simedw 在 HN 评论里写:

validation loss漏了 rollout质量

这是 14 次实验里他公开的 8 个没用之一(实验 8)。但实际上「验证 loss 漏了 rollout 质量」不是没用——是发现了「单一指标的局限性」。scheduled sampling 才是解决方案。

把「漏 rollout 质量」当成「问题陈述」,scheduled sampling 当成「解决方案」。两个一起写出来,才是一人工程的完整记录。

signature

solus opus。