从真实世界经验中学习

后训练 Perplexity Computer 模型以模仿成功行为,减少用户纠错需求并避免工具错误。

作者Perplexity Research

用户如何在现实世界中与我们的产品进行交互是模型训练的宝贵来源。这些数据丰富,反映了用户任务的实际分布,并捕获了合成环境可能遗漏的用户纠正和工具故障。

从真实世界数据中学习的常见方法是拒绝采样微调:判断每个会话的结果,保留成功的会话,并训练模型进行模仿。但成功的结果并不意味着每一步都是正确的,因此模仿整个轨迹除了好的中间行为之外,还存在强化不好的中间行为的风险。丢弃不成功的会话也会丢失关于模型短板的关键证据。

我们将拒绝采样微调与提示引导的自我蒸馏结合起来,以便从成功和失败的会话中进行学习。提示是一条简短的纠正指令,基于模型在犯错时已经掌握的信息。来自成功会话的有用步骤仍然是模仿目标,而基于提示的信息则将可避免的错误转化为纠正目标。

除了任务最终是否成功之外,用户的纠正和工具错误还增加了关于过程中哪里出错了的监督。我们在合成环境中的强化学习之后应用此阶段,以帮助缩小这些环境与真实世界使用之间的差距。

在实际使用中,与早期训练的检查点相比,经过后期训练的较新 GLM-5.2 检查点将工具调用失败率降低了 21.2%。对于 GLM-5.3,与基础模型相比,后期训练将工具调用失败率降低了 33.0%,并将用户中度或高度不满的平均估计概率降低了 17.2%。

从合成数据到真实世界数据

合成任务让我们能够创建结果易于验证的可控问题,但它们通常局限于单个提示词,且只能涵盖我们明确设计的场景。

相比之下,真实世界会话中的用户在历经多轮交互展开的会话中带来了多样化的指令、上下文和工具组合。这种真实世界的使用自然会产生两个有价值的错误信号:用户纠正揭示了智能体在哪里未能交付他们想要的东西,而工具错误则显示了其行动在真实环境中在哪里崩溃。我们的采样管线通过排除包含个人身份信息(PII)的会话以及来自已选择退出的用户的会话,来尊重用户的隐私和训练选择。

因此,真实世界的数据为我们提供了合成环境可能无法暴露的失败案例,并且通常自带已经内嵌的失败发生位置。

模仿好的步骤,纠正坏的步骤

在对真实世界数据进行训练时,标准的拒绝采样微调(RFT)根据最终结果选择成功的会话,而没有明确使用用户和工具反馈来区分好的中间行动和坏的中间行动。智能体可能会从不好的工具调用中恢复,或者在用户反馈后纠正错误,并在最后仍然交付正确的输出。

丢弃失败的会话也会限制样本效率。从未取得良好结果的会话仍然可以揭示清晰、可避免的错误,作为有用的训练信号。

我们通过分离两个决策来解决这些局限性:哪些会话包含值得模仿的行为,以及哪些轮次包含值得纠正的错误。数据管线分别做出这些决策,然后为模型轮次分配三种处理方式之一:

  • 模仿:成功会话中的非错误轮次接收普通的交叉熵(CE)损失,从而提高记录词元的概率。
  • 纠正:在成功和不成功的会话中,带有有效提示词的错误轮次都会接收到库尔巴克-莱布勒(KL)散度损失,将模型推向其在看到提示词时做出的下一个词元预测。
  • 保留为上下文:缺少经过验证的提示词的不成功会话中的轮次,以及在任何会话类型中没有经过验证的提示词的标记为不良的轮次,充当上下文但不接收任何损失。

因此,成功的会话可以提供模仿和纠正目标,而不成功的会话仅提供纠正目标。所有其余轮次(包括系统、用户和工具输出)均作为上下文保留。

当前会话路由和助手内容掩码。成功的会话贡献模仿目标;即使会话不成功,保留的反馈记录也可以贡献提示词纠正。其他内容作为上下文保留。未完成的会话被排除。未绘制非最终的产出/停止词元 CE 异常,且此图并未确定较早检查点使用的混合比例。

模仿部分使用标准的 RFT。纠正部分使用策略内自我蒸馏(OPSD):同一模型充当教师和学生,其中教师被赋予特权信息。在这里,该特权信息是解释可避免错误的简短提示词。我们训练学生匹配教师的下一个词元预测,而无需向其传递提示词。

