作者:Nando de Freitas
机器之心编译
别人都在用 X 发帖子,分享新鲜事物,微软副总裁 Nando de Freitas 却有自己的想法:他要在 X 上「开课」,发布一些关于人工智能教育的帖子。该系列会从 LLM 的强化学习开始,然后逐步讲解扩散、流匹配,以及看看这些技术接下来会如何发展。

话说回来,Freitas 有这个想法时还是 4 月 24 日,到今天为止,他已经更新了多篇帖子,每篇都干货满满。
由于涉及的内容需要费点脑细胞来思考,在更新了几篇后,Freitas 抱怨道:「随着数学知识的增多,自己 X 上的读者人数正在下降。」

或许,太硬核的东西,浏览量确实不会太高。
不过,遗憾归遗憾,这些帖子对于那些想学习 RL、从事大模型的人非常有帮助。
Freitas 也表示,他会不断更新内容,感兴趣的读者可以随时关注。
接下来,我们看看最近几篇帖子内容。
无监督学习、监督学习、强化学习终极定论尚未形成
监督学习对应于最基础的模仿形式:简单的行为复制。它通过最大似然估计,将世界状态(如文本问题)映射到行动(如文本答案)。我们将这种映射关系称为策略。监督学习需要高质量的专家数据,学生只是机械地模仿教师行为,因此需要教师本身必须足够优秀。教师仅示范操作方式,并不进行评分反馈。
另外,目前存在一些非常强大的监督学习方法,它们在通用性极强的专家指导下进行下一步预测(关联学习)和重构学习。这正是大语言模型预训练的核心原理,也是扩散模型、流匹配和自编码器在多模态感知与生成中运作的基础。从本质上看,预测下一个 bit 的过程实则是一种自由能(熵)最小化的过程,简而言之:在趋于无序的世界中创造有序。这正是细胞和生命运作的基本原理 —— 埃尔温・薛定谔和保罗・纳斯各自撰写的同名著作《生命是什么》对此有深入阐述。既然生命遵循这样的规律,那么智能系统采用类似机制运作也就不足为奇了。
另一方面,强化学习 (RL) 则侧重于选择性模仿(selective imitation),这对于优化特定任务的性能非常有效。RL 可以从智能体或其他智能体先前生成的大量次优经验数据中进行训练。RL 可以利用价值函数或其他工具(通过奖励学习)来识别和选择有用的信号。这种选择过程使模型能够利用大量廉价的次优数据进行学习,并最终超越最优秀的老师。
也就是说,在 RL 中,智能体可以识别哪些数据对学习有用,哪些数据应该忽略。
就像我们不会模仿父母的每一个行为,而是选择模仿部分,以及哪些部分应该忽略。
RL 的核心在于自我提高。智能体会生成数据,因此,他们可以从自身数据(成功和错误)以及来自其他智能体的混合数据中学习。
当我们使用奖励信号构建选择机制(例如,对数据进行排序并只挑选最佳的那一半)时,智能体就可以开始从自身数据中学习并自我提升,这种方式非常强大。
此外,智能体会利用其获得的知识来决定在环境中采取哪些行动,从而获得介入性因果知识。
在《An Invitation to Imitation 》一书中,CMU 教授 Drew Bagnell 探讨了一种名为 Dagger 的强化学习替代方案,其中智能体采取行动,老师来纠正学生。
对于智能体来说,从自身行动和自身经验中学习至关重要,这样它才能学会保持鲁棒性。
例如,如果智能体使用专业驾驶员提供的数据学习驾驶,有一天发现自己偏离了道路(这种情况即使是完美的老师也从未发生过),那么学生将不知所措。为了让学生学会回到道路上,它需要老师在那时提供建议。
一项重要的研究启示在于:生成模型对强化学习的作用与任何强化学习算法创新一样重要。这或许存在争议,但我认为过去十年间强化学习的进步,本质上是生成模型发展的结果。从算法演进来看(下文将详细展开),当前 AI 界普遍采用的基础算法思想 —— 如期望最大化算法(EM 算法)和策略梯度 —— 实际上已存在超过 50 年。真正的变革力量来自强化学习基础设施的规模扩张。
希望读者能通过本文认识到:关于无监督学习、监督学习与强化学习的终极定论尚未形成。虽然我质疑这种分类法的有效性,但在未来的教学实践中仍将沿用该框架以辅助知识传递。
分布式强化学习系统
智能体是一种能够感知环境、自主采取行动从而实现目标,并可能通过强化学习或教学来提升自身性能的实体。

