Hexo

凡事预则立,不预则废


  • Home

  • Tags

  • Archives

  • Navigation

  • Search

NLP——LLM对齐微调-RLOO

本文是 RLOO(REINFORCE Leave-One-Out) 原始论文的阅读笔记,尽量详细阅读论文细节,并加入了自己的理解
注:本文包含 AI 辅助创作

  • 参考链接:
    • 原始论文:Back to Basics: Revisiting REINFORCE Style Optimization for Learning from Human Feedback in LLMs, 2024, Cohere For AI
    • 注:RLOO 方法中基线评估方法最早是在论文 Buy 4 reinforce samples, get a baseline for free!, ICLR 2019, University of Amsterdam 中提出的

Paper Summary

  • 整体总结:
    • 论文视角较高,认为在 LLM 的微调场景中,基于优质 SFT 模型的策略初始化策略,结合 Prompt 的进一步条件化,能够避开传统 Deep-RL 中高方差和大动作空间的历史性问题
    • 论文通过实证结果支持了这一观点,表明尽管在传统 Deep-RL 场景中因高方差问题而鲜少使用基于 REINFORCE 的普通策略梯度(Vanilla PG) ,但这种 REINFORCE 方法在 LLM 微调中优于 PPO 方法
    • 论文重新审视了如何建模从人类偏好中学习的问题,并通过实验证明,尽管 REINFORCE Estimator 简单,但它能够实现高质量的奖励优化
  • 背景 & 问题:
    • RLHF 形式的 AI 对齐已逐渐成为实现高性能 LLM 的关键要素,而 PPO 是 RLHF 中强化学习部分的经典方法,但它既涉及高计算成本,又需要敏感的超参数调优
  • 本文解法:
    • 作者认为 PPO 的设计本身并不与 RLHF 完全对齐,论文主张采用一种计算成本较低的方法(该方法能保持甚至提高性能)
    • 在 RL 的背景下重新审视了基于人类偏好的对齐公式,以简单性为指导原则,证明了 PPO 的许多组件在 RLHF 环境中是不必要的,而且简单得多的 REINFORCE-style 优化变体的性能优于 PPO 和新提出的 “RL-free” 方法(如 DPO 和 RAFT)
    • 论文的工作表明,仔细适应 LLM 的对齐特性能够以低成本从在线 RL 优化中获益
  • 论文的实验表明,作为 REINFORCE 的多样本扩展,REINFORCE Leave-One-Out(RLOO)在性能上优于 RAFT、DPO 和 PPO,同时相对于 RAFT 等迭代微调方法保持了更高的鲁棒性

Introduction and Discussion

  • 文章中引用的一句话:
    • 原话:I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail. — Abraham Maslow, 1966.
    • 直译:”我想,如果一个人唯一拥有的工具是锤子,那么把一切都当作钉子来对待是很诱人的”
    • 含义:”如果你唯一的工具是锤子,那么你很可能会把所有东西都当作钉子来对待”,这是在暗示 PPO 算法是锤子,直接用 PPO 去做 RLHF 是不合适的
  • 当前 SOTA LLM 通常在包含 trillions of tokens 的海量文本上进行预训练,这些训练语料库通常包含许多复杂的偏好、关系和意图(preferences, relations, and intentions),但并非所有特性都是 LLM 应当展现的
    • 研究界和更广泛的从业者群体都非常感兴趣的一个问题是,如何使这些模型与人类偏好保持一致?
  • 尽管已经有大量研究工作投入,但对于实现这一目标的最佳方法尚未达成共识
    • RLHF 是最广泛认可的对齐方法之一,直接借鉴了传统的 RL 方法,并使用诸如 PPO 等技术来最大化奖励模型产生的奖励分数,该奖励模型通常被训练为对人类注释者标注的补全(completions)对进行二元分类
  • 虽然 PPO 通过其在 RLHF 的开创性文献中的应用已成为一种经典方法,但对于非 RL 专家来说,让 PPO 在实践中发挥作用并非易事,并且存在已知的问题:
    • 计算成本(Computational Cost) :PPO 通常需要同时加载多达4个模型:生成器(Generator)、参考模型(reference,用于KL估计)、Critic 模型和奖励模型(reward model,RM),其中生成模型和 Critic 模型的训练是交替进行的,模型多 和 现代 LLM 的规模大进一步加剧了这个计算成本问题
    • 优化挑战(Optimization challenges) :Online RL 优化的不稳定性和敏感性(理解:参数敏感),以及 PPO 相对较高的算法复杂性,需要专业知识才能进行良好的调优(详情可参考 Implementation matters in deep policy gradients: A case study on ppo and trpo, ICLR 2020, Two Sigma)
  • 近期出现了一些 “RL-free” 方法:
    • DPO:包含偏好(正负)样本对的监督微调方法
    • IPO:A General Theoretical Paradigm to Understand Learning from Human Preferences, 2023, Google DeepMind,与 DPO 方法类似(通过比较两个样本的优劣来构造损失函数并训练模型),发表于 DPO 之后,号称可以缓解 DPO 中过拟合问题
    • 迭代微调方法(Iterative fine-tuning):用于 LLM 偏好训练的 Iterative fine-tuning(2023等)
      • 补充:迭代微调方法的基本思路是:1)收集数据;2)评估样本优劣;3)挑选优质样本微调模型;4)迭代循环1,2,3步
    • 但这些工作无法质疑 “在 RL 范式内是否存在更简单的解决方案“,相反地,所有这些方法都试图通过从 RLHF 中剥离所有 RL 组件来回答这个问题,困难也随之而来;
      • 迭代微调技术仅依靠强大的奖励模型来识别训练样本子集(理解:迭代微调技术会在每一轮挑选优质的样本)
      • DPO 和 IPO 则通过直接从人类反馈中学习来避免强化学习和训练单独的奖励模型
  • 与这些方法不同,论文仍然保持在强化学习范式中,但回归基础
    • 本工作的核心问题是:**论文能否在保持性能的同时,避免PPO的计算和优化复杂性?**
    • 论文梳理出传统 Deep-RL 设定(Settings)与典型的 LLM 人类偏好学习设定之间的几个关键差异
    • 论文注意到,PPO 作为一种方法,强调跨迭代的稳定性,旨在通过 小而稳定的更新(small, stable updates) 来训练有效的策略
    • PPO 是为 off-policy 梯度更新足够大以至于引入不稳定的场景(regime)设计的,这种场景在传统 Deep-RL 基准测试中占主导地位(2020;2017)
    • 在本研究中,作者认为 RLHF 的场景(对 pre-trained LLM 进行 fine-tuning)缺乏这些特性
  • 与传统 Deep-RL 环境不同,策略的初始化(以预训练和 SFT 模型的形式)远非随机参数化
    • 尽管可想象的搜索空间非常庞大,但由于预训练和 SFT 阶段,概率质量集中在少数 token 上,因此只有一小部分 token 可能被生成
    • 因此,传统 Deep-RL 环境需要强正则化来降低梯度 Estimator 的高方差;而论文通过实验观察到,这在 RLHF 中并不是一个实际的问题,因此论文提出了一种计算成本更低且保持鲁棒性的方法(2018;2021)
  • 此外,论文重新审视了在强化学习背景下如何形式化(formulated)人类偏好的学习问题
    • 之前的建模:
      • 生成每个 token 被建模为一个 action
      • 每个从 Prompt 开始的局部序列被视为一个 state
      • 在实践中,对 PPO 方法来说,这种建模假设常常被忽略
    • 作者认为并证明,在这种仅对 完整生成(full generations) 赋予奖励而对中间 token 没有真实奖励的场景中,对局部序列建模是不必要的
    • 论文的建模:将整个生成建模为单个动作,初始状态由 Prompt 决定(作者认为这是更合适且高效的方法)
  • 基于这些观察,论文以简洁性为指导原则,探索了使用 REINFORCE estimator(1992)及其多样本扩展 REINFORCE Leave-One-Out(RLOO)(2019)来优化序列级目标
    • 论文拆解了PPO,并展示了最基础的策略梯度算法(Vanilla Policy Gradient REINFORCE),在性能上持续优于 PPO
    • 对于预训练 LLM 的环境,PPO 显得过于复杂
    • 与 PPO 不同,我们可以使用 REINFORCE 直接优化完整轨迹(序列)的回报,并结合无偏基线,而 Actor-Critc 算法(如 PPO)(1999)则通过自举中间状态价值函数来减少方差,但代价是在 estimator 中引入了偏差
  • 论文在多个模型(包括 Llama(2023)、Pythia(2023))和数据集(如Anthropic Helpful & Harmless(2022)和 TL;DR Summarize(2020))上得出一致的结论:
    • PPO 不是 RLHF 中进行 RL 的合适工具(PPO is not the right tool for doing RL in RLHF)
      • 论文拆解了 PPO,并展示了最”基础”的策略梯度算法(Vanilla Policy Gradient REINFORCE(2020)在胜率上持续优于 PPO),幅度从 3.2% 到 20.3%,覆盖所有数据集和基础模型配对
    • RLOO 优于关键基线方法(RLOO outperforms key baselines)
      • 基于 REINFORCE 的 RLOO 能够使用多个在线样本,论文通过实验证明其在所有数据集和模型上持续优于 PPO、DPO(Rafailov 等, 2023)以及 RAFT(Dong 等, 2023)。论文还展示了 RLOO 比 RAFT 更有效地利用在线样本,同时对噪声和 KL 惩罚的鲁棒性更高
    • 建模局部 completions 是不必要的(Modeling partial completions is not necessary)
      • 论文有效地证明了为 LLM 偏好训练建模局部序列是不必要的任务
      • 相反,建模完整生成在保持性能的同时降低了强化学习阶段的复杂性,并显著加速了学习过程
    • RLOO 对噪声和 KL 惩罚敏感性相对鲁棒(RLOO is relatively robust to noise and KL penalty sensitivity)
      • 论文还通过多维度分析(包括语言流畅性、多样性和对噪声的鲁棒性)验证了结果
      • 论文展示了 RLOO 相对于 RAFT 在噪声和 KL 惩罚程度上的鲁棒性

