为什么强化学习(RL)很重要

3005 字
7 min read
标签: RL

📝 转载 / 引用来源: 作者 ybq · 查看原文

这篇文章简单讨论一下强化学习(RL)的作用:我们到底该如何理解强化学习在后训练(post-training)阶段的定位?为什么有时模型仅靠蒸馏就能取得极好的效果?

文章系个人观点,未必正确,大家随便看看。


思维链(CoT)模式

SFT 阶段有一项十分重要的职责:为后训练阶段的 CoT 模式定型。这几乎决定了模型在后训练阶段所能达到的效果上限。

至于 CoT 模式是什么,以及它为什么会产生如此大的影响,我们不妨举个例子。给定一个提示词(prompt):997 × 1003,会存在以下三种 CoT 模式:

  • 优质模式:997 × 1003 = (1000 − 3)(1000 + 3) = 1000² − 3² = 999991
  • 一般模式:997 × 1003 = 1003 × (900 + 90 + 7) = 902700 + 90270 + 7021 = 999991
  • 劣质模式:997 × 1003 = 999991

显然,三种 CoT 模式都能帮助不擅长大数计算的模型正确解答这道题,但泛化到类似分布的数据时又会怎样呢?

  • 优质模式大概率可以稳定做对;
  • 一般模式要执行多次乘法和加法,步骤更多,出错概率也更高。即使做对了,它的词元效率(token efficiency)也会低得让人难受;
  • 劣质模式就更糟糕了。以我对大模型的了解,我怀疑把这条数据喂给一个小模型后,不管遇到 997 × 多少,它都会回复 999991。

因此,优质的 CoT 模式通常具有输出更短、准确率更高、更容易泛化的特点。诚然,SFT 带来的 CoT 模式会在后续的 RL 阶段发生变化,但许多高质量模式并不能在 RL 阶段轻易探索出来。就像训练智能体任务时,如果不在 SFT 阶段教给模型一些好的思路,主智能体(main agent)不会想到可以启动一个子智能体(sub_agent)处理局部工作,子智能体也很难想到可以与其他子智能体交换信息。

换句话说,进入智能体时代后,我们绞尽脑汁构造和筛选的环境轨迹(environment trajectories),本质上仍是在延续推理时代的同一项工作:寻找更优质的 CoT 模式。

强化学习的作用

话说回来,仅仅拥有优质的 CoT 模式并不足以训练出一个好模型,就像天马行空、思路宽泛的人未必真的健谈。人需要学会把自己的想法组织成良好的表达,模型也是如此。

具体来说,模型在预训练(pre-training)阶段学到的知识不同,分词器(tokenizer)的词表也有差异。因此,即使给定同一种 CoT 模式,不同模型也会有不同的最佳表达方式。例如,两个模型都学会了 99 × 99 = 99 × (100 - 1 ) = 9801 这种 CoT 模式,但在实际应用时:

  • 强模型解题:99 × 99 = 99 × (100 - 1 ) = 9900 - 99 = 9801;
  • 弱模型解题:99 × 99 = 99 × (100 - 1 ) = 99 × 100 - 99 × 1 = 9900 - 99 = 9900 - (100 - 1) = 9900 - 100 + 1 = 9800 + 1 = 9801。

绝大多数情况下,我们拿到的 CoT 模式都来自更强的模型,或者由人工编辑而成,往往具备“表述极简、思路极优雅”的特点。可问题在于,我们要训练的模型并不具备足够强的能力,无法直接消化这种模式。模型需要结合自身能力,对 SFT 阶段提供的 CoT 模式进行“本土化改造”。

这正是强化学习之所以重要的一个关键所在:在给定一种 CoT 模式的情况下,通过探索足够多的响应,找到与模型自身的知识储备和分词器最契合的表达方式,再强化这种表达方式,形成专属的 CoT 模式

  • 在推理任务中,SFT 提供的 CoT 模式只会告诉模型,做完题后反思一下会更好;至于反思多少次才能兼顾效果与效率,则需要模型在 RL 中自行摸索。同理,强模型在 RL 时会发现 CoT 模式中的某些步骤可以跳过,弱模型则会发现,还是写出 CoT 模式省略的步骤更好;
  • 在智能体任务中,SFT 数据会告诉模型有哪些子智能体可以使用,以及每个子智能体应在何时使用;具体如何使用,则需要模型在 RL 阶段自行摸索。1T 模型一次调用 2 个子智能体便可得到正确的奖励信号,100B 模型则需要调用 5 个子智能体才能得到正确的奖励信号。不同模型会在 RL 中找到最适合自己的智能体配置(agent setting)。

这也解释了一个现象:经过 SFT 后起点较低的模型,有可能在 RL 后达到更高的终点。我们看到的 SFT 起点低,大概率是因为这种 CoT 模式与模型能力不匹配,而不是 SFT 数据本身质量不佳。当我们使用 SOTA 模型的响应进行 SFT 时,常常会因为其 CoT 模式质量过高,导致 SFT 指标不尽如人意。要验证一种 CoT 模式的潜力,往往需要 SFT 与 RL 协同,这也是当前后训练的标配流程。

除此之外,RL 在某种程度上还有一点“基因突变”与“进化”的味道。当算力足够大、rollout_n 设置得足够高时,模型总有机会在 RL 过程中探索到新的、更优质的 CoT 模式。此时,优秀的 RL 算法(如 GRPO)需要充分利用这条高质量数据,给予模型足够强的学习信号,让它记住这种模式。

