Agentic RL:从 PG 到 TRPO 到 PPO-Clip(推导与代码对齐)
这篇文章面向“RL 基础薄弱但想快速读懂 PPO/Agentic RL 训练代码”的读者,目标是把下面三件事讲清楚,并且和你能跑起来的代码一一对应: PG loss 到底是什么:它不是“监督学习意义上的 loss”,而是为了拿到正确梯度构造的 surrogate(代理目标)。 TRPO 想解决什么:为什么要用 KL trust region 限制策略更新幅度。 PPO-clip 为什么长这样:clip 不是拍脑袋,而是在做一个“好实现”的 trust region 近似。 系列导航: Agentic RL:系列导航(PG Loss、TRPO、PPO-Clip) 配套资料来自 B 站视频与仓库(建议你边看边对照): 视频 02:[Agentic RL] 02 策略梯度基础,从 PG 到 TRPO 到 PPO-Clip 核心公式简单推导 https://www.bilibili.com/video/BV12NHJzTEoP/ 视频 03:[Agentic RL] 03 策略梯度补充,GRPO loss 分析,优势标准化,On...
Agentic RL:PG Loss 组件详解(PPO-clip / Dual-Clip / Entropy / KL / 聚合)
这篇文章把「Agentic RL / LLM-RL 训练里常见的 Policy Gradient (PG) loss 到底由哪些组件拼起来」讲清楚,重点解释: PPO-clip:为什么要 clip、clip 住了哪些情况、什么时候梯度为 0 Dual-clip:它在 PPO-clip 基础上到底“多 clip 了什么”,解决什么不稳定 Entropy / KL:为什么要加正则、权重怎么理解 聚合(aggregate):token/sequence/group 维度的 sum/mean 会如何改变梯度尺度 推导补全(视频 02):从 REINFORCE / PG 到 TRPO,再到 PPO-clip,解释 log pi、ratio、以及“为什么 PPO 公式里看起来没有 log” 本文偏“工程视角”:你看完应该能把这些项在代码里正确实现出来,并能解释训练曲线为什么会那样。 补充说明:下面不少“实现细节/监控指标/聚合模式”的表述,我会刻意对齐 verl 生态里常见写法。 我不会把任何视频/博客里的“经验区间”当成硬规则。对 LLM-RL...
强化学习数学原理 - 第10章:Actor-Critic 方法 (Actor-Critic Methods)
1. 演员与评论家 (Actor and Critic) 在第9章中,我们学习了 Policy Gradient (如 REINFORCE)。它虽然能处理连续动作,但方差极大,因为它用整条 Episode 的回报 G_t 来评估一个动作的好坏。 在第7章中,我们学习了 TD Learning (如 Q-learning)。它方差小(单步更新),但很难处理连续动作。 Actor-Critic (AC) 结合了这两者的优点: Actor (策略网络):\\pi(a|s, \\theta)。负责选动作,像个演员。 Critic (价值网络):q(s, a, w) 或 v(s, w)。负责给动作打分,像个评论家。 核心逻辑: Actor 不再盲目等待环境的随机回报 G_t,而是听从 Critic 的评价。Critic 说这个动作好(TD Error > 0),Actor 就增加概率;Critic 说不好,就减少概率。 2. 优势函数 (Advantage Function) REINFORCE 的更新公式: \nabla J \approx \mathbb{E} [...
强化学习数学原理 - 第9章:策略梯度方法 (Policy Gradient Methods)
1. 为什么要直接优化策略? Value-based 方法(如 DQN)虽然强大,但有局限: 无法处理连续动作:如果动作是“方向盘转动角度(0度到360度)”,Q-learning 需要求 \arg\max_a Q(s, a),这在连续空间是很难的。 无法学习随机策略:Value-based 最终给出的通常是确定性策略(选 Q 最大的)。但在石头剪刀布游戏中,最好的策略是随机的。 Policy Gradient (PG) 方法直接对策略 \pi(a|s, \theta) 进行参数化(比如用神经网络),然后通过调整 \theta 来最大化期望回报 J(\theta)。 2. 策略梯度定理 (Policy Gradient Theorem) 我们想最大化目标函数 J(\theta) = \mathbb{E}[G_0]。 我们需要求梯度 \nabla J(\theta) 来进行梯度上升(Gradient Ascent)。 神奇的 Policy Gradient Theorem 告诉我们: $\nabla J(\theta) \propto \sum_{s} d_\pi(s)...
强化学习数学原理 - 第8章:值函数近似 (Value Function Approximation)
1. 为什么需要函数近似? 在前面的章节中,我们都假设使用表格 (Table) 来存储 Value Function: v(s) 是一个长度为 |∘| 的向量。 q(s, a) 是一个大小为 |∘| \times |∘| 的矩阵。 致命问题: 状态空间爆炸:围棋的状态数是 10^{170},任何计算机都存不下这个表。 泛化能力差:如果是连续状态(比如机器人的位置坐标),你没见过的坐标就没有 Value,表格法无法处理“相似的状态”。 解决方案:用一个函数 f(s, w) 来近似 v(s)。 \hat{v}(s, w) \approx v_\pi(s) 其中 w 是参数(比如神经网络的权重)。这样我们只需要存储 w,通常 w 的维度远小于状态数。 2. 目标函数与优化 我们希望 \hat{v}(s, w) 越准越好。定义目标函数(损失函数): J(w) = \mathbb{E}_{\pi} \left[ (v_\pi(S) - \hat{v}(S, w))^2 \right] 使用 SGD 进行更新: w \leftarrow w + \alpha [v_\pi(s)...
强化学习数学原理 - 第7章:时序差分方法 (Temporal-Difference Methods)
1. TD:结合 MC 与 DP 的艺术 时序差分 (TD) 是强化学习中最核心、最独特、最优雅的思想。它不需要像 DP 那样已知模型,也不需要像 MC 那样等到 Episode 结束。它边走边学 (Bootstrapping from Experience)。 核心公式 (TD(0)): V(S_t) \leftarrow V(S_t) + \alpha [ R_{t+1} + \gamma V(S_{t+1}) - V(S_t) ] 直观解释: Target: 我走了这一步,拿到了 R_{t+1},加上我对下一步状态价值的预估 γ V(S_{t+1}),我觉得这才是更靠谱的价值。 Error: 那个 Target 和我原来的估计 V(S_t) 之间的差,就是惊讶程度 (TD Error)。 Update: 用这个差乘以学习率 α 来修正我的观念。 2. Sarsa: On-policy 的稳健派 2.1 算法流程 (State-Action-Reward-State-Action) Sarsa 之所以叫 Sarsa,是因为它一次更新需要的数据五元组是 (S_t,...
强化学习数学原理 - 第6章:随机近似 (Stochastic Approximation)
1. 为什么学 RL 要学“随机近似”? 本章看似是数学插曲,实则是连接蒙特卡洛 (MC) 和时序差分 (TD) 的桥梁。 所有现代 RL 算法(Q-learning, DQN, Policy Gradient)的更新公式都长这样: w \leftarrow w + \alpha (\text{Target} - w) 这个公式是怎么来的?为什么它能收敛?这背后的数学原理就是 Robbins-Monro 算法。 2. 均值估计:从批量到增量 假设我们想求随机变量 X 的期望 w = \mathbb{E}[X]。 我们可以采样 x_1, x_2, \ldots, x_k。 2.1 批量计算 (Batch) w_k = \frac{1}{k} \sum_{i=1}^k x_i 缺点:每次都要把所有数加起来除以 k,或者保存所有数。 2.2 增量计算 (Incremental) 我们可以推导出递推公式: w_{k+1} = w_k + \frac{1}{k+1} (x_{k+1} - w_k) 这就是最简单的随机近似! w_k: 当前的估计值。 x_{k+1}:...
强化学习数学原理 - 第5章:蒙特卡洛方法 (Monte Carlo Methods)
1. 跨越:从“有模型”到“无模型” 在之前的章节中,我们假设自己是“上帝”,完全知道环境的秘密:状态转移概率 P 和奖励函数 R。但在现实中(如炒股、下棋),这些参数通常是不可知的。 蒙特卡洛 (Monte Carlo, MC) 方法 的出现,标志着我们进入了 Model-free (无模型) 学习的领域。它的核心思想极度朴素:“实践出真知” —— 如果我不知道概率,那我就多试几次,然后算平均值。 2. 蒙特卡洛估算 (MC Prediction) 2.1 核心思想:大数定律 我们想求 v_\pi(s) = \mathbb{E}[G_t \mid S_t = s]。 根据大数定律,如果我们能生成很多条从状态 s 出发的轨迹(Episodes),并记录每一条的回报 G,那么它们的平均值就会收敛于期望。 v_\pi(s) \approx \frac{1}{N} \sum_{i=1}^N G_i 2.2 两种采样方式 First-visit MC: 在一个 Episode 中,如果多次经过 s,只计算第一次访问后的回报。 Every-visit MC: 只要经过...
强化学习数学原理 - 第4章:值迭代与策略迭代 (Value & Policy Iteration)
1. 动态规划的登场 在第3章中,我们推出了 Bellman Optimality Equation (BOE): v^{*}(s) = \max_{a} \sum_{s'} p(s'|s,a) [ r + \gamma v^{*}(s') ] 因为 \max 的非线性,我们无法直接解方程。本章我们将介绍求解 BOE 的两把“倚天屠龙剑”: Value Iteration (VI, 值迭代):粗暴直接,对着 BOE 猛算。 Policy Iteration (PI, 策略迭代):优雅从容,交替进行评估和改进。 这两类算法统称为 动态规划 (Dynamic Programming, DP) 方法。它们要求我们完全已知环境模型(P 和 R)。 2. 值迭代 (Value Iteration) 2.1 算法逻辑 VI 的思想非常简单:既然 v^{*} 是 BOE 的不动点,那我就把 BOE 当作更新规则,一直迭代直到收敛。 v_{k+1}(s) = \max_{a} \underbrace{\sum_{s'} p(s'|s,a) [ r(s,a,s') + \gamma...
强化学习数学原理 - 第3章:最优状态值与贝尔曼最优方程 (Bellman Optimality)
1. 终极目标:寻找最优策略 在第2章中,我们学会了“给定一个策略,评估它好不好(Policy Evaluation)”。但这只是第一步,RL 的终极目标是找到最好的那个策略(Optimal Policy, \pi^{*})。 什么叫“最好”? 数学定义:如果策略 \pi^{*} 的状态价值 v_{\pi^{*}}(s) 在每一个状态 s 上都不低于其他任何策略 \pi 的价值 v_\pi(s),那么 \pi^{*} 就是最优策略。 v_{\pi^{*}}(s) \ge v_\pi(s), \quad \forall s \in \mathcal{S}, \forall \pi 直观理解: 最优策略就像一个完美的导航仪,无论你现在身处何地(哪怕是被风吹到了错误的格子),它都能告诉你接下来该怎么走才能获得最大的未来回报。 2. 贝尔曼最优方程 (Bellman Optimality Equation, BOE) 2.1 从 Bellman Equation 到 BOE 回忆普通贝尔曼方程: v_\pi(s) = \sum_{a} \pi(a|s)...