Background

  • 传统的 RLHF 流程(for LLM)由 Ziegler 等人(2020)提出,包含以下三个阶段:
    • (1) SFT 阶段 :一个预训练的语言模型(LM)通过指令微调数据集进行训练,数据集通常包含给定的指令 Prompt 和人工撰写的 completion 文本。语言模型(策略)通过仅对 completion 文本部分的交叉熵损失进行训练。通常,监督微调模型 \(\pi^{\text{sft} }\) 会用于初始化奖励模型和 RLHF 策略
    • (2) 奖励模型(RM)阶段 :RLHF 方法利用奖励模型 \(r_{\phi}(x, y)\),该模型通过偏好数据集 \(\mathcal{D} = \{(x, y_{+}, y_{-})\}_{i=1}^{N}\) 训练,其中 \(y_{+}\) 和 \(y_{-}\) 分别表示针对 Prompt \(x\) 的偏好和非偏好 completion 文本。奖励模型作为二元分类器训练,其损失函数如下:
      $$
      \mathcal{L}_{RM} = -\log \sigma(\log(r_{\phi}(x, y_{+}) - \log(r_{\phi}(x, y_{-}))
      $$
      • 其中 \(\sigma\) 表示逻辑函数
    • (3) RL 阶段 :在此阶段,奖励模型用于提供在线反馈,以优化策略,目标函数如下:
      $$
      \max_{\pi_{\theta} } \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_{\theta}(\cdot|x)} [r_{\phi}(x, y) - \beta D_{\text{KL} }(\pi_{\theta}(\cdot|x) || \pi_{\text{ref} }(\cdot|x)]
      $$
      • 其中 \(\beta\) 用于控制优化过程中与初始策略 \(\pi_{\text{ref} }\) 的距离,如 Stiennon 等人(2022)所提出
      • KL 惩罚至关重要,因为无惩罚的奖励模型优化会导致模型连贯性下降。优化此目标等价于最大化以下 KL 形奖励的期望:
        $$
        R(x, y) = r_{\phi}(x, y) - \beta \log \frac{\pi_{\theta}(y|x)}{\pi_{\text{ref} }(y|x)}
        $$
  • 尽管 RL 方法共享上述组件,但技术在奖励的表述上有所不同。为了理解这些差异,论文在以下章节中介绍 PPO 及其替代方法,如 REINFORCE 和 REINFORCE Leave-One-Out(RLOO)

PPO

  • 在 RL 阶段使用 PPO 时,初始状态由 Prompt 确定,每个生成的 Token 被建模为一个动作,部分序列被视为状态,并使用折扣因子 \(\gamma \in [0, 1]\) 为 1。在此框架中,只有生成 <EOS> Token 时才会获得奖励,该奖励由奖励模型输出并与 KL 惩罚结合,而对于词汇表中的其他 Token,只有 KL 部分是非零的:
    $$
    R(x, y) = \sum_{t=1}^{T} R_{t}(x, y_{t})
    $$
    • \(y_{t}\) 表示 \(y\) 的第 \(t\) 个 Token
    • \(T\) 是轨迹中的 Token 数量,\(R_{t}\) 是对应的形奖励
  • 在实践中,PPO 使用以下 Token 级裁剪目标:
    $$
    \min \left( f(y_{t}|s_{t}) \hat{A}_{\lambda}(y_{t}, s_{t}), \text{clip}_{1-\epsilon}^{1+\epsilon}(f(y_{t}|s_{t})) \hat{A}_{\lambda}(y_{t}, s_{t}) \right) \text{ Where } f(y_{t}|s_{t}) = \frac{\pi_{\theta}(y_{t}|s_{t})}{\pi_{\text{old} }(y_{t}|s_{t})}, \tag{5}
    $$
    • \(s_{t} = \{y_{ < t}, x\}\) 表示状态,即在生成步骤 \(t\) 时的上下文,由生成的 Token 历史 \(y_{ < t}\) 和给定 Prompt \(x\) 组成
    • \(\pi_{\text{old} }\) 是一个较旧的策略(与 \(\pi_{\text{ref} }\) 不同),
    • \(\hat{A}(y_{t}, s_{t})\) 是在生成步骤 \(t-1\) 时生成 Token(动作)\(y_{t}\) 的估计优势函数(优势函数使用广义优势估计(GAE)进行估计(2018))
    • \(\epsilon\) 是裁剪比例

REINFORCE

  • 在 LLM 应用中,\(r(x, y)\) 仅在完整序列的末尾获得,因此将整个生成建模为单个动作可能更为合适,而不是每个 Token
  • 尽管在 LLM 对齐的背景下尚未探索,但将完整 completion 建模为单个动作(如 bandit 问题中的表述)允许使用 REINFORCE Estimator(2017;2017a;1992)。这使得可以通过离散动作(生成)空间进行反向传播,并直接优化整个序列的 KL 形奖励目标
    $$
    \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_{\theta}(\cdot|x)} [R(y, x) \nabla_{\theta} \log \pi_{\theta}(y|x)]
    $$
    • 注意:在论文里面,这里的奖励 \(R(y, x)\) 和更新策略 \(\pi_{\theta}(y|x)\)都是 Response 粒度的,也就是说一个 Response 只有一个状态和一个动作,论文刻意将这个点与 Vanilla PG 方法(Response 的 每个 Token 都对应一个状态和动作)做比较
    • 特别说明:实际的 RL 中,REINFORCE 方法和 Vanilla PG 方法几乎是一样的(都是每个时间步有一个状态),REINFORCE 就是 Vanilla PG 的一种简单实现,只是说 Vanilla PG 是更广泛的框架,可能在累计收益上减去基线
  • 为了改进学习,可以通过减去一个与随机梯度估计高度协方差的基线 \(b\) 来减少公式 6 中 Estimator 的方差,同时保持其无偏性(1992;2014):
    $$
    \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_{\theta}(\cdot|x)} [(R(y, x) - b) \nabla_{\theta} \log \pi_{\theta}(y|x)]
    $$
  • 一个强大的无参数基线选择是训练过程中所有奖励的移动平均值(1992):
    $$
    b_{\text{MA} } = \frac{1}{S} \sum_{s} R(x^{s}, y^{s}) \tag{8}
    $$
    • 其中 \(S\) 是训练步数(理解:是模型 update 的时间步,不是策略 rollout 的时间步),\((x^{s}, y^{s})\) 是第 \(s\) 步的 prompt-completion 对

REINFORCE Leave-One-Out(RLOO)

  • 公式 8 中的基线实现简单且计算成本低。然而,如果论文能够访问多个 online 样本,则可以进一步进行无偏方差减少:
    • (1)每个样本的奖励可以作为其他样本的基线;
    • (2)策略更新可以基于每个样本的梯度估计的平均值,从而得到一个方差减少的多样本蒙特卡洛(MC)估计
  • 以上就是 REINFORCE Leave-One-Out(RLOO)Estimator 的核心思想(2019):
    $$
    \frac{1}{k} \sum_{i=1}^{k} \left[ R(y_{(i)}, x) - \frac{1}{k-1} \sum_{j \neq i} R(y_{(j)}, x) \right] \nabla \log \pi(y_{(i)}|x) \text{,其中 } y_{(1)}, …, y_{(k)} \overset{i.i.d}{\sim} \pi_{\theta}(\cdot|x)
    $$
    • 其中 \(k\) 表示生成的在线样本数量
  • \(\text{RLOO}_{k}\) 单独考虑每个 \(y_{(i)}\),并使用剩余的 \(k-1\) 个样本为 Prompt 创建一个无偏的期望回报估计,类似于一个无参数的价值函数,但在每个训练步骤中动态估计
  • 实验表明,这种基线比 \(b_{\text{MA} }\) 更有效,因为它为每个样本和每个训练步骤即时创建,但代价是训练期间采样时间增加
  • 论文注意到,已有 Concurrent 工作(ReMax, 2023, ICML 2024, 香港中文大学,南京大学)提出通过生成额外样本进行方差减少,但论文专注于 RLOO,因为它能充分利用所有样本,具有更高的效率优势

