从 MDP 到 Agentic RL:对大模型强化学习的一次系统梳理
参考来源:
图解大模型 RLHF 系列之:人人都能看懂的 PPO 原理与源码解读
The Landscape of Agentic Reinforcement Learning for LLMs: A Survey (arXiv:2509.02547)
关于马尔可夫
什么是马氏过程
直观地来讲,对于一个马氏过程,指的是在 之前的所有信息全部已知的情况下, 的分布只和 的取值有关,与 前面发生过的事情无关,即未来只由现在决定,而不由过去决定。这是因为 对于 的影响,全部体现在了 中。对于一个初始值是 的随机变量,服从某个初始分布,而 的取值又决定了 的分布, 的取值又决定了 的分布 以此类推,就形成了一个马尔科夫链。
马氏链具有一个核心性质:如果我们已知某些条件,要去求解某些表达式关于这些条件的期望,则我们只需要距离所求事件最接近的条件就足够了,举个例子即 $$E(X_{16}^2|X_2 = x_2, X_5 = x_5, X_9 = x_9) = E(X_{16}^2|X_9 = x_9)$$
马尔可夫决策过程 MDP
马氏过程只有状态之间的内在关系 ,而在 MDP 中,转移方程变为了 ,同时增加了与我们最终目的有关的变量 , 由 决定
MDP 的核心目的是求出一种选择 的方式,使得 或 等奖励最大。除了这两个重要的变量之外,还有一个结束信号 ,代表着 MDP 何时结束。我们常常假定马氏链的长度是无穷的,而 MDP 的长度是有限的。在某个状态 采取动作 后,会有概率得到一个 信号,代表着 MDP 的结束。至此我们介绍完了 MDP 的所有元素,由于 的信号是包含在 中的,我们习惯将其记为四元组
马尔可夫过程与 MDP 的对比
在马氏过程中,如果给定条件概率 ,以及初始状态分布 ,就完全确定了马氏链的分布。这就是说,对于所有的 与 ,我们可以求出所有 ;对于所有可能发生的马氏链轨道 ,我们可以求出它发生的概率是多少,即求出 。总的来说,马氏过程是一个“客观的”过程,当其转移规律确定之后,会发生的一切都被确定了。
在 MDP 中,情况却完全不同。即使我们的 、、,以及初始的分布 都确定了,后续 的分布也不能确定。这是因为,有一个“主观的”、“可以自由选择”的 会影响 的分布。这个 应该怎么选择,就是强化学习的核心问题。一般而言,我们会希望找出一个从 到 的映射,即 。当 确定之后,则 的分布便真正地确定下来。这时候,我们就可以求出 , 以及 这些具体分布。对于可能发生的所有轨道 ,我们也可以求出其发生的概率 。这也就是说,当 确定,一切就确定了。
MDP 的分类
首先,我们最终要求解的强化学习问题应该是一个环境未知且持续多步的 MDP,这导致我们的算法要同时考虑两个方面的困难——如何与环境交互产生数据、如何求解最佳策略。如果 MDP 并非持续多步或者环境未知,这会让我们的问题性质发生改变,大大地简化问题的难度。所以,MDP 中最重要的性质是我们是否知道它的环境,以及是否发生退化。这涉及到问题的基本定义,是我们首要考虑的内容;
其次,我们求解 MDP 意味着找出一个最优策略,使得智能体能够在环境中获得最大的奖励。这个策略是如何为我们选择动作 的?是仅仅需要根据当前状态 选择,还是也要考虑当前的时间 ?它是一个什么形式的函数?对于这一点,我们要考虑 MDP 中状态转移方程是否具有随机性,以及是否具有时齐性。所以,我们在考虑 MDP 的基本性质之后,考虑 MDP 这两方面的性质便可以帮助我们确定我们需要解是什么形式;
最后,MDP 中动作与状态的连续性与随机性对于我们的算法也是很重要的,因为这决定了我们将回采用何种模型。
MDP 是否发生退化?
所谓退化,指的是 MDP 不再是"持续多步"的。最极端的退化是单步 MDP:智能体看到一个状态,做一个动作,立刻拿到奖励,游戏结束。这其实就是多臂老虎机(bandit)问题;如果每一局的初始状态还会变化,就是上下文老虎机(contextual bandit)。退化带来的简化是本质性的:没有"未来",就没有长期回报,也就没有信用分配(credit assignment)问题——你不需要思考"这一步棋亏了但十步之后赚回来"这种事,每个动作的好坏由它自己的即时奖励完全说明。
这个分类对我们理解大模型 RL 至关重要,因为同一个 LLM 生成过程,恰好可以从两个视角来建模:
- token 级视角(多步 MDP):状态是 prompt 拼接上已生成的前缀,动作是从词表中选出下一个 token,每生成一个 token 就发生一次状态转移,直到生成 EOS 拿到 。奖励是稀疏的——通常只有最后一个 token 处有一个整句的评分。
- 序列级视角(单步退化 MDP):状态是 prompt,动作是"一整条回复",输出完毕立刻结束。这就是一个 contextual bandit。
这两个视角没有对错之分,但它们直接决定了算法形态:token 级视角需要处理"句子还没写完时,当前这个 token 到底贡献了多少"的信用分配问题,于是需要价值函数(这是 PPO 的路线);序列级视角下每个动作自带完整奖励,于是可以用同一 prompt 下多条回复互相比较来代替价值函数(这是 GRPO 的路线)。后文所有算法的分野,几乎都可以追溯到这里。
环境是否已知
环境已知,指的是转移概率 和奖励 的具体形式我们是否掌握。如果完全已知,求解 MDP 就不需要"学习",它退化为一个规划(planning)问题——用值迭代、策略迭代这类动态规划方法在纸面上就能算出最优策略。只有环境未知时,我们才必须让智能体去交互、采样、试错,这才是"强化学习"这个名字的本义,也是 model-free 方法(以及先学环境模型再规划的 model-based 方法)存在的理由。
大模型 RL 在这一点上的处境很微妙:
- 状态转移是已知且平凡的:新状态就是旧状态拼接上新 token,确定性的字符串拼接,没有任何未知性;
- 奖励却是未知甚至是"学出来的":RLHF 中的奖励模型(RM)本身是个神经网络,是对人类偏好的近似。也就是说我们在一个"转移已知、奖励近似"的环境里做 RL;
- 而一旦进入 Agentic 场景,模型的动作会触发真实世界的反馈——工具返回值、编译器报错、网页内容、用户回复——这部分转移是真正未知的,环境重新变成了 model-free 意义上的黑盒。
环境的确定性与随机性
给定 和 ,如果 和 是唯一确定的,环境就是确定性的;否则是随机的。确定性环境的好处是,回报的随机性只来自策略本身的随机采样,方差的来源变少,估计变得容易。
纯文本生成是一个确定性环境:拼接就是拼接,不会掷骰子。我们平时感受到的"同一个 prompt 每次输出不一样",随机性全部来自策略 的采样,而不来自环境。但 Agentic 场景再次改变了这一点:同一次搜索调用可能返回不同结果,同一段代码在不同机器上可能跑出不同状态——环境的随机性回来了,这会直接推高梯度估计的方差,是 Agentic RL 训练不稳定的来源之一。
环境的时齐性
时齐性(time-homogeneity)指转移规律不随时间改变: 这个函数本身与 无关。时齐性决定了最优策略的形式:时齐且无限期(或不定长)的 MDP,存在一个不依赖时间的平稳最优策略 ——你只需要看状态就够了,不需要看表。反之,如果环境规律随时间漂移,或者任务有硬性的步数期限,最优策略就可能需要把 作为输入(或者干脆把 并进状态里)。
LLM 的生成过程是时齐的:无论是第 3 个 token 还是第 3000 个 token,都是同一个 Transformer 在做同一件事。序列长度的限制并不破坏时齐性,因为"已经生成了多长"这个信息本来就编码在状态(前缀)里。这就是为什么我们用一个网络 就能表示策略,而不需要为每个时刻单独建模——这个看似理所当然的设定,其实是时齐性送给我们的。
状态与动作的连续性
最后一个维度决定了我们用什么模型来装下策略和价值函数。经典的四象限:状态和动作都离散且规模小,用表格(Q-table)就够了;状态连续、动作离散,用函数逼近器来泛化状态(DQN);动作也连续,就需要能输出连续分布的 actor(DDPG、SAC 这一族)。
LLM 落在一个特殊的位置:状态离散但组合爆炸(所有可能的 token 前缀,任何表格都存不下,必须用函数逼近,而 Transformer 就是那个函数逼近器),动作离散且规模巨大(一步从约 量级的词表中选一个 token)。动作离散意味着策略天然就是一个 softmax 分布——而这恰好就是语言模型本来的输出形式。语言模型本身就是一个现成的随机策略,这是"把 RL 套在 LLM 上"这件事在结构上如此自然的根本原因;同时,巨大的离散动作空间让 Q-learning 一族很不划算,于是 LLM RL 几乎清一色走策略梯度(policy gradient)路线。
从回报到策略梯度
在进入 PPO 之前,我们把"怎么优化策略"这条线补齐。我们的目标是最大化期望回报:
这里的困难在于: 影响的是"轨迹的分布",而不是某个可导的输出。REINFORCE 给出了绕开它的经典恒等式(log-derivative trick):
其中 是从 时刻起的回报。这个式子的直觉非常朴素:哪条轨迹的回报高,就把这条轨迹上每个动作的概率往上推,推的力度与回报成正比。
但 是对整条后续轨迹的蒙特卡洛估计,方差极大。两个标准的减方差手段:
- 减去基线(baseline):把 换成 ,不改变梯度的期望,却能大幅减小方差。最优的基线选择就是状态价值 ;
- 换成优势函数(advantage):,衡量"这个动作比该状态下的平均水平好多少"。此时更新的直觉从"回报高就鼓励"精细化为"比平均好才鼓励,比平均差就抑制"。
从哪里来?再训练一个网络去拟合它,这就是 critic,于是我们得到了 actor-critic 框架。实践中优势的估计用 GAE(Generalized Advantage Estimation):
时只信 critic(偏差大方差小), 时退回蒙特卡洛(偏差小方差大), 就是这架偏差–方差天平上的游标。
PPO 原理 + 源码
图解大模型 RLHF 系列之:人人都能看懂的 PPO 原理与源码解读
侧重于 PPO 公式的来源,但又并非纯 math。
从 on-policy 到重要性采样
policy gradient 有个昂贵的性质:它是 on-policy 的——梯度公式里的期望是对"当前策略"的轨迹分布取的,所以每更新一次参数,之前采的数据就"过期"了。对 LLM 来说采样(rollout)恰恰是最贵的环节,我们希望一批数据能多用几步。重要性采样(importance sampling)允许我们用旧策略 的样本来估计新策略的目标:
代价是:两个分布差得越远,这个估计的方差越大,越不可信。所以必须限制新旧策略的偏移。TRPO 用 KL 散度约束做这件事(一个带约束的优化问题,求解很重),而 PPO 的贡献就是把它简化成一个裁剪目标:
这个 的组合值得咀嚼一下它的方向性:当 (好动作)时,目标随 增大而增大,但超过 就被削平——收益封顶,防止一次把概率推得太猛;当 (坏动作)时, 压得越低目标越大,但低于 后也不再有收益——惩罚也封顶。一句话:在信任区域内正常更新,出了信任区域梯度归零。
RLHF 中的 PPO:四个模型的分工
把 PPO 搬进 RLHF,标准配置需要同时维护四个模型:
- Actor:待训练的策略,也就是我们最终想要的模型,由 SFT 模型初始化;
- Reference Model:冻结的 SFT 模型,用于计算 KL 惩罚,把 actor 拴在初始化附近,防止它为了讨好 RM 而胡言乱语(reward hacking 的第一道闸);
- Reward Model:在人类偏好对上训出来的打分器,只在序列结束时给出一个标量分;
- Critic:价值网络,通常由 RM 初始化,为每个 token 位置估计 。
奖励的实际构造是逐 token 的:
即中间每一步只有 KL 惩罚,整句的 RM 分数记在最后一个 token 头上,再由 GAE 把这份"最终评价"沿着序列往回摊派——这正是 token 级多步 MDP 视角下信用分配的具体形态。
源码要点
对着 TRL / OpenRLHF 这类实现读,主循环其实只有四步,值得留意的都在细节里:
- make_experience(采样阶段):actor 对一批 prompt 做 rollout;同一次前向里顺手记下每个 token 的 、ref model 的 、critic 的 ,RM 对完整回复打分。这些量全部缓存进 experience buffer;
- 计算优势:按上面的逐 token 奖励公式合成 ,跑 GAE 得到 和 return(常再做一次 advantage whitening,即批内标准化,进一步压方差);
- PPO epoch:同一批数据上做多个 epoch 的小步更新(这正是重要性采样买来的复用能力),actor 用 ,critic 用 value clip 的 MSE(对 value 的更新也做裁剪,防止 critic 一步跳太远拖垮优势估计);
- 循环:buffer 清空,回到第 1 步。
工程上的痛点也一目了然:四个模型同时驻留显存(其中 critic 与 actor 同量级、还要训练),rollout 与训练交替导致 GPU 利用率难打满,超参(、、、value coef)彼此耦合。这些痛点,就是后面两个算法各自的出发点。
DPO:把 RL 整个绕过去
RLHF 的优化目标(最大化奖励 + KL 正则)其实存在闭式最优解:
DPO 的观察是:这个式子可以反解出奖励 ,把它代回偏好数据的 Bradley–Terry 模型("人类觉得 比 好"的概率建模),奖励模型就被消掉了,直接得到一个针对策略本身的监督式损失:
不用训 RM,不用采样,不用 critic,一个类似分类的损失直接在偏好对上微调。代价是它彻底放弃了"交互":DPO 是纯离线的,只能在别人(通常是旧策略或别的模型)生成的回复对上学习,没有探索,分布外的行为约束也弱。用前文的语言说:DPO 干脆承认了这是个单步 bandit,并且连 bandit 的"拉杆试错"都省了,退化成了监督学习。它是 RLHF 的一个轻量替代,而不是 RL 路线的延续。
GRPO:把 critic 也省掉
回到 RL 路线。PPO 四模型里最让人心疼的是 critic:它和 actor 一样大,要单独训练,而它存在的意义只是给优势估计提供基线。GRPO(Group Relative Policy Optimization,出自 DeepSeekMath,随 DeepSeek-R1 出圈)的思路是:既然 RLHF 本质上是序列级的单步 MDP,那"基线"根本不需要一个网络去学——对同一个 prompt 多采几条回复,它们互相就是彼此的基线。
具体做法:对每个 prompt 采样一组 条回复(比如 8~64 条),各自拿到整句奖励 ,组内标准化得到序列级优势:
这个优势广播到该回复的每个 token 上,套用与 PPO 相同的 clip 目标;KL 惩罚不再混进奖励,而是用一个无偏估计器作为独立的正则项加在损失里。于是 critic 没了,GAE 没了,显存和调参负担骤减。注意这里的因果链:正因为(大模型场景下的)MDP 发生了单步退化,序列级优势才是无偏可用的;把 GRPO 直接搬去真正多步的经典控制问题反而不合适。分类学在这里第一次"兑现"了。
与 GRPO 配套的另一个关键转变是 RLVR(Reinforcement Learning with Verifiable Rewards):在数学、代码这类可自动判分的任务上,用规则验证器(答案对不对、测试过没过)替代学习出来的 RM。奖励从"一个可能被钻空子的近似模型"变成"客观事实",reward hacking 的空间被大幅压缩——R1 展示出的长链推理与自我反思行为,正是在这种设置下涌现的。
GRPO 之后出现了一批稳定性改进,代表是 DAPO 的四个修改:clip-higher(放宽上侧裁剪防熵坍缩)、dynamic sampling(丢弃组内全对/全错、优势为零的 prompt)、token-level loss(长序列下按 token 而非按样本平均,修正长度偏置)、overlong shaping(对超长截断的回复做奖励塑形)。细节不展开,但它们全都是在"组内相对 + 裁剪"这个骨架上打的补丁。
Agentic RL:把 MDP 还原回来
现在可以收束全文了。RLHF/RLVR 一路的成功,某种意义上是把 RL 用在了一个退化到几乎不是 RL 问题的问题上。而 Agentic RL 的出现,是任务本身把完整的 MDP 又还给了我们:让模型使用搜索引擎做研究、在沙箱里写代码调试、操作 GUI 完成任务——这些场景天然是多步的、有真实环境反馈的。对照第一节的语言,这次转变可以列一张表:
| RLHF / RLVR(退化单步) | Agentic RL(完整多步) | |
|---|---|---|
| 状态 | prompt(静态) | 外部世界的观测(动态、部分可观测) |
| 动作 | 生成一段文本 | 文本 + 结构化工具调用 |
| 转移 | 确定性拼接,一步终止 | 随机、多步、由环境决定 |
| 奖励 | 结束时一个标量 | 稀疏的任务奖励 + 逐步的过程信号 |
| 目标 | 最大化即时期望奖励 | 最大化折扣累积回报 |
严格地说,状态一栏的变化意味着问题从 MDP 变成了 POMDP:模型看到的(工具返回的文本片段)只是环境真实状态的一个不完整观测,历史上下文承担起了"信念状态"的角色。前文按五个维度做的分类,在这里逐项翻转:退化消失了(多步回来了)、环境重新未知(真实世界)、确定性消失了(工具与用户都有随机性)、连续性上动作空间变成了"文本 ∪ 工具调用"的混合空间。每一项翻转都对应一个训练难题:
- 信用分配重新变难:一次任务几十轮交互、上万 token,最终只有一个成败信号。优势应该按 token 算、按轮(turn)算,还是按整条轨迹算?turn-level 的 GRPO 变体(对每轮单独估计相对优势)是当前的主要探索方向之一;
- 奖励设计:纯结果奖励太稀疏,过程奖励又难免重新引入"可被钻空子的近似判分"。verifiable 的部分(代码通过测试、答案匹配)与 learned 的部分(轨迹质量评估)如何配比,没有标准答案;
- 环境工程成为一等公民:需要可复位、可并行、防作弊的沙箱(浏览器仿真、代码执行环境、GUI 环境),环境的丰富程度直接决定 RL 信号的上限;
- 基础设施:rollout 一条轨迹要真实地调用工具、等待返回,耗时且长短不一,同步训练会让 GPU 大量空转,于是异步 rollout、经验回放成为标配——而这又推高了数据的 off-policy 程度,回过头来考验算法的稳定性(还记得重要性采样的方差问题吗)。
所以这篇文章的主线其实是一个环:马氏性给了我们 MDP 这套语言;对 MDP 做分类,让我们看清 RLHF 是它的一个极端退化特例,并据此理解了 PPO → DPO → GRPO 每一步"在省掉什么、凭什么能省";而 Agentic RL 把被省掉的东西——多步、未知环境、随机性、信用分配——一件件还了回来。工具在进化,但判断"哪个工具适用"的坐标系,始终是第一节里那几个朴素的问题:退化了吗?环境已知吗?随机吗?时齐吗?状态和动作长什么样?
(关于 Agentic RL 的系统性综述,可参考文首引用的 arXiv:2509.02547,它对能力维度——规划、工具使用、记忆、推理、自我改进——以及环境与框架生态有远比本文详尽的整理。)