除了对 CoT 模式进行本土化改造外,RL 更重要的意义是让模型变得可控

按照传统理解,大家可能觉得只要精准控制 SFT 的数据分布,便可以控制模型在 SFT 后的输出。遗憾的是,时代变了。由于大量合成语料进入预训练和中期训练(mid-training)阶段,后训练阶段出现混乱模式的概率越来越高,即使所有 SFT 数据都很规范。

道理很简单:预训练阶段只看数据质量和数据洁净度,根本不会考虑后训练阶段为了改善用户体验而添加的各种规则。那些质量很高但格式并不优雅的数据训练了几十 T,怎么可能被寥寥几条 SFT 数据压制?何况 SFT 根本不具备压制模式的能力。

经过 SFT 的模型会输出多个 <think></think> 标签,影响推理服务切分 CoT 与响应;模型会中英混杂、屡教不改,影响用户体验;模型的输出长度也很不稳定,有时不反思,有时反思几十次……诸如此类,这些让产品团队头疼的问题,在奖励作弊(reward hack)面前却格外稚嫩:在 RL 阶段随手加一个惩罚损失(penalty loss),它们便再也不会出现。

至于现在标配的“思考档位”或“思考深度”,作为“模型可控化输出”的重要模块,看似复杂,其实只需在 RL 阶段为不同档位设置不同的上下文窗口,便可轻松实现。

强化学习与蒸馏

既然我们在讨论 RL 的重要性,就不可避免地要再提一下蒸馏(使用更强模型的响应进行 SFT)。关于二者谁更重要的争论,从 2023 年一直持续到现在。

目前没有直接证据表明,经过 RL 的模型相较于经过 SFT 的模型获得了某种质的提升。实际上,RL 带来的收益可以通过蒸馏窃取。RL 的本质仍是寻找更好的模式:通过堆算力找到的优质模式的确价值千金,但寻找过程本身可能并无价值。我们完全可以让经过 RL 的模型充当教师模型(teacher),借助蒸馏把它探索到的行为分布迁移到另一个模型,从而得到指标基本接近 RL 模型的学生模型(student)。这也是业界常用的合版方案之一:对多个 RL 子模型进行拒绝采样 SFT(reject sampling SFT);另一个方案则是 OPD。

当我们感慨某家模型的指标真高、词元效率真强时,很可能这个模型背后有一个更强的教师模型帮助它走了捷径。

道理很浅显:1T 模型在 RL 时探索到的模式,会比 100B 模型在 RL 时探索到的模式更加丰富。这时,把 1T 模型找到的优质模式喂给 100B 模型,再通过 RL 适应这种模式的具体表达方式(通常会让小模型的输出变得更长),小模型的指标就基本接近大模型了——这种做法在同尺寸、同词表的模型之间更是屡试不爽。

甚至,蒸馏可以通过改变数据分布,让学生模型比教师模型更强。例如,教师模型的 CoT 会随机使用中文或英文,而英文 CoT 的整体质量更高。我们便可在蒸馏时强行只保留英文 CoT 数据,从而得到更高的指标。但要注意,无论是蒸馏还是 OPD,任何能让学生模型效果超过教师模型的操作,都应该用于提升教师模型的效果(要么是学生模型使用的数据质量更高,要么是学生模型使用的奖励信号更准),而不是只关注这个操作本身有多厉害。

概括而言,蒸馏是一种偷看学习笔记的行为:无论是蒸馏 SOTA 模型的响应,还是蒸馏自家模型经过 RL 后的响应,都能让模型学到优质模式,得到一个起点很高、潜力很大,或二者兼具的 SFT 模型。在此基础上,再通过 RL 适应 CoT 模式并修复不良模式,进一步消化笔记中的知识,一个优秀的后训练模型便闪亮登场了。这也是许多小作坊选择只做 SFT、不做 RL 的原因:这种方案既节省算力,效果又好,谁能拒绝呢?

一言以蔽之:认为蒸馏无用的,大抵是没亲自训练过大模型的人;认为蒸馏是后训练的全部的,大抵是只想做追赶者的人。

关于软蒸馏

蒸馏聊完了,不妨再聊聊“软蒸馏”。

蒸馏 CoT 模式是最好用、但也最低级的蒸馏方法。真正高级且常用的蒸馏方法,是借助 SOTA 模型的能力优化自有模型,包括但不限于:利用 SOTA 模型合成处于现有模型能力边界的数据、分析现有模型的模式缺陷,以及优化 RL 所使用的验证器(verifier)……

只要国外模型领先于国内模型,那么国内模型就有源源不断的进步空间和优化手段。

软蒸馏是一种普遍现象。任何一家国内模型厂商都不敢说自己的优化过程没有 GPT 或 Claude 的帮助,只能说革命尚未成功,差距依然巨大。


除了要在基础设施(infra)的硬实力上拼刺刀外,LLM 在纯训练阶段已经是一场明牌竞争,比的是谁更善于规模扩展(scaling):扩展模型参数、RL 数据和智能体环境。

因此,越是想成为领头羊的团队,越要加大对 RL 的投入,早日摆脱对 SOTA 模型的(软)蒸馏依赖。反过来也一样:如果只是追求模型在某项能力上的应用价值,蒸馏便是最佳选择。

100%

分享文章

Markdown 链接

      

标题 + 链接