偏好训练中替代 RL 的方法

  • 在 RLHF 的背景下,大量研究提出了 “RL-free” 方法,这些方法不涉及第三阶段
  • 论文将 PPO、REINFORCE 和 RLOO 等 RL 方法与 “直接偏好优化(DPO)” 和 RAFT(2023)等替代方法进行基准测试,以下简要介绍这两种方法
  • 迭代微调(Iterative Fine-tuning) :迭代微调方法使用训练好的奖励模型对在线或离线采样的 Prompt 的 Completions 进行排序,然后在选定的子集上迭代微调策略(2023;2023)
    • 论文注意到,这种将 Reinforcement/Bandit Learning 的奖励与监督学习目标结合的方法,在 NLP 问题的离线强化学习中已被证明有效(2018;2018)
  • 论文以 RAFT(Reward rAnked FineTuning;2023)为基准,该方法使用简单的交叉熵损失对基于 \(R(x, y)\) 或 \(r(x, y)\) 从 \(k\) 个在线样本中排名最高的 completion 文本进行优化
    • 需要注意的是,RAFT 并未充分利用所有样本,因为它仅优化经过过滤的排名靠前的样本
    • 相比之下,RLOO 充分利用了构建基线和多样本 MC 估计的策略梯度
  • 直接偏好优化(DPO) :与其他方法不同,DPO(2023)跳过了传统 RLHF 流程中的奖励建模阶段,直接使用偏好对优化策略,其损失函数如下:
    $$
    -\log \sigma \left( \beta \log \frac{\pi_{\theta}(y_{+}|x)}{\pi_{\text{ref} }(y_{+}|x)} - \beta \log \frac{\pi_{\theta}(y_{-}|x)}{\pi_{\text{ref} }(y_{-}|x)} \right)
    $$

从 PPO 到 REINFORCE

  • 论文仔细研究了 PPO 的各个组件,认为它们并不完全适合 RLHF。论文从理论起源出发,结合 LLM RLHF 的实际条件,并通过初步实验提供实证支持

重新审视低方差 Estimator 的必要性

  • Actor-critic 算法(如 PPO)的提出源于传统强化学习环境中观察到的高方差问题
  • PPO 通过利用总轨迹回报的低方差 Estimator 来改进学习
    • 这些 Estimator 通过自举状态价值函数构建(1999;2018;2020)
    • 尽管自举减少了方差,但其代价是引入了偏差,可能导致优化偏向有偏的奖励
  • 相比之下,REINFORCE 使用无偏的蒙特卡洛 Estimator 来估计轨迹回报,理论上可能具有高方差,尤其是在仅用单样本近似时,传统 Deep-RL 环境中并不常使用 REINFORCE
  • 近期研究提供了大量证据表明,REINFORCE 在高方差和大动作空间(如 NLP)的情况下表现不佳(2016;2017;2020;等)
    • 然而,论文注意到这些发现基于从随机或弱初始化开始训练的场景 ,而不是从强大的预训练模型热启动
  • 在此,作者质疑这些实证证据是否适用于 RLHF
    • 作者认为,在微调 LLM 的场景中,这并不是一个实际问题,因为策略的初始化(即预训练的 LLM)非常强大
    • 与传统 Deep-RL 设置不同,预训练和 SFT 模型的初始化远非随机参数化
    • 尽管搜索空间巨大,但由于预训练和 SFT 阶段,概率质量集中在少数可能的 Token 上
    • 因此,传统 Deep-RL 需要强正则化以减少梯度估计的高方差;而论文通过实证观察到,在 RLHF 中这并非实际关切,并由此提出一种计算成本更低且保持鲁棒性的方法(2018;2021)
  • 实证支撑(Empirical support) :为了验证这一假设,论文调整了方差最小化和偏差引入的权重
    • 在 2.1 节的 PPO 表述中,GAE(2018)用于在估计真实优势函数时权衡偏差和方差
    • GAE 引入了一个超参数 \(\lambda \in [0, 1]\),用于平衡构造 Estimator 的偏差和方差:\(\lambda\) 越接近 1,观察到的方差越高;在高度随机的环境中,以偏差为代价最小化方差是值得的;然而,在方差已经较低的稳定环境中,引入偏差是不必要的
  • 在极端情况下,当 \(\lambda = 1\) 时(以方差为代价最小化偏差),优势项简化为 Vanilla Policy Gradient(PG)REINFORCE 中使用的回报 Estimator,该 Estimator 直接基于 REINFORCE Estimator,Vanilla PG 方法 优化从生成中每个 Token 开始的轨迹回报(注:阅读原文时这里可能会有误解,在论文情景中,实际上这里是指 Vanilla PG 方法(多状态建模 MDP),和论文前面提到的 REINFORCE 方法(单状态 MPD)不同):
    $$
    \sum_{t=t}^{T} \gamma^{T-i-1} R_{t}(x, y_{t}) - b_{\phi}(s_{t})
    $$
    • 其中 \(b_{\phi}(s_{t})\) 是一个学习的基线状态 \(s_{t}\),类似于传统强化学习中价值网络的学习方式,使用标准 MLE 损失
      $$\frac{1}{2} \left( \sum_{i=t}^{T} \gamma^{T-i-1} R_{i}(x, y_{i}) - b_{\psi}(s_{t}) \right)^{2}$$
    • Vanilla PG 与论文中提到的 REINFORCE 的关键区别在于:
      • Vanilla PG 将 REINFORCE Estimator 应用于由 Prompt 和 partial completion 形成的上下文开始的轨迹回报
      • REINFORCE Estimator 应用于完整轨迹回报(2.2 节)
      • 论文将在结果部分 5.1 节中重新讨论这一区别,以评估在 RLHF 中评估 partial completion 是否必要
  • 在 图1 中,论文展示了评估 PPO 在不同 \(\lambda\) 值下的奖励结果
    • 变体(\(\hat{A}_{\lambda=1.00}\)(即上述 Vanilla PG)和 \(\hat{A}_{\lambda=0.95}\))最小化偏差但引入高方差
    • 变体(\(\hat{A}_{\lambda=0.0}\) 和 \(\hat{A}_{\lambda=0.5}\))以偏差为代价最小化方差
    • 图1 绘制了奖励曲线,观察到最极端的变体 Vanilla PG(无偏的 \(\hat{A}_{\lambda=1.0}\))表现最佳,因为它没有偏差但存在高方差风险
    • 随着 \(\lambda\) 的减小,奖励单调递减,这支持了论文的假设:在 RLHF 设置中,以偏差为代价减少方差是不必要的,因为环境的默认属性已经足够稳定

Clipping is Rarely Necessary in RLHF(裁剪在 RLHF 中几乎很少是必要的)

  • 本节讨论裁剪比例 \(\epsilon\)(见公式 5),它用于防止当 \(\frac{\pi_{\theta} }{\pi_{\text{old} } }\) 偏离 1 过大时策略更新过大,即防止与当前策略偏离过远的更新(2017)
  • 在 图1 中,论文比较了独立 PPO 训练在有裁剪和无裁剪情况下的奖励曲线
    • 需要注意的是,在这组实验中,论文也关闭了价值网络的裁剪(移除这些组件对学习的影响微乎其微),这在传统 Deep-RL 环境中对学习有明显影响(2020)
    • 论文通过实证发现,在 RLHF 设置中,每个批次中损失被裁剪的平均时间不到 5%,这表明学习机制接近于“on-policy”状态,策略在迭代之间变化缓慢
  • 为了进一步验证这一点,论文将 PPO 损失简化为 Vanilla PG 的损失 :
    • 完全关闭裁剪
    • 移除比例 \(\frac{\pi_{\theta} }{\pi_{\text{old} } }\)
    • 设 \(\lambda = 1\)
  • 结果显示,移除裁剪甚至略微提升了性能 ,验证了论文的假设:在优化机制中,大的 off-policy 更新很少见,并且不会像传统 Deep-RL 中那样对学习产生灾难性影响

建模 partial completion 是不必要的

  • 如第 2 节所述,PPO 将每个 Token 建模为一个动作,而 REINFORCE 将整个生成建模为单个动作
    • RLHF (for LLM) 中的 \(r(x, y)\) 仅归属于 <EOS> Token
    • 对于其他 Token,只有 \(\log \frac{\pi(y_{t}|s_{t})}{\pi_{\text{ref} }(y_{t}|s_{t})}\) 构成 \(R_{t}(x, y)\),这并无实际意义
  • 从 pure RL 角度来看,环境动态是完全确定的(\(P_{D}(\{y_{ < t+1}, x\}|s_{t}, y_{t}) = 1 \)),这意味着论文的环境(上下文)会根据新预测的 Token/Action 确定性变化
    • 因此,问题可以简化为一个 bandit 问题,其中马尔可夫决策过程(MDP)仅包含由 Prompt 确定的初始状态和生成后始终到达的终止状态(2017;2017b)
    • 需要注意的是,将整个生成建模为单个动作是 REINFORCE 明确实现的,但迭代微调方法也隐式实现了这一点,这些方法首先生成完整 completion 文本,然后使用奖励模型进行过滤
  • 在结果部分 5.1 节中,论文将明确比较 REINFORCE 和 RLOO(两者均建模完整轨迹回报)与 PPO 和 Vanilla PG(两者均建模 partial completion)
  • 论文提出的问题是:在 RLHF 中,将整个生成建模为单个动作是否足以实现相同或更好的性能?

Experimental Setup