智能体可以是一个多模态神经网络,它通过与环境的交互,为用户提供个性化目标。智能体观测得越多,就越容易为用户定制个性化的学习方案。
基于工业级大语言模型(LLM)的强化学习(RL),可能涉及数百万次并行交互,使用数十亿参数的模型,甚至需要调动整个数据中心 —— 成本极其高昂!
如何构建能在如此庞大尺度下高效运行的强化学习系统,绝非易事。
根据文章《IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures》、《acme: A library of reinforcement learning》,现代分布式强化学习系统可以分为两个部分:Actors 和 Learners。
每个 actor 通过使用称为策略的网络生成动作来与环境交互。actor 还从环境中收集奖励和观测结果。收集到的数据被添加到一个公共记忆中。
Learner 从记忆中采样数据并使用它来更新策略网络。更新网络后,需要将权重检查点发送给每个 actor。在设计此类系统时,测量每个操作的持续时间、每个通信链路的带宽等非常重要。这需要精确的工程设计以及全面的测量和消融。

在语言中,actors 是聊天机器人,环境是人。每次聊天的数据随后被发送到重放内存进行学习。通常,learner 可能比 actors 需要更多的存储空间和计算资源,因为 learner 需要跟踪梯度和大规模统计数据。
此外,了解 actors 的推理成本、通信成本和学习成本也至关重要。
另一方面,若数据采集速度不足,learner 可能需要重复利用历史经验来更新策略 —— 这正是 off-policy 场景的核心特征。此时必须解决一个关键问题:陈旧数据导致的偏差修正。在前面推文中的驾驶示例表明,过度依赖 off-policy 数据可能引发严重后果!
值得庆幸的是,研究者已提出多种解决方案:
-
重要性加权(Importance Weights):对历史数据赋予不同权重以修正分布偏差;
-
近端策略优化(PPO):通过剪裁机制控制策略更新幅度;
-
DeepSeek-R1 论文提出的加权方案:动态调整新旧数据贡献度。
当系统仅依赖大型历史经验库进行策略学习时,便进入离线强化学习(Off-line RL)或批量强化学习(Batch RL)范式。相较于监督学习,其优势在于继承了前文讨论的生成 – 选择机制;但相比在线强化学习,又因缺失环境实时交互而存在局限。
不过,离线强化学习在以下关键场景中具有不可替代价值:
-
高成本交互(如机器人物理训练);
-
高风险环境(如自动驾驶事故数据学习)。
用于后训练 LLM 的 RL
目前看来,RL 有多种形式。