两部分都很重要。仅进行纠错训练可能会暴露捷径:教师和学生可以通过忽略上下文而不是学习纠正来达成一致。交叉熵(CE)项将训练固定在有用的行为上,有助于防止因忽略上下文而达成一致。

然后,经过后训练的学生成为 Computer 中的一个模型选项。来自实时使用的全新会在进入训练管线的下一轮之前,通过相同的资格和隐私过滤器。

示例:一个会话可以吸取两个教训

接下来,我们通过一个包含模仿和纠的具体示例。

考虑一个最终成功的会话,其中用户要求使用官方文档对比 Python 3.13 中 asyncio 的更改。我们的工具文档指出 search.web 返回一个命中列表,每个命中都有一个 url 字段。

作为收集对比证据的一部分,模型首先针对一个版本运行有效的搜索,这是一个很好的模仿行为。

然而,下一次代码执行调用错误地将该列表视为字典。代码工具返回 TypeError: list indices must be integers or slices, not str。由于返回类型在调用前已记录在案,因此这是模型本应能够避免的错误。可以生成带有正确调用的提示词来纠正该操作。

说明性编码会话展示了三个训练角色:仅上下文输入和工具输出(灰色)、有用记录调用的 CE 模仿(深色)以及标记错误的 KL 纠正(青色)。在这里,模型错误地将搜索命中列表视为字典;植根于早期工具文档的仅教师提示词指导了纠正。CE 目标仅在完成的会话被判定为成功时适用,而不成功的会话仍然可以提供符合条件的 KL 纠正目标。

训练的工作原理

训练管线有四个阶段:选择会话并判断其结果,从用户反馈和工具错误中识别错误并创建提示词,从教师和学生两方生成下一个词元概率,以及使用组合的 CE 和 KL 损失训练模型。

选择会话,然后判断结果

采样流水线从由 GLM 5.2 提供服务的真实世界 Computer 会话中抽取一个可用于训练的子集。在为此工作流选择示例之前,会先应用训练退出选项和流水线中与 PII 相关的排除规则。

初始筛选过程从大语言模型(LLM)裁判在五分制任务难度规模上评分为 4 或 5 的候选对象中进行选择,并将它们分为 2 组:

  • 用户反馈组包含具有真实的用户的后续追问或中到高不满意度标记的会话。我们发现这些高意图后续追问对学习特别有用:用户正在积极尝试完成任务,他们的纠正精确指出了模型遗漏的内容。
  • 工具错误组包含由基于规则的检查标记的失败调用的会话,不包括已识别的基础设施故障和拒绝授权。

然后,两个大语言模型(LLM)裁判根据用户的请求评估最终交付成果;两个裁判必须都给出肯定判决,才能将该会话标记为“成功”。对于交付工件的情况,结果阶段可以重建并检查交付成果,如果该阶段失败,则回退到基于文本的判断。被归类为未完成的会话(例如等待用户的工件)将被排除。

这一步确定了学习信号的潜在来源;然而,并非每个错误都可以归咎于模型,因为有些错误源于模棱两可的指令或基础设施故障。后期的标注确定哪些候选错误确实是可以避免的并且适合用于训练。

从用户反馈中寻找错误

考虑用户反馈组中的一个示例会话,其中用户询问:“如何查找 Paychex 上的 w3”。模型将“w3”视为 W-2 的拼写错误,搜索 W-2 说明,并解释如何查找该表单。用户的后续追问“我指的是 W-3 传递表单”指出了错误,即使该会话最终成功了。

投诉有助于定位错误,但根本原因是早期将“w3”重新解释为 W-2 的决定。原始请求使错误变得可避免:模型本可以保留 W-3 或要求澄清。事实证明,投诉前的最后一个助手轮次大约有一半时间是根本原因。

我们的标注管线在每个用户反馈会话中系统地映射因果关系。标注员首先筛选漏掉的需求或由早期上下文支持的意图。然后,三个大语言模型(LLM)裁判识别出负责任的轮次,要求至少有两个裁判对给定轮次达成一致。有时,早期的陈述明确建立了该需求。在其他情况下,没有单个先前的陈述能做到这一点,但前面对话的多个部分共同使预期行为可推断。这种设计使它们能够将投诉与早期的根本错误联系起来,而不是仅仅将其归咎于最后一个答案。

在接受提示词之前,管线还会检查其纠正性主张是否遵循标记轮次之前可用的信息。这些检查旨在减少后见之明偏差,即把投诉中透露的新偏好当作模型本应已知的内容。