Training Details

  • 数据集(Datasets) :论文在 TL;DR Summarize(2020)和 Anthropic Helpful and Harmless Dialogue(2022a)数据集上 Report 结果
    • TL;DR Summarize 数据集的训练集包含 116k 条人工编写的指令和 93k 条人工标注的偏好对
    • 预处理后的 Anthropic-HH 数据集包含 112k 条训练偏好对
  • 模型(Models) :对于这两个数据集,论文使用 Pythia-6.9B(2023)作为预训练的基础模型
    • 为了研究预训练模型质量对人类偏好学习的影响,论文还使用 Llama-7B(2023a)和 Anthropic-HH 数据集进行了实验
  • 为了确保所有方法的公平比较,论文在 SFT 和奖励模型训练阶段均使用 512 个 token 的上下文长度
    • 除非另有说明,否则奖励模型和策略均使用相应的 SFT 检查点进行初始化
  • 实验细节 :
    • 对于 TL;DR Summarize 数据集,论文使用专用的 SFT 分割
    • 由于原始 Anthropic-HH 数据集未包含单独的 SFT 分割,论文与之前的工作(2023;2023;2023)类似,在 SFT 阶段使用二元比较中的 Prompt 和 preferred responses
    • 在偏好训练阶段(理解:就是 RLHF 对齐微调阶段),论文使用与 SFT 阶段相同的 Prompt 生成补全
    • 更多实验设置和超参数的细节见附录C

Evaluation

  • 优化质量(Optimization Quality) :对于所有在线方法(除 DPO 外的所有方法),为了衡量方法优化内在目标的效果,论文 Report 测试集上 1000 个样本的平均奖励(使用奖励模型评估)
    • 为了衡量每种方法优化外在目标(将模型与人类偏好对齐)的效果,论文在相同的测试样本上,根据 Alpacafarm 框架(2024)Report 模拟胜率,其中论文使用 GPT-4 作为人类评估的代理
      • 理解:胜率的定义是,在人类 annotator 的选择上,待评估模型的输出 战胜 参考模型输出 的概率;模拟胜率则是使用高级 LLM 取代替人类 annotator 的情况
    • 对于 TL;DR 数据集,论文测量与 reference SFT completions 的胜率(win-rates);对于 HH 数据集,测量与 preferred completions 的胜率。在评估时,除非另有说明,否则论文使用贪心采样
      • 问题:在评估 HH 数据集时,preferred completions 是哪个模型产生的?测量的是谁与谁的的胜率?
      • 回答:这里 preferred completions 不是模型产生的,是 HH 数据集自带的,HH 数据集包含两列,分别是 chosen 列和 rejected 列,每列都包含完整的对话(两列对话仅最后一轮不同),详情见 Anthropic/hh-rlhf
  • 对齐税(Alignment Tax) :RLHF 微调通常伴随着多样性和语言流畅性的下降,这被称为对齐税(2021;2024),因此,论文还 Report 了作为流畅性和多样性代理的指标,与 Dong 等人(2023)类似
    • 为了测量流畅性,论文使用测试集中的 preferred completions 计算困惑度(PPL)
    • 最后,论文使用平均补全长度和平均 n-gram 多样性(2016)来测量多样性

Results and Discussion

Reward Optimization

  • RLOO、带(移动平均)基线的 REINFORCE、RAFT、PPO 和 Vanilla PG 的目标是最大化奖励分数,因此论文比较每种方法的优化效果。在每个数据集和基础模型对上,论文为所有方法使用相同的奖励模型,因此它们的测试奖励分数可以直接比较
  • 建模部分补全与完整生成 :如 图2 所示,论文发现不建模部分补全的方法(如带基线(移动平均)的 REINFORCE 和 RLOO)在奖励优化上始终优于将每个 token 建模为动作的 Vanilla PG 和 PPO(即建模部分补全)
    • 此外,除了在奖励优化上的优越性能外,这些方法相比 Vanilla PG 和 PPO 需要加载的模型副本少一个,并且创建基线的方式也不同。这是因为它们消除了训练学习基线和价值网络的需求(Vanilla PG 需要价值网络作为基线,PPO 分别需要价值网络计算 GAE)。这表明在 RLHF 上下文中,建模部分序列是不必要的
  • 采样效率 :在相同的采样 Budget(每个 Prompt 生成 \(k\) 个在线样本)下,RLOO 在整个训练过程中始终优于 RAFT(如 图3 所示)
    • 值得注意的是,尽管采样 Budget 较小,RLOO \(k=2\) 在所有数据集和模型上的表现与 RAFT \(k=4\) 相当甚至更好。在这种情况下,RLOO 使用的在线样本 Budget 仅为 RAFT 的一半(步数相同)
    • 注:采样 Budget 越大,效果越好
  • 这证实了 RLOO 通过利用所有生成的样本实现了更好的优化,而 RAFT 仅使用排名最高的样本进行微调。图4 展示了相同的发现,它绘制了训练过程中生成的样本数量与奖励的关系(不考虑 \(k\) 值)
    • 结论:相同样本数量下,RLOO 效果更好,即 RLOO 样本效率更高

Simulated win-rates

  • 表1 展示了 TL;DR Summarize 和 Anthropic-HH 数据集中每种方法相对于原始补全的胜率。这里论文还包含了 DPO
  • 建模部分补全是不必要的(Modeling partial completions is not necessary) :回顾 Vanilla PG 和 REINFORCE 的关键区别在于,Vanilla PG 将每个 token 视为动作 ,而 REINFORCE 将整个生成视为一个动作
    • 如 表1 所示,在使用 Pythia 基础模型时,带基线(移动平均)的 REINFORCE 在 TL;DR(70.7 vs 70.4)和 HH(37.9 vs 36.4)数据集上的表现与 Vanilla PG 相当
    • 此外,在使用 Llama 基础模型的 HH 数据集中,带基线(移动平均)的 REINFORCE 胜率更高(55.3 vs 52.3),优于 Vanilla PG
    • 这证实了仅建模完整生成而不建模部分补全的有效性,即使在 RLHF 中不使用多个样本时也是如此
    • 注:采样 Budget 越大,效果越好,但是 Pythia 在 HH 评估上胜率提升 采样预算 \(k=2 \to k=4\) 后,效果反而变差了,原因是波动导致?
  • 胜率与测试奖励分数一致(Win-rates are inline with test reward scores) :RLOO \(k=4\) 实现了最高的胜率,在 TL;DR、HH(Pythia)和 HH(Llama)上分别比 PPO 高出 10.3、14.5 和 32.1 个百分点。唯一的例外是 RLOO \(k=2\) 在 HH 数据集上的胜率最高
  • RLOO 比 RAFT 样本效率更高(RLOO is more sample efficient than RAFT) :在相同的采样 Budget \(k\) 下,RLOO 在所有数据集和模型上的表现始终优于 RAFT
    • 当在三个数据集和模型对上取平均值时,RLOO 在 \(k=2\) 和 \(k=4\) 时的胜率分别为 61.3 和 61.9,而 RAFT 分别为 56.1 和 59.5
    • 值得注意的是,RLOO 在 HH 数据集上(\(k=2\) 和 Pythia 基础模型)的胜率提升最大,比 RAFT 高出 9.9 个百分点(表1 第二列)
Alignment Tax
  • 表2 展示了 Anthropic-HH 数据集中 Llama 基础模型的各种内在评估指标,包括困惑度和多样性分数
  • 生成长度(Length of Generations) :值得注意的是,DPO 训练的模型往往过于冗长(平均生成长度为 104 个 token),而 PPO 训练的模型生成较短(平均仅 16 个 token)。论文在附录 E 中提供了示例响应
  • 困惑度与多样性(Perplexity and Diversity) :如表2 所示
    • RLOO、RAFT 和带基线(移动平均)的 REINFORCE 的困惑度(PPL)分数较为接近,且三者均显著低于 PPO 和 Vanilla PG
    • 在多样性方面,RLOO、RAFT、带基线(移动平均)的 REINFORCE 和 Vanilla PG 的 Diversity-1 分数相似。Diversity-2 分数在奖励优化较高的方法中略有下降(2021)。这并不意外,因为它们的生成长度与其他方法相比存在显著差异
    • 总体而言,RLOO 和带基线(移动平均)的 REINFORCE 在保持生成流畅性和多样性的同时 ,实现了更高的奖励分数和胜率
  • 奖励方差 :较低的奖励方差对于安全和无害性等应用是理想的,因为这些应用中生成低奖励样本的风险较高
    • 表2 的结果显示,在相同的 \(k\) 值下,RLOO 的生成奖励方差略低于 RAFT(后者是奖励优化方面与 RLOO 最具竞争力的方法)
    • Vanilla PG 的奖励方差最高
    • 带基线(移动平均)的 REINFORCE 在奖励优化和胜率上与 Vanilla PG 相当甚至更好,但其奖励方差比 Vanilla PG 低 27%
    • 问题:为什么 DPO 没有评估方差?
      • 回答:因为这里的方差是训练过程中采样的奖励方差,DPO 训练过程中不需要采样,所以作者没评估?