其中一种是单步(one-step )RL 问题(上图左上角)。在这里,给定一个提示,模型会生成一个动作并得到一个评估。
这个动作可以是文本答案、CoT 推理序列、语音或任何其他行为信号,即任何 Token 序列。
评估通常是一个单一的结果奖励,例如答案是否正确。
与单步对应的是多步(multi-step)RL 问题,这种情况大多存在于与聊天机器人对话中,用户是环境,聊天机器人是智能体。
在用户不提供任何输入的情况下,智能体会思考下一步做什么,这是一个单步强化学习问题。这在我们的图中(左上角)清晰可见,因为这三个动作可以轻松地合并为一个动作,而不会破坏决策图的结构。
然而,规划整个对话以最终实现目标,在此期间用户和聊天智能体都会变化,这是一个多步强化学习问题(我们的图中,左下角)。
在这种设置下,智能体可以使用工具(例如 Web 浏览器、编译器等)来建模聊天机器人,从而收集信息。
当强化学习涉及多步时,可能每一步都会对结果有影响。就像当一个人获得奖励时,他并不知道是众多决策中的哪一个导致了奖励。这种现象人们称之为信用分配问题。
由于多步问题,强化学习通常是组合型的,而且维度非常高。在这些情况下,我们必须解决跨维度推理问题。
简而言之,强化学习真的很难,解的方差可能非常大。虽然研究人员发明了一系列概念来控制方差,但代价是引入了偏差,其中包括价值函数。这些概念在多步决策问题中很有用,但对于单步强化学习来说并非总是必需的。虽然其中一些想法在电脑游戏中很有效,但在 LLM 中却行不通。
在控制领域,普遍存在这些问题,如 T 步决策、二次奖励函数。这些被称为线性二次高斯控制器或调节器,构成了最普遍的控制类型之一 —— 模型预测控制 (MPC) 的基础。
然而,盲目地将为电脑游戏或控制开发的强化学习方法的理论和软件引入语言模型领域是危险的。
为了实现工具使用和多步辅助,我们需要为 LLM 提供多步强化学习。然而,要实现像 DeepSeek-R1 或测试时强化学习 TTRL 这样的方法,需要先解决单步强化学习问题,因为这个问题稍微简单一些。
所有 RL 智能体都能够自我学习和自我改进。如果设计得当,它们可以构建质量不断提升的数据集,从而生成更好的策略。RL 智能体的这一特性对于性能和安全性都至关重要。
可能存在一些更难的强化学习案例。比如有时决策范围是未知的或无限的,时间步长可能是连续的,也可能是中断驱动的,动作和观测可以是离散的、也可以是连续的,这些都增加了推理的复杂性。
出于教学原因,明天我们将首先介绍最简单的案例:单步强化学习。
单步强化学习与策略梯度
包括 DeepSeek-R1 在内的许多团队,当他们声称在进行 RL 时,会最大化单步目标函数,如下所示:

这些数学符号代表了以下概念:

也就是说,我们正在针对所有的数据字符串 (a,o) 对 LLM 进行微调。在处理文本时,通常使用积分符号来表示非常庞大的离散求和。
因此,如果我们有一个包含 N 对观测值和动作 (o, a) 的数据集,那么在实际操作中,我们会按如下方式评估目标函数:

环境(用户)也会为我们提供观测值(提示或指令 o)。所以不需要知道分布 P (o)。由于不知道最优动作(大语言模型生成的内容,也就是动作 a),将对这些动作进行积分。这是在概率中处理未知量的标准方法。我们对所有可能的值按照出现的概率进行加权求和。在这种情况下,动作的概率就是大语言模型所生成的结果。大语言模型是一个概率模型。
这种在对大语言模型的权重进行最大化的同时对其输出进行求和的方法,被称为最大期望效用,这也是博弈论中理性主体所采取的做法。通过最大化期望效用(奖励的另一种说法),人们可以收敛到纳什均衡。在统计学中,人们把这个过程称为边缘化,而当它还涉及到对某个量进行最大化时,它就被称为实验设计。
总之,在单步强化学习中,我们通过调整大语言模型的策略来最大化期望回报 R,也就是说,对于目前大多数的大语言模型而言(见上一篇文章),在单次结果中进行奖励 R=r (a,o)。
策略梯度:就是人们所说的 on policy RL 或 Reinforce 算法。这种方法被称为 on-policy,是因为生成样本(动作)的策略(大语言模型)与正在被学习的策略是同一个。
当生成样本的成本低于学习成本时,这种方法是有意义的。也就是说,当 learner 可以按需轻松获取新样本时适用。
但对于成本高昂的游戏模拟引擎而言并非如此,在这类场景中,必须引入缓冲区和回放记忆来缓存数据。随着数据变得陈旧,就需要使用 off-policy 方法。
那如何计算单步损失的梯度,答案是只需沿着梯度方向更新参数即可。
从理论上讲,策略梯度可以使用微积分按如下方式得到它:

策略梯度常用技巧
前文重点介绍了策略梯度算法,不过大家还会使用一些技巧来提高性能。
现在,我们从一个常用的技巧开始,即从奖励中减去奖励的均值。得到的表达式被称为优势(advantage)。这项技术本身被称为基线减法(baseline subtraction)。
在策略梯度中,如果我们从奖励 r 中减去其均值,然后用下面的奖励来替代原来的奖励:

这样做并没有改变最大值的位置,但降低了方差。
此外,当奖励是二元的,而我们又需要一个更连续、渐进的反馈信号时,这种方法格外有用。
下面是证明过程:

KL 散度
KL 散度是一种用于衡量两个分布之间「距离」的方法,从数学角度来说,KL 散度定义如下:

如果在强化学习的损失函数中加入 KL 散度项,本质上是在鼓励后训练(post-training)过程中学习到的 LLM 策略保持接近监督微调(SFT)阶段的策略。
如果我们根据最新的策略 p(a|o) 采样 N 个动作,我们可以再次使用蒙特卡罗方法来近似计算 KL 散度:

此外,John Schulman 有一篇很棒的关于如何高效近似 KL 散度的博客。他提出了以下替代方法:

采样、PPO 以及 GRPO 的重要性
在强化学习系统中,有时会有多个 actors 来收集数据并将数据添加到记忆系统中。然后,learner 从这个记忆中提取样本进行学习。
在这种异步设置中,有些样本会变得过时。生成样本的机制(actors)与更新参数的机制(learner)不同,因此这种方法被称为 off-policy。
重要性采样(Importance Sampling, IS)提供了一种校正 off-policy 样本偏差的解决方案,其核心操作如下:
我们通过在单步目标函数的被积项中乘以并除以旧策略 π_old (a|o) 实现修正。系统将基于该旧策略采取动作,但实际学习的却是新策略 —— 这正是 off-policy 学习的本质特征。数学表达上,通过引入行为策略进行乘除变换后,单步强化学习目标函数转化为:

如果我们观察到一个提示 o^i ,并从行为策略中采样出一个动作 a^i,可以再次用以下蒙特卡罗近似来替代积分,这种近似被称为 IS 估计:

分布的比率被称为重要性权重:

这个权重可能会增大并导致不稳定性,尤其是因为我们计算这个比率所涉及的所有字符串的空间是非常高维的。
PPO:为了防范高方差和不稳定性,我们必须巧妙地截断(裁剪)重要性权重。让我们再次来考虑一下我们的 off-policy 目标:

近端策略优化(PPO)修改了这个目标函数,对那些使 w (theta) 偏离 1 的策略变化进行惩罚,具体如下:

PPO 的内容远不止这些,所以我鼓励大家都去读一读这篇有影响力的论文《Proximal Policy Optimization Algorithms》。
DeepSeek-R1 将裁剪后的重要性采样、基线减法以及与参考策略的 KL(相对熵)接近度相结合,以此来训练其推理模型。(PPO 也做了所有这些事情,但方式略有不同。)
现在我们已经介绍了 DeepSeek 强化学习算法(GRPO)的所有要素,所以接下来就只是把它们整合起来的问题了。
当然,真正的挑战在于解决实现过程中基础设施和数据方面的问题。

为了得到第一个蒙特卡罗估计值,我们使用来自行为策略 pi_old 的样本 a^i ,但是如果我们想要保持估计的无偏性,对于第二项(即 KL 散度项)的蒙特卡罗估计应该使用来自 pi_theta 的样本 a^i ,而不是来自 pi_old 的样本。
正如在之前的文章中所提到的,我们已经从奖励中减去了平均基线值:

但与 DeepSeek-R1 不同的是,我们没有除以标准差。这一点值得通过实证来检验。
注意:在这个版本中,我们针对每个观测值采样一个动作。也可以针对每个观测值采样多个动作来减少方差。DeepSeek-R1 基本上就是这么做的,其梯度更新包含了针对单个问题的多个动作样本。这种技术在随机近似中被称为公共随机数。
如果你对 PPO 和 GRPO 的这些公式感到熟悉了,那么你现在几乎已经了解了如今所有公司在 LLM 中使用的强化学习(RL)所需的全部理论知识。
接下来,Freitas 想从单步强化学习拓展到多步强化学习,从而进行更深入的研究。感兴趣的小伙伴,可以随时关注 Freitas 动态。
(文:机器之心)