在此示例中,提示词告诉模型在 Paychex 上搜索 W-3 传递表单而不是 W-2,或者如果请求模棱两可,则询问用户指的是哪个表单。纠正针对的是早期的解释和搜索决策,而不仅仅是最终答案。原始轮次保持不变;标注添加了 is_bad_turn: true 和非空的 hint。

一个真实的会话,展示了如何将投诉追溯到早期的错误,并叠加了标注程序。用户在 Paychex 上请求“w3”,但模型将其视为 W-2 的拼写错误并搜索了错误的表单。提议者共识定位根本原因,而两个根基检查则评估证据是否在错误发生之前以及提示词的主张是否遵循当时可用的信息。接受的标注保留了原始文本并添加了标记和提示词,而不是重写的目标。

从工具错误中寻找错误

考虑工具错误组中的另一个会话,其中包含一个搜索调用,智能体使用 recency_filter: "year" 进行搜索,但工具拒绝了它,因为允许的值是“day”、“week”或“month”。这是一个明显的架构违规。

工具错误路径对已知错误使用确定性规则,对模糊情况使用模型判断。仅凭错误消息也不足以指责模型;经过判断的纠正必须指向模型本可以从工具架构、系统指令或早期对话中了解到的内容。

报告中无效的搜索参数说明了当前的工具错误程序。架构使这种错误可避免;单次中断则不然。原始调用保留在记录中并接收有根基的提示词。如果字段是可选的,提示词允许列出的值或省略;它不要求每个请求都必须有“month”。

在这里,提示词命名了失败的调用,包含了验证错误,并指示模型使用允许的值,如果字段是可选的则将其省略。

两次前向传播

一旦一轮对话被标记,训练器就会运行相同的检查点两次:一次作为教师,一次作为学生。教师能看到提示,而学生看不到。

两次传播都使用教师强制,即我们向模型提供记录的会话,而不是让其选择新的词元。前向传播在每一步仍然产生完整的下一个词元分布,但它始终条件化于记录中的固定前缀,而不是 rollout 词元。

对于搜索示例,在给定提示词时,相同的模型为“month”分配了高得多的概率,而为“year”分配的概率较小。训练利用这种分布偏移作为软目标。

两次传播,一组权重。两次传播都对记录的续写进行评分;只有教师接收提示词。其分离的下一个词元概率通过前向 KL 指导学生。单独的 CE 目标锚定模仿。两个损失都馈送到一个权重更新中。先前的提示词可能保留在教师当前的段中;两次传播都不会生成替代的训练答案。

教师模型的预测是分离的,即停止梯度:它们提供目标,但不会通过教师前向传播接收更新。在学生模型的传播之后,一个优化器步骤会更新共享模型。

损失函数

CE 损失

CE 损失将选定用于模仿的记录词元视为真实目标,并对模型为它们分配低概率进行惩罚。这创造了一个硬模仿目标。

在词元位置 处,令 为学生在整个词汇表 中对词元 的概率。响应或工具调用中记录的下一个词元是 ,独热目标分布是 。iipi(v)p_i(v)vvVVyiy_irir_i

ri(v)=1[v=yi]r_i(v)=\mathbf{1}[v=y_i]

交叉熵衡量学生预测该记录词元的准确程度。对于独热目标,它简化为赋予 yiy_i 的负对数概率。

H(ri,pi)=−∑v∈Vri(v)log⁡pi(v)=−log⁡pi(yi)H(r_i,p_i)=-\sum_{v\in V}r_i(v)\log p_i(v)=-\log p_i(y_i)

CE 掩码 miCEm_i^{\mathrm{CE}} 是 11(应模仿该词元时)和 00(其他情况)。对选定位置求和即可得出模仿损失。

LCE=∑imiCEH(ri,pi)\mathcal{L}_{\mathrm{CE}}=\sum_i m_i^{\mathrm{CE}}H(r_i,p_i)

KL 损失

KL 损失则使用教师模型的完整下一个词元概率分布 qiq_i 作为软校正目标。教师模型的上下文包含当前提示词以及在该训练段中保留的任何早期提示词;学生的上下文始终是无提示词的。

KL 掩码 miKLm_i^{\mathrm{KL}} 是 11(应纠正该词元时)和 00(其他情况);CE 和 KL 掩码不重叠。在这些位置,前向 KL 惩罚教师和学生在整个词汇表上的分歧:

LKL=∑imiKLDKL(qi∥pi)=∑imiKL∑v∈Vqi(v)log⁡qi(v)pi(v)\mathcal{L}_{\mathrm{KL}}=\sum_i m_i^{\mathrm{KL}}D_{\mathrm{KL}}(q_i\Vert p_i)=\sum_i m_i^{\mathrm{KL}}\sum_{v\in V}q_i(v)\log\frac{q_i(v)}{p_i(v)}

组合损失

两个项共享一个分母,而不是分别进行归一化。此分母计算全局训练批次中选定用于模仿的总词元数。权重 λ\lambda 控制纠正训练相对于模仿的贡献。

这种共享归一化符合我们训练基础设施的单一分母接口,并在 λ=0\lambda=0 时恢复标准的 SFT 损失,从而简化了基准对比。由于 CE 词元比 KL 词元丰富得多,使用共享分母还可以避免在标记词元较少的批次中赋予单个 KL 词元过大的权重。

L=LCE+λLKL∑imiCE\mathcal{L}=\frac{\mathcal{L}_{\mathrm{CE}}+\lambda\mathcal{L}_{\mathrm{KL}}}{\sum_i m_i^{\mathrm{CE}}}

应用于前面的示例时,包含 W-3/W-2 混淆以及无效搜索调用的轮次会接收 KL。成功会话中其他未标记的助手内容仍会接收 CE。不成功会话中的其他助手内容作为上下文保留,但既不接收 CE 也不接收 KL。

评估显示的内容

我们的评估回答了两个独立的问题。首先,当提示词存在时,它是否真的能帮助模型纠正错误?其次,训练是否能帮助模型在没有提示词的情况下稍后避免该错误?第一个问题测试提示词是否提供有用的训练信号。第二个问题测试模型是否向它们学习。

提示词可以引导模型避开错误

我们在训练运行前测试第一个问题,以确保提示词确实能够引导模型避开错误。

用户反馈

我们使用相同的 GLM-5.2 基础模型(温度为零),在有提示词和无提示词的情况下重新生成了标记的用户反馈轮次。盲法裁判可以看到后期的投诉,但看不到提示词,也看不到哪个条件产生了答案。

在 W-3 示例中,提示词将下一个词元的概率在前缀“W-”之后向“3”倾斜,并远离“2”。

提示词保留了所请求的 W-3 表单。柱状图显示了八次前向传播中的平均下一个词元概率;须线显示观察到的范围,而不是置信区间。两个条件都使用未更改的基础模型。

在一个由明确陈述的早期证据支持的较大的 40 个轮次的保留样本中,被判定为已修复或走上正轨的比例从没有提示词时的 40.0% 上升到有提示词时的 75.0%。在由推断意图支持的另外 40 个轮次中,这一比例从 32.5% 上升到 80.0%。

提示词验证,而非后训练评估。每个证据组中的同一 40 个标记轮次在有和没有提示词的情况下,使用温度为零的不变 GLM-5.2 进行重新生成。裁判看到投诉,但看不到提示词或条件。计数派生自报告的速率和样本大小;未报告置信区间。

工具错误

在搜索工具错误示例中,提示词确实将概率质量从 year 词元转移到了 month 词元。

提示词将概率转移向允许的值。柱状图显示了八次前向传播中的平均下一个词元概率;须线显示观察到的范围,而不是置信区间。两个条件使用相同的基模型;未对比训练过的检查点。

在一个包含 985 个轮次的较大保留样本中,我们使用相同的基模型,在有提示词和无提示词的情况下将每个轮次重新生成四次。盲法裁判评估每次重新生成是否避开了原始故障。提示词将故障规避率从 75.1% 提高到 93.7%,成对增幅达 18.6 个百分点,并将采取纠正行动的比例从 60.6% 提高到 82.3%。对于仅凭重复采样难以修复的错误,增幅最大。

在 985 个保留的标记轮次上的工具错误提示词验证,每个条件进行四次重新生成。柱状图显示了未更改的基础模型在有和没有提示词情况下的故障规避率和纠正行动率。避开目标错误并不代表工具调用或任务成功。

训练后的工具可靠性与用户反馈

接着我们测试训练后的模型在不接收提示的情况下是否会犯更少错误。我们在离线基准任务和真实用户会话中评估基础模型以及各种后训练检查点,检查工具故障是否更少、用户不满意是否更少。

离线评估