Robustness
  • 如前所述,RAFT 的一个主要缺点是它仅优化排名最高的样本,而丢弃其余在线样本。因此,可能导致最佳补全排名不准确的因素也会显著阻碍学习。论文通过展示下面两项指标证明了这种脆弱性
    • 1)KL 项的高 \(\beta\) 值
    • 2)插入的奖励噪声对 RAFT 的影响(与 RLOO 相比)
  • KL 惩罚不匹配(Mismatch from KL-penalty) :在图5 中,论文展示了 RLOO 和 RAFT 在 HH 数据集上(使用 Pythia 基础模型,\(k=2\))训练过程中 KL 距离和测试奖励曲线 \(r(x,y)\) 的变化
    • 论文使用 \(\beta=\{0.25, 0.5, 1\}\) 来调整 KL 正则化。在这里,\(R(x,y)\) 中较大的 KL 惩罚(较高的 \(\beta\))可能会增加 \(k\) 个在线样本之间的排名不匹配
      • 问题:如何理解排名不匹配?
      • 回答(个人理解):由于奖励中包含了 KL 散度,若 KL 散度的权重 \(\beta\) 过高,可能会导致排序上不是真实奖励最大的排在前面(即 increase mismatches between rankings of the k online samples)
    • \(\beta\) 的选择通常取决于数据和基础模型输出 logits 的分布等多种因素,即使使用 early-stopping 也可能不允许 \(\beta\) 值太低
      • 理解:太低的 \(\beta\) 值可能导致模型没有限制,突然就跑飞了
    • 论文发现 RAFT 对较高的 KL 正则化更为敏感(注意:RAFT 中也是在奖励中使用了 KL 散度的)
      • 在低正则化情况下(\(\beta=\{0.1\}\)),RLOO 和 RAFT 收敛到与参考策略相同的 KL 距离,但 RLOO 实现了更高的奖励
      • 随着正则化增强(\(\beta=\{0.25, 0.5, 1.0\}\)),RAFT 不仅在奖励优化上表现更差,而且偏离参考策略的程度也更大
  • 奖励噪声不匹配(Mismatch from Reward Noise) :由于人类偏好的固有噪声性质,奖励模型本身是奖励信号的噪声代理(2017b;2018)
    • 受贝叶斯深度学习中建模偶然性不确定性(Aleatoric Uncertainty)的文献启发(2017;2021),为了模拟不同程度的噪声效应,论文对每个 Prompt 的奖励添加噪声。具体来说,论文在二元分类器的输出 logits 上添加噪声 \(\epsilon\):
      $$ r_{\sigma}(x,y) = r(x,y) + \epsilon \quad \text{ Where } \quad \epsilon \sim \mathcal{N}(0,\sigma^{2}) $$
    • 图6 显示了在不同噪声水平 \(\sigma=\{1.0, 3.0, 5.0\}\) 下奖励的下降情况
      • 正如预期的那样,训练奖励在 RLOO 和 RAFT 中均有所下降
      • 对于 RAFT,当 \(\sigma=\{3.0, 5.0\}\) 时,奖励下降更为明显(这是由于奖励噪声的添加影响了相对排名,从而影响了训练奖励)
      • RLOO 在噪声奖励信号下表现出相对稳健的奖励优化

Limitations

  • 本研究的局限性之一是论文未研究奖励模型(Reward Model, RM)的过优化(over-optimization)问题
    • 该问题是指代理奖励(proxy reward)的优化轨迹与“黄金”奖励目标(gold reward objective)发生偏离的现象(2022)
    • 这一方面在 RAFT 等迭代微调方法中也尚未得到充分研究,值得未来专门探讨
  • 另一局限性在于,论文未探索在单 Token 动作框架中使用 Leave-One-Out(LOO)Baseline的情况,即建模部分序列并提供中间奖励(intermediary rewards)
    • 在本研究中,论文证明了在奖励仅针对完整序列的 RLHF 上下文中,建模部分序列(completion)是不必要的任务
  • 最后,论文的实验使用了基于 GPT-4 的 LLM 模拟胜率(simulated win-rates),而未测量其与最终人类评估偏好(human evaluation preferences)的相关性(PS:其实其他论文(如 Secrets of RLHF in Large Language Models Part I: PPO, Fudan & ByteDance)有测试过,一致性挺好的)
    • 同时,论文也未探索使用其他奖励指标(如 ROUGE、BLEU 或其他自然语言处理(NLP)中常用指标)进行强化学习训练(问题:有必要吗?)

附录A Effective Conditioning

  • 为了验证”概率质量高度集中且条件作用显著缩小了可能的生成空间”这一假设,论文实证研究了输出分布和每个生成步骤的特性。论文使用了结果部分 HH 实验中采用的Llama SFT 模型
  • 概率质量集中(Probability Mass Concentration) :图7(右)绘制了前 \{1,16,32,64\} 个 token 所集中的总概率质量(mass)。在生成第一个 token 后 ,总概率质量出现了显著跃升,这表明从第一个 token 和 Prompt 开始的条件作用非常有效
    • 第一个 Token 生成后,后续的 Token 约 60% 的概率质量集中在单个最可能的 token 上,超过 90% 的总质量集中在前 16 个 token ,而前 32 和 64 个 token 的增量增长则趋于平缓
      • 理解:注意需要先生成第一个 Token,再开始统计,Prompt 后输出的第一个 Token 随机性较大(下文也会描述,第一个 Token 的熵比较大)
    • 这一实证证据直接支持了论文反复强调的观点:尽管每个步骤的可行搜索(动作)空间巨大,但实际上由于 SFT 模型和 Prompt 的条件作用,大部分概率质量仅分布在可能 token 的一小部分上
  • 低熵值(Low Entropy) :图7(左)绘制了归一化熵 \(\hat{H}(X)=\frac{H(X)}{H_{max}(X)}\),其中 \(H_{max}(X)\) 是词汇表大小下均匀分布的熵
    • 与图7右中概率质量的跃升类似,正如预期的那样,熵的最大下降发生在生成第一个token之后,仅略微上升直至生成结束,且始终保持低位
    • 这进一步支持了生成空间高度偏斜的证据,并自然表明由于生成过程中的熵持续较低,生成概率的方差也较低。这进一步支持了单动作建模的合理性,因为它表明生成中的第一个条件作用最具影响力

附录B RLOO 与对比损失的关联(RLOO’s Connection to Contrastive Loss)

  • 其他多项迭代微调工作(2023;2023)通过根据奖励模型确定的权重,上调正样本的对数概率并下调负样本的概率,使用了对比式损失:
    $$
    \mathcal{L}_{c}^{k=2}=-\log\pi(y_{+}|x)+\log\pi(y_{-}|x)
    $$
  • 论文也有与 原文 2.3 节的方程对应的 \(k=2\) 损失:
    $$
    \mathcal{L}_{\text{RLOO} }^{k=2}=\frac{\left(R(y_{+},x)-R(y_{-},x)\right)}{2}(-\log\pi(y_{+}|x)+\log\pi(y_{-}|x))
    $$
  • 显然,\(\text{RLOO}_{k=2}\) 损失正是对比损失,但按绝对分数差异加权(\(\frac{1}{k}\) 因子已合并到学习率中)

附录C Training Details

  • 以下是关于训练和数据预处理的更多细节
  • 数据预处理(Data-preprocessing) :
    • 对于每个数据集,论文过滤掉超过预设长度的 Prompt,以减少不包含 <EOS> token 的生成的出现
    • 对于 TL;DR 数据集:滤掉超过 448 个 token 的 Prompt
    • 对于 HH 数据集:滤掉超过 348 个 token 的 Prompt
  • SFT 训练 :
    • 对于 TL;DR Summarize 数据集,论文使用专用的 SFT 分割
    • 对于Anthropic-HH,由于原始数据集不包含单独的 SFT 分割,论文在 SFT 阶段使用来自二元比较的 Prompt 和首选响应(preferred responses)。这与之前的工作(2023;)一致
    • 在训练超参数方面
      • 对于 Pythia 模型,与之前的工作(2023a;2022a)类似,论文在摘要和对话任务中训练 2 个epoch,初始学习率为 2e-5
      • 对于Anthropic-HH 数据集,由于论文没有 SFT 集,论文使用构成HH数据集的二元比较中的首选响应。这与之前的工作(2023;)一致
      • 对于摘要数据集,论文使用初始数据集指定的专用 SFT 集
      • 对于 Llama 模型,论文发现 SFT 阶段 1 个 epoch 已足够
  • RM 训练 :
    • 在 RM 阶段,论文训练 RM 1 个 epoch,初始学习率为 1e-5
    • 对于 RM 和 SFT 训练,论文使用 cosine decay learning schedule(2016)和 0.03 的 warm-up ratio(注:warm-up 阶段(学习率上升阶段)步数占总训练阶段步数的 3%,这个数字是实验过的?一般是 5% 到 10%吧?)
  • 偏好训练(Preference Training)
    • 对于仅使用 Pythia 模型的 TL;DR Summarize 数据集,论文训练每个变体 600 步,rollout batch size为 512,step batch size 为 256。论文使用 \(\beta\) 值为 0.03
    • 对于 Anthropic-HH,论文训练 Pythia 模型 393 步,batch size 配置与 TL;DR 摘要相同
    • 对于 Llama 模型,论文遵循(Dong等人,2023)的设置,在 2 个 epoch 中使用 2048 的 rollout 和 step batch size
    • 除非另有说明,否则所有 Anthropic-HH 实验使用 \(\beta=0.10\)
    • 对于 TL;DR 和 HH 数据集,论文都使用与 SFT 阶段相同的 Prompt 进行在线生成
    • 在两个数据集和所有模型中,论文使用 \(1e-6\) 的恒定学习率和占总步数 3% 的线性预热时间
    • 学习率是在对 RAFT 和 RLOO 的 \{1×10^{-6}, 1×10^{-5}, 2×10^{-5}\} 以及对 PPO 和 Vanilla PG 的 \{1×10^{-6}, 1×10^{-5}\} 进行扫描(sweep)后选择的
      • 这里是说,学习率是经过了简单的挑选的,具体挑选的方式是在几个常见的学习率上来选择,论文最终选择了 \(1e-6\)
    • 对于所有算法,论文对每个批次进行 2次 梯度步
      问题:这里是说收集一次数据更新两次吗?是否会破坏 REINFORCE on-policy 的设定呢?

