正文
通过研究一种最流行的RL算法,我们能一窥其巨大的推理开销。
组相对策略优化(Group Relative Policy Optimization, GRPO)是一种常用算法,因为DeepSeek用它来训练R1模型而名声大噪。
在GRPO算法中,模型需要回答一个问题,并针对该问题生成多个候选答案。每个答案都可以看作一次「推演 (rollout)」,本质上是模型在尝试寻找解决方案。
针对每个问题的推演次数从几次到上百次不等,虽然没有技术上限,但推演次数越多,占用的内存和计算资源就越多。
由于每个问题都要生成海量答案,这使得RL成为一种推理密集型任务。这一点的影响尤其重大,因此将在后续部分被反复提及。
接下来,模型生成的答案会与一个标准答案进行比对评分。在GRPO中,每个答案都会获得一个奖励分数。
计算出奖励分数后,模型会通过梯度下降算法进行更新,以提高生成那些能获得正向奖励的答案的概率。
GRPO 是近端策略优化(PPO)的一种变体,它不需要PPO中的评论家模型(critic model),因此内存效率更高。
PPO和GRPO既可以采用学习出来的奖励模型,也可以使用基于规则的奖励系统来评判答案质量。
由于内存需求较低,GRPO在开源社区被广泛采用,但顶尖实验室应该大多会继续使用PPO的各种变体。
PPO由OpenAI 发明,其内部使用的版本与GRPO通常对标的公开版本已有实质性不同,而且这些实验室面临的计算资源限制也更少。
其核心思想在于,RL通常需要一个问题、一个用于核对的标准答案,以及一种向模型传递信号以指导其行为调整方向的机制。
模型探索答案的方式多种多样,但都要求以多次不同推演的形式生成多个候选答案,因此对推理端的资源要求很高。
随后,模型会被更新,以提高正确答案的出现概率,所以这个过程也隐含了训练的环节。
如前所述,强化学习在可验证奖励的领域已取得长足进步,原因之一在于这类任务的奖励函数很容易定义——例如,数学题的答案非对即错。
然而,从技术上讲,奖励函数可以是用户想要优化的任何目标。
从概念上讲,强化学习模型的主要目标是最大化总奖励。
以训练模型下国际象棋为例,首要目标就是在不违规的前提下赢得比赛。模型可以通过在不同棋局中学习哪些走法有助于获胜,来不断提升棋力,还能从所处环境中获得反馈。
不过,如果涉及到更宽泛的任务定义奖励,就更像是一门「玄学」了,因为它实在难以恰到好处地把握。
即便是在目标明确的环境中,要设定一个理想的奖励函数,也需要大量的研究、测试和优化。
芯片设计就是一个很好的例子。
谷歌为辅助芯片设计而开发的AlphaChip模型,就采用了强化学习训练。
这个模型协助设计了谷歌的TPUv6芯片,并成功将其线长(wirelength)缩短了 6.2%。在这个案例中,奖励函数被明确定义为:
这个函数引导模型去精确地最小化几个关键因素:线长、拥塞度和密度。
值得注意的是,即便是这样一个相对简单的奖励函数,其设置过程也绝非易事。拥塞度和密度都带有一个标量值(α和γ)来调整其权重。
这些数值是工程师们基于期望的权衡取舍,通过大量实验得出的最终结论,即线长是首要优化因素。
而在写作、策略规划这些领域,往往并不存在明确的标准答案,属于不可验证的领域。
曾有人怀疑:是否有可能在这些领域应用强化学习?SemiAnalysis认为,这完全可行,而且已经实现了。
要做到这一点并不难,只需要改变奖励机制:不再依赖形式化的验证器进行检查,而是利用其他模型,依据一套评分标准(rubric)来判断答案的优劣。
OpenAI正是使用强化学习来调整模型行为,这比数学问题更为抽象。
在关于审慎对齐(deliberative alignment)的论文中,OpenAI用了一个LLM作为「评判员」,并依据一套评分标准,通过强化学习来确保模型更安全、减少对无害请求的错误拒绝。
并且,这个过程完全使用的合成数据。
正如前文所述,他们还发现此方法「在分布外的安全场景中展现出强大的泛化能力」。
因此,这种方法已被用于训练o1、o3-mini和o4-mini,还会继续应用于未来的推理模型。
推理能力不仅对解决数学问题至关重要,对于那些不可验证的任务也大有用处。
比如在很多情况下,更强的推理能力能帮助模型更好地判断何时应该拒绝用户的请求。
但不可否认,在不可验证领域,某些因素的影响会更大,比如模型的「个性」会极大影响其写作风格。
此外,应用于不可验证领域的强化学习也更加多变。
比如之前被热议的GPT-4o「谄媚」行为,部分原因就是OpenAI基于用户偏好数据进行强化学习的结果。
这就说明,一个本意良好的奖励函数,也可能会导致不良行为。
o3模型已清晰地展示了强化学习的有效性,尤其是对外部工具的高级运用上。
o3的表现证明:拥有智能固然重要,但能够接触并善用工具则更为关键。
为了实现这一能力,OpenAI采取了几个关键措施。
首先,要确保模型能接入工具。这可以作为更广泛基础设施的一部分来实现(例如,让模型能访问特定环境)。
在模型层面,工具的调用可以通过特殊的Token来触发。
例如,让模型使用像
这样的特殊Token来启动外部搜索,搜索结果以结构化的形式返回,可直接用于其推理过程。
通过赋予模型访问多种不同特殊Token的能力,它便能快速便捷地接入不同的环境。
另一项核心挑战在于,该选择恰当的问题集进行训练?
即便模型能访问工具,如果问题本身并不需要,它也可能选择完全不使用。
因此,为了有效地训练模型,需要提供足够困难、必须借助工具才能解决的问题,从而确保模型学会自然地利用外部资源。要把握好这个度非常困难,需要大量测试来验证。
同时,过度使用工具也可能降低性能,使奖励信号变得复杂,从而影响整体效果。
其他关键因素还包括:确保每次「推演 」都有丰富的初始状态,且每个起点都能生成多种响应,以提升稳定性和学习效率;对格式错误的输出施加惩罚;以及对正确使用的标签给予奖励。
总而言之,打造一个o3级别的模型,关键在于两点——
一是通过特殊Token等方式,为模型提供访问多种工具的权限;二是在那些能「迫使」模型使用这些工具的问题上进行训练。
尽管在信息查找和研究方面能力出众,o3却因其严重的幻觉问题而饱受诟病。
它会频繁地无中生有,并且随着rl计算规模的增加,这个问题甚至变得更加严重。这究竟是为什么?
高级分析师认为,这归根结底在于这些模型的训练方式。
模型通常只因最终结果正确而获得奖励,其推理过程是否正确却不被考量,这使得它们能够通过有缺陷的逻辑「蒙混过关」,得到正确答案。
比如,一个模型即便误解了规则,也可能在一个简单的棋盘游戏中获胜,从而错误地认为其有缺陷的推理是可接受的。
这种机制不仅没有惩罚模型的错误思维,反而对其进行了变相的奖励。
SemiAnalysis推测,这种情况不仅限于棋盘游戏。
这无意中让模型学会在新的、未经训练的场景中产生幻觉,将有缺陷的推理能力泛化到更广泛的领域。
让推理更强模型作为评判员,能起到一定效果,因为它们可以纠正整个推理链(reasoning trace)。
其他的思路包括,设计更精细的奖励信号,比如对每个输出Token给予不同奖励,从而在奖励正确答案的同时,惩罚不正确的逻辑。
需要明确的是,这种不当的奖励行为也会影响到代码生成等任务。
一个模型可能编写出质量很差的代码,却依然能通过单元测试。这更加凸显了设计正确奖励函数的必要性。
强化学习不仅能提升LLM性能,还能优化自身,形成一个良性循环。
这种「RL优化RL」的方式,依赖于大语言模型评判员(LLM-Judge)和评分标准(rubric),来提供强化学习信号。