Zhenzhao Tu

从 RLVR 到 RLCD:当强化学习不再只奖励“正确”

2026-10-17

从 Jev 说起

最近 TypeSafe AI 发布的 Jev 模型引起了我的关注。它定位为一个面向结构化决策的组件:给定上下文,直接返回不同答案的概率分布。比如,判断一封客服邮件属于 A、B 还是 C 部门,并给出对应的预测概率。

它背后的核心训练方法 RLCD (Reinforcement Learning for Calibrated Decisions) 值得被单独讨论。与通常只奖励“正确性”的传统强化学习相比,RLCD 的一个显著特征,是它把“概率校准(Calibration)”纳入了优化目标之中。

(注:TypeSafe 目前未完全公开 RLCD 的内部细节。本文关于 R=c−pa 的数学分析,依据的是一个独立的开源实现。)

这种做法带来了两个很清晰的性质: 第一,它要求模型不仅要选对答案,还要如实反映不同答案发生的真实概率。 第二,即便模型处在一个只能获得部分反馈的黑盒里,它依然能利用这些残缺的信息,优化整个概率分布。

这两个性质联系得十分紧密。要理解这里的机制,我们可以先明确,什么是“只能获得部分反馈”。

真实世界的“部分反馈”

假设我们正在训练那个客服分流模型,有三个可选部门: A:Billing(账单) B:Technical(技术) C:Account(账户)

对于某一类具有相同特征的邮件,假设真实的条件概率分布为:

q=(0.6, 0.3, 0.1)

也就是说,60% 的正确答案是 A,30% 是 B,10% 是 C。

如果是传统的监督学习,事情比较简单。每次输入一封邮件,系统直接告诉模型正确答案 y=B。模型利用完整的正确标签计算 Cross-Entropy 调整参数即可。

但现实的业务系统很少能提供这种完整的反馈。 在真实场景里,模型看完邮件,决定把它分给 A 部门。几个小时后,系统抛出一个结果:“这次分配错了。” 此时,模型唯一确定的信息是:

y≠A

至于真正该去 B 还是 C,它并不知道。

系统能提供的反馈,只有简单的 1 和 0:

c={1,选择正确0,选择错误

这就是典型的 Bandit Feedback(部分反馈)。模型只能观察到自己采取的动作所对应的结果,对没有被选择的平行选项一无所知。真实软件系统中,这种知其错而不知何为对的情况非常常见。

[Interactive figure: 完备标签 vs. 真实世界的部分反馈(Bandit Feedback)]
对比传统监督学习的全局完备标签与真实业务系统的单点对错反馈(Bandit Feedback)。在 Bandit 模式下,未选中的平行世界选项被遮罩隐藏,仅知所选动作之错,不知何为正确答案。

RLCD 比较巧妙的地方在于,它仅凭这种残缺的 1 和 0,就撬动了对整个概率分布的估计。

R=c−pa:用偏差丈量概率

我们假设模型当前预测的概率分布是:

pθ=(0.8, 0.15, 0.05)

而真实的概率分布依旧是:

q=(0.6, 0.3, 0.1)

模型显然高估了 A,低估了 B 和 C。

如果使用基础的正确性奖励强化学习(RLVR),规则很简单:选对得 1,选错得 0,即 RRLVR=c。

而 RLCD 的开源实现,在这里做了一次看似简单的减法:

RRLCD=c−pa

其中 c 是实际的对错反馈,pa 是模型给所选答案的预测概率。

只比普通的正确性奖励多减去了一个 pa,就改变了模型接收反馈的逻辑。 假设模型给某个答案打了 90% 的高置信度。 预测正确时:

R=1−0.9=0.1

预测错误时:

R=0−0.9=−0.9

反之,如果模型给某个答案的概率只有 10%。 预测错误时:

R=0−0.1=−0.1

预测正确时:

R=1−0.1=0.9

这种设计的意图很清晰:对过度自信的错误给予严厉惩罚,同时对被模型低估却意外猜中的保守预测给予高额补偿。

单看这几次随机反馈,还无法说明模型如何学到整个分布。但当我们把视角拉高,对这个奖励取期望之后,事情变得很有意思。

回到刚才的分布。 真实概率:

q=(0.6, 0.3, 0.1)

模型预测:

p=(0.8, 0.15, 0.05)

如果模型选择 A。因为 A 在真实环境里的正确率是 60%,在海量的相同尝试中,它得到正确反馈的比例必然趋近于 0.6。 此时,选择 A 所带来的期望奖励变成了:

𝔼[R|a=A]=𝔼[c|a=A]−pA=0.6−0.8=−0.2

顺着这个逻辑推导下去: 如果选择 B:

𝔼[R|a=B]=0.3−0.15=0.15

如果选择 C:

𝔼[R|a=C]=0.1−0.05=0.05

把这些结果并列在一起:

[Interactive figure: 期望奖励切分对比:普通 RLVR vs. RLCD 双向纠偏]
展示减去预测概率 p_a 如何将普通 RLVR 的盲目正奖励转变为双向纠偏机制:高估项受到负向惩罚(向下压),低估项得到正向补偿(向上托),并在收敛态达到期望偏差归零。

模型明明在整个过程中都没有见过真实的条件概率 q,但它每次吃到的奖励,在期望意义上恰好反映了概率预测与真实概率之间的偏差。

被高估的 A 对应负的期望奖励,被低估的 B 和 C 对应正的期望奖励。 当模型最终学到 p=q=(0.6,0.3,0.1) 时,对于任意一个选项 a,都会有:

𝔼[R|a]=qa−pa=0

这意味着,当预测概率与真实条件概率一致时,这种奖励不再具有系统性的正负偏差。

这就是 Monte Carlo 直觉真正起作用的地方。你无法从一次孤立的随机反馈中得知自己错得有多离谱,哪怕这次运气好猜对了。但通过大量的随机尝试,这些偏差会逐渐显现在梯度的统计规律中,最终指引模型逼近真实的分布。

从奖励到 Brier Loss 的无偏梯度

这种期望层面上的规律,在具体训练中会通过策略梯度起作用。

用 pθ(a|x) 表示模型在给定输入 x 时选择动作 a 的概率。训练时,模型根据这个分布抽样一个动作:

a∼pθ(⋅|x)

得到反馈 c 后,使用如下的策略梯度估计:

gRLCD=(c−pa)∇θlog⁡pa

这里,奖励 c−pa 被视为一个不参与反向传播的数值。对所有可能的动作和反馈取期望:

𝔼[gRLCD]=∑apa(qa−pa)∇θlog⁡pa=∑a(qa−pa)∇θpa=−12∇θ∑a(pa−qa)2

最后得到:

𝔼[gRLCD]=−12∇θ‖𝐩−𝐪‖2

这个结果是 RLCD 体系里最核心的数学性质。

Brier Loss 是一种用于评估概率预测质量的经典损失函数:

LBrier(𝐩,y)=∑k(pk−𝟙[k=y])2

它的期望可以写成:

𝔼[LBrier]=‖𝐩−𝐪‖2+1−‖𝐪‖2

由于式子后半部分与模型参数无关,于是我们有:

𝔼[gRLCD]=−12∇θ𝔼[LBrier]

也就是说,模型仅仅依靠自己所选答案的对错反馈,就构造出了完整 Brier Loss 负梯度的无偏估计。它在没看过完整答案分布的情况下,依然能在期望意义上朝着“减小全局概率误差”的方向更新。

无偏当然不等于无损。单次反馈的信息量远小于完整标签,梯度估计依然存在方差,实际训练也需要依赖大量的样本和探索。但它确实验证了一件事:我们不一定需要直接观察到完整的学习目标,才能找到朝它靠近的方向。

RLCD 与普通 RLVR 到底优化了什么?

数学性质明确后,我们回头对比一下 RLCD 与普通正确性奖励(RLVR)在优化目标上的本质差异。

假设一个简单的二分类问题,A 和 B 的真实正确概率分别为:

qA=0.7,qB=0.3

模型当前的预测概率为:

pA=p,pB=1−p

如果使用 RLVR(即 RRLVR=c),模型的期望奖励是:

JRLVR=0.7p+0.3(1−p)=0.3+0.4p

对 p 求导:

dJRLVRdp=0.4

这个结果非常直白:导数永远是正的。无论模型给 A 预测了 0.4 还是 0.99,只要继续拉高 pA,期望奖励就会增加。它最终会把概率推向极值:

pA=1,pB=0

这是一个非常合理的策略。既然 A 更有可能正确,为了追求绝对的胜率,模型理应放弃 B,把筹码全压在 A 上。

但对于 RLCD,情况变了。 前面证明过,它的期望更新方向对应 Brier Loss 的梯度。在这个二分类问题中:

‖𝐩−𝐪‖2=2(p−0.7)2

RLCD 期望更新的梯度方向为:

gRLCD(p)=2(0.7−p)

当 p<0.7 时,梯度为正,模型会提高 A 的概率。 当 p>0.7 时,梯度为负,模型会压低 A 的概率。 当 p=0.7 时,期望更新停滞。

在这个理想化模型里,RLCD 最终收敛的概率分布是:

pA=0.7,pB=0.3

两套奖励机制最终刻画了完全不同的终局。 RLVR 寻求的是最高胜率的“行动策略”,所以它会变得极端自信。 RLCD 寻求的是与现实世界对齐的“条件概率”,所以当它的预测与事实吻合时,它就会停止系统性地施加推力。这种让模型表达出的确定程度与事实发生频率严格一致的约束,就是概率校准(Calibration)的意义所在。

(注:在开源项目 eve-rlcd 针对 Qwen3-0.6B 的对比实验中,也观察到了类似的结果。普通的 RLVR 基准把平均最高预测概率推到了 99.1%,ECE 校准误差为 0.213;而 RLCD 将最高预测概率维持在 83.0%,ECE 降到了 0.023。)

一个反例:准确的概率预测,等于好的决策吗?

既然 RLCD 能够如实反映真实世界的概率分布,那它是不是必然带来更高的决策准确率?

这是一个很容易想当然的陷阱。我们继续用刚才 q=(0.7,0.3) 的例子算一笔账。

训练结束后,两个模型分别交出了不同的概率分布: 模型一(RLVR):

pRLVR=(1,0)

模型二(RLCD):

pRLCD=(0.7,0.3)

假设模型一直接用它的分布做决策,它每次都会选 A。它实际选对的概率是:

P(correct)=0.7

再看模型二。如果系统老老实实地按照 RLCD 算出来的概率去“随机抽样”选答案,它选对的概率是多少?

P(correct)=0.7×0.7+0.3×0.3=0.49+0.09=0.58

矛盾出现了。RLCD 完美学到了真实的概率分布,但如果顺着这个分布去执行,它最终的决策准确率只有 58%,远低于 RLVR 的 70%。

这说明了一个需要在概念上严格切割的问题:准确地描述概率,与基于概率作出最优决策,是两件截然不同的事情。

RLCD 学到的 (0.7,0.3) 是对现实世界客观规律的刻画。如果我们唯一的目标就是“把题做对”,我们完全可以基于 RLCD 提供的这个概率分布,在外部套一层最简单的规则:永远选择概率最高的那一项,即 arg⁡maxa⁡pa。

这样,我们就能同时保留两样东西:

概率预测:(0.7,0.3) 最终决策:始终选择 A (准确率0.7)

模型可以对不同结果的真实分布保持充分的不确定性,但这并不妨碍我们利用这层不确定性,去执行一个极其确定的行动。反之,一个总能选出“最有可能正确答案”的模型,也并不代表它真正理解了那些未被选中的可能性。

当我们拥有概率以后,究竟该如何决策?

在前面的算账里,我们默认了所有的正确答案价值相同,所有错误的代价也相同。在那种理想状态下,选择概率最大的答案就是收益最高的做法。

但现实世界的决策往往伴随着极度不对等的代价。

假设一个系统需要判断某项操作是否存在致命漏洞。真实的风险概率只有 5%,但一旦发生就是毁灭性的。 如果一个模型只被训练去寻找“最可能正确的答案”,为了追求极致的准确率,它会直接掐灭这 5% 的不确定性,笃定地告诉你“没有风险”。 但作为真实的决策者,我们绝不能忽略那 5%。如果模型能如实表达这 5% 的风险概率,我们就可以在外部程序中拉响警报,强行阻断操作。

面对不对等的代价,我们实际上引入了一个效用函数:

U(a,y)

其中 a 是采取的行动,y 是发生的结果,U 衡量我们对结果的评价。最佳行动的公式随之变成了:

a∗=arg⁡maxa⁡𝔼y∼P(y|x,a)[U(a,y)]

这个简单的公式将复杂的决策问题清晰地劈成了两半: 一半是模型对客观规律的概率刻画 P(y|x,a); 另一半是我们基于自身立场对结果的价值衡量 U(a,y)。

继续操作

0.05 × 100.0 = 5.00

采取防护

固定成本 = 2.00

采取防护的期望成本更低——即使风险并不是最可能的结果

同一个概率,不同的决策 — 示意计算:继续操作的期望成本为风险概率 × 损失;防护有固定成本,并假设能完全消除风险。两条横条使用相同刻度,比较期望成本而不是发生概率。改变损失,观察选择如何翻转;抽象成本单位不代表现实建议。

这正是 RLVR 与 RLCD 最核心的应用分野。 RLVR 直接把效用和行动合并,端到端地训练出一个替你做决定的“策略”。 而 RLCD 只负责交出客观的概率分布,把决策的标尺交还给外部规则。在不同错误对应不同代价的复杂场景里,保留了完整的概率分布,实际上就是保留了我们在后续决策中的主权和选择空间。

回到 Jev:模型提供概率,软件负责决断

理解了这层区分,Jev 作为结构化决策组件的定位就非常清晰了。

以往我们调用语言模型,通常是索要一段生成的文本。例如“请判断这封邮件归属哪个部门”,模型直接回答“我认为是 Billing”。 但 Jev 提供的接口(如 Choice、Noul、Score)返回的是概率分布 p=(0.6,0.3,0.1)。

这种输出形态的变化,从工程角度来说非常有价值。它允许我们在同一个模型的基础上,根据不同的业务线挂载完全不同的处理逻辑: 如果分错部门的代价很低,直接取 arg⁡maxa⁡; 如果代价高昂,可以设定置信度必须大于 0.8 才能自动化,否则抛给人工介入; 如果目标是全局资源调度,我们可以直接聚合这些概率分布来分析趋势,而不需要强制模型去选一个确定答案。

模型提供概率,软件决定如何使用它。

当然,这种设计也明确了 Jev 的适用边界。 概率输出绝不等于客观真理。RLCD 能够优化概率的校准程度,但这依然依赖于数据的反馈和验证。一个在训练集上整体表现校准的模型,未必能在长尾样本中精准区分个体的风险。同时,Jev 接口返回的 confidence 值只代表分布的集中程度,并不直接等同于最高选项的正确率,在使用时需要明确区分。

这要求我们在应用这类模型时,必须想清楚:我们让模型预测的究竟是什么? 如果是结构化的判断(“这封邮件属于哪个部门”),有清晰的选项边界和可验证的反馈信号,这种概率预测机制就能极大地发挥威力。但如果是要求其对复杂的、长链路的未来事件进行因果预测,概率的意义就会大打折扣。

结语:目标塑造模型

从 RLVR 到 RLCD,底层逻辑的区别其实已经非常明确:不同的训练目标,必然让模型长出不同的能力倾向。

如果我们的诉求是在单一标准下尽可能多地答对,直接优化行动决策就是最高效的选择。如果我们需要了解未选之路的可能性,或者需要在一个多变的、代价敏感的系统中灵活游走,那么经过良好校准的概率预测才更具分量。

而回顾整个机制,最让我觉得精妙的依然是那个极其短小的结果:

𝔼[R|a]=qa−pa

在这个公式里,模型仿佛被蒙着眼睛投入真实世界。它无法俯瞰全局,看不见完整的真实概率 qa,它仅仅通过一次次正确或错误的随机耳光,就捕捉到了那份偏差,并在期望的指引下,不可阻挡地朝着真实的概率分布靠拢。

我们在设计奖励函数时,本质上是在用数学的语言向模型下达指令。当我们明确了想要解决的核心困境,并把校准的约束写进公式,模型就会诚实地交出世界的底色,然后把最终决断的权力,留在我们自己手里。

Back to notes

评论