附录D GPT-4 评估 Prompt

  • 注:(详情见原始论文附录D,这里给出中文翻译仅供参考,可借用于自己的任务上)

  • TL;DR Summarize:

    1
    2
    3
    4
    5
    6
    以下哪个摘要更好地总结了给定论坛帖子中最重要的点,而不包含不重要或不相关的细节?一个好的摘要既精确又简洁
    帖子:{instruction}
    摘要(A):{output_1}
    摘要(B):{output_2}
    首先提供一个一句话的比较,解释你更喜欢哪个摘要及其原因。其次,在新的一行中,仅注明"摘要(A)"或"摘要(B)"以表明你的选择。你的回答应使用以下格式:
    比较:<一句话的比较和解释> 首选:<"摘要(A)"或"摘要(B)">
  • Anthropic-HH:

    1
    2
    3
    4
    5
    6
    对于以下对聊天机器人助手的查询,哪个响应更有帮助?
    查询:instruction
    响应(A):{output_1}
    响应(B):{output_2}
    首先提供一个一句话的比较,解释你认为哪个响应更有帮助。其次,在新的一行中,仅注明"响应(A)"或"响应(B)"以表明哪个响应更有帮助。如果它们同样好或差,注明"Neither"。你的回答应使用以下格式:
    比较:<一句话的比较和解释> 首选:<"响应(A)"或"响应(B)"或"Neither">

附录E 示例响应

E.1 TL;DR Summarize(Pythia)

  • 详情见原论文附录,给出了每个模型在不同设定下的输出

E.2 HH(Llama)

  • 详情见原论文附录,给出了每个模型在不同设定下的输出

NLP——LLM对齐微调-Reflect-Retry-Reward

注:本文包含 AI 辅助创作

  • 参考链接:
    • 原始论文:Reflect, Retry, Reward: Self-Improving LLMs via Reinforcement Learning, 20250530, Writer

Paper Summary

  • 整体总结:
    • 论文展示了通过训练模型改进 Self-reflection (注意不是训练特定任务),可以显著提升 LLM 的性能
    • 这种间接方法仅依赖于一个验证器(validator),用于检测模型响应是否正确
      • 注:特别适用于响应易于验证的任务(例如 JSON 输出格式是否正确、生成的代码是否可执行或方程约束是否满足)
    • 论文通过在 APIGen 函数调用和 Countdown 数学方程求解数据集上的实验验证了方法的有效性
    • 研究核心发现:
      • 通过 GRPO 训练的 Self-reflection 模型在函数调用测试集和 Countdown 数学方程数据集上均有不错的提升
      • 较小的 Self-reflection 训练模型可以超越更大的未训练模型;例如:
        • 经过训练的 Qwen-2-7B Instruct 在函数调用上表现优于未训练的 Qwen2-72B Instruct
        • 经过训练的 Qwen2.5-7B Instruct 在 Countdown 数学方程上表现优于 Qwen2.5-72B Instruct
      • 论文的模型还对灾难性遗忘表现出鲁棒性
    • 特别发现:尽管论文仅训练模型改进 Self-reflection,但论文发现即使不需要 Self-reflection(即第一次尝试就成功),模型的表现也显著提升
      • 作者猜测这是因为通过专注于 Self-reflection 而非特定任务,模型可能更普遍地提升了其推理能力
    • 局限性:本文未研究 Self-reflection 训练是否可以泛化到不同任务
    • 总结:论文提供了一种更实用、更可靠的新范式,能够在有限的外部反馈下提升性能
  • 论文探索了一种通过 Self-reflection 和 RL 提升 LLM 性能的方法
    • 论文通过激励模型在其回答错误时生成更好的 Self-reflection
    • 论文证明了在无法生成合成数据(synthetic data)且仅能获得二元反馈(binary feedback)的条件下,模型解决复杂可验证任务的能力也能得到提升
  • 论文的框架分为两个阶段:
    • 第一阶段,当模型未能完成任务时,它会生成一段 Self-reflection 评论来分析之前的尝试;
    • 第二阶段,模型将这段 Self-reflection 纳入上下文后重新尝试完成任务,如果后续尝试成功,则对 Self-reflection 阶段生成的 token 进行奖励
  • 实验表明该方法在各种模型架构上均取得了显著的性能提升
    • 数学方程编写的性能提升高达 34.7%
    • 函数调用的性能提升达 18.1%
  • 特别地:经过微调的 1.5B 至 7B 参数的小模型在相同模型家族中表现优于参数规模大 10 倍的模型

Introduction and Discussion

  • LLM 在自然语言处理任务(2023)、数学(2023; 2024)和推理(2023)等领域展现了令人印象深刻的能力
  • 但当前模型仍存在盲点,且无法保证一个模型在成功完成某项任务后,能够成功完成另一项类似任务(2023; 2024)
    • 解决方案一:针对失败任务的数据重新训练或微调模型,但如果此类数据集不存在,则可能无法实现
      • 特别地,在 SOTA 超大模型也难以完成任务的情况下(某些情况下是可能出现的),此时我们无法利用它们生成合成训练数据(2024)
    • 解决方案二:提示模型解释其推理过程或反思失败原因,比如
      • CoT 范式(2022)表明,如果模型被提示展示其推理过程而不仅仅是提供答案,其在算术、常识和推理任务中的表现会显著提升
      • Self-reflection 遵循类似的原理:如果能检测到大语言模型提供了错误答案,可以提示其反思推理中的缺陷并尝试重新回答(2023; 2024)
      • 以上这些方法的主要优势在于不需要额外的训练数据,但其效果直接依赖于推理或反思提示的有效性

Related Work

Self-reflection

Self-reflection in LLMs
  • Self-reflection,也称为自省(introspection),是一种元提示策略(metaprompting strategy),语言模型通过分析自身的推理过程来识别和纠正潜在错误
  • Self-reflection 范式在大语言模型研究中获得了广泛关注,被视为提升多步推理和问题解决能力的有效手段,尤其是在算术、常识推理和问答等领域(2022; 2023; 2024; 2023)
  • 典型的 Self-reflection 流程包括生成初始答案、生成自然语言反馈以批判该答案,然后基于反馈优化回答
  • 这一过程可以进行迭代,通常使用同一模型生成和评估解决方案,并可能包含记忆缓冲区或显式的元指令模块(2025; 2025)
    • 注:Reflexion 其实是 Self-reflection 的一种实现?
Approaches and Limitations
  • 大语言模型的 Self-reflection 方法在多个维度上存在差异
    • 一些方法仅对失败或低置信度的查询进行自我纠正
    • 另一些方法则对每个回答都应用 Self-reflection;
  • 反馈可以是标量分数、外部标注或自然语言形式,并可能由人类、外部模型或大语言模型自身生成(2022; 2023; 2022; 2024)
  • 在许多场景中提示大语言模型进行 Self-reflection 确实能提高准确性,但最近的研究表明,其效果高度依赖于上下文:挑战包括
    • 在没有真实标签或外部验证的情况下无法可靠识别自身错误、重复反思的收益递减
    • 对于简单提示或高性能基础模型可能导致性能下降的风险(2024; 2024; 2023)
  • 特别是,当初始准确率较低、问题难度较高且存在外部验证时,Self-reflection 的效果最为显著
    • 大语言模型有时可能无法识别自身错误 ,在存在外部监督的情况下能从反馈中受益(2024; 2023)
Training-Based Methods
  • 最近的研究方向聚焦于在模型训练阶段融入自我提升能力,例如通过微调自我纠正轨迹或将流程建模为多轮强化学习问题(2024; 2024; 2025)
  • 这些基于训练的方法表明,在训练过程中利用模型自身的批判能够带来持久的改进——即使在没有 test-time Self-reflection 的情况下
  • 这些方法通常依赖于更大的教师模型生成数据或提供监督,这可以被视为一种知识蒸馏(2015)
本篇论文的方法
  • 基于先前研究的观点,论文提出仅针对外部验证器识别的失败案例进行纠正,将其二元反馈转化为 Self-reflection 提示,并训练模型利用 Self-reflection 在第二次尝试中取得成功
  • 这种基于验证器的条件计算利用了训练时的 benefits 以减少测试时的开销(overhead),并且能够保证性能提升或至少保持不变
    • 因为论文的纠正仅应用到初始错误的样本
  • 在训练中,论文采用了 GRPO
  • 特别说明:该方法仅从模型自身的输出中自举(bootstraps),无需依赖外部大语言模型

