RLCD 拆解:Jev 训练招牌里,多少是新的?

TypeSafe 把 Jev 的训练招牌叫 RLCD。arXiv 上有个近亲 2025-07 就交了叫 RLCR,Brier 直接进奖励;Kadavath 2022 甚至一个 T=2.5 就能事后修一半。本机 Qwen3-4B 跑 30 个是非题:平均自信 99.9%、准确率 90%。

上周那篇 Jev 深度解读在本机测了速度,把厂商说的 40–200 倍砍成了实测 1.8–4.1 倍;但那一篇没敢碰训练侧的招牌——RLCD (Reinforcement Learning for Calibrated Decisions)。这一篇专门补它:把 RLCD 拆到能在 arXiv 上一条一条找到先验的层次,再在本机 4B 模型上跑一个过度自信实验,看看这套东西真正要解决的问题有多硬。

结论一句话:RLCD 解决的问题是真的(RLHF 系统性搞坏校准),解药的技术底盘也是真的(proper scoring rule 作 RL 奖励),但这两件事都不是 TypeSafe 发明的。RLCD 是他们把两件老东西打包起来的商标名。真正的一手贡献大概率在数据、稳定性和推理接口——这三件他们目前没公开。

名词速查

术语一句话解释
校准 (calibration)说 80% 的那一批里,真的有约 80% 是对的——是「一批预测」的性质,不保证单条
Brier score对概率预测的均方误差:Σ(p - y)²/N;越小越准,是个 proper scoring rule
ECE (Expected Calibration Error)按预测置信度分桶,每桶算「桶内平均置信度」减「桶内准确率」,加权求和
proper scoring rule一类奖励函数:当且仅当报告的概率等于真实概率时最大化期望 (Gneiting & Raftery, 2007)
RLHFReinforcement Learning from Human Feedback:让人在两个答案里挑一个,训 reward model,再 PPO
RLVRReinforcement Learning from Verifiable Rewards:答案能被程序判对错(数学、代码),DeepSeek-R1 用的就是这个
RLCRReinforcement Learning with Calibration Rewards:arXiv:2507.16806(Damani 等 2025-07),Brier score 直接进 RL 奖励
RLCDReinforcement Learning for Calibrated Decisions:TypeSafe 起的商标名,说是训练 Jev 用的方法,未公开公式或论文
temperature scaling事后校准法:把 logit 除以 T 再 softmax,T > 1 让分布变平;Kadavath 2022 发现 T=2.5 能修 RLHF 造成的过度自信

一、9-17 那篇欠的一件事

上周那篇《System One 模型:放弃生成字符串,到底买到了什么》测完的时候,我留了一段没写:校准。原文写的是「我这篇只测了速度和分歧位置,没测『说 0.8 的那批里到底有没有 80% 是对的』——那需要一个带标注的判断集,本机能做,但要先攒数据。」

这几天我把数据攒了 30 条(是非题,人工核对过),把实验补了。同时我把 TypeSafe 官方页里那个只出现过几次的缩写「RLCD」在 arXiv 和 Google Scholar 上顺了一遍——这个缩写 TypeSafe 自己没发论文,但技术底盘上的每一块都有公开先验

所以这一篇要回答两个问题:RLCD 到底想解决什么问题,以及它做的事在 arXiv 上叫什么、和 TypeSafe 品牌的边界在哪

二、“不可能幻觉”其实是两条独立承诺

TypeSafe 发布页反复讲一句话:Jev「不可能幻觉」。上周那篇把这句拆成了「schema 合法 ≠ 事实正确」;这周我想再拆一层——这句里其实藏着两条完全独立的承诺

承诺内容谁负责
A:schema 合法输出永远是你声明的类型(选项 ∈ 集合、分数 ∈ 档位、概率 ∈ [0,1])约束解码(约 2019 年就有)——Outlines / xgrammar / jsonformer 一类
B:概率校准概率数值有语义——说 0.8 就是 0.8,不是「模型觉得挺高」RLCD(TypeSafe 品牌)或 arXiv 上的 RLCR / PPO-M / T-scaling

