什么!SFT完全没用!

NLP从入门到放弃

共 5457字,需浏览 11分钟

 ·

2024-10-05 21:55

知乎:莫笑傅里叶
链接:https://zhuanlan.zhihu.com/p/744847498

Google Deepmind: Training Language Models to Self-Correct via Reinforcement Learning

解决了什么问题:

让大模型学习自我矫正,从而提升LLM输出性能。

现有方法:

  1. Prompt Engineering
  2. SFT (Supervised Fine-Tuning)

一般都会推理多次,用一个verifier来判别最终的输出。

有效的verifier一般只局限于有强外部反馈的任务中,诸如代码问题,把代码跑一遍能得出哪里报错。如果没这种强外部反馈的任务,目前的方法中LLM的self-correct能力基本为0。

为什么SFT无法实现self-correct?

我们展示了 SFT 方法的两个明显失败来源:

  1. SFT 倾向于学习一种做出微小更改的校正行为模式,由于分布偏移,导致模型对响应的self-correct能力下降。
  2. 离线的SFT可能无法有效地利用额外的上下文tokens来学习细微的算法行为。这是由于训练数据中的分布偏移所带来的挑战,以及某些病态行为的放大——这些行为在训练数据上看似有前途,但并未学习到正确的策略。

这意味着一种有效的方法必须满足两个要求:

  • [D1] 它应该直接在自生成的traces上进行训练,以减轻影响SFT的分布不匹配。
  • [D2] 在学习过程中自行生成的traces应该防止做出轻微的编辑导致模型坍塌。

方法

SCoRe: Self-Correction via Multi-Turn Reinforcement Learning

使用on-policy强化学习(RL)是满足必要条件 [D1] 的方式。采用分层框架,将标准的单回合RL扩展到多回合。

在使用RL优化策略时,至少有两个同样好的解决方案:

  1. 学习从第一次尝试到第二次尝试的改进。
  2. 学习在第一次尝试中产生最佳响应,然后在第二次尝试中不进行任何纠正。

但只有前一种策略能够泛化到新问题,而一个过度参数化的LLM可能会不一定会学习策略(1)而不是(2),因为这两种策略在训练集上看起来同样最优。抽象地说,除非优化奖励的“直接”策略看起来不太可行,否则在训练过程中学习自我纠正的“元策略”是困难的。

我们的方法 SCoRe 分两个阶段操作:

阶段 I:训练模型初始化以防止崩溃
在第一阶段(阶段I),SCoRe训练一个模型初始化,通过在相对静态的第一次尝试分布下,明确地教导模型纠正其第二次尝试的响应,从而在后续的RL中不太容易发生崩溃。

这个初始化放大了在模型自身的第一次尝试分布下第二次尝试响应的覆盖范围,偏向于高奖励的响应。虽然这通常在大型语言模型微调流程中通过SFT实现,但实验表明,SFT将模型训练得只依赖于一种纠正行为模式。我们没有用SFT来初始化RL训练,而是开发了阶段I,以产生一个不太容易崩溃的独立初始化。为此,我们显式地微调基础模型,使其在第二次尝试中产生高奖励的修订,同时强制模型不改变其第一次尝试的回复,通过使用 KL 散度将第一次尝试的回复分布限制为尽可能接近基础模型。虽然这看起来次优——具有较少错误的第一次尝试回复可以被纠正为更好的第二次尝试回复——但正如我们将要展示的,这个阶段对于减少基础模型倾向于简单地耦合第一次和第二次尝试分布的偏差至关重要,从而在实际的多轮强化学习运行时陷入局部最优。

形式上,我们优化的目标是:

其中, 是一个超参数,旨在仅对第一次尝试施加严格的 惩罚,以避免第一次回复的偏移。注意,我们仍然使用了默认 散度惩罚,但它的权重要小得多,并且为了简洁起见,省略了。我们表明,与朴素的多轮强化学习不同,阶段 I 在解耦两次回复方面更有效。

阶段 II:带有奖励的多轮强化学习

借助来自阶段一的模型初始化,该初始化在耦合两次响应方面展示了显著较小的偏差,SCoRe 的第二阶段现在在两次尝试中训练响应,当然,我们还希望确保在此过程中不降低第一次尝试的响应质量。因此,对于两轮自我纠正问题,我们针对以下目标来训练策略

其中 对应于传递给模型作为上下文的输入 集。SCoRe 使用基于策略的策略梯度方法来优化。

综合起来及实现细节

我们的方法在以下图进行了说明。SCoRe 方法交错地应用阶段 I 和阶段 II,进行多次迭代。在所有实验中,我们使用了一个较小的 (即,对基模型的 散度惩罚的系数),并发现设置 在我们的实验中效果良好。在实际操作中,也可以使用自适应的 ,以平衡第一次尝试的 正则化和第二次尝试的策略损失。在我们的一些实验中,我们也选择通过将从不断采样基模型获得的第一次尝试解决方案作为离线提示,扩展用于策略生成强化学习的状态覆盖范围。我们发现,尤其是在阶段 II 中,当第一轮策略可能已经明显偏离基模型的策略时,整合这些数据可以带来显著的好处,特别是在尝试从有限数据中学习时。

总结

  • 阶段一:我们没有使用SFT(会病态地放大偏见)来初始化强化学习训练,而是训练一个良好的初始化,使其在第一次尝试时模仿基础模型的初始响应,并在第二次尝试时产生高奖励的响应。
  • 阶段二:联合优化这两次尝试,其中第二次尝试使用设计的奖励来激励发现自我纠正策略,而不是采取简单的策略,即在第一次尝试中产生最好的响应,然后在第二次尝试中对其进行任何小的修改。

我们的核心思想是:必须使学习更复杂的算法策略变得更有吸引力,而不是退化到一种无法推广的行为模式。为了避免分布转移的问题,这必须在自生成的在线数据上完成。

SCoRe通过分阶段训练模型,在多轮RL中有效解决了自我矫正策略的学习问题。

实验

浏览 245
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报