https://arxiv.org/pdf/2503.15478
以下是为您提供的全文逐字翻译。翻译力求忠实原文、学术规范且通顺易懂。
SWEET-RL:在协同推理任务上训练多轮大语言模型智能体
作者 :周一飞 1 , 2 , † ^{1,2,\dagger} 1,2,†,姜松 1 ^{1} 1,田渊栋 1 ^{1} 1,Jason Weston 1 ^{1} 1,Sergey Levine 2 ^{2} 2,Sainbayar Sukhbaatar 1 , ∗ ^{1,*} 1,∗,李仙 1 , ∗ ^{1,*} 1,∗
1 ^{1} 1 Meta 基础人工智能研究院 (FAIR), 2 ^{2} 2 加州大学伯克利分校 (UC Berkeley)
† ^{\dagger} † 工作完成于 Meta, ∗ ^{*} ∗ 共同指导
摘要
大语言模型 (LLM) 智能体在真实世界的任务中需要进行多轮交互。然而,现有的用于优化 LLM 智能体的多轮强化学习 (RL) 算法,在利用 LLM 的泛化能力的同时,无法在多个轮次中进行有效的信用分配 (Credit Assignment),并且如何开发此类算法目前仍不清楚。
为了研究这一问题,我们首先引入了一个新的基准测试 ColBench。在该基准测试中,LLM 智能体与人类协作者进行多轮交互,以解决后端编程和前端设计中的实际任务。
在此基准测试的基础上,我们提出了一种新型的强化学习算法 SWEET-RL(利用训练时信息进行步级评估的强化学习,RL with Step-WisE Evaluation from Training-time information)。该算法使用精心设计的优化目标来训练一个评论家 (Critic) 模型,该模型在训练时可以访问额外的训练时信息。评论家提供步级 (Step-level) 奖励,以改进策略 (Actor) 模型。
我们的实验表明,与其他最先进的 (SOTA) 多轮 RL 算法相比,SWEET-RL 在 ColBench 上的成功率和胜率实现了 6% 的绝对提升,使 Llama-3.1-8B 在实际的协同内容创作中能够匹配或超越 GPT-4o 的性能。
日期 :2025 年 3 月 20 日
联系方式 :周一飞(yifei_zhou@berkeley)
代码 :https://github.com/facebookresearch/sweet_rl
数据 :https://huggingface.co/datasets/facebook/collaborative_agent_bench
1 引言
| 后端编程 | 前端设计 |
|---|---|
| 写一个 Python 函数来处理 Renesmee 一生中的事件和交互,并返回这些交互的摘要。 | 🤝 CollaborativeAgentBench 🤝 |
| 用户(参考代码):交互日志是什么,它是...... | 用户(参考设计):我想为我的商店做一个网站。想要绿色色调。想要一个搜索栏和特色商品。 |
| 智能体:交互日志是一个字典列表。现在这是我的解决方案:...... | 智能体:你觉得这个设计怎么样?这似乎就是你寻找的网页。 |
| 进行单元测试评估 | 进行图像相似度评估 |
(图 1 左右对比说明)
- 图 1(左):我们的 ColBench 概览,包括后端编程和前端设计,支持在真实场景下对智能体的多轮 RL 算法进行廉价且可靠的评估。
- 图 1(右):SWEET-RL 背后的高层动机。它利用额外的训练时信息,结合适当的 Bradley-Terry (BT) 目标函数来进行有效的信用分配。
由于大语言模型 (LLM) 在推理和泛化能力上的突破(OpenAI, 2024; Gemini Team, 2024; Llama3 Team, 2024),LLM 智能体有潜力作为决策主体,自主执行复杂的任务。这些任务包括网页导航和设备控制(Zhou 等, 2024a,b; Xu 等, 2024; Gur 等, 2021; Bai 等, 2024)、编写和维护代码库(Jimenez 等, 2024),以及担任个人助手(Xie 等, 2024a; Jiang 等, 2024)。
然而,为了在涉及一系列决策的任务上实现最佳性能,智能体需要直接针对其所关注的多轮目标(例如成功率)进行优化。与在"预测下一个 Token"的预训练目标中仅模仿每轮最可能的动作相比,这更具挑战性。
虽然直接优化多轮目标的一个自然方法是应用单轮人类反馈强化学习 (RLHF)(Ouyang 等, 2022; Ziegler 等, 2020; Christiano 等, 2023)中的成功算法------例如 RAFT(Dong 等, 2023)、DPO(Rafailov 等, 2024b)和 PPO(Schulman 等, 2017)------但这些方法并未在轮次之间进行显式的信用分配。因此,由于复杂的顺序决策任务具有长视野(Long-horizon)属性,这些方法可能会面临高方差和极差的样本复杂度(Zhou 等, 2024c)。
另一个替代方案是应用价值函数学习方法,例如时序差分学习(TD-learning)(Mnih 等, 2013; Zhou 等, 2024c; Snell 等, 2023)。然而,这需要在 LLM 表征之上训练一个全新的、任务特定的价值输出头(Value head),在微调数据有限的情况下,其泛化效果可能不佳(见图 3)。因此,如何开发出最有效的、能充分利用 LLM 推理能力来训练通用、高效且目标导向型智能体的多轮 RL 算法,目前仍不清楚。
为了着手解决这一挑战,我们首先注意到,一个用于验证真实 LLM 智能体多轮 RL 算法的基准测试需要满足以下三个标准:
- 足够的任务多样性,以便在不发生过拟合的情况下进行 RL 训练;
- 足够的任务复杂度,以挑战智能体的推理和泛化能力;
- 极低的工程开销,以便进行快速的研究原型设计。
然而,如表 1 所示,现有的基准测试没有一个能同时满足这三个必要标准。
为了填补这一空白,我们在本工作中的第一项贡献 是开发了一个基准测试:协同智能体基准测试 (ColBench, Collaborative Agent Benchmark)。它旨在支持针对真实 LLM 智能体场景的多轮 RL 算法的研究。
我们的基准测试专注于工件创建 (Artifact Creation) 的真实领域,其中智能体的目标是与人类进行交互,以生产出符合人类预期的最终工件(例如:代码、网页或幻灯片)。为了解决此类任务,智能体必须通过行动来理解人类协作者的意图,并对缺失的部分进行推理,因为在面对复杂且可能是多模态的工件(如代码和网页)时,每轮交互中提供的信息非常有限。
为了促进快速迭代和低成本评估,我们采用 LLM 作为人类"模拟器";关键在于,我们还向模拟器提供了地面真值 (Ground-truth) 工件,以确保其回复的模拟是真实可靠的。为了进行可靠的评估,我们开发了一系列功能评估器(Functional Evaluators),用于测量智能体生成的工件与地面真值之间的相似度。ColBench 中的任务示例见图 1(左),完整的交互轨迹见附录 E。
为了使多轮 RL 算法在此类 LLM 智能体设置中执行有效的信用分配,它需要整合解决以下现实挑战的方案:
- 智能体是在一个部分可观测的环境中运行,其中一些与任务相关的重要信息并未直接透露给智能体。在这种情况下,需要对智能体在随机环境中的"信息寻求行为"给予适当的奖励。
- 在微调期间,对于测试时可能出现的庞大且多样化的任务集,只有有限数量的数据可用。因此,算法的学习目标需要有效利用 LLM 的推理能力,以获得最佳的泛化性能。
针对第一个挑战,我们观察到在训练期间,可以获得额外的训练时信息,例如最终结果和参考解决方案。对于在没有这些知识的情况下执行信息寻求行为的智能体,利用额外的训练时信息可以为信用分配提供一条捷径。
利用这种训练时信息的一个自然方法是训练一个价值函数,该函数将每个动作的预期效用预测为一个标量值。然而,这引入了一个与 LLM 预测下一个 Token 的预训练目标显著不同的微调目标,从而导致推理和泛化性能下降(见图 3)。
基于这些观察,本文的第二项贡献 是一个易于实现且高效的强化学习算法:SWEET-RL(利用训练时信息进行步级评估的强化学习),如图 1(右)所示。
SWEET-RL 通过为评论家(Critic)提供演员(Actor,即策略模型)无法获取的训练时信息,来改善信用分配。我们新型的轮级(Turn-level)评论家利用了评论家和演员之间的这种非对称观测空间。
此外,我们建议直接学习优势函数 (Advantage Function),该函数表征了当前状态下每个动作的有效性,从而避免了必须首先训练一个预测当前状态和动作预期效用的价值函数的需要。
最后,我们还建议通过每个轮次动作的平均对数概率来参数化优势函数,并通过轨迹级别的 Bradley-Terry 目标函数来训练该优势函数。我们发现,与在 LLM 的隐藏状态之上训练价值头的常见做法相比,这种目标函数能更好地与预训练的 LLM 保持对齐,从而带来优异的泛化结果。
在实验中,我们发现在训练期间使用非对称信息和适当的学习目标,在 ColBench 的真实后端编程和前端设计任务上,能够产生更优异的多轮智能体。与其他 SOTA 算法相比,其成功率和胜率获得了 6% 的绝对提升。因此,Llama-3.1-8B(Llama3 Team, 2024)的性能可以匹配甚至超越包括 GPT-4o 和 o1-mini(OpenAI, 2024)在内的最先进专有模型的性能。
2 相关工作
LLM 智能体基准测试
尽管最近提出了许多基准测试来评估 LLM 智能体在各种设置下的能力,例如软件工程(Jimenez 等, 2024; Liu 等, 2023)、网页导航(Zhou 等, 2024a; Koh 等, 2024; Deng 等, 2023; Yao 等, 2023)、设备控制(Rawles 等, 2023, 2024; Xie 等, 2024b)和旅行规划(Xie 等, 2024a),但它们大多倾向于专注于评估最先进的通用 LLM,而没有提供一个研究友好的交互式环境和一套用于研究多轮 RL 算法的训练任务。
虽然 LMRL Gym(Abdulhai 等, 2023)和 RL4VLM(Zhai 等, 2024)为比较不同的多轮 RL 算法提供了这种灵活性,但其任务设置专注于较窄的领域,不需要模型具备强大的推理能力。如表 1 所示,现有的 LLM 智能体基准测试中,没有一个能够在推理密集型任务上提供测试多轮 RL 算法的灵活性,且工程开销极小。
相比之下,ColBench 是第一个旨在支持在推理密集型任务上研究多轮 RL 算法的基准测试,它专注于带有可靠功能验证器的真实工件创建领域。
| 基准测试 | 支持 RL 训练 | 复杂推理 | 极小工程开销 | 参考文献 |
|---|---|---|---|---|
| 网页/设备控制智能体 | 是 | 是 | 否 | (Zhou 等, 2024a; Xie 等, 2024b) |
| SWEBench | 是 | 是 | 否 | (Jimenez 等, 2024; Pan 等, 2024) |
| Travel Planner | 否 | 是 | 是 | (Xie 等, 2024a) |
| LLF Benchmark | 否 | 否 | 是 | (Cheng 等, 2023) |
| AgentBench | 否 | 是 | 是 | (Liu 等, 2023) |
| Mint | 否 | 是 | 是 | (Wang 等, 2024b) |
| Dialop | 否 | 是 | 是 | (Lin 等, 2024) |
| LMRLGym | 是 | 否 | 是 | (Abdulhai 等, 2023) |
| RL4VLM | 是 | 否 | 是 | (Zhai 等, 2024) |
| ColBench (本工作) | 是 | 是 | 是 | - |
表 1:ColBench 与现有的多轮 LLM 智能体基准测试的对比。如表所示,现有的基准测试均未能同时满足开发高效 RL 算法以微调 LLM 智能体所需的三个必要标准。
用于 LLM 智能体的多轮 RL 算法
与单轮场景(如单轮偏好优化(Christiano 等, 2023; Ziegler 等, 2020; Casper 等, 2023; Xu 等, 2023),其中 LLM 只需产生单个回复,无需与环境进一步交互)不同,多轮 RL(Zhou 等, 2024c; Kumar 等, 2024; Abdulhai 等, 2023)捕获了真实的智能体场景,在这些场景中,LLM 智能体需要执行一系列动作来完成任务,例如操作 Unix 终端(Liu 等, 2023)和在网页中导航(Zhou 等, 2024a)。
虽然一些早期的工作直接应用了单轮 RL 的成功方法,例如 REINFORCE(Sutton 等, 1999; Wu 和 Hu, 2018)、DPO(Xiong 等, 2024; Song 等, 2024)和 PPO(Schulman 等, 2017; Szot 等, 2024),但当交互视野变长时,它们往往会面临高方差,从而导致性能不佳。
尽管最近的工作应用了深度 RL 文献中更先进的技术,例如贝尔曼引导(Bellman Bootstrapping)(Zhou 等, 2024c; Snell 等, 2023)和路径一致性(Path Consistency)(Wang 等, 2024a; Liu 等, 2024; Nachum 等, 2017)来减少长视野方差,但我们的工作取得了重要的进展:利用了经常被忽视的额外训练时信息,并对优化目标做出了相应的调整,以改善信用分配。
最后,虽然先前的一些工作在机器人学中应用了非对称的 Actor-Critic 结构来进行"模拟到真实"(Sim-to-Real)的迁移(其中 Critic 观测隐状态,Actor 观测 RGB 输入)(Pinto 等, 2017; Wilson 和 Hermans, 2020; Salter 等, 2019),但关于如何将此类技术应用于推理密集型的 LLM 任务中的研究还较少。
过程奖励模型 (PRM)
步级(Step-wise)评论家的使用类似于推理文献中"过程奖励模型"(PRM)的概念(Lightman 等, 2023; Uesato 等, 2022)。PRM 评估每个推理步骤的"正确性",并且可以通过自动监督进行训练(Luo 等, 2024; Setlur 等, 2024; Yuan 等, 2024; Hwang 等, 2024),而无需高成本的人工标注过程标签。
一旦 PRM 训练完成,它就可以用于在测试时进行更多计算的搜索(Snell 等, 2024; Yuan 等, 2024),或加速同策略(On-policy)强化学习中的探索(Setlur 等, 2024; Shao 等, 2024; Lin 等, 2025)(即当策略模型是在其自身在线收集的轨迹上进行训练时)。
相比之下,在我们的工作中,步级评论家主要用作执行信用分配的中间"奖励代理",直接优化策略,而无需收集额外的交互数据。在 LLM 智能体任务中,这一优势非常重要,因为收集同策略数据涉及与外部环境进行昂贵的交互。
3 协同智能体基准测试 (ColBench)
在本节中,我们首先概述 ColBench 的基本设计原则,以解决开发多轮 LLM 智能体 RL 算法时面临的挑战,然后详细解释两个具体任务:后端编程 和前端设计。
3.1 设计原则
- 足够的任务复杂度,以挑战智能体的推理和泛化能力。由于最终的目标是使 LLM 智能体能够在现实世界中代表我们完成任务(智能体需要解决分布外场景中的复杂挑战),因此基准测试必须反映出这种真实的推理和泛化挑战。为此,ColBench 旨在与真实的工件创建任务保持对齐,协同的目标是产出具体的输出(如代码或网页)。为了做好这一点,智能体必须深入探究代码的结构,并针对未见过的请求以及可能非最优的协作者,洞察视觉设计中的细微差异。
- 极低的开销,以便进行快速的研究原型设计。为了实现这一目标,我们将每个协同任务建立在"重新创建与参考工件完全相同的产物"这一目标上。通过这种方式,可以通过让 LLM 访问参考工件来轻松模拟人类协作者,从而忠实地回答 LLM 智能体的疑问。此外,参考工件的存在使 ColBench 能够采用客观且功能性的评估指标,来评估最终协同产物与参考工件之间的相似度。因此,设置 ColBench 的唯一要求就是一些 LLM 调用的 API 访问,以及用于运行代码和渲染 HTML 网页的一些 Python 包。尽管在真实场景中,人类协作者可能只对最终想要的产物有一个大致的概念,但允许访问清晰的参考工件是一个合理的假设,这显著提高了可靠性。
- 足够的任务多样性,以便在不发生过拟合的情况下进行 RL 训练。由于最好的 LLM 通常是在海量数据上训练出来的,因此我们的基准测试必须包含足够多的任务,以便理解不同多轮 RL 算法的可扩展性,同时确保模拟和评估的可靠性。因此,我们将 ColBench 设计为高度可扩展的,包含超过 1 万个以程序化方式生成的不同任务,这些任务还可以通过合并更多现有的工件(如代码和网页)根据需要轻松扩展。ColBench 的难度可以通过创建具有更复杂代码库和网页的协同任务来轻松调节。
3.2 后端编程协同
- 任务描述:在此任务中,智能体需要与人类模拟器协同编写一个自定义的 Python 函数(最多 50 行)。在协同开始时,智能体会被提供该函数的高层描述和函数签名。然而,许多具体细节(例如应该考虑什么条件、在边界情况下该怎么做)并未提供,智能体必须推理并决定需要向人类模拟器澄清哪些问题。人类模拟器将根据仅其自身可见的参考代码,用自然语言对每个澄清问题提供简短的解释,但它不会编写代码。智能体与人类模拟器之间的来回交互限制在 10 轮以内。当智能体决定给出最终解决方案或达到最大轮数时,交互结束。智能体的成功与否通过针对每个函数的 10 个隐藏单元测试来评估,仅在协同结束时给出 0/1 的奖励。
- 数据生成:Python 函数、高层描述和单元测试是通过提示 Llama-3.1-70B-Instruct(Llama3 Team, 2024)从 DCLM(Li 等, 2024)的互联网摘录中提取 Python 函数生成的。只有生成的 Python 函数能通过其相应单元测试的任务才会被保留。我们在训练集中生成了 10k 个此类任务,在测试集中生成了 1k 个任务(测试集中的任务由作者进行人工检查)。通过零样本提示(Zero-shot prompting)以 Llama-3.1-8B-Instruct 作为智能体、Llama-3.1-70B-Instruct 作为人类模拟器,生成了 15k 条离线训练轨迹。
3.3 前端设计协同
- 任务描述:在此任务中,智能体需要与人类模拟器协同,通过编写 HTML 代码片段(约 100 行)来设计网页。在协同开始时,智能体会被提供该网页的高层描述。同样,许多具体细节(如网页的布局和配色方案)缺失,且仅对人类模拟器可见。在每一轮中,智能体有机会编写一个 HTML 解决方案,并由浏览器进行渲染。人类模拟器将能够检查智能体渲染的网页和参考网页,然后向智能体描述它们之间的差异。与后端编程协同类似,当智能体决定给出最终解决方案或达到 10 轮的最大轮数时,交互结束。智能体的性能通过智能体解决方案与参考网页之间 CLIP(Radford 等, 2021)嵌入的余弦相似度来评估,这是先前工作(Si 等, 2024)中发现的用于前端设计的最佳指标。它在协同结束时作为 0 到 1 范围内的奖励。
- 数据生成:包含参考网页和高层描述的任务来自 WebSight(Laurençon 等, 2024)。我们包括了 10k 个此类任务用于训练,500 个用于测试集。测试集任务由作者进行了人工检查。我们通过零样本提示以 Llama-3.1-8B 作为智能体、Qwen2-VL-72B(Yang 等, 2024)作为人类模拟器,生成了 6k 条离线训练轨迹。
4 SWEET-RL:利用训练时信息进行步级评估的强化学习
为了介绍我们的方法,我们首先定义 ColBench 上多轮 RL 的术语。然后,我们将阐述 SWEET-RL 两阶段训练程序的动机:首先训练一个能够获取额外训练时信息的步级评论家,然后将其用作每步奖励模型,通过精细的算法选择来训练演员。两阶段训练程序的总览如图 2 所示。
(图 2 流程图说明)
- 步骤 1:利用训练时信息进行步级评估(训练评论家 Critic)
- 输入:选择/拒绝的轨迹对 τ + , τ − \tau^+, \tau^- τ+,τ−,其中最终奖励 r ( τ + ) > r ( τ − ) r(\tau^+) > r(\tau^-) r(τ+)>r(τ−)。
- 训练时信息 c c c(例如参考代码/设计)作为额外输入传给评论家 π θ \pi_\theta πθ。
- 利用 Bradley-Terry 优化目标 直接训练出一个步级优势函数 A θ ( o t , a t , c ) A_\theta(o_t, a_t, c) Aθ(ot,at,c)。优势函数的参数化: log ( 当前模型概率 / 参考模型概率 ) / L \log(\text{当前模型概率}/\text{参考模型概率})/L log(当前模型概率/参考模型概率)/L。
- 步骤 2:策略改进(训练演员 Actor)
- 演员 π ϕ \pi_\phi πϕ 只能看到历史 o t o_t ot(无法看到训练时信息 c c c)。
- 产生候选动作后,由已训练好的优势模型评定优势大小,选出选择/拒绝的动作: A θ ( o t , a t + , c ) > A θ ( o t , a t − , c ) A_\theta(o_t, a_t^+, c) > A_\theta(o_t, a_t^-, c) Aθ(ot,at+,c)>Aθ(ot,at−,c)。
- 利用 RLHF 优化(如 DPO) 提升演员性能。
4.1 问题设定
我们将人类与智能体之间的协同问题框架化为一个有限视野的部分可观测马尔可夫决策过程 (POMDP) M = { O , C , A , T , μ 1 , R , N } \mathcal{M} = \{\mathcal{O}, \mathcal{C}, \mathcal{A}, \mathcal{T}, \mu_1, \mathcal{R}, N\} M={O,C,A,T,μ1,R,N}。
这里, O \mathcal{O} O 和 C \mathcal{C} C 分别是状态空间的可观测部分和隐藏部分。在每个回合(Episode)开始时,从初始状态分布 μ 1 \mu_1 μ1 中抽取初始指令 o 1 ∈ O o_1 \in \mathcal{O} o1∈O 和一些隐藏的训练时信息 c ∈ C c \in \mathcal{C} c∈C(例如:参考解决方案)。隐藏的训练时信息 c c c 在该回合内保持不变。
在第 t t t 轮,智能体的观测 o t o_t ot 包含所有的交互历史,智能体需要通过输出一个由 Token a 1 : L t a_{1:L_t} a1:Lt 组成的回复来执行动作 a t ∈ A a_t \in \mathcal{A} at∈A。在执行动作后,用户将对智能体做出回应,智能体的新状态(由转移函数 T \mathcal{T} T 表示)是通过将最新的交互追加到交互历史中来派生的。
在每一步,智能体有机会获得一个标量奖励 r ( o t , a t , c ) ∈ R r(o_t, a_t, c) \in \mathbb{R} r(ot,at,c)∈R。当智能体输出终止 Token 或达到最大交互轮数 t = N t = N t=N 时,回合结束。RL 的目标是训练一个策略,使其能够生成最大化整个 Rollout 中累积奖励的 Token 序列:
∑ t = 1 N r ( o t , a t , c ) \sum_{t=1}^N r(o_t, a_t, c) t=1∑Nr(ot,at,c)
(为了简单起见,我们假设奖励不衰减)。我们考虑从过去的交互数据集中进行学习的离线设置,因为与人类的在线交互可能成本高昂。
策略 π \pi π 的 Q 函数表示在当前步骤执行特定动作、随后遵循策略 π \pi π 的预期累积奖励:
Q π ( o t , a t , c ) = E π ∑ t ′ = t N r ( o t ′ , a t ′ , c ) Q^\pi(o_t, a_t, c) = \mathbb{E}_\pi \left \\sum_{t'=t}\^N r(o_{t'}, a_{t'}, c) \\right Qπ(ot,at,c)=Eπt′=t∑Nr(ot′,at′,c)
π \pi π 的价值函数 V π ( o t , c ) V^\pi(o_t, c) Vπ(ot,c) 定义为预期 Q 值:
E a t ∼ π Q π ( o t , a t , c ) \mathbb{E}_{a_t \sim \pi}Q\^\\pi(o_t, a_t, c) Eat∼πQπ(ot,at,c)
其中动作 a t a_t at 采样自 π \pi π。优势函数 A π ( o t , a t , c ) A^\pi(o_t, a_t, c) Aπ(ot,at,c) 指示了在状态 ( o t , c ) (o_t, c) (ot,c) 下采取动作 a t a_t at 的相对收益,并计算为 Q 值与该状态在策略下价值之间的差值:
A π ( o t , a t , c ) = Q π ( o t , a t , c ) − V π ( o t , c ) A^\pi(o_t, a_t, c) = Q^\pi(o_t, a_t, c) - V^\pi(o_t, c) Aπ(ot,at,c)=Qπ(ot,at,c)−Vπ(ot,c)
我们直接使用参数 θ \theta θ 建模轮级优势函数 A A A,并使用该优势 A θ A_\theta Aθ 来训练由 ϕ \phi ϕ 参数化的策略,以生成每轮内的 Token a 1 : L t a_{1:L_t} a1:Lt。
4.2 学习轮级优势函数
为了在推理密集型任务中执行显式的信用分配,先前的一些工作探索了先学习一个显式的价值函数,然后从学到的价值函数中推导出每个单独动作的优势(Bai 等, 2024; Zhou 等, 2024c; Snell 等, 2023)。然而,在我们的实验中,我们发现当只有有限数量的微调样本可用时,此类价值函数的泛化效果并不好,如第 5.4 节所示。我们假设这是因为在推理密集型任务中学习一个精确的价值函数本身就是一项硬任务,并且未能有效利用预训练 LLM 的推理和泛化能力。
由于执行信用分配的终极目标是推导出每个动作的优势(对于 LLM 而言,这可能比估计未来的预期回报更容易),因此我们提出直接学习每个轮次动作 a t a_t at 的优势函数。
受到 LLM 微调中偏好优化(Preference Optimization)成功(Christiano 等, 2023; Ziegler 等, 2020)的启发,我们提出从轨迹的偏好对中训练轮级优势函数。给定相同任务下带有额外训练时信息 c c c 的两条轨迹,我们根据它们的累积奖励,将它们标注为选择的 τ + \tau^+ τ+ 和拒绝的 τ − \tau^- τ−。这使我们能够采用 Bradley-Terry 目标函数(Bradley 和 Terry, 1952; Rafailov 等, 2024a)进行微调:
J BT = − log σ ( ∑ t β r ( o t + , a t + , c ) − ∑ t β r ( o t − , a t − , c ) ) (1) \mathcal{J}_{\text{BT}} = - \log \left \\sigma \\left( \\sum_t \\beta r(o_t\^+, a_t\^+, c) - \\sum_t \\beta r(o_t\^-, a_t\^-, c) \\right) \\right \tag{1} JBT=−logσ(t∑βr(ot+,at+,c)−t∑βr(ot−,at−,c))(1)
其中 o t + , a t + o_t^+, a_t^+ ot+,at+ 和 o t − , a t − o_t^-, a_t^- ot−,at− 分别来自 τ + \tau^+ τ+ 和 τ − \tau^- τ−, β \beta β 是一个超参数。我们可以使用优势函数重写此目标:
J A ( θ ) = − log σ ( ∑ t β A θ ( o t + , a t + , c ) − ∑ t β A θ ( o t − , a t − , c ) ) (2) \mathcal{J}_A(\theta) = - \log \left \\sigma \\left( \\sum_t \\beta A_\\theta(o_t\^+, a_t\^+, c) - \\sum_t \\beta A_\\theta(o_t\^-, a_t\^-, c) \\right) \\right \tag{2} JA(θ)=−logσ(t∑βAθ(ot+,at+,c)−t∑βAθ(ot−,at−,c))(2)
直观上,类似于单轮 RLHF 学习为每个选择的回复赋予高奖励、为每个拒绝的回复赋予低奖励的目标,等式 2 的效果是增加选择轨迹中每个动作的优势,并降低拒绝轨迹中每个动作的优势。为了完整性,我们在附录 B 中提供了理论推导。
为了进一步使学习目标与"预测下一个 Token"的预训练相对齐,我们通过重新利用 LLM 现有的语言模型输出来参数化优势函数:
A θ ( o t , a t , c ) = 1 L ∑ l = 1 L log π θ ( a t l ∣ o t , a t 1 : l − 1 , c ) π ref ( a t l ∣ o t , a t 1 : l − 1 , c ) (3) A_\theta(o_t, a_t, c) = \frac{1}{L} \sum_{l=1}^L \left \\log \\frac{\\pi_\\theta(a_t\^l \| o_t, a_t\^{1:l-1}, c)}{\\pi_{\\text{ref}}(a_t\^l \| o_t, a_t\^{1:l-1}, c)} \\right \tag{3} Aθ(ot,at,c)=L1l=1∑Llogπref(atl∣ot,at1:l−1,c)πθ(atl∣ot,at1:l−1,c)(3)
其中 π θ \pi_\theta πθ 是我们训练作为优势函数的 LLM 模型,而 π ref \pi_{\text{ref}} πref 是一个冻结的初始种子模型。我们发现引入 1 L \frac{1}{L} L1 将优势按回复长度进行归一化,对于稳定训练至关重要。
4.3 通过轮级优势优化智能体
我们的核心观察是,虽然我们的最终策略 π ϕ \pi_\phi πϕ 无法以隐藏信息 c c c 为条件,但此类信息在训练时是可用的。由于优势 LLM π θ \pi_\theta πθ 仅在训练期间使用,因此它可以将 c c c 作为输入,如等式 3 所示。
直观来说,许多现实问题(如协同和数学推理)都有一些隐藏的训练时信息(如参考解决方案)。如果轮级优势函数能够访问此类训练时信息,它应该能更好地判断策略所采取的行动是否在正确的轨道上。
因此,我们向轮级优势函数提供额外的训练时信息 c c c ,而只向策略模型提供交互历史 o t o_t ot ,从而形成了一种非对称的 Actor-Critic 结构 。在原理上,通过将交互历史视为 Prompt,将轮级优势函数 A θ A_\theta Aθ 视为奖励模型,可以使用 RLHF 文献中的任何成功算法来优化每轮策略 π ϕ \pi_\phi πϕ。在训练策略的这一阶段,不需要与人类协作者进行交互。
为了简单起见,我们选择使用 DPO(Rafailov 等, 2024b)进行训练。对于每一轮 t t t,我们首先在给定交互历史 o t o_t ot 的情况下从当前策略中采样候选动作,并使用学到的轮级优势函数对它们进行排序,以获得选择和拒绝的动作。然后,我们使用标准的 DPO 损失函数优化每一轮的策略:
J π ( ϕ ) = − log σ ( β ′ log π ϕ ( a + ∣ o t ) π ref ( a + ∣ o t ) − β ′ log π ϕ ( a − ∣ o t ) π ref ( a − ∣ o t ) ) (4) \mathcal{J}\pi(\phi) = - \log \sigma \left( \beta' \log \frac{\pi\phi(a^+ | o_t)}{\pi_{\text{ref}}(a^+ | o_t)} - \beta' \log \frac{\pi_\phi(a^- | o_t)}{\pi_{\text{ref}}(a^- | o_t)} \right) \tag{4} Jπ(ϕ)=−logσ(β′logπref(a+∣ot)πϕ(a+∣ot)−β′logπref(a−∣ot)πϕ(a−∣ot))(4)
在实践中,对于每一轮,我们采样 16 个候选动作,并从前 50% 分位数中随机抽取动作作为选择动作,从后 50% 分位数中抽取作为拒绝动作。
5 实验
我们实验的目的是验证 SWEET-RL 作为一种多轮 RL 算法在训练 LLM 智能体处理复杂协同任务时的有效性。具体而言,实验旨在回答以下问题:
- 现有的通用模型和多轮 RL 算法在 ColBench 的协同任务上表现如何?
- 在训练推理密集型任务的 LLM 智能体时,SWEET-RL 的性能与其它 SOTA 多轮 RL 算法相比如何?
- 使用非对称信息如何帮助进行信用分配?
- 为了有效利用 LLM 的推理和泛化能力来执行信用分配,最佳的算法设计选择是什么?
- 与基线相比,随着训练样本数量的增加,SWEET-RL 的扩展性如何?
5.1 实验设置
-
基线对比 :我们将 SWEET-RL 与 ColBench 上的各种 SOTA LLM 和多轮 RL 算法进行对比。我们考虑将 Llama-3.1-8B-Instruct 和 Llama-3.1-70B-Instruct(Llama3 Team, 2024)作为 SOTA 开源 LLM 的代表,将 GPT-4o 和 o1-mini 作为 SOTA 专有 LLM 的代表。我们在单轮和协同设置中均对这些模型进行了测试,以理解 LLM 智能体如何从 ColBench 上的多轮协同交互中受益。
我们对比了基于 Llama-3.1-8B-Instruct 的不同 RL 算法。首先,我们考虑了一个在 LLM 智能体微调中被广泛使用的简单且高效的基线:拒绝微调 (Rejection Fine-Tuning, RFT) (Zhou 等, 2024b; Dong 等, 2023),其中在成功的轨迹上进行监督微调 (SFT) 以最小化负对数似然损失。此外,我们考虑了最近一个高效的基线 Multi-Turn DPO,它将 DPO 的变体应用于多轮设置(Xiong 等, 2024; Song 等, 2024)。Multi-Turn DPO 首先构建对比轨迹对,其中选择的轨迹比拒绝的轨迹获得更高的累积奖励,并使用 DPO 损失直接优化策略,而不使用评论家。
SWEET-RL 首先使用相同的模型架构,在能够获取训练时信息的情况下训练一个轮级优势模型,然后针对轮级优势模型给出的奖励来优化策略。我们分别使用参考代码和参考网页作为后端编程和前端设计的训练时信息。由于参考网页具有多模态特性,我们使用类似大小的视觉语言模型 (VLM) Qwen2-VL-7B-Instruct(Yang 等, 2024)实例化优势 LLM,并在所有视觉和文本 Token 的平均表征之上添加一个回归头。
请注意,我们的实验侧重于从历史收集的数据中学习的设置(离线设置),因此需要在线数据收集的 RL 算法(如 PPO 和 REINFORCE)并不适用。这是因为在现实世界中,在线人类协同数据需要大量的人工标注,获取成本极高。
-
评估指标:后端编程的每个任务都带有 10 个单元测试,我们报告通过测试的平均百分比和任务成功率(即一个任务的所有 10 个单元测试全部通过)。对于前端设计,我们报告由 CLIP-vit-base-patch32(Radford 等, 2021)的图像表征测量的最终网页与参考网页之间的平均余弦相似度。为了提供一个更具可解释性的指标,我们还引入了相对于 GPT-4o 的胜率(通过余弦相似度测量,使生成的网页更接近参考网页的模型在每个任务中获胜)。
5.2 ColBench 上的对比结果
| 模型 / 算法 | 后端编程 (% 测试通过) | 后端编程 (成功率 %) | 前端设计 (余弦相似度) | 前端设计 (胜率 %) |
|---|---|---|---|---|
| 单轮 (Single-Turn) | ||||
| Llama-3.1-8B-Instruct | 11.8 | 6.9 | 63.1 | 13.6 |
| Llama-3.1-70B-Instruct | 24.2 | 14.8 | 61.8 | 13.2 |
| o1-mini | 22.4 | 13.1 | 70.2 | 23.8 |
| GPT-4o | 27.6 | 16.2 | 68.6 | 23.8 |
| 多轮协同 (SOTA LLMs) | ||||
| Llama-3.1-70B-Instruct | 48.0 | 35.0 | 73.7 | 39.8 |
| GPT-4o | 54.6 | 40.4 | 78.1 | 50.0 |
| o1-mini | 43.2 | 30.3 | 77.5 | 47.2 |
| Llama-3.1-8B-Instruct 微调 | ||||
| 零样本 (Zero-Shot) | 34.2 | 22.4 | 72.4 | 33.8 |
| 拒绝微调 (Rejection Fine-Tuning) | 40.9 | 28.2 | 75.2 | 38.6 |
| Multi-Turn DPO | 48.0 | 34.4 | 76.9 | 42.8 |
| SWEET-RL (本工作) | 56.8 | 40.4 | 77.7 | 48.2 |
表 2:ColBench 上不同 LLM 和多轮 RL 算法的对比。SWEET-RL 能够比其他多轮 RL 算法实现超过 6% 的性能提升,使得 Llama-3.1-8B-Instruct 的表现与更大的专有模型相当。
表 2 展示了不同 SOTA LLM 和多轮 RL 算法在 ColBench 各个任务上的性能对比。首先,对比"单轮"结果与其他协同结果,我们注意到多轮协同可以通过使最终产物与人类模拟器的参考"期望"更紧密地对齐,来极大地增强 LLM 智能体在工件创建上的性能。
如果智能体必须在单轮内直接生产最终产物(顶部行),即使是表现最好的 GPT-4o 也只能达到 16.2% 的成功率。相比之下,如果给予它们与人类模拟器交互数轮并收集更多信息的机会,所有模型的成功率都会翻倍(例如,Llama-3.1-8B-Instruct 的成功率从 6.9% 提升到 22.4%)。
尽管如此,多轮协同对于像 GPT-4o 和 o1-mini 这样的专有 LLM 来说依然是一项具有挑战性的任务,它们分别只能达到 40.4% 和 30.3% 的成功率。尽管 o1-mini 在诸如数学和编码等符号推理任务上有所改进,但我们观察到这些改进并没有直接转化为在多轮协同智能体中采取更好的策略,这表明下游微调对于 LLM 优化与人类的协同仍然是必不可少的。
5.3 其他算法与 SWEET-RL 的对比
在使用下游数据微调后,我们发现即使是最简单的 RL 算法------拒绝微调,也能提高在两个任务上的性能(后端编程成功率提升 5.8%,前端设计胜率提升 4.8%)。然而,我们观察到,拒绝微调通常只是教会 LLM 去"记住"每个训练任务的解决方案,而没有学会解决全新测试任务的泛化策略。
虽然 Multi-Turn DPO 通过为拒绝的轨迹引入"负梯度"缓解了这一问题,但在没有跨越长视野进行适当信用分配的情况下,其提升仍然有限。
通过使用训练时信息显式训练一个轮级奖励模型来执行信用分配,我们观察到 SWEET-RL 相比于 Multi-Turn DPO 在两个任务上均有显著提升(后端编程成功率提升 6%,前端设计胜率提升 5.4%)。事实上,使用 Llama-3.1-8B-Instruct 的 SWEET-RL 最终模型不仅匹配了参数量多出 8 倍以上的 Llama-3.1-70B-Instruct 的性能,而且与 GPT-4o 和 o1-mini 等 SOTA 专有模型相比也极具竞争力。
5.4 分析
鉴于表 2 中展示的 SWEET-RL 相比于基线的优势,本节将通过分析实验来理解这一优势并对比替代设计。
| (a) 后端编程上的 Best-of-N 采样 (2^n) | (b) 训练样本量扩展曲线 |
|---|---|
| !图 3a 趋势 | !图 3b 趋势 |
(图 3 趋势说明)
- 图 3(a):后端编程上 Best-of-N 采样相对于不同步级奖励模型的扩展曲线。结果表明,SWEET 可以最好地在轮级基础上辨别好动作,从而在 Best-of-N 采样中表现出最佳的扩展性。注意,此曲线不同于测试时扩展曲线,因为 SWEET 在此阶段利用了额外的训练时信息。
- 图 3(b):不同多轮 RL 算法在后端编程上的性能随微调数据量的扩展曲线。虽然 SWEET-RL 在初期需要更多的数据来学习一个可靠的评论家,但它能够迅速追赶上并实现更好的收敛性能。
我们应该如何使用训练时信息来帮助信用分配?
我们在后端编程上进行了 Best-of-N 采样实验 ,以直接对比不同方法执行信用分配的能力。在每一轮,从一个固定的 Actor(Llama-3.1-8B-Instruct)中采样 N N N 个候选动作,并使用不同方法选择要执行的最佳动作。我们将在 SWEET-RL 中的奖励模型与另外三个自然选择进行了对比:
- SWEET-RL w/o Training-Time Information:与 SWEET-RL 相同,但其输入仅有交互历史,无法访问参考解决方案;
- LLM-as-a-Judge:使用 Llama-3.1-8B-Instruct,根据交互历史和参考解决方案,成对对比每个动作的质量;
- SWEET-RL w/ Value Function:在 Llama-3.1-8B-Instruct 骨干网络之上训练一个常规分类头,使用二分类损失预测在给定交互历史和参考解决方案下的预期成功率。
性能对比展示在图 3(a) 中,定性对比展示在附录 D 中。
首先,我们观察到,使用训练时信息可以显著增强执行信用分配的能力,这体现在 SWEET-RL 与无训练时信息版本之间的巨大性能差距上。虽然相对于固定的 LLM-as-a-Judge 进行 Best-of-N 采样可以带来相比于零样本成功率的一些提升,但这种提升是有限的。
在定性分析上,我们发现固定的 LLM-as-a-Judge 很容易被回复的长度和格式所干扰,而没有实际关注其对于任务成功的实用性。
最后,尽管是深度 RL 文献中的标准实践,但使用价值函数(Value Function)的方法与 SWEET-RL 相比未能实现可比的扩展性能。这显示了 SWEET-RL 精心进行 RL 算法设计选择的重要性,也表明在未见过的任务中,训练价值函数的惯用做法泛化效果可能很差。
评论家执行信用分配的最佳参数化选择是什么?
在表 3 中,我们进行了消融实验,以理解评论家优势函数的不同参数化方式产生的影响。具体而言,我们考虑了两种替代的参数化方式:
- SWEET-RL w/ Regression Head:在所有 Token 的最后一个隐状态的平均池化表征之上使用一个回归头;
- SWEET-RL w/o Training-Time Information:仅使用交互历史作为输入,不访问参考解决方案;
- SWEET-RL w/o Normalization:不执行等式 3 中除以 Token 数量的归一化步骤。
| 算法 / 变体 | 后端编程 (% 测试通过) | 后端编程 (成功率 %) |
|---|---|---|
| 拒绝微调 | 40.9 | 28.2 |
| Multi-Turn DPO | 48.0 | 34.4 |
| SWEET-RL | 56.8 | 40.4 |
| SWEET-RL w/ Regression Head | 45.3 | 36.2 |
| SWEET-RL w/o Train-Time Info. | 44.0 | 31.2 |
| SWEET-RL w/o Normalization | 4.2 | 3.6 |
表 3:评论家不同参数化方式的消融研究。结果表明,使用平均对数概率的参数化方式显著优于其他自然选择。
如表 3 所示,与上一节的结论类似,与 SWEET-RL 相比,使用回归头的泛化效果不佳,而训练时信息显著提高了性能。在没有额外归一化步骤的情况下,我们发现训练出的 Actor 迅速崩溃,生成的回复越来越短,这表明为多轮 RL 算法选择精心设计的参数化方式至关重要。
SWEET-RL 如何随微调数据量进行扩展?
此外,我们对比了 SWEET-RL 与多轮 RL 基线(拒绝微调和 Multi-Turn DPO)的扩展性能。结果展示在图 3(b) 中。
尽管 SWEET-RL 需要更多数据来训练一个可靠的评论家以执行信用分配(在仅有 3k 微调样本可用时其表现差于 Multi-Turn DPO),但一旦轮级评论家训练完成,随着样本量增加,SWEET-RL 能够迅速赶上,并带来显著提高的收敛性能。
SWEET-RL 在不同模型架构和离线数据上的表现如何?
最后,表 4 展示了在后端编程上使用更强的基座模型 Llama-3.1-70B-Instruct 进行的额外对比实验,以研究 SWEET-RL 在不同模型架构上的表现。我们使用与表 2 相同的由 Llama-3.1-8B 生成的离线数据,以理解不同方法利用离策略(Off-policy)数据(即由不同的、较弱的模型离线生成的数据)的有效性。
我们首先观察到,拒绝微调无法从较差模型生成的数据中学习,其成功率从 35.0% 下降到了 31.9%。这可能是因为拒绝微调的目标强迫 Llama-3.1-70B-Instruct 逐字模仿由较差的 Llama-3.1-8B-Instruct 生成的次优轨迹。
虽然 Multi-Turn DPO 即使在使用较差模型生成的离策略数据时也能实现巨大提升(成功率从 35.0% 提升到 41.8%),但 SWEET-RL 通过利用训练时信息执行显式的信用分配,依然维持了 3.8% 的相似差距(成功率为 45.6%,而 Multi-Turn DPO 为 41.8%)。
| Llama-3.1-70B-Instruct 基座 | 后端编程 (% 测试通过) | 后端编程 (成功率 %) |
|---|---|---|
| 零样本 (Zero-Shot) | 48.0 | 35.0 |
| 拒绝微调 (Rejection Fine-Tuning) | 45.5 | 31.9 |
| Multi-Turn DPO | 56.7 | 41.8 |
| SWEET-RL (本工作) | 60.2 | 45.6 |
表 4:使用 Llama-3.1-70B-Instruct 作为基座模型在后端编程上的对比结果。结果表明,当使用更强的 Llama-3.1-70B-Instruct 作为基座模型时,SWEET-RL 相比于基线取得了相似的收益。
6 结论
为了推动执行有效信用分配的高效多轮 RL 算法的发展,本文首先引入了一个基准测试 ColBench,专注于协同工件创建的真实领域。ColBench 是第一个旨在验证在推理密集型任务上具有极小工程开销的多轮 RL 算法的 LLM 智能体基准测试。
在 ColBench 的基础上,我们开发了一种新型的多轮 RL 算法 SWEET-RL,该算法利用了额外的训练时信息和恰当的算法设计选择,在该领域取得了比 SOTA 基线显著提升的性能。
我们在 ColBench 上的实验结果表明,用于多轮 LLM 智能体的开箱即用深度 RL 方法可能会导致较差的泛化性能。虽然 SWEET-RL 是弥合这一差距的初步尝试,但在 LLM 智能体这一重要领域中,开发更好的多轮 RL 算法仍有许多未来的研究机会。
影响声明
本论文推动了更高效的多轮 RL 算法和更好的人机协同的发展。一个高效的协同 LLM 可能会在内容创作等许多领域显著提高人类的生产力。然而,随着 LLM 智能体从人类手中接管更多任务,可能会出现各种安全隐患,它们可能会受到恶意攻击或表现出意料之外的行为。我们将这一重要方向留给未来的研究。
参考文献
(注:参考文献部分为学术文献列表,保持原样,仅对格式做标准排版微调)
- Marwa Abdulhai, Isadora White, Charlie Snell, Charles Sun, Joey Hong, Yuexiang Zhai, Kelvin Xu, and Sergey Levine. Lmrl gym: Benchmarks for multi-turn reinforcement learning with language models, 2023.
- Alekh Agarwal, Nan Jiang, and Sham M Kakade. Reinforcement learning: Theory and algorithms. 2019.
... (其余参考文献请参阅原文件第 11-14 页)
附录 A 超参数
为了完整性和可复现性,我们在表 5 中展示了 SWEET-RL 和所有基线中使用的所有超参数。总体而言,我们发现 Multi-Turn DPO 和 SWEET-RL 的性能对于 DPO 损失目标中的超参数(如学习率和 beta)保持一致,且在大多数情况下加入 0.01 的负对数似然系数是有帮助的(Pang 等 (2024) 也发现了这一点)。
| 超参数 | 后端编程 (RFT / DPO / SWEET-RL) | 前端设计 (RFT / DPO / SWEET-RL) |
|---|---|---|
| 拒绝微调 (RFT) | ||
| 学习率 | 2e-7 | 2e-7 |
| 批大小 (Batch Size) | 32 | 32 |
| Epoch 轮数 | 4 | 8 |
| Multi-Turn DPO | ||
| 学习率 | 2e-7 | 2e-7 |
| Beta | 0.1 | 0.1 |
| 负对数似然损失系数 | 0.01 | 0.01 |
| 批大小 | 8 | 8 |
| Epoch 轮数 | 4 | 8 |
| SWEET-RL | ||
| 评论家学习率 | 2e-7 | 2e-7 |
| 评论家 Beta | 0.1 | 0.1 |
| 评论家负对数似然损失系数 | 0.01 | 0.01 |
| 评论家批大小 | 8 | 8 |
| 评论家 Epoch 轮数 | 4 | 8 |
| 演员学习率 | 2e-7 | 2e-7 |
| 演员 Beta | 0.1 | 0.1 |
| 演员负对数似然损失系数 | 0.01 | 0.01 |
| 演员批大小 | 8 | 8 |
| 演员 Epoch 轮数 | 1 | 1 |
表 5:所有实验中 SWEET-RL 和基线方法的超参数。
附录 B 理论证明
在本节中,我们将为我们方法的推导提供一些理论证明。我们首先表明,轨迹级别的 Bradley-Terry 目标函数可以类似地用于学习优势函数:
引理 B.1 :对于一个每个状态为 ( o , c ) ∈ O × C (o, c) \in \mathcal{O} \times \mathcal{C} (o,c)∈O×C 且对于任意 π : O ↦ A \pi : \mathcal{O} \mapsto \mathcal{A} π:O↦A 的 MDP,假设转移函数 T ( o , a , c ) \mathcal{T}(o, a, c) T(o,a,c) 对于任何 ( o , a , c ) (o, a, c) (o,a,c) 都是确定性的,则对于所有的 τ + , τ − \tau^+, \tau^- τ+,τ−,以下等式成立:
− log σ ( ∑ t β r ( o t + , a t + , c ) − ∑ t β r ( o t − , a t − , c ) ) = − log σ ( ∑ t β A π ( o t + , a t + , c ) − ∑ t β A π ( o t − , a t − , c ) ) - \log \left \\sigma \\left( \\sum_t \\beta r(o_t\^+, a_t\^+, c) - \\sum_t \\beta r(o_t\^-, a_t\^-, c) \\right) \\right = - \log \left \\sigma \\left( \\sum_t \\beta A\^\\pi(o_t\^+, a_t\^+, c) - \\sum_t \\beta A\^\\pi(o_t\^-, a_t\^-, c) \\right) \\right −logσ(t∑βr(ot+,at+,c)−t∑βr(ot−,at−,c))=−logσ(t∑βAπ(ot+,at+,c)−t∑βAπ(ot−,at−,c))
证明 :为了证明这一点,我们只需要证明:
∑ t r ( o t , a t , c ) = ∑ t A π ( o t , a t , c ) \sum_t r(o_t, a_t, c) = \sum_t A^\pi(o_t, a_t, c) t∑r(ot,at,c)=t∑Aπ(ot,at,c)
我们将通过裂项相消(Telescoping)来证明这一点:
∑ t A π ( o t , a t , c ) = ∑ t Q π ( o t , a t , c ) − V π ( o t , c ) \sum_t A^\pi(o_t, a_t, c) = \sum_t \left Q\^\\pi(o_t, a_t, c) - V\^\\pi(o_t, c) \\right t∑Aπ(ot,at,c)=t∑Qπ(ot,at,c)−Vπ(ot,c)
= ∑ t = 1 N − 1 r ( o t , a t , c ) + E o t + 1 ′ ∼ T ( ⋅ ∣ o t , a t , c ) V π ( o t + 1 ′ , c ) − V π ( o t , c ) + r ( o N , a N , c ) = \sum_{t=1}^{N-1} \left r(o_t, a_t, c) + \\mathbb{E}_{o'_{t+1} \\sim \\mathcal{T}(\\cdot \| o_t, a_t, c)} V\^\\pi(o'_{t+1}, c) - V\^\\pi(o_t, c) \\right + r(o_N, a_N, c) =t=1∑N−1r(ot,at,c)+Eot+1′∼T(⋅∣ot,at,c)Vπ(ot+1′,c)−Vπ(ot,c)+r(oN,aN,c)
= ∑ t = 1 N r ( o t , a t , c ) + ∑ t = 1 N − 1 E o t + 1 ′ ∼ T ( ⋅ ∣ o t , a t , c ) V π ( o t + 1 ′ , c ) − V π ( o t , c ) = \sum_{t=1}^N r(o_t, a_t, c) + \sum_{t=1}^{N-1} \left \\mathbb{E}_{o'_{t+1} \\sim \\mathcal{T}(\\cdot \| o_t, a_t, c)} V\^\\pi(o'_{t+1}, c) - V\^\\pi(o_t, c) \\right =t=1∑Nr(ot,at,c)+t=1∑N−1Eot+1′∼T(⋅∣ot,at,c)Vπ(ot+1′,c)−Vπ(ot,c)
= ∑ t = 1 N r ( o t , a t , c ) = \sum_{t=1}^N r(o_t, a_t, c) =t=1∑Nr(ot,at,c)
其中最后一个等式由确定性转移的假设得出。
此外,我们还希望为使用非对称评论家来优化具有不同观测空间的演员提供理论证明。直观地说,尽管对于每个样本,这种训练时优势函数可能与常规优势函数给出不同的判断,但以下引理表明,在所有样本上取平均,从带有训练时信息的优势函数估计出的策略梯度(Williams, 2004)是无偏的。
引理 B.2 :对于一个每个状态为 ( o , c ) ∈ O × C (o, c) \in \mathcal{O} \times \mathcal{C} (o,c)∈O×C 且对于任意 π : O ↦ A \pi : \mathcal{O} \mapsto \mathcal{A} π:O↦A 的 MDP,令 d t π ( o t , a t , c ) d_t^\pi(o_t, a_t, c) dtπ(ot,at,c) 为第 t t t 步的联合状态-动作占用分布,以下两个估计量都是 π \pi π 的策略梯度的无偏估计量:
∇ E τ ∼ π ( ∑ t = 1 H r ( o t , a t , c ) ) = ∑ t = 1 N E o t , a t A π ( o t , a t ) ∇ log π ( a t ∣ o t ) = ∑ t = 1 N E o t , a t , c A π ( o t , a t , c ) ∇ log π ( a t ∣ o t ) \nabla \mathbb{E}{\tau \sim \pi} \left( \sum{t=1}^H r(o_t, a_t, c) \right) = \sum_{t=1}^N \mathbb{E}{o_t, a_t} A^\pi(o_t, a_t) \nabla \log \pi(a_t | o_t) = \sum{t=1}^N \mathbb{E}_{o_t, a_t, c} A^\pi(o_t, a_t, c) \nabla \log \pi(a_t | o_t) ∇Eτ∼π(t=1∑Hr(ot,at,c))=t=1∑NEot,atAπ(ot,at)∇logπ(at∣ot)=t=1∑NEot,at,cAπ(ot,at,c)∇logπ(at∣ot)
证明 :该引理的证明类似于标准的策略梯度分析(Agarwal 等, 2019)。
∇ E τ ∼ π ( ∑ t = 1 N r ( o t , a t , c ) ) = ∇ E c E o 1 V π ( o 1 ) \nabla \mathbb{E}{\tau \sim \pi} \left( \sum{t=1}^N r(o_t, a_t, c) \right) = \nabla \mathbb{E}c \mathbb{E}{o_1} V^\pi(o_1) ∇Eτ∼π(t=1∑Nr(ot,at,c))=∇EcEo1Vπ(o1)
= E c E o 1 ∇ V π ( o 1 ) = \mathbb{E}c \mathbb{E}{o_1} \nabla V^\pi(o_1) =EcEo1∇Vπ(o1)
= E c E o 1 ∇ ∑ a 1 π ( a 1 ∣ o 1 ) Q π ( o 1 , a 1 ) = \mathbb{E}c \mathbb{E}{o_1} \nabla \left \\sum_{a_1} \\pi(a_1 \| o_1) Q\^\\pi(o_1, a_1) \\right =EcEo1∇a1∑π(a1∣o1)Qπ(o1,a1)
= E c E o 1 ∑ a 1 ( ∇ π ( a 1 ∣ o 1 ) ) Q π ( o 1 , a 1 ) + ∑ a 1 π ( a 1 ∣ o 1 ) ∇ Q π ( o 1 , a 1 ) = \mathbb{E}c \mathbb{E}{o_1} \left \\sum_{a_1} (\\nabla \\pi(a_1 \| o_1)) Q\^\\pi(o_1, a_1) + \\sum_{a_1} \\pi(a_1 \| o_1) \\nabla Q\^\\pi(o_1, a_1) \\right =EcEo1a1∑(∇π(a1∣o1))Qπ(o1,a1)+a1∑π(a1∣o1)∇Qπ(o1,a1)
= E c E o 1 ∑ a 1 π ( a 1 ∣ o 1 ) ( ∇ log π ( a 1 ∣ o 1 ) ) Q π ( o 1 , a 1 ) + ∑ a 1 π ( a 1 ∣ o 1 ) ∇ Q π ( o 1 , a 1 ) = \mathbb{E}c \mathbb{E}{o_1} \left \\sum_{a_1} \\pi(a_1 \| o_1) (\\nabla \\log \\pi(a_1 \| o_1)) Q\^\\pi(o_1, a_1) + \\sum_{a_1} \\pi(a_1 \| o_1) \\nabla Q\^\\pi(o_1, a_1) \\right =EcEo1a1∑π(a1∣o1)(∇logπ(a1∣o1))Qπ(o1,a1)+a1∑π(a1∣o1)∇Qπ(o1,a1)
= E c E o 1 E a 1 ( ∇ log π ( a 1 ∣ o 1 ) ) Q π ( o 1 , a 1 ) + ∑ a 1 π ( a 1 ∣ o 1 ) ∇ Q π ( o 1 , a 1 ) = \mathbb{E}c \mathbb{E}{o_1} \left \\mathbb{E}_{a_1} (\\nabla \\log \\pi(a_1 \| o_1)) Q\^\\pi(o_1, a_1) + \\sum_{a_1} \\pi(a_1 \| o_1) \\nabla Q\^\\pi(o_1, a_1) \\right =EcEo1Ea1(∇logπ(a1∣o1))Qπ(o1,a1)+a1∑π(a1∣o1)∇Qπ(o1,a1)
= E c E o 1 E a 1 ( ∇ log π ( a 1 ∣ o 1 ) ) Q π ( o 1 , a 1 ) + E a 1 E o 2 ∇ V π ( o 2 ) = \mathbb{E}c \mathbb{E}{o_1} \left \\mathbb{E}_{a_1} (\\nabla \\log \\pi(a_1 \| o_1)) Q\^\\pi(o_1, a_1) + \\mathbb{E}_{a_1} \\mathbb{E}_{o_2} \\nabla V\^\\pi(o_2) \\right =EcEo1Ea1(∇logπ(a1∣o1))Qπ(o1,a1)+Ea1Eo2∇Vπ(o2)
= E c ∑ t = 1 N E o t , a t Q π ( o t , a t ) ∇ log π ( a t ∣ o t ) = \mathbb{E}c \sum{t=1}^N \mathbb{E}_{o_t, a_t} Q^\pi(o_t, a_t) \nabla \log \pi(a_t | o_t) =Ect=1∑NEot,atQπ(ot,at)∇logπ(at∣ot)
继续之前,我们需要先展示一个有用的等式:
E o t , a t V π ( o t ) ∇ log π ( a t ∣ o t ) = E o t ∑ a π ( a t ∣ o t ) V π ( o t ) ∇ log π ( a t ∣ o t ) \mathbb{E}{o_t, a_t} V^\pi(o_t) \nabla \log \pi(a_t | o_t) = \mathbb{E}{o_t} \sum_a \pi(a_t | o_t) V^\pi(o_t) \nabla \log \pi(a_t | o_t) Eot,atVπ(ot)∇logπ(at∣ot)=Eota∑π(at∣ot)Vπ(ot)∇logπ(at∣ot)
= E o t ∑ a V π ( o t ) ∇ π ( a t ∣ o t ) = \mathbb{E}_{o_t} \sum_a V^\pi(o_t) \nabla \pi(a_t | o_t) =Eota∑Vπ(ot)∇π(at∣ot)
= E o t V π ( o t ) ∇ ∑ a π ( a t ∣ o t ) = \mathbb{E}_{o_t} V^\pi(o_t) \nabla \sum_a \pi(a_t | o_t) =EotVπ(ot)∇a∑π(at∣ot)
= E o t V π ( o t ) ∇ 1 = 0 = \mathbb{E}_{o_t} V^\pi(o_t) \nabla 1 = 0 =EotVπ(ot)∇1=0
因此,我们可以在策略梯度的表达式中使用优势函数代替 Q 函数:
∇ E τ ∼ π ( ∑ t = 1 N r ( o t , a t , c ) ) = E c ∑ t = 1 N E o t , a t Q π ( o t , a t ) ∇ log π ( a t ∣ o t ) \nabla \mathbb{E}{\tau \sim \pi} \left( \sum{t=1}^N r(o_t, a_t, c) \right) = \mathbb{E}c \sum{t=1}^N \mathbb{E}_{o_t, a_t} Q^\pi(o_t, a_t) \nabla \log \pi(a_t | o_t) ∇Eτ∼π(t=1∑Nr(ot,at,c))=Ect=1∑NEot,atQπ(ot,at)∇logπ(at∣ot)
= E c ∑ t = 1 N E o t , a t ( Q π ( o t , a t ) − V π ( o t ) ) ∇ log π ( a t ∣ o t ) = \mathbb{E}c \sum{t=1}^N \mathbb{E}_{o_t, a_t} \left( Q^\pi(o_t, a_t) - V^\pi(o_t) \right) \nabla \log \pi(a_t | o_t) =Ect=1∑NEot,at(Qπ(ot,at)−Vπ(ot))∇logπ(at∣ot)
= E c ∑ t = 1 N E o t , a t A π ( o t , a t ) ∇ log π ( a t ∣ o t ) = \mathbb{E}c \sum{t=1}^N \mathbb{E}_{o_t, a_t} A^\pi(o_t, a_t) \nabla \log \pi(a_t | o_t) =Ect=1∑NEot,atAπ(ot,at)∇logπ(at∣ot)
= ∑ t = 1 N E o t , a t ( ∇ log π ( a t ∣ o t ) ) E c A π ( o t , a t ) = \sum_{t=1}^N \mathbb{E}_{o_t, a_t} (\nabla \log \pi(a_t | o_t)) \mathbb{E}_c A^\pi(o_t, a_t) =t=1∑NEot,at(∇logπ(at∣ot))EcAπ(ot,at)
= ∑ t = 1 N E o t , a t ( ∇ log π ( a t ∣ o t ) ) E c A π ( o t , a t , c ) = \sum_{t=1}^N \mathbb{E}_{o_t, a_t} (\nabla \log \pi(a_t | o_t)) \mathbb{E}_c A^\pi(o_t, a_t, c) =t=1∑NEot,at(∇logπ(at∣ot))EcAπ(ot,at,c)
= E c ∑ t = 1 N E o t , a t ( ∇ log π ( a t ∣ o t ) ) A π ( o t , a t , c ) = \mathbb{E}c \sum{t=1}^N \mathbb{E}_{o_t, a_t} (\nabla \log \pi(a_t | o_t)) A^\pi(o_t, a_t, c) =Ect=1∑NEot,at(∇logπ(at∣ot))Aπ(ot,at,c)
其中,倒数第二个等式源于以下事实:
E c ∼ d t π ( ⋅ ∣ o t , a t ) A π ( o t , a t , c ) = A π ( o t , a t ) \mathbb{E}_{c \sim d_t^\pi(\cdot | o_t, a_t)} A^\pi(o_t, a_t, c) = A^\pi(o_t, a_t) Ec∼dtπ(⋅∣ot,at)Aπ(ot,at,c)=Aπ(ot,at)
附录 C 提示词
为了完整性,我们在图 4 中包含了用于在后端编程上测试不同模型的提示词,在图 5 中包含了用于在前端设计上测试不同模型的提示词。
后端编程提示词 (图 4)
text
你是一个乐于助人的 LLM 智能体。
你的任务是帮助人类用户解决他们的问题,特别是 Python 编程。
1) 请注意,该问题是高度个性化的,因此你需要通过向人类用户询问有关某些隐藏信息和隐含约束的问题来显式收集信息。
你应该尝试提出澄清问题。
2) 请注意,你不应该向人类用户提出复杂的问题,因为他们只会用两句话简短地回答问题。
3) 当你收集了足够的信息来回答时,在你的回复开头说 "I WANT TO ANSWER:" 并提供你的最终答案。
4) 请注意,你只能在 10 轮来回交互之内与人类用户互动,你必须在对话结束前提供最终答案。
5) 你在对人类的回复中应尽可能简短。
如果你认为你已经收集了足够的信息来解决这个问题,在你的回复中应该包含 "I WANT TO ANSWER:"。
在 "I WANT TO ANSWER:" 之后直接输出原始的 Python 代码。
在此对话中仅完成紧接其后的智能体回复:
前端设计提示词 (图 5)
text
你是一个乐于助人的 LLM 智能体。你的任务是帮助人类用户使用 HTML 和 Tailwind CSS 编写一个设计良好的完整网站。在 <html> 标签内编写代码。编写关于该业务的真实且长句的描述。你不需要包含图像,但如果包含,只能使用此来源 https://picsum.photos/id/48/W/H,并将 W 和 H 替换为图像的宽度和高度。保持 id 相同,仅使用 id 48 的图像。
1) 请注意,该问题是高度个性化的,因此你需要进行几轮修改。
2) 当你收集了足够的信息来回答时,在你的回复开头说 "I WANT TO ANSWER:" 并提供你的最终答案。
3) 请注意,你只能在 10 轮来回交互之内与人类用户互动,你必须在对话结束前提供最终答案。
4) 你将由最终答案的质量和对话的效率共同判定。
5) 你在对人类用户的回复中只能包含一个原始 HTML 和 Tailwind CSS 代码片段(包裹在 html 标签中),以询问所提议的设计与人类用户想要的有什么不同。这个原始 HTML 和 Tailwind CSS 代码片段(包裹在 html 标签中)将被渲染,以便人类看到网页的截图。人类用户将通过对比你渲染的网页与人类用户心中所想的网页来进行回复。
6) 你需要确保你的 HTML 网页看起来与人类用户想要的完全一致,包括整体布局、导航栏、背景颜色等。
7) 人类用户只能看到你渲染的图像并根据渲染的图像提供建议,而不能看任何文本问题。
首先输出你对理解问题和用户偏好(如函数名称、输入格式、输出格式等)剩余不确定性的思考。然后说 "OUTPUT:\n" 并紧接着提供你提议的 HTML。
附录 D 不同信用分配方法的定性对比
我们在图 6 中展示了不同信用分配方法的定性对比结果。
首先,我们观察到 LLM-as-a-Judge 很容易被回复的长度和格式所干扰,而没有实际关注其对于任务成功的实用性。
此外,尽管是深度 RL 文献中的自然实践,价值函数在未见过的任务中无法合理预测未来的预期效用。具体而言,它预测第一个候选回复有 97% 的概率引导智能体取得最终成功,尽管这只是 10 轮中的第二轮,且该候选回复的表达方式非常混乱。
相比之下,SWEET-RL 能够为第二个回复给出更高的优势得分,因为在此任务中,智能体弄清楚"返回的列表是否可以包含重复的对象"是至关重要的。这显示了 SWEET-RL 精心进行 RL 算法设计选择的重要性,也表明训练价值函数的惯用做法在未见过的任务中可能会泛化得极差。
(图 6 定性示例细节)
- 交互历史 :
- 用户:"我希望你写一个 Python 函数,能够识别一个集合中的对称对象。该函数应该输入一个对象列表(其中每个对象是一个坐标元组)和一个要检查对称性的轴列表。该函数应该返回一个在一个给定轴上对称的对象列表。"
- 智能体(第一轮提问):"1. 对象的元组中是什么类型的坐标(例如,2D,3D 等)?2. 轴是以元组形式还是其他格式提供(例如,(x, y), (x, y, z),或者是第 n 个轴的数值索引等)?"
- 用户:"例如,如果一个对象是一个 (x, y, z) 元组,那么轴将作为一个整数列表提供,如 0, 1, 2,其中 0 对应 x 轴,1 对应 y 轴,2 对应 z 轴。"
- 候选后续动作(智能体第二轮可选动作) :
- 动作 1(过于冗长、纠结于无关细节):提问关于多轴对称、原点、缩放等。
- 动作 2(直击要害,关键问题):提问"返回的列表是否应该包含重复对象(即跨同一轴互为镜像的对象),或者列表是否应该对每个对称对仅包含一次?"
- 不同方法评分 :
- LLM-as-a-Judge :"智能体 2 的回答是一个好的开始,但没有显式询问关于对称性定义的一些关键信息。相反,智能体 1 提问问题的相关性对于实现准确的代码至关重要。------判定智能体 1 获胜 "。(判定错误)
- 价值函数 (Value Function) :动作 1 得分 0.97 ,动作 2 得分 0.78 。(判定错误)
- SWEET-RL (本工作) :动作 1 得分 -80.8 ,动作 2 得分 -32.4 (分值越大优势越高)。(成功判定动作 2 的优势更高)
附录 E 完整定性示例
为了展示 ColBench 中任务的难度水平并提供不同模型的定性对比,我们在本节中包含了完整的交互轨迹示例。
后端编程完整轨迹示例 (图 7 & 图 8)
-
基准:测试集 #84
-
模型:SWEET-RL Llama-3.1-8B-Instruct
-
交互过程 :
-
用户 :我需要一个 Python 函数,根据部落的祖先和人口统计数据确定政府是否应该给予该部落认可。函数签名是:
def recognize_tribe(ancestral_data, demographic_stats) -
智能体 :为了创建该函数,我需要关于输入和认可标准的更多信息。你能告诉我
ancestral_data和demographic_stats变量在这个函数中代表什么吗?例如,它们是列表、字典还是别的什么?另外,在决定是否给予部落认可时,函数应该考虑哪些关键因素?有什么我应该知道的具体规则或条件吗? -
用户 :
ancestral_data是一个包含部落祖先信息的字典,demographic_stats是一个字典列表,每个字典代表一个人口统计指标,包含 'ancestry' 和 'documents' 等键。认可的关键因素包括部落的祖先比例和某些文件的存在,但我不太确定具体的祖先比例和文件要求是什么。 -
智能体:......(继续追问"祖先比例"和"某些文件"的具体含义)。
-
用户:我不太确定具体的比例,但我认为它是属于特定祖先的部落人口比例。所需的文件是祖先证书(ancestral certificate)、身份证明(identity proof)和部落归属(tribal affiliation),但我不知道这些是否是唯一的,或者是否有其他条件需要满足。
-
智能体:......(继续澄清是否这三个文件都必须存在,以及祖先比例在数据中是如何定义的)。
-
用户 :我认为所有这三个文件(祖先证书、身份证明、部落归属)都期望存在于
demographic_stats列表中。我不确定祖先比例的具体数值,但我认为它是一个特定祖先的预定义比例。 -
智能体:......(总结所有已知条件:1. 三个文件必须全部存在;2. 已有认可标志;并尝试通过逻辑判断给出最终代码)。
-
用户 :我认为如果部落满足这两个条件,函数将返回 True,否则返回 False。我不知道具体的祖先比例,但我认为如果根据
ancestral_data该部落已经是被认可的部落,那么它应该直接被认可。 -
智能体(给出最终答案) :
I WANT TO ANSWER:pythondef recognize_tribe(ancestral_data, demographic_stats): # 检查部落是否在 ancestral_data 中已经被认可 is_recognized = ancestral_data.get('recognized', False) # 检查 required documents 是否在 demographic_stats 列表中 has_required_documents = any('ancestral certificate' in stats for stats in demographic_stats) and \ any('identity proof' in stats for stats in demographic_stats) and \ any('tribal affiliation' in stats for stats in demographic_stats) # 如果部落已被认可或者拥有所需的文件,则返回 True return is_recognized or has_required_documents
- 评估结果 :单元测试通过!✅
-
对比之下:
- 图 9(零样本 Llama-3.1-8B-Instruct) :智能体仅问了两轮问题,就急于猜测数据格式并给出代码,导致使用了错误的键名
demographic_stats["ancestry_ratio"]和demographic_stats["documents"],单元测试失败 ❌。 - 图 10(零样本 GPT-4o) :虽然也进行了提问,但由于同样存在"过早下结论"的问题,生成的代码未能匹配隐藏的字典列表结构,单元测试失败 ❌。
前端设计协同轨迹示例 (图 11 - 图 16)
- 基准:测试集 #22
- 需求:创意机构网站:一个俏皮且具有视觉刺激的设计,带有一个对角网格图案,左上角有一个 Logo,以及一个显眼的行动呼吁(CTA)按钮。明亮大胆的配色方案。
- SWEET-RL 表现(图 11 至图 16 完整轮次) :
- 智能体首先输出一段思考,提出其不确定性,并提供第一版 HTML 设计提案。
- 模拟器根据参考图像指出:布局和配色与地面真值不符、文本对齐有偏差、背景颜色和按钮颜色不一致。
- 智能体针对反馈,逐步调整 CSS,如将文字居中(Centered)、更改背景色、改变按钮为紫色等。
- 经过多轮"渲染 - 纠错 - 再微调"的迭代,智能体完美实现了地面真值中的所有细节(包括精细的文本对齐、精确的 Tailwind 颜色 Hex 值如
#6c5ce7,以及正确的图片与文本左右并排布局)。 - 最终评估结果 :图像相似度达 0.883,取得极高分。
这充分展示了经过 SWEET-RL 训练后,LLM 智能体在处理超长文本上下文(每轮包含完整 HTML 代码)时,具备极其出色的多轮纠错与协同优化能力。
1.对于在没有这些知识的情况下执行信息寻求行为的智能体,利用额外的训练时信息可以为信用分配提供一条捷径。 什么是训练时消息
在这句话中,"训练时信息" (原文:training-time information )是指在训练阶段可以获得、但在测试阶段(即智能体实际部署或运行时)无法获得的信息。
这并不是指"训练时接收到的消息/文本",而是一个强化学习和机器学习中的术语。以下是它的具体含义和在这篇论文中的应用:
1. 概念解释:什么算"训练时信息"?
在开发大语言模型智能体时,我们通常有两套截然不同的环境:
- 测试时(推理时/实际运行部署时) :智能体只知道用户当前对它说了什么(交互历史 o t o_t ot)。它不知道用户心里的"完美答案"是什么,必须通过不断提问、摸索来猜测用户的意图。这被称为**"部分可观测"环境**。
- 训练时(在实验室里用数据集训练模型时) :我们作为开发者,手里通常拥有地面真值(Ground-truth)/参考答案 。例如:
- 在后端编程任务中 :我们手里有**"参考代码"和"隐藏的单元测试"**。
- 在前端设计任务中:我们手里有**"参考网页的设计原图"**。
这些"参考代码"、"参考网页"就是额外的训练时信息( c c c)。
2. 为什么说它能为"信用分配"提供"捷径"?
- 信用分配的难题:如果智能体和用户沟通了 10 轮,最后写出了错误的代码。在没有"训练时信息"的情况下,普通的强化学习算法只知道"最后失败了",但很难判断到底是第 2 轮问错了问题,还是第 5 轮理解错了意思。这就叫信用分配困难。
- "捷径"的原理 :SWEET-RL 算法在训练时,把"参考答案"(训练时信息)悄悄喂给了一个"裁判"模型(即评论家 Critic)。
因为"裁判"手里拿着正确答案,所以智能体在第 2 轮刚刚提问完,"裁判"立刻就能通过对比正确答案,敏锐地判断出:"这个问题问得非常好,直接切中了写出正确代码的核心,给你打高分!"
这种非对称的信息差,让模型不需要等到 10 轮结束,就能在每一步(Turn-level)获得精准的反馈,从而为算法的信用分配提供了一条极速通关的"捷径"。
2 我们还建议通过每个轮次动作的平均对数概率来参数化优势函数,并通过轨迹级别的 Bradley-Terry 目标函数来训练该优势函数。我们发现,与在 LLM 的隐藏状态之上训练价值头的常见做法相比,这种目标函数能更好地与预训练的 LLM 保持对齐,从而带来优异的泛化结果。 这两种分别怎么做的, 用大模型的例子举例
为了深入理解这两种方法的区别,我们先来明确它们共同要解决的任务:如何让大模型扮演"裁判"(评论家 Critic),给智能体在某一步说的话(动作 a t a_t at)打分?
我们用后端编程任务中的一个具体场景来举例:
- 当前交互历史(输入 o t o_t ot):用户说:"我想写个判断三角形形状的函数。"
- 智能体说的话(动作 a t a_t at):智能体问:"请问输入的三条边会存在负数或零的情况吗?"
- 参考答案(训练时信息 c c c) :参考代码里确实有
if a <= 0:的边界条件判定。
现在,我们要训练一个大模型作为"裁判",给智能体说的这句话打分。以下是这两种方法的具体做法:
方法一:在 LLM 的隐藏状态之上训练价值头(常见做法)
这是传统深度强化学习(如 PPO 算法中常用的 Value Network)在 LLM 上的延伸。
1. 它是怎么做的?
这种方法把大模型当成一个特征提取器 ,并在大模型的最顶层"强行"外接一个线性层(称为 Value Head / 价值头 ),将其变成一个回归(打分)模型。
- 步骤 :
- 将输入(历史 o t o_t ot + 动作 a t a_t at + 参考答案 c c c)输入给大模型。
- 大模型通过多层 Transformer 计算,输出最后一个 Token(或所有 Token 的平均)的隐藏状态向量(Hidden State)。这是一个高维向量(例如 Llama-3-8B 的向量维度是 4096)。
- 用一个外接的、随机初始化的线性投影层 Value Head ∈ R 4096 × 1 \text{Value Head} \in \mathbb{R}^{4096 \times 1} Value Head∈R4096×1,乘以这个高维向量,直接输出一个实数标量 (例如:
0.85)。 - 训练目标 :使用均方误差(MSE Loss)或交叉熵损失,强行让这个输出的实数逼近最终的真实回报(比如任务成功是
1.0,失败是0)。
2. 为什么它泛化效果差?
- 格式不对齐:LLM 预训练时做的是"预测下一个 Token"(生成概率分布),而现在强迫它输出一个绝对的连续实数(回归任务)。大模型天然不擅长做精确的绝对数值回归。
- 破坏表征:外接的 Value Head 是随机初始化的,在微调数据较少时,为了拟合这个打分头,很容易破坏大模型原本强大的预训练表征,导致泛化能力崩溃。
方法二:通过动作的平均对数概率参数化 + 轨迹级 BT 目标训练(SWEET-RL 的做法)
这是本论文提出的创新方法,它完全不改变大模型的结构和输出格式,而是巧妙地通过**"生成概率"**来间接打分。
1. 它是怎么做的?
我们不外接任何打分头,而是直接利用大模型原生的 Next-Token Prediction(下一个 Token 预测) 的概率来作为分数。
-
步骤一:如何打分(参数化优势函数)
假设智能体说的话 a t a_t at 是:"请问输入的三条边会存在负数吗?"(共 13 个 Token)。
- 我们让"裁判"大模型在给定(历史 o t o_t ot + 参考答案 c c c)的条件下,去计算生成这 13 个 Token 的概率 (对数概率 log P \log P logP)。
- 我们同时用一个不动的"参考模型"(未训练的原始模型)也计算一次概率。
- 优势得分 = 1 13 ∑ l = 1 13 log P 裁判模型 ( 第 l 个 Token ) − log P 参考模型 ( 第 l 个 Token ) \frac{1}{13} \sum_{l=1}^{13} \left \\log P_{\\text{裁判模型}}(\\text{第 } l \\text{ 个 Token}) - \\log P_{\\text{参考模型}}(\\text{第 } l \\text{ 个 Token}) \\right 131∑l=113logP裁判模型(第 l 个 Token)−logP参考模型(第 l 个 Token)。
简单来说,如果"裁判模型"觉得智能体这句话问得非常关键、非常合理,它生成这句话的意愿(概率)就会比原始模型高,相减之后的得分就是正的、且分值很高。
-
步骤二:如何训练(轨迹级别 Bradley-Terry 目标函数)
我们手里有两成对的轨迹:一条最终成功了( τ + \tau^+ τ+),一条失败了( τ − \tau^- τ−)。
- 我们把成功轨迹中每一轮动作的"优势得分"加起来: ∑ A ( τ + ) \sum A(\tau^+) ∑A(τ+);
- 把失败轨迹中每一轮动作的"优势得分"也加起来: ∑ A ( τ − ) \sum A(\tau^-) ∑A(τ−);
- 训练目标(BT Loss) :我们通过优化"裁判模型"的参数,使得成功轨迹的总得分显著大于 失败轨迹的总得分。公式为:
Loss = − log σ ( ∑ A ( τ + ) − ∑ A ( τ − ) ) \text{Loss} = -\log \sigma \left( \sum A(\tau^+) - \sum A(\tau^-) \right) Loss=−logσ(∑A(τ+)−∑A(τ−))
通过这个损失函数进行反向传播,大模型就会自动调整自己的生成概率,使得"好动作"的概率变高,"坏动作"的概率变低。
2. 为什么它泛化效果好?
- 与预训练完美对齐:在整个训练过程中,"裁判"大模型依然在做它最擅长的事情------计算 Token 的生成概率(生成式目标),没有引入任何外接的随机打分头。
- 充分保留推理能力:由于任务形式没有变,大模型在预训练阶段学到的丰富常识和推理逻辑(例如:理解为什么"边界条件"对编程很重要)可以百分之百地迁移到"裁判"任务中,因此在面对从未见过的测试任务时,泛化表现极强。

3 没有看懂结合公式和数据, 以及训练的例子,举例说明
没关系,我们结合您上传的架构图,用一个最直观的**"数字和硬数据"**例子,把这两个公式的运作过程彻底拆解一遍。
我们继续使用大模型做后端编程的例子。
1. 我们的实验数据准备
在训练阶段,我们手头有两成对的完整交互轨迹(来自数据集):
- 额外训练时信息 c c c(对大模型可见) :正确的参考代码(代码里包含处理负数
if x < 0:的逻辑)。 - 好的轨迹 τ + \tau^+ τ+(最终通过了测试,奖励 r = 1.0 r = 1.0 r=1.0) :
- 第 1 轮动作 a 1 + a_1^+ a1+ :智能体问:"输入会有负数吗? "(长度 L = 5 L = 5 L=5 个 Token)
- 差的轨迹 τ − \tau^- τ−(最终失败了,奖励 r = 0.0 r = 0.0 r=0.0) :
- 第 1 轮动作 a 1 − a_1^- a1− :智能体问:"今天天气怎么样? "(长度 L = 5 L = 5 L=5 个 Token)
为了简单起见,我们假设每条轨迹只有这 1 轮交互(即 t = 1 t=1 t=1)。
2. 第一阶段:公式 (3) 是如何给这一步打分的?
对应架构图左侧:计算优势得分 A θ ( o t , a t , c ) A_\theta(o_t, a_t, c) Aθ(ot,at,c)。
我们有两个模型:
- 🔥 正在训练的 Critic π θ \pi_\theta πθ
- ❄️ 冻结的 Reference π ref \pi_{\text{ref}} πref
步骤 A:给"好动作 a 1 + a_1^+ a1+"(输入会有负数吗?)打分
我们将 c c c (参考代码)、 o 1 o_1 o1 (初始上下文) 和 a 1 + a_1^+ a1+ 输入给两个模型,看它们预测这 5 个 Token 的对数概率(Log Probability):
| Token 位置 l l l | Token 词 | Critic π θ \pi_\theta πθ 预测概率 P θ P_\theta Pθ | 对数概率 log P θ \log P_\theta logPθ | Ref π ref \pi_{\text{ref}} πref 预测概率 P ref P_{\text{ref}} Pref | 对数概率 log P ref \log P_{\text{ref}} logPref |
|---|---|---|---|---|---|
| 1 | 输入 | 0.40 | -0.91 | 0.30 | -1.20 |
| 2 | 会 | 0.50 | -0.91 | 0.35 | -1.05 |
| 3 | 有 | 0.60 | -0.51 | 0.40 | -0.91 |
| 4 | 负数 | 0.70 | -0.35 | 0.20 | -1.60 |
| 5 | 吗 | 0.90 | -0.35 | 0.80 | -0.22 |
根据公式 (3) :
A θ ( o t , a t , c ) = 1 L ∑ l = 1 L log π θ ( a t l ) − log π ref ( a t l ) A_\theta(o_t, a_t, c) = \frac{1}{L} \sum_{l=1}^L \left \\log \\pi_\\theta(a_t\^l) - \\log \\pi_{\\text{ref}}(a_t\^l) \\right Aθ(ot,at,c)=L1l=1∑Llogπθ(atl)−logπref(atl)
我们将每个 Token 的 ( log P θ − log P ref ) (\log P_\theta - \log P_{\text{ref}}) (logPθ−logPref) 算出来并相加:
- Token 1: − 0.91 − ( − 1.20 ) = + 0.29 -0.91 - (-1.20) = +0.29 −0.91−(−1.20)=+0.29
- Token 2: − 0.91 − ( − 1.05 ) = + 0.14 -0.91 - (-1.05) = +0.14 −0.91−(−1.05)=+0.14
- Token 3: − 0.51 − ( − 0.91 ) = + 0.40 -0.51 - (-0.91) = +0.40 −0.51−(−0.91)=+0.40
- Token 4: − 0.35 − ( − 1.60 ) = + 1.25 -0.35 - (-1.60) = +1.25 −0.35−(−1.60)=+1.25 (因为拿着参考答案 c c c,知道"负数"是关键,所以 Critic 预测概率大幅提升)
- Token 5: − 0.35 − ( − 0.22 ) = − 0.13 -0.35 - (-0.22) = -0.13 −0.35−(−0.22)=−0.13
总和 = 0.29 + 0.14 + 0.40 + 1.25 − 0.13 = 1.95 0.29 + 0.14 + 0.40 + 1.25 - 0.13 = 1.95 0.29+0.14+0.40+1.25−0.13=1.95
归一化优势得分 A θ ( o 1 , a 1 + , c ) A_\theta(o_1, a_1^+, c) Aθ(o1,a1+,c) = 1.95 5 = 0.39 \frac{1.95}{5} = \mathbf{0.39} 51.95=0.39
步骤 B:给"坏动作 a 1 − a_1^- a1−"(今天天气怎么样?)打分
同样的方法,因为这句话和编程任务毫无关系,Critic π θ \pi_\theta πθ 预测它的概率会非常低,甚至比 Reference 模型还低。
假设计算后得出:
归一化优势得分 A θ ( o 1 , a 1 − , c ) A_\theta(o_1, a_1^-, c) Aθ(o1,a1−,c) = − 0.85 \mathbf{-0.85} −0.85
3. 公式 (2) 又是如何训练这个 Critic 的?
对应架构图最左侧:Bradley-Terry (BT) Optimization。
我们现在有了两个分数:
- 好动作得分 A + = 0.39 A^+ = 0.39 A+=0.39
- 坏动作得分 A − = − 0.85 A^- = -0.85 A−=−0.85
公式 (2) (为了简化,超参数 β = 1 \beta = 1 β=1):
J A ( θ ) = − log σ ( A θ ( o 1 , a 1 + , c ) − A θ ( o 1 , a 1 − , c ) ) \mathcal{J}A(\theta) = - \log \sigma \left( A\theta(o_1, a_1^+, c) - A_\theta(o_1, a_1^-, c) \right) JA(θ)=−logσ(Aθ(o1,a1+,c)−Aθ(o1,a1−,c))
- 计算分差 : A + − A − = 0.39 − ( − 0.85 ) = 1.24 A^+ - A^- = 0.39 - (-0.85) = 1.24 A+−A−=0.39−(−0.85)=1.24
- 输入 Sigmoid 函数 σ \sigma σ : σ ( 1.24 ) ≈ 0.775 \sigma(1.24) \approx 0.775 σ(1.24)≈0.775
- 计算损失 Loss : − log ( 0.775 ) ≈ 0.25 -\log(0.775) \approx \mathbf{0.25} −log(0.775)≈0.25
训练的目标是让这个 Loss 趋近于 0:
- 如果要 Loss 变小,括号里的分差 A + − A − A^+ - A^- A+−A− 就必须变得更大。
- 为了拉大分差,反向传播算法会更新 Critic π θ \pi_\theta πθ 的权重 ,使其:
- 生成"输入会有负数吗? "的概率 π θ ( a 1 + ) \pi_\theta(a_1^+) πθ(a1+) 进一步增高 (得分 A + A^+ A+ 往上走)。
- 生成"今天天气怎么样? "的概率 π θ ( a 1 − ) \pi_\theta(a_1^-) πθ(a1−) 进一步降低 (得分 A − A^- A− 往下走)。
4. 第二阶段:公式 (4) 怎么训练真正上场的 Actor?
对应架构图右侧:Policy Improvement(策略改进)。
请注意:上场演戏的 Actor π ϕ \pi_\phi πϕ 是看不到参考答案 c c c 的!
-
Actor 生成候选动作 :
我们让 Actor π ϕ \pi_\phi πϕ 在只有历史 o t o_t ot(看不到 c c c)的情况下,生出了 16 个候选回答。
-
Critic 充当裁判打分 :
我们把这 16 个回答送给刚刚训练好的 Critic π θ \pi_\theta πθ (Critic 带着参考答案 c c c 睁眼看世界)。
- Critic 发现其中第 3 个回答 a ( 3 ) a^{(3)} a(3) 提到了"负数和零",打分为 + 0.50 +0.50 +0.50(列为 a t + a_t^+ at+)。
- 第 8 个回答 a ( 8 ) a^{(8)} a(8) 只是复述了用户的话,打分为 − 0.60 -0.60 −0.60(列为 a t − a_t^- at−)。
-
使用 DPO 损失公式 (4) 训练 Actor :
J π ( ϕ ) = − log σ ( β ′ log π ϕ ( a t + ∣ o t ) π ref ( a t + ∣ o t ) − β ′ log π ϕ ( a t − ∣ o t ) π ref ( a t − ∣ o t ) ) \mathcal{J}\pi(\phi) = - \log \sigma \left( \beta' \log \frac{\pi\phi(a_t^+ | o_t)}{\pi_{\text{ref}}(a_t^+ | o_t)} - \beta' \log \frac{\pi_\phi(a_t^- | o_t)}{\pi_{\text{ref}}(a_t^- | o_t)} \right) Jπ(ϕ)=−logσ(β′logπref(at+∣ot)πϕ(at+∣ot)−β′logπref(at−∣ot)πϕ(at−∣ot))
这个公式在不改变 Actor 模型输入(不给它看 c c c)的情况下,直接强迫 Actor 提高生成好动作 a t + a_t^+ at+ 的概率,降低生成坏动作 a t − a_t^- at− 的概率。
最终结果 :Actor 虽然自始至终没见过参考答案 c c c,但在 Critic 这个"开挂裁判"的悉心调教下,无形中掌握了"主动寻找核心边界条件(如负数)"的聪明策略!
4 Reference 网络既然有了? 为啥还训练critic。 reference 网络哪来的?
这是一个非常核心且深刻的问题!很多接触强化学习和大模型偏好优化(如DPO)的人都会产生这个疑问:"既然已经有一个可以用来算概率的 Reference 网络了,为什么还要训练一个 Critic 呢?这个 Reference 网络到底是从哪来的?"
我们来逐一解答这两个疑问:
一、 Reference 网络是从哪里来的?
Reference(参考)网络,其实就是我们最开始的"种子模型"(Seed Model)。
它是完全没有经过多轮协同强化学习训练的原始大模型。
- 来源 :在本论文中,Reference 网络就是官方开源的 Llama-3.1-8B-Instruct(或者是经过初步监督微调 SFT 后的模型)。
- 它的状态:在整个训练过程中,它的参数是**完全冻结(Frozen)**的,不进行任何更新。
二、 既然有了 Reference,为什么不能直接用它,还要训练 Critic?
因为:Reference 网络是个"笨裁判",它根本不知道什么是"好动作",而我们需要通过训练培养出一个"聪明裁判"(Critic)。
我们用刚才的例子来对比它们两个:
- 任务 :判断智能体问的"输入会有负数吗?"是不是一个好问题。
- 输入给模型 :历史 o t o_t ot + 参考答案 c c c(包含了正确的代码)。
1. 为什么直接用 Reference 网络不行?
Reference 网络(普通的 Llama-3.1-8B)虽然很聪明,会写代码,但它没有经过"协同寻找边界条件"的专门训练。
当你把(历史 o t o_t ot + 参考答案 c c c)输入给 Reference 网络时:
- 它觉得"输入会有负数吗?"这句话挺通顺的。
- 但它同样觉得"这三角形好看吗? "或者"好的,我知道了。"这些废话也很通顺。
- 它预测这几句话的概率可能差不多(比如都是 -1.0 左右)。它无法敏锐地给出有区分度的分值,因为它没有"协同解决问题"的策略意识。
2. 训练 Critic 的目的是什么?
Critic 网络( π θ \pi_\theta πθ)在刚开始训练时,和 Reference 网络是完全一模一样的。
但是,在训练过程中,我们通过 Bradley-Terry 损失函数(公式 2) 喂给 Critic 大量的对比数据:
- "喂,Critic,这条最终成功的轨迹里,智能体问了'负数';那条最终失败的轨迹里,智能体问了'天气'。你要把它们的分差拉大!"
通过成千上万次这样的训练,Critic 逐渐被"点悟"了:
- 它学会了把"参考答案 c c c"和"智能体的提问 a t a_t at"进行深度关联推理。
- 它发现:"哦!只要 c c c 里面有
if x < 0,而智能体提问了负数,这就是天作之合,我必须把我的生成概率调得极高(比如算出来优势是 + 1.25 +1.25 +1.25)!" - 如果智能体问了废话,它就会把概率压得极低。
三、 总结:两者的角色关系
在公式(3)中:
A θ = log π θ ( Critic ) − log π ref ( Reference ) A_\theta = \log \pi_\theta(\text{Critic}) - \log \pi_{\text{ref}}(\text{Reference}) Aθ=logπθ(Critic)−logπref(Reference)
- Reference 网络( π ref \pi_{\text{ref}} πref)是"基准线":它用来提供一个普通语言模型的"底噪"概率,确保分数不会因为句子本身的长短或常用词而发生偏差(比如防止因为"的、了、呢"等常用词自然概率高而给高分)。
- Critic 网络( π θ \pi_\theta πθ)是"专业裁判":它是我们要训练的对象。它在基准线之上,专门去学习**"哪些动作才是能导致任务成功的关键动作"**。
如果没有 Critic,只有 Reference,那我们的得分永远是: log π ref − log π ref = 0 \log \pi_{\text{ref}} - \log \pi_{\text{ref}} = 0 logπref−logπref=0,也就是根本无法给任何动作打分。
您的直觉非常敏锐!实际上,论文的正文部分并没有用非常通俗的语言去详细解释为什么要减去 π ref \pi_{\text{ref}} πref,而是直接给出了这个经典的公式。
这是因为,这种"当前模型对数概率减去参考模型对数概率( log π θ − log π ref \log \pi_\theta - \log \pi_{\text{ref}} logπθ−logπref)"的设计,是近年来大模型 RLHF 和偏好优化(尤其是 DPO - Direct Preference Optimization 及其变体)中的标准通用范式。作者在此处直接沿用了这一成熟的学术界共识。
为了让您彻底明白,我们不用生硬的学术词汇,而是结合文中的公式 和直觉例子来解释:为什么要减去 Reference?如果不减去会发生什么灾难?
1. 文中公式的线索: 1 L \frac{1}{L} L1 和 Reference 的关联
请看论文中的等式 (3) :
A θ ( o t , a t , c ) = 1 L ∑ l = 1 l log π θ ( a t l ∣ ... ) π ref ( a t l ∣ ... ) A_\theta(o_t, a_t, c) = \frac{1}{L} \sum_{l=1}^l \left \\log \\frac{\\pi_\\theta(a_t\^l\|\\dots)}{\\pi_{\\text{ref}}(a_t\^l\|\\dots)} \\right Aθ(ot,at,c)=L1l=1∑llogπref(atl∣...)πθ(atl∣...)
利用对数的性质,括号里可以写成: log π θ ( a t l ) − log π ref ( a t l ) \log \pi_\theta(a_t^l) - \log \pi_{\text{ref}}(a_t^l) logπθ(atl)−logπref(atl)。
文中提到了一句非常关键的解释:
"We find it important to include 1 L \frac{1}{L} L1 to normalize the advantage by the length of the response to stabilize training."
(我们发现,引入 1 L \frac{1}{L} L1 按照回复的长度对优势进行归一化,对于稳定训练至关重要。)
这句话透露了设计这个公式的核心目的:防止模型"作弊"和"不稳定" 。而减去 π ref \pi_{\text{ref}} πref 也是为了同一个目的。
2. 如果不减去 Reference,大模型会怎么"作弊"?
假设我们不减去 Reference,直接把优势函数定义为 Critic 预测自己说的话的概率:
Score = log π θ ( a t ) \text{Score} = \log \pi_\theta(a_t) Score=logπθ(at)
现在,大模型作为"智能体"发现自己可以通过说不同的"话"(动作 a t a_t at)来拿分。它有两句话可以选择:
- 话 A(废话,但非常通顺,全是常用词) :
"好的,没问题,我现在就为您去处理这个事情。 "
(由于这些词在互联网上太常见了,模型预测它们的概率 log π θ \log \pi_\theta logπθ 极高,比如得分:-0.1) - 话 B(关键提问,含有专业冷门词) :
"请问代码需要处理 NumPy 矩阵的边界溢出吗? "
(因为"NumPy、矩阵、溢出"是低频词,模型预测它们的自然概率 log π θ \log \pi_\theta logπθ 偏低,比如得分:-1.5)
灾难发生了 :
如果我们只看 log π θ \log \pi_\theta logπθ,模型会发现:"原来我多说废话、多用常用词,得分就高;而说专业术语得分反而低!"
于是,在强化学习训练中,智能体(Actor)就会被训练成一个只会说漂亮废话的"复配机器",而彻底丧失解决问题的能力。
3. 减去 Reference 是如何解决这个问题的?(直观数据)
现在,我们把 Reference 网络 π ref \pi_{\text{ref}} πref(未训练的基座模型)引入进来,做减法:
场景一:评估"话 A"(漂亮废话)
- Critic 网络 π θ \pi_\theta πθ 预测这句话的概率: log P = − 0.1 \log P = -0.1 logP=−0.1
- Reference 网络 π ref \pi_{\text{ref}} πref (普通模型)预测这句话的概率: log P = − 0.1 \log P = -0.1 logP=−0.1 (普通模型也觉得这句话很通顺)
- 最终得分 = − 0.1 − ( − 0.1 ) = 0 -0.1 - (-0.1) = \mathbf{0} −0.1−(−0.1)=0
- 结果:废话不会得高分,得零分。
场景二:评估"话 B"(直击痛点的专业提问)
- Reference 网络 π ref \pi_{\text{ref}} πref 预测这句话的概率: log P = − 1.5 \log P = -1.5 logP=−1.5(普通模型觉得这个专业词组合有点冷门)
- Critic 网络 π θ \pi_\theta πθ 看了参考答案后,觉得这简直是金子般的提问,预测概率提升到: log P = − 0.5 \log P = -0.5 logP=−0.5
- 最终得分 = − 0.5 − ( − 1.5 ) = + 1.0 -0.5 - (-1.5) = \mathbf{+1.0} −0.5−(−1.5)=+1.0
- 结果:专业且关键的提问得到了极高的正分!
总结
论文公式中减去 π ref \pi_{\text{ref}} πref,就像是物理实验中的**"去皮重"**:
我们称一个苹果的重量时,需要先减去托盘(Reference)的重量,才能得到苹果(动作的真正价值)的净重。
它把语言模型天生的"语言流畅度偏好"给过滤掉了,逼着 Critic 只能根据**"这句话对解决任务有多大贡献"**来给出纯粹的优势得分(Advantage)。
为了进一步使学习目标与"预测下一个 Token"的预训练相对齐,我们通过重新利用 LLM 现有的语言模型输出来参数化优势函数:? 这什么意思?
这句话翻译成通俗的语言,意思其实非常简单:
"为了不破坏大模型原有的超强能力,我们不需要给大模型添加任何新的'零件'(比如随机初始化打分头),而是直接用大模型最擅长的、原生的'吐字概率'来当做分数。"
这里有两点需要拆解,大模型的"预训练目标"是什么?以及"重新利用现有的输出"是指什么?
1. 什么是"预测下一个 Token"的预训练对齐?
大模型(比如 Llama-3)在万亿级的数据集上只学了一件事:
- 给定前面的字,预测下一个最可能出现的字是什么(Next-Token Prediction)。
- 它的输出端,天然是一个计算所有词概率的"语言模型输出头"(LM Head)。
如果我们在大模型上面强行接一个"打分层"(也就是前文提到的价值头 Value Head),强迫它输出一个绝对数字(比如 0.85),这就违背了它预训练的本能。大模型为了迎合这个新零件,会被迫修改自己底层的参数,导致它原本擅长的推理、理解能力发生退化(学术界称之为"灾难性遗忘"或"对齐税")。
2. 什么是"重新利用 LLM 现有的语言模型输出"?
在 SWEET-RL 中,作者没有添加任何新零件,而是直接把"大模型预测下一个字的概率"当成它的打分输出。
我们用具体的**"大模型输出数据"**来看它是怎么重新利用的:
当我们将(历史 o t o_t ot + 动作 a t a_t at + 参考答案 c c c)输入给 Critic 大模型时,大模型在最后一层(LM Head)会输出一个巨大的概率表(包含了词表里所有词的概率):
- 预测下一个词是"苹果"的概率: 0.0001 % 0.0001\% 0.0001%
- 预测下一个词是"今天"的概率: 0.02 % 0.02\% 0.02%
- 预测下一个词是"输入 "的概率:40 % 40\% 40% (即 π θ ( a t 1 ) = 0.4 \pi_\theta(a_t^1) = 0.4 πθ(at1)=0.4)
这个 40 % 40\% 40% ,本来是大模型用来"预测下一个字"的。
但是,SWEET-RL 把这个预测概率直接拿过来当做"参数",代入到优势函数(公式 3)里去算分了。
总结
- 传统做法:强行给大模型接一个打分头,像是在跑车上硬焊了一个拖拉机的挂钩,跑车不仅跑不快(泛化差),还容易坏(训练不稳定)。
- 本文做法(重新利用现有输出):不加任何新挂钩,直接用跑车原本的仪表盘数据(吐字概率)来评估车速。大模型在整个训练中,依然是在做它最习惯的"算概率"工作,因此它的推理、泛化能力得到了完美的保留和利用。
Optimizing the agent by turn-wise advantage 什么是轮级?
在强化学习和大语言模型的语境下,"轮级" (原文:turn-wise 或 turn-level)是指**"以人机交互的每一个单轮(Round/Turn)为基本单位"**。
为了让你彻底明白,我们先对比一下多轮对话中,什么是"轨迹级",什么是"轮级"。
1. 概念对比:轨迹级 vs 轮级
假设智能体和用户进行了一次完整的合作,一共来回对话了 3 轮(即 3 个 Turns),最后通过了测试,拿到了总奖励 r = 1.0 r = 1.0 r=1.0。
- 轨迹级(Trajectory-level) :
指的是把这 3 轮对话看作一个不可分割的整体(即一条轨迹 τ \tau τ) 。- 传统 RLHF 的做法 :只在第 3 轮结束时,给整条轨迹判定一个输赢(比如 1.0 1.0 1.0 分或 0 0 0 分)。它无法得知这 3 轮里,具体哪一轮表现好,哪一轮表现差。
- 轮级(Turn-wise / Turn-level) :
指的是把对话拆开,精准地去评估和优化这 3 轮里每一个单轮(每一 Turn)的动作 。- SWEET-RL 的做法 :第一轮,智能体问了关键问题,给这一轮(Turn 1)打 + 0.8 +0.8 +0.8 分;第二轮,智能体说了句废话,给这一轮(Turn 2)打 − 0.5 -0.5 −0.5 分。
2. "Optimizing the agent by turn-wise advantage" 怎么理解?
这句话的中文意思是:"通过轮级优势(得分)来优化智能体"。
结合架构图的右半部分(Policy Improvement),它的具体操作是:
- 不看全局,只看当前轮(Turn t t t) :
我们把智能体带入到第 t t t 轮的环境中(此时它的输入是当前的交互历史 o t o_t ot)。 - 在这一轮内"选优排优" :
智能体在这一轮里尝试了不同的回答(动作 a t a_t at)。我们的 Critic 裁判只针对当前这一轮的回答 给出优势得分 A θ ( o t , a t , c ) A_\theta(o_t, a_t, c) Aθ(ot,at,c)。 - 精准更新这一轮的策略 :
利用 DPO 算法,让智能体在这一轮(Turn t t t)里,以后遇到类似的情况时,多说那些在本轮得分高的动作,少说在本轮得分低的动作。
总结
"轮级"就是**"把大任务拆解到每一步、每一轮"**。
通过"轮级优势"来优化智能体,就像是教练教你打篮球:教练不会等到整场比赛结束(轨迹级)只告诉你输赢,而是在**每一次传球、每一次投篮(轮级)**时,都当场告诉你这个动作拿了多少优势分,并让你针对这个动作进行纠正和改进。这就是多轮强化学习能够成功的关键。
这是一个极其深刻且直击多轮强化学习核心的问题!
你的直觉非常敏锐:用户的回答确实会不一样,也绝对会影响最终的效果。 但在 ColBench 的设计中,作者通过非常巧妙的机制,不仅解决了这个问题,还保证了训练和对比的绝对公平。
以下是关于"用户输入是否参与训练"以及"如何保证公平"的详细拆解:
一、 用户的输入参与训练了吗?
答案是:用户的输入(模拟器的回答)作为"环境的一部分"参与了训练,但用户的模型参数本身是不更新的。
在训练阶段,数据的流动是这样的:
- **智能体(Agent)**输出一个动作 a t a_t at(比如提问:"输入有负数吗?")。
- **人类模拟器(User)**拿到这个 a t a_t at,结合自己手里的"参考答案 c c c",生成一个回答 o t + 1 o_{t+1} ot+1(比如回答:"是的,至少为 0")。
- 智能体的下一个动作,必须建立在这个新回答 o t + 1 o_{t+1} ot+1 的基础之上。
因此,用户的回答是作为**"上下文状态 o o o"**被喂给智能体的。智能体在训练时,必须学会应对用户各种各样的回答,这正是多轮 RL 训练中非常重要的一部分。
二、 不同的 Agent 导致用户回答不同,这公平吗?
非常公平,而且这正是多轮强化学习(Multi-Turn RL)要测试的核心能力。
如果我们用单一静态的对话数据集(比如固定好的问答)去评估模型,确实存在不公平。但在 ColBench 中,评估是**动态交互(Interactive)**的。
1. 为什么它是公平的?(因为"用户模拟器"是绝对客观和一致的)
在对比不同模型(例如对比 Llama-3.1-8B 和 GPT-4o)时,它们面对的**"用户模拟器"是完全相同的**(比如都是由同一个冻结了参数的 Llama-3.1-70B 扮演,并且拿着相同的参考答案 c c c)。
- 如果 Agent A 很聪明(比如 SWEET-RL):它在第一轮问出了一个非常专业、一针见血的问题。用户模拟器就会给出一个非常有价值、包含大量关键线索的回答。Agent A 顺藤摸瓜,最终完美写出代码。
- 如果 Agent B 很笨(比如普通的零样本模型):它第一轮问了一个无关痛痒的问题("今天天气怎么样")。用户模拟器也会很客气但无用地回答("天气很好,但这对写代码没帮助")。由于 Agent B 错失了良机,它在接下来的轮次中越来越被动,最终失败。
结论 :用户的回答变了,是因为 Agent 自己的行为改变了环境的走向。这就像下围棋,你下了一步妙手,对手(环境)就会陷入苦战;你下了一步臭棋,对手就会占尽优势。这并不是不公平,而恰恰是评估一个智能体**"主动收集信息、掌控对话走向"能力**最公平的方式。
三、 论文是如何在技术上消除"随机性干扰"的?
你可能会担心:即使 Agent 提了相同的问题,大模型扮演的用户由于温度系数(Temperature)的随机采样,给出的回答可能一次好、一次坏,这会不会导致评分不公?
为了确保评估的科学性和绝对公平,ColBench 做了以下两个设计:
- 用户模拟器被"参考答案"严格约束 :
用户模拟器不能胡说八道。在 ColBench 中,用户模拟器被输入了严格的 System Prompt,要求它**"必须且只能"根据手里的参考工件 c c c 进行简短、客观的回答**。这极大地限制了用户回答的随机性,使其表现得像一个精准的 API 接口。 - 多样本统计评估 :
在最终对比时,不是只比一个任务,而是在测试集(包含了 1000 个不同的后端编程任务和 500 个前端设计任务)上进行大规模跑分,统计平均成功率和胜率。个别轮次中由于随机性造成的用户回答差异,在海量数据的统计下会被完全抹平。
总结
- 用户的回答会变 ,但这正是多轮智能体(Agent)游戏的一部分------优秀的智能体能够"引导"用户说出对自己最有利、最关键的信息。
- 由于所有 Agent 面对的"用户模拟器"规则一致、后台参考答案一致,这种动态的互动评估,是目前国际上公认最贴近真实人类世界、最公平的智能体评估方式。