两条独立成立——你可以有 A 没有 B(今天任何 LLM 加约束解码就是),也可以有 B 没有 A(比如老式的二分类器)。TypeSafe 的贡献是把两条同时做到生产可用的水平,并且把 API 压到了三个原语(Choice/Score/Noul)。

承诺 A 已经是老技术了——这一层上 Jev 的增量是「约束描述做成了 runtime 参数」,不需要为每个新标签集重新训个头。这是把训分类器的门槛从「训个模型」降到「写个 JSON」,工程价值明确,但不是新可能性(我认为这条 HN 上 jacobgold 那条 1833 分评论说得没错)。

承诺 B 才是这次真正的争议点。校准这件事在 LLM 里到底有多难?先看诊断。

三、诊断:RLHF 系统性把模型搞成过度自信

这是全文的地基。想说 RLCD 有价值,先得证明RLHF 之后的模型是真的不校准——不是校准差一点,是系统性偏一个方向。

最硬的证据来自 Kadavath et al. 2022, arXiv:2207.05221(Anthropic 团队,一作 Saurav Kadavath;论文原文我通读过一次,下面数字都能在正文里找到)。这篇的核心发现有两条:

  1. 纯 pretrain 的模型天生就有不错的校准(TriviaQA 和 Lambada 等任务上,模型报告的 P(True) 大致等于真实准确率)
  2. RLHF fine-tune 之后,校准崩坏——原文用词是 policies 变得 “naively very miscalibrated”。原因也讲得很直白:RL 训练把模型的输出分布 collapse 向那些能拿最高奖励的行为——如果人类偏好「听起来自信的答案」,模型就学会永远听起来很自信

Kadavath 那篇还给了一个廉价补丁:temperature scaling,T=2.5 就能把 RLHF 造成的过度自信拉回接近 pretrain 的水平。这个数字我第六节会在本机复现一次。

这个诊断后来被 GPT-4 technical report(Achiam et al. 2023)确认过一次——原报告 Figure 8 显示 pretraining 后的 GPT-4 well-calibrated(ECE ≈ 0.02),RLHF 之后 no longer calibrated(ECE 显著变差)。OpenAI 自己也这么说,这不是外部批评。

所以承诺 B 想解决的问题是真实的:任何走过 RLHF 的模型,出厂时就带着过度自信的毛病。如果你的下游是「confidence > 0.9 就自动执行」的逻辑,未校准模型会把一堆本来 60% 把握的判断报成 95%——阈值门就形同虚设。

四、公开先验:arXiv 上叫 RLCR,2025-07 已交

TypeSafe 说 RLCD 是他们的训练方法,「rewards probabilities that match real outcomes rather than answers human raters prefer」(引自 systemonemodels.org 上收集的 TypeSafe 官方描述——这是二手转述,我未直接从 TypeSafe 论文核实,因为 TypeSafe 到目前为止没有发过论文,只有网页描述)。

但这个想法在 arXiv 上不是新的。三年内至少有三条独立工作线在做同一件事:

第一条:RLCR(Damani 等 2025-07,arXiv:2507.16806——名字都撞了,只差一个字母。这是我核过原文的一手证据。作者是 Mehul Damani、Isha Puri、Stewart Slocum、Idan Shenfeld、Leshem Choshen、Yoon Kim、Jacob Andreas(MIT + IBM)。他们做的事:

Models are trained to optimize a reward function that augments a binary correctness score with a Brier score—a scoring rule for confidence estimates that incentivizes calibrated prediction.

——Damani 2025 abstract(原文引用)

他们证明了:任何用有界的 proper scoring rule 作为奖励项,都能得到既准又校准的模型。奖励函数结构基本是 R = 1_{correct} - λ · (q - 1_{correct})²,其中 q 是模型报告的置信度。

第二条:PPO-M / PPO-C(Leng 等 2024-10,arXiv:2410.09724——不是把校准塞进 reward function,而是校准 reward model 自己。PPO-M(Calibrated Reward Modeling)把置信度分数塞进 reward model 训练;PPO-C(Calibrated Reward Calculation)按历史奖励的指数平均调整当前奖励。原文说这俩都能降低 calibration error,同时维持 PPO baseline 的性能。

第三条:Rewarding Doubt(2025-03,arXiv:2503.02623——把置信度报告建模成 betting game,用对数评分规则(另一种 proper scoring rule)作奖励。想法是:高置信答案下大注、低置信下小注。

三条线的共同祖先都是 Gneiting & Raftery 2007 那篇经典 “Strictly Proper Scoring Rules, Prediction, and Estimation”(预测/统计的 canonical 文献)。「用 proper scoring rule 作 RL 奖励」这个想法本身不是 TypeSafe 发明的,这是我读完这三篇论文后的判断——如果这个判断错了,我需要看到 TypeSafe 一份公开的 RLCD 方法论说明说他们和 Damani/Leng/Rewarding Doubt 有实质技术差异,目前没有。

那 TypeSafe 的边界在哪?我猜大概率在这三块(这是我的推测,未验证):训练数据的规模和分布(他们说训了两年、40M 融资)、模型架构的并行采样(他们说自己不是 transformer decoder-only)、Choice/Score/Noul 三原语的接口设计(这个我上周那篇写过,是他们最强的一块)。技术算法本身,是老配方。

五、根本约束:为什么 proper scoring rule 是唯一诚实的奖励

RLCD/RLCR 这类方法之所以只能长成”proper scoring rule 作奖励”这个样子,是因为——只有 proper scoring rule 有一个数学性质:当且仅当模型报告的概率等于它对真实答对概率的内在估计时,期望奖励最大化。

这句话可反驳:如果有非 proper scoring rule 的奖励函数也能保证这个性质,那么 RLCR 的路径就不是唯一解。但过去 20 年(Gneiting & Raftery 2007 以来)的统计决策理论没找到,所以它当前在物理上是唯一解。

换成最朴素的做法先崩在哪里(反事实测试):

假设你用「答对给 1 分,答错给 0 分」作 RL 奖励——这是 RLVR 的默认款,DeepSeek-R1 用的就是这个。这个奖励不依赖模型报告的置信度——你无论说 “50% 确定” 还是 “99% 确定”,答对都是 1 分。所以:

  • 报告置信度的 gradient 信号是 0
  • 模型不会学到诚实报告
  • 但由于「听起来自信的答案」在训练数据里更常见(人类反馈的偏见),模型会朝过度自信漂移——这是崩点,量级是 ECE 从 0.02 涨到 0.2+ 一个数量级

手算证明 Brier score 修好这件事。假设一个二分类,模型内心觉得 80% 是 Yes:

  • 报告 q=1.0:期望损失 = 0.8·(1-1)² + 0.2·(1-0)² = 0.20
  • 报告 q=0.8:期望损失 = 0.8·(0.8-1)² + 0.2·(0.8-0)² = 0.032 + 0.128 = 0.16 ← 最小
  • 报告 q=0.5:期望损失 = 0.8·(0.5-1)² + 0.2·(0.5-0)² = 0.20 + 0.05 = 0.25

我用 python3 验算过这三个数(这一节的手算是我边写边算的,不是复述):

# 验算:Brier 在 q = P(correct) 时最小
for q in (1.0, 0.8, 0.5):
    loss = 0.8 * (q - 1)**2 + 0.2 * (q - 0)**2
    print(f"q={q}: expected brier = {loss:.4f}")
# q=1.0: 0.2000  q=0.8: 0.1600  q=0.5: 0.2500 ✓

最优 q 就是 0.8——它把模型的内在概率估计逼出来作为报告值。0/1 奖励下这个信号是 0,模型学不到;Brier 奖励下这个信号是稳定的向内 pull。

六、本机的过度自信是什么样:Qwen3-4B 的 30 问实验

论文说 RLHF 让模型过度自信,我想在本机看一眼这句话到底长什么样。

实验配置:Qwen3-4B-Instruct Q4_K_M(Bartowski 的 GGUF),llama-server -c 2048 -ngl 99,30 个是非题(10 个质数题、5 个数学题、10 个常识题、5 个 AI 相关题),system prompt 是 "You are a precise assistant. Answer the yes/no question with only 'Yes' or 'No'.",temperature=0,n_predict=1 只前向一步,n_probs=40 读 top-40 logprobs,把 Yes/True/Y 的概率求和作分子,No/False/N 的求和作分母,归一化得 p_yes

代码骨架(对应 rlcd_calib_probe.py,30 行的核心):

# 伪代码:读 logprobs、算 p_yes、和 ground truth 比
prompt = chat_template.format(q=question)  # <|im_start|>...<|im_start|>assistant\n
r = post("/completion", {"prompt": prompt, "n_predict": 1,
                         "temperature": 0.0, "n_probs": 40})
yes_p = no_p = 0.0
for tok in r["completion_probabilities"][0]["top_logprobs"]:
    p = math.exp(tok["logprob"])
    if tok["token"].strip().lower() in ("yes", "true", "y"): yes_p += p
    elif tok["token"].strip().lower() in ("no", "false", "n"): no_p += p
p_yes = yes_p / (yes_p + no_p)  # 省略:yes+no 质量过低时的兜底

结果(n=30,全部一手数据,我在写这篇的当天跑的):

  • 准确率(0.5 阈值分类):90%(27/30)
  • 平均”选中项置信度”:99.9%
  • Brier score:0.0872
  • ECE(5 桶):0.0930

分桶明细:

置信度桶落桶数桶内平均置信度桶内准确率
[0.5, 0.6)0
[0.6, 0.7)0
[0.7, 0.8)0
[0.8, 0.9)10.8090.000
[0.9, 1.0]290.9990.931

这是教科书级别的过度自信——30 个问题里 29 个模型都说”我 99.9% 确定”,但真实准确率是 93.1%。差 6.8 个百分点。剩下那 1 个模型报了 81% 置信度,结果答错了——也是错的方向。

三个具体翻车案例(这是干货配额里的 D 类,亲手看到的具体错误):

  1. “Is Antarctica larger than Australia by land area?” → 模型说 No,p_yes=0.002(即 99.8% 的置信度报告”No”)。事实:南极洲约 14.2M km²,澳大利亚约 7.7M km²,Yes 是正确答案。模型 99.8% 自信地答错了一件教科书事实。
  2. “Was ChatGPT released to the public in 2022?” → 模型说 No,p_yes=0.016。事实:OpenAI 2022-11-30 发布。这一条可能是知识截止导致的,但模型 98.4% 自信地报告了一件它其实不知道的事——这是校准的问题,不是知识的问题。
  3. “Did Thomas Edison invent the light bulb?” → 模型说 No,p_yes=0.191(81% 置信度报告”No”)。这题其实有争议(Swan/Sawyer/Woodward-Evans 都有更早的原型;Edison 的贡献是商用化)。我把 ground truth 标了 Yes 是因为教科书通常这么说,但模型这次的 81% 反而是唯一带了合理不确定性的答案——它不是不能校准,只是 RLHF 训完之后不这么做了。

这就是 RLCD/RLCR 要解决的问题的形状:不是「模型不知道答案」,而是「模型在自己都不确定的时候,仍然把置信度报告成 99%」——所有靠 confidence 阈值做自动化的下游都会被这件事伤害。

七、Kadavath 的旋钮:T=2.5 能省一半

Kadavath 2022 说 temperature scaling T=2.5 能修 RLHF 造成的过度自信。我在这 30 条数据上试了一遍——这是事后校准(不改模型权重,只改输出概率),成本近乎 0。方法:把 p_yes 转回 logit,除以 T,再 sigmoid 回去。

def scale(p, T):
    logit = math.log(p / (1 - p))  # 省略:0/1 saturation 的 clip
    return 1 / (1 + math.exp(-logit / T))

对比(同一批 30 条数据,同一个模型输出,只改 T):

TBrierECE说明
1.0(原始)0.08720.093029 条挤在 [0.9,1) 桶,avg conf 99.9%
2.5(Kadavath)0.06510.0795桶内自信降到 99.7%,Brier 降 25%
5.0(过火)0.04710.0852分布拉平但 ECE 不再改善(欠自信开始出现)

T=2.5 一个旋钮,Brier score 从 0.0872 降到 0.0651——省了 25%,零训练成本。

作个对照参考(这段是纯手算,我边写边验的):

# 参考:假设"总说 100% 自信 + 90% 准确率"的 baseline vs "总说 90% + 90% 准确"
extreme = [(1.0, y) for y in [1]*27 + [0]*3]  # 完全过度自信
brier_ext = sum((p-y)**2 for p,y in extreme)/30  # = 0.1000
calib = [(0.9, y) for y in [1]*27 + [0]*3]  # 群体级完美校准
brier_cal = sum((p-y)**2 for p,y in calib)/30  # = 0.0900
  • 「总说 100% 自信」+ 90% 准确率 → Brier = 0.1000
  • 「总说 90%」+ 90% 准确率(群体级完美校准)→ Brier = 0.0900
  • 本机 Qwen3-4B T=1(29 条 99.9%)→ Brier = 0.0872(略好,因为极少数低自信预测正好答错了)
  • 本机 Qwen3-4B T=2.5(Kadavath fix)→ Brier = 0.0651(比群体级完美校准还好——因为 T-scaling 给答错的那几条自动降了自信)

这里的意思是:T=2.5 拿到了「群体级校准」够不到的东西——它开始区分模型自己不确定的样本。这就是 RLCD/RLCR 承诺在训练时做到的事,只是通过后处理拿到了一部分。

那 RLCD 相对 T=2.5 的增量是什么? T-scaling 是所有输出统一除以一个数,改不动模型对哪些样本内在不确定。RLCR 那种 RL-with-Brier-reward 训出来的模型,理论上能学到「见到这类样本就报低一点」——样本级校准,而不是分布级平移。这一点在 Damani 2025 的实验里有验证:他们的 RLCR 模型在 OOD 数据上仍然校准(这是 T-scaling 做不到的事,因为 T 是在 in-distribution 上拟合的)。

八、边界卡:这套账里 RLCD 到底新在哪

把上面的账并起来,Jev 的 RLCD 到底新在哪:

层次是不是 TypeSafe 首创谁的先验
诊断(RLHF 搞坏校准)Kadavath 2022 / GPT-4 report
事后修复(temperature scaling)Guo 2017 / Kadavath 2022
训练时修复(proper scoring rule 作奖励)Damani 2025 RLCR / Leng 2024 PPO-M / Rewarding Doubt 2025
应用到通用问答(不限数学/代码)部分Damani 2025 也做了非 verifiable 任务
打包成 API surface(Choice/Score/Noul)上周那篇拆过
样本级校准(比 T-scaling 强的部分)✅(据其描述)未开放验证
训练数据 / 规模 / 稳定性大概率 ✅未公开,我推测这才是 40M 融资的用途

判据表(评级怎么给的:✅ = 有公开先验、方法几乎一致;❌ = 我没找到公开先验或 TypeSafe 明显后发;部分 = 有先验但覆盖角度不同)——上面这三档我在文中都能给出对应论文或原文。

用武之地上的判断(第二档证据——我的观点):

  1. 如果你今天正被过度自信卡住(confidence 阈值门失效、下游误自动化),不要等 Jev waitlist——先把你的模型出厂概率过一遍 T=2.5 的 temperature scaling,能省 20–30% 的 Brier。这是一个下午能上生产的事。
  2. 如果 T-scaling 不够,做 in-domain 的 Platt scaling / isotonic regression——用几千条标注拟合一个校准头。这是我 30 分钟就能试完的实验,任何有 logprobs 的模型都能做(比 RLCR 那种全量 RL 训练便宜三个数量级)。
  3. 如果连样本级校准都需要(OOD 数据不能失校准),那才轮到 RLCR 这一档。Jev 是这一档里目前最工程化的接口,值得排 waitlist;但你也可以直接读 Damani 2025 开源实现自己训一个 Qwen-7B 版,成本可控。

这套东西不适合什么

  • 校准 ≠ 事实正确。Antarctica 那个例子就是——一个校准良好的模型也可能对错误答案给出低置信度,但只要内部对错误答案的先验就是高的(比如训练数据里被喂了错事实),校准也救不了。
  • 校准是分布级的性质,不保证单条。你不能对 Jev 的某一次输出说”这条 confidence 0.85 意味着这条有 85% 概率对”——只能说”在 Jev 报 0.85 的一批里,约 85% 对”。这个区别在自动化门控里其实很重要。
  • Kahneman 的 System 1 / System 2 二分本身在认知科学界早就被质疑过(Melnikoff & Bargh 2018 那篇 review 直接叫 “The Mythical Number Two”)。TypeSafe 的品牌命名用了这套二分,但别把品牌当科学——Jev 是个”给 API 用的分类器 + 置信度报告器”,跟人脑的快慢思考没有类比关系。

小结

  • 根本约束:只有 proper scoring rule 作 RL 奖励,才能在数学上保证模型报告的概率等于它自己的内在估计。这一条 20 年没找到反例,因此当前是唯一解。
  • 诊断成立:RLHF 会把模型系统性推向过度自信(本机 30 问:99.9% 自信 vs 90% 准确率,ECE 0.093)。TypeSafe 的痛点是真痛点。
  • 解药也成立:Damani 2025 RLCR、Leng 2024 PPO-M/PPO-C、Kadavath 2022 T-scaling 三条线在 arXiv 上都是公开的。RLCD 是 TypeSafe 把这些打包起来的商标名,技术上不新,工程封装可能是新的(未公开验证)。
  • 崩点:如果你现在正靠 confidence 阈值做自动化,未校准模型会把 60% 把握报成 95%,阈值门形同虚设——差 10 个百分点的 ECE,在生产里是每天几千次错误的自动执行。
  • 可带走的动作:先跑 T=2.5 事后校准(一个下午);不够再做 in-domain Platt scaling(一周);都不够再考虑 RLCR-类训练(一个季度)——别一上来就跳到最后一档

五分钟启动的实验

如果你想在自己模型上看一眼过度自信长啥样,30 行代码就够:

1) 把你的模型跑起来(llama-server / vLLM / OpenAI-compatible 都行),确认它能返回 top-K logprobs:

# 以 llama.cpp 为例
llama-server -m your-model.gguf -c 2048 -ngl 99 --port 8788
# OpenAI API 用: 请求里带 logprobs=true, top_logprobs=20

2) 准备一个小的是非题集(20–50 条),关键是 ground truth 你能自己核对——避开有争议的题(我这次的 Edison 题就是反面教材)。用你业务里的真实场景更好,比如「这条工单是否需要人工介入」。

3) 对每条问题:读第一个 assistant token 位置的 top-K logprobs,把 Yes/True/Y 的概率求和作分子,No/False/N 的求和作分母,归一化。

4) 算三个数:

  • 准确率(0.5 阈值下):sum(1 for p,y in results if (p>0.5)==(y==1)) / n
  • Brier scoresum((p-y)**2 for p,y in results) / n
  • 平均置信度sum(max(p, 1-p) for p,_ in results) / n

要看的数字平均置信度 vs 准确率的差值。差 < 3 个百分点算校准得不错;> 10 个百分点就是被 RLHF 教过头了——先试 p_new = sigmoid(logit(p) / 2.5),Brier 通常能降 20–30%。

成本:Qwen3-4B 在 M-series Mac 上跑 30 条 <20 秒(我这次的实测)。总耗时(写脚本 + 挑题 + 跑)约 30 分钟。产出:你的模型在你自己数据上的一张校准桶表——比读任何论文都直观。

这个实验的意义不是要不要用 Jev,而是你从此有一个数字能说清”我这个 LLM 输出的概率到底有多可信”。有了这个数字,无论选 T-scaling / Platt / Jev / 自己训 RLCR,都是在优化一个可测量的东西,不再是拍脑袋。

参考来源

arXiv 论文(当场核对原文)

统计基础

  • Gneiting & Raftery 2007. Strictly Proper Scoring Rules, Prediction, and Estimation. JASA 102(477). Proper scoring rule 的 canonical 参考。
  • Brier 1950. Verification of forecasts expressed in terms of probability. Monthly Weather Review 78(1). Brier score 的原始出处。

TypeSafe 官方(二手转述)

本机实验(一手,2026-09-21 跑的)

  • rlcd_calib_probe.py:30 个是非题、Qwen3-4B-Instruct Q4_K_M、n_predict=1 n_probs=40 temperature=0,产出 Brier=0.0872、ECE=0.0930、accuracy=0.900
  • rlcd_temp_scale.py:把同一批 logits 除以 T ∈ {1.0, 2.5, 5.0} 再 sigmoid,验证 Kadavath 的 T=2.5 能把 Brier 降到 0.0651(−25%)

站内相关