离线评估使用 BrowseComp、Finch、WideSearch、DRACO、DSQA、SpreadsheetBench、HLE、具有代表性的 Computer 任务集,并检查技能加载、文档审查和行内引用。我们测量在评估轨迹中结果被明确标记为错误的工具调用所占的份额。

在这些评估中,记录的工具错误率对于基础 GLM 5.2 为 2.79%,对于纯 RFT 检查点为 1.35%,对于 RFT 加 OPSD 检查点为 0.87%。这些检查点在不同的数据上进行训练,因此这不是 OPSD 的匹配数据消融。任务级基准测试结果参差不齐,因此单纯减少工具错误并不一定意味着任务成功的广泛改善。

基础 GLM-5.2、纯 RFT 和 RFT 加 OPSD 检查点的离线工具错误率。不同检查点的训练数据不同;这不是对照消融实验。

在线评估:GLM-5.2

对于 GLM-5.2,我们开展了两项独立的 A/B 测试,每种条件约有 10 万名用户。在第一项测试中,早期 RFT-plus-OPSD 检查点的工具失败率略低于基础版 GLM 5.2(2.82% 对比 2.94%),但差异不具有统计学显着性。

在随后的测试中,我们对比了两个 RFT 加 OPSD 检查点:较早的一个(检查点一)和较晚的一个(检查点二)。在具有记录状态的调用中,工具调用失败率从 2.24% 下降到 1.77%。这是一个具有统计学显著性的 21.2% 的相对降幅。我们没有在线直接对比检查点二与基础 GLM 5.2。

用户反馈结果则没有那么确凿。在第二轮 GLM-5.2 实验中,检查点一和检查点二的强烈的(中度或高度)不满平均概率分别为 2.58% 和 2.54%,差异不具有统计学显着性。

两项独立的 GLM-5.2 在线 A/B 测试。检查点 1 与基础版 GLM-5.2 进行对比;检查点 2 与检查点 1 进行对比。在这两项测试中,只有后期工具失败率的降低具有统计学显着性。MID+ 率指的是中度或高度不满的平均估计概率,而不是投诉数量。

在线评估:GLM-5.3

对于 GLM-5.3,我们将经过后期训练的检查点与基础 GLM-5.3 进行了直接对比。在记录了状态的调用中,工具调用失败率从 3.56% 下降到 2.38%,相对降幅达 33.04%。MID+ 率(即中度或高度不满的平均估计概率)从 4.12% 下降到 3.41%,相对降幅为 17.2%。这两项降幅均具有统计学意义。

在独立的在线 A/B 测试中,后期训练的 GLM-5.3 对比基础 GLM-5.3。工具调用失败率和 MID+ 率、相对变化以及 95% 序贯置信区间均采用了 CUPED 调整。两项降幅均具有统计学意义。MID+ 率是指符合条件的已评分后续问题中中度或高度不满的平均估计概率,而非投诉计数。工具调用失败率不包括未记录成功或失败状态的调用。

结论

核心思想是在决策层面进行学习,而不仅仅是在会话层面。

成功的结果可能会掩盖错误,而不成功的会话仍然可以揭示如何改进。我们保留来自成功会话的有用行为作为锚点,使用投诉和工具错误来识别可避免的失败,并根据模型在明确这些错误和纠正时做出的预测来训练模型。成功提供了需要保留的行为;失败提供了改进的方向。

真实世界的使用使这种方法特别有用。真实用户带来的目标、约束和工作流在合成环境中很难预料。他们的纠正揭示了模型遗漏的需求,而工具错误则暴露了模型尝试的内容与环境允许的内容之间的差距。这些信号补充了基于结果的训练:我们不仅可以询问任务是否成功,还可以询问模型在哪里出错了以及什么信息可以帮助它做出更好的决策。

限制条件同样重要。裁判可能会出错,纠正一轮对话并不保证整个任务成功。我们的目标不仅仅是打造一个在纠错后能够恢复的智能体,而是打造一个需要更少纠错的智能体。

引用

BibTeX
@online{perplexity2026LearningFromRealWorldExperience,
  author = {{Perplexity} and Senzeyu Zhang and Chuan Wang and Hang Wu and Hao Zhang and Yuan Liang and Yunfan Zhong and Phi Hoang and Claire Beamer and Jeremy Yang and Andrew Wilson and Denis Yarats},
  title = {{Learning from real-world experience}},
  date = {2026-09-21},
  url = {https://www.perplexity.ai/hub/blog/learning-from-real-world-experience}
}