Reinforcement Learning for Language Models

GRPO(Group Relative Policy Optimization)
  • GRPO 是一种基于结果的强化学习方法,旨在解决 LLM 在复杂数学推理任务中面临的独特挑战(2024)
  • 与传统方法如近端策略优化(Proximal Policy Optimization, PPO)(2017)不同,GRPO 摒弃了单独的价值(评论)网络,而是通过比较一组采样生成的结果直接估计优势
  • 这使得 GRPO 特别适用于监督信号稀疏且仅在生成结束时可用的情况
    • 例如,仅能通过标量奖励反映输出质量或正确性的任务
    • 在这种环境中,模型必须在接收到任何反馈之前生成完整的序列
  • GRPO 的优势函数可以表示为:
    $$
    A(s, a) = R(s, a) - \frac{1}{|G|} \sum_{a’ \in G} R(s, a’)
    $$
    • 其中 \( A(s, a) \) 是状态 \( s \) 和动作 \( a \) 的优势值,\( R(s, a) \) 是奖励函数,\( G \) 是一组采样生成的动作
本篇论文的方法
  • 论文采用 GRPO 作为唯一的强化学习机制,不涉及额外的监督微调阶段
  • 最近的研究表明,调整 GRPO 的奖励结构可以有效鼓励模型在失败后继续尝试,例如通过奖励失败后的重试行为,从而促进自我纠正和鲁棒性(2025)
  • GRPO 在需要复杂行为监督的相关领域也展现出潜力,包括工具使用和高级数学问题求解,为多样化的大语言模型应用提供了灵活高效的优化策略(2025; 2025)

Reflect, Retry, Reward

  • 论文的新颖 Reflect, Retry, Reward(反思、重试、奖励)方法按以下方式运行,如图 1 所示
  • 具体步骤如下:
    • 第一步 :模型在提示完成一项任务
      • 如果成功 ,论文不做任何操作,因为模型已经满足需求
      • 如果失败 ,论文会提示模型生成一段 Self-reflection,分析可能出错的原因
        • 这需要一个验证器(validator)来自动评估响应是成功还是失败(二元判断)
        • 虽然在某些任务中可以定义不依赖真实标签的验证器(例如基本的 API 函数调用(API 调用是否返回有效响应?)、数学方程(方程是否计算为目标答案?)或代码(生成的代码是否能执行?)),但某些任务类型可能需要真实的目标答案作为验证标准
    • 第二步 :生成 Self-reflection 后,模型会利用对话历史中的反思内容进行第二次尝试
      • 如果仍然失败 ,论文不做任何操作;因为 Self-reflection 不足以将失败转化为成功
      • 如果成功 ,论文会使用 GRPO 仅奖励在 Self-reflection 阶段生成的 token
        • 通过将所有其他生成 token 的优势项(advantage terms)设为零来实现
        • 理解:其他生成 Token 肯定包含了第二步失败的 Token,但是包含了第一步成功的吗?【应该不包含吧?】
      • 论文这样做是因为作者希望模型学会更普遍地进行 Self-reflection,而不是针对特定任务进行专门优化
      • 换句话说,论文不奖励正确答案,只奖励 Self-reflection

Experiments

  • 论文通过两个不同任务的实验证明了方法的有效性:函数调用(function calling)和数学方程(math equations)

Function Calling

  • 论文使用 APIGen 数据集(2024b)进行函数调用实验
  • APIGen 是一个包含 60,000 个高质量函数调用的数据集,每个数据点包括用户查询(纯文本)、可能用于回答查询的工具列表(JSON)以及正确格式化的函数调用(JSON)
  • 数据集中共有 4,211 个特有的工具,每个工具平均有 2.3 个参数,每个用户查询平均有 2.8 个可选工具(1-8 个)
    • 只有当模型不仅选择了正确的工具,还生成了正确的参数和值时,才被认为正确
    • 下面是一个挑选两个工具的示例
  • 为了保持实验的完整性,论文仅评估在 APIGen 数据集发布(2024 年 6 月)之前发布的模型
    • 论文报告了 Qwen2(1.5B/7B Instruct)(2024)、Llama3.1(8B Instruct)(2024)和 Phi3.5-mini Instruct(2024)的结果
    • 论文还报告了 Qwen2-72B Instruct、Llama3.1-70B Instruct 和 Writer 的 Palmyra X4(2024)的基线性能
      • 论文是 Writer 公司发表的,所以选了他们的模型
  • 因为不同模型家族有不同的建议 tool-calling 方法,作者为每个模型家族都测试了不同的模版并最终选择最好的模版
  • 对于函数调用验证器,论文要求模型输出与数据集中的正确答案完全匹配(即基于真实标签)。论文使用以下提示生成失败函数调用尝试的 Self-reflection:

    You tried performing the task, but failed in generating the correct tool call. Reflect on what went wrong and write a short explanation that will help you do better next time.

    • 基本思路是:告诉模型未能生成正确的工具调用,让模型反思出错原因,并写一段简短的说明,以帮助模型下次做得更好

Countdown Math Equations

  • 论文使用 TinyZero 项目引入的 Countdown 数据集(2025a, 2025b)进行数学方程实验
    • Countdown 数据集包含 450k 组 3-4 个数字和一个目标数字
    • 目标是通过对数字应用基本算术运算,给定一组数字和目标值,仅用加减乘除构造等于目标的等式,每个数字仅用一次,常作为推理 / 强化学习的训练任务
    • 只有当模型使用了所有数字(顺序不限)且最终方程成功计算为目标数字时,才被认为正确
    • 示例如下:

      Using the numbers [4, 73, 4, 23], create an equation that equals 76. You can use basic arithmetic operations (+, -, *, /) and each number can only be used once.

  • 同样,为了保持实验完整性,论文仅评估在 Countdown 数据集公开(2025 年 1 月)之前发布或知识截止日期早于该日期的模型
    • 论文报告了 Qwen2.5(1.5B/3B/7B Instruct)(2025)、Llama3.1(8B Instruct)、Llama3.2(3B Instruct)和 Writer 的 Palmyra 1.7B 的结果
    • 论文还报告了 Qwen2.5-32B Instruct、Qwen2.5-72B Instruct、Llama3.1-70B Instruct 和 Palmyra X4(2024)的基线性能
  • 对于数学方程验证器,论文要求生成的方程与提示中的目标答案匹配(即不需要真实标签)。论文使用以下提示生成失败 Countdown 数学方程的 Self-reflection:

    You tried solving the problem and got the wrong answer. Reflect on what went wrong and write a short explanation that will help you do better next time.

    • 基本思路是:告诉模型尝试解决问题但得到了错误答案,让模型反思出错原因,并写一段简短的说明,以帮助下次做得更好

A Dataset of Failures

  • 出于效率和分析考虑,论文没有在完整的函数调用和数学方程训练集上训练模型,而是选择首先为每个任务创建一个失败数据集
    • 论文为每个任务的每个模型生成最多 64 个响应(根据模型大小调整),并仅保留模型失败的查询(基于任务相关的验证器)
    • 论文通常为较大的模型生成更多响应,因为它们失败频率较低,否则会得到更少的训练样本
  • 这种方法有几个优点
    • 第一:它节省时间,因为模型已经能成功处理的查询是无法从中学习的
    • 第二:通过为每个查询生成多个响应,数据更具鲁棒性
    • 第三:通过仅包含失败案例,我们可以精确确定模型需要多少样本才能收敛到最佳 Self-reflection

Multi-Step GRPO

  • 论文以 TRL 框架(2020)为基础,实现了多步 GRPO 算法(即从 Self-reflection 后的第二次尝试中学习)
  • 论文扩展了 GRPOTrainer,并修改其 _prepare_inputs 函数以调用 second_step 函数
    • 该函数在 GRPOTrainer 生成的补全基础上执行另一步生成,而不影响 GRPOTrainer 已计算的掩码(mask)
    • 由于论文在失败数据集上操作,模型生成的 Self-reflection 文本的掩码对应其 token
    • 这样,我们可以在初始补全上执行任意数量的后续步骤,并仅奖励初始补全对应的 token(通过 GRPOTrainer 生成的掩码)
  • 论文在失败数据集上训练模型,最多 1,750 步,有效批次大小为 256 个失败样本(尽管大多数模型收敛得更快)
    • 例如,Llama-3.1-8B Instruct 的函数调用实验仅需 100 个训练步骤,使用了不到 2,000 个独特查询
    • 所有函数调用实验平均使用了不到 25,000 个独特查询,数学方程实验平均使用了约 15,000 个独特问题
  • 论文使用了标准 GRPO 训练参数(2024),并进行了超参数实验
    • 最终实验中,KL 散度系数设为 0.001,学习率为 5e-7,采用余弦退火调度和 0.03 的预热比例
    • 每个模型使用 4 到 8 个 H100 GPU 进行训练。由于 GRPO 的计算效率和可扩展性问题(2025),论文将实验限制在 1.5B 到 8B 亿参数的模型
  • 除了以上实验结果外,作者还在一些小模型上进行实验,论文没有 Report 这部分实验:
    • 这些实验速度快,但是他们生成正确答案和 self-reflect 的能力非常有限(比如 Qwen2/Qwen2.5 0.5B Instruct and Llama3.2-1B Instruct)
    • 相似地,尽管微软的 Phi 3.5 小模型也能完成 Function Calling,但在 equation writing 方面能力不行

Experimental Results

  • 论文的主要实验结果如表 1 和表 2 所示
    • 表 1 展示了各模型在 APIGen 测试集(12,000 个样本)上第一次和第二次尝试的表现(包括训练前后的对比)
    • 表 2 展示了在 Countdown 测试集(15,000 个样本)上的相同数据
  • 在 APIGen 方面
    • 第一次尝试的表现与模型大小完全正相关(符合预期)
      • 包括 Vanilla 1st Try 和 Trained 1st Try
    • 通过 Self-reflection 的第二次尝试,模型表现平均提升了 4.5%,这与之前的研究一致
    • 最大的提升出现在 GRPO 训练之后:
      • 尽管论文仅奖励 Self-reflection 生成的 token ,几乎所有 Trained 模型在一次尝试后就能超越 Vanilla 模型两次尝试的表现
      • 理解:这说明训练是非常有用的
      • 作者猜测这是因为 Self-reflection 的 token 通常有助于模型推理,因此即使不需要显式生成 Self-reflection,模型也能受益
    • 尽管如此, Self-reflection 在训练后仍然有帮助,当模型可以通过 Self-reflection 进行第二次尝试时,表现平均进一步提升了 4.7%
    • 特别地,经过 GRPO 训练的 Qwen-2-7B 模型(在两次尝试后),其表现甚至超越了未训练的 Qwen-2-72B 模型(在两次尝试后),尽管后者规模是前者的 10 倍
  • 在 Countdown 方面
    • 整体表现较低,尤其是未训练的 Llama 模型(包括 Llama-3.1 和 Llama-3.2)在这一任务上表现非常糟糕
    • Llama-3.1-70B 模型的表现甚至不及 Qwen-2.5-3B 模型(规模小 20 倍的)
    • 性能提升的模式与 APIGen 实验类似,但幅度略高:
      • Self-reflection 在训练前和训练后分别平均提升了 5.3% 和 8.6%
      • 作者猜测这些更大的提升是因为模型的初始基线较低,因此有更多的学习空间
  • 论文的发现不仅验证了之前关于 Self-reflection 益处的研究,还展示了通过 GRPO 优化 Self-reflection 可以进一步提升性能

Better Self-reflections

  • 为了展示 Self-reflection 训练如何改进 Self-reflection 的质量,论文在图 2 中提供了一个定性示例,对比了未训练模型和经过 GRPO 训练的模型生成的 Self-reflection
  • 可以明显看出,未训练的 Self-reflection 更长、更冗长且重复,而训练后的 Self-reflection 更简洁、清晰且通用
  • 尽管这直观上合理(人类也更喜欢简短、清晰的指令),但这一发现与思维链(Chain-of-Thought)式输出的观点形成对比,后者被认为表现更好恰恰是因为其更冗长
  • 论文将其作为一个开放问题:何时生成简洁或冗长的输出对模型更有利
  • 理解:图2 展示的是 self-reflection 的内容,经过 GRPO 训练后,给出的 self-reflection内容都很简单且直接,而且不包含 CoT;而训练前的内容一般是非常冗长的
    • 一个猜测是因为问题不够复杂,简单的提示就够了,或者模型的 CoT 反而容易引入错误,导致模型学到在 self-reflection 时不要加入过多的 CoT 内容

Low Catastrophic Forgetting

  • 微调模型时的一个常见问题是灾难性遗忘(catastrophic forgetting),即模型在某一任务上过度专业化而牺牲其他任务的性能(2016; 2017; 2024)
  • 论文的 Self-reflection 训练旨在以任务无关的方式提升性能,论文在多个多样化基准(MMLU-Pro、GSM8K、Hellaswag 和 MATH)上评估模型,以衡量其在语言理解、数学问题解决和常识推理方面的能力
  • 论文使用常见的评估框架 lm-eval(2024)进行测试
  • 作者的假设是:性能应保持相对稳定,因为论文从未针对特定任务进行优化,而是优化通用的 Self-reflection 推理能力
  • 表 3 中展示了实验结果
    • 性能在 Self-reflection 训练后确实保持稳定
    • 在大多数情况下,与基础模型相比,性能下降不到 1%,甚至有些模型表现更好
    • 例如,Qwen-2.5-1.5B 在 MMLU-Pro 和 MATH 上的表现分别提升了 0.6% 和 0.8%
  • 基于以上实验结果,作者认为论文的方法对灾难性遗忘具有鲁棒性

Limitations

  • 并非所有任务都能轻松定义二元成功/失败验证器
  • 论文开发这一方法时假设标注训练数据可能稀缺,但也认识到如果有可用的真实标签,可以将其用作验证器
  • 也可以使用更大的模型作为评判者(2023)
  • 论文还发现,论文的方法并非适用于所有模型和任务;模型必须具备执行任务、 Self-reflection 和学习的基本能力,才能通过提升自我修正能力发挥作用
    • 例如,Llama3.2-3B Instruct 无法在函数调用任务上学会自我修正

附录 A Prompt Templates

  • 为便于复现和清晰理解,论文提供了训练期间使用的提示模板细节
  • 论文尽可能遵循模型提供方的推荐提示方式,并通过迭代优化确保每个模型在每项任务上达到合理的基线表现

A.1 Function Calling

  • Qwen 2 系列模型 对于 Qwen 2 系列模型的函数调用任务,论文采用以下提示风格
    • 首先,提供系统提示:

      你是一个能够回答问题并协助完成任务的助手

      \# 工具
      你可以调用一个或多个函数来协助完成用户查询

      函数签名位于 <tools></tools> XML 标签内:
      <tools>
      {工具列表,每行一个工具}
      </tools>

      对于每个函数调用,返回一个包含函数名称和参数的 JSON 对象,并将其放在 <tool_call></tool_call> XML 标签内:
      <tool_call>
      {"name": <函数名称>, "arguments": <参数 JSON 对象>}
      </tool_call>

    • 随后,以用户角色提供数据集中的查询。模型会生成首次任务尝试。如果尝试失败,则提示生成 Self-reflection :

      你尝试完成任务,但未能生成正确的工具调用。请反思问题所在,并写一段简短的说明以帮助下次改进

    • 生成 Self-reflection 后,再次提供系统提示和用户查询,为模型的第二次尝试做准备
  • Llama 3.1 和 Phi 3.5 模型
    • 论文遵循 Llama 3.1 推荐的工具调用格式。Phi 模型使用 Llama 模板效果更佳。系统提示如下:

      当你收到工具调用响应时,请使用输出内容回答原始用户问题

      你是一个具备工具调用能力的助手
      以用户角色提供工具和查询:
      根据以下函数,请以 JSON 格式返回一个函数调用及其参数,以最佳方式回答给定提示

      响应格式为 {"name": 函数名称, "parameters": 参数字典}。不要使用变量

      {工具列表,每行一个工具}
      问题:{用户查询}

    • 模型生成首次尝试后,提示 Self-reflection :

      你尝试完成任务,但未能生成正确的工具调用。请反思问题所在,并写一段简短的说明以帮助下次改进

    • 随后仅提供用户查询,为第二次尝试做准备

A.2 ountdown Math Equations

  • 系统提示如下:

    请逐步推理,并将最终答案放在 \(\boxed{}\) 中

  • 用户提示为:

    使用数字 {数字列表} 创建一个等于 {目标值} 的方程。你可以使用基本算术运算(+、-、*、/),且每个数字只能使用一次。请逐步推理,并将最终答案放在 \(\boxed{}\) 中

  • 模型生成首次尝试后,若失败则提示 Self-reflection :

    你尝试解决问题但得到了错误答案。请反思问题所在,并写一段简短的说明以帮助下次改进

  • 生成 Self-reflection 后,重复用户提示,为第二次尝试做准备

附录 B Error Analysis

  • 论文对训练前后模型的错误进行分类,以更好地理解模型在这些任务中容易犯的错误类型,以及哪些错误可以通过 Self-reflection 训练缓解
  • 论文仅分析首次尝试任务时的错误(pass@1)

B.1 Function Calling

  • 将错误分为三类:工具选择错误、参数名称或值错误、格式错误
  • 参数选择比工具选择更具挑战性
  • 小模型(如 Qwen-2-1.5B Instruct 和 Phi-3.5-mini Instruct) :未经训练时在工具选择上表现较差,训练后对参数值的改进有限
  • 大模型(7-80 亿参数) :未经训练时工具选择已较准确,训练主要提升参数选择能力

B.2 Math Countdown Equations

  • 将错误分为三类:无效方程(含非法字符)、使用非提供数字(错误数字)、方程结果未达目标值(未命中目标)
  • 所有模型 :主要问题集中在未能仅使用允许的数字
    • 训练显著减少了此类错误(除 Qwen-2.5-7B Instruct 外)
  • Qwen-2.5-7B Instruct :训练后更倾向于命中目标值,即使使用了错误数字
1…838485…352
San Ye

San Ye

Stay Hungry. Stay Foolish.

704 posts
53 tags
© 2026 San Ye
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4