)
文档教程人工智能大模型RLHF【免费下载链接】Awesome-ML-SYS-TutorialMy learning notes for ML SYS.项目地址https://gitcode.com/gh_mirrors/aw/Awesome-ML-SYS-Tutorial点击查看免费下载策略梯度Policy Gradient是基于策略policy-based强化学习方法的基础与 Q-learning、DQN 等基于价值value-based的方法形成鲜明对比前者直接显式地学习一个参数化策略后者则是学习价值函数后再隐式导出策略。本篇技术指南以 rlhf/rl-walk-through/part-6.md 为核心系统讲解策略梯度的目标函数构造、策略梯度定理的推导过程、其在线策略on-policy的本质属性以及最经典的蒙特卡洛策略梯度算法 REINFORCE 的完整流程与优缺点。读完本文你将掌握策略梯度从数学原理到伪代码实现的完整脉络并理解它为何方差大、为何是 on-policy 算法以及它如何演进为现代 RLHF如 PPO、GRPO的算法基石——这也是本仓库 rlhf 系列学习笔记从 part-1 多臂老虎机到 part-7 Actor-Critic承上启下的关键一环。从价值方法到策略方法为什么需要显式策略在强化学习的经典分类中part-1 已经给出了完整的算法谱系Value-Based基于价值通过学习价值函数如 $V(s)$、$Q(s,a)$来做决策策略是隐式的——选择价值最高的动作即可。典型代表是 Q-learning 和 DQN。Q-learning 适合有限状态DQN 通过神经网络拟合 $Q$ 值解决了连续状态的问题但依然只能处理离散动作因为 $Q$ 更新中有 $\max_a$ 操作。Policy-Based基于策略直接学习一个策略即从状态到动作概率分布的映射。策略可以是显式的比如在状态 $s$ 下80% 概率选择动作 $a_1$20% 概率选择动作 $a_2$。典型代表是 REINFORCE。Actor-Critic同时学习策略Actor和价值函数Critic结合两者优点PPO 是常见代表。Model-Based / Model-Free按是否显式建模环境状态转移 奖励划分。这两条技术路线在学习目标上有本质差异类型学什么策略优点缺点Value-Based价值函数间接推导策略隐式简单样本效率高策略可能不灵活Policy-Based策略显式策略灵活可处理连续动作样本效率低训练不稳定Q-learning、DQN 及其改进算法都是基于价值的方法其学习过程中并不存在一个显式的策略对象而基于策略的方法则直接显式地学习一个目标策略策略梯度Policy Gradient正是这条路线的基础。策略参数化与目标函数基于策略的方法首先要将策略参数化。假设目标策略 $\pi_{\theta}$ 是一个随机化策略stochastic policy我们可以用一个线性模型或者神经网络来表示这个策略模型输入某个状态 $s$输出一个动作的概率分布 $\pi_{\theta}(a|s)$。这样的设计天然支持连续动作空间——这也是 Policy-Based 方法相比 DQN 的一个重要优势。我们的目标是更新策略使其在环境中的期望回报最大化。将策略梯度算法的目标函数定义为$$ J(\theta) \mathbb{E}_{s_0}\left[V^{\pi_{\theta}}(s_0)\right] $$其中$s_0$ 表示初始状态。有了目标函数之后将目标函数对策略参数 $\theta$ 求梯度就可以用梯度上升gradient ascent方法来最大化这个目标函数从而得到更优的策略。注意这里是上升而非下降因为我们的优化方向是让期望回报 $J(\theta)$ 变大。策略梯度定理的推导对 $J(\theta)$ 求梯度可以得到策略梯度定理Policy Gradient Theorem的核心形式$$ \begin{aligned} \nabla_{\theta}J(\theta) \propto \sum_{s \in S} \nu^{\pi_{\theta}}(s) \sum_{a \in A} Q^{\pi_{\theta}}(s, a) \nabla_{\theta} \pi_{\theta}(a|s) \ \sum_{s \in S} \nu^{\pi_{\theta}}(s) \sum_{a \in A} \pi_{\theta}(a|s) Q^{\pi_{\theta}}(s, a) \frac{\nabla_{\theta} \pi_{\theta}(a|s)}{\pi_{\theta}(a|s)} \ \mathbb{E}{\pi{\theta}}\left[Q^{\pi_{\theta}}(s, a) \nabla_{\theta} \log \pi_{\theta}(a|s)\right] \end{aligned} $$这个推导过程值得逐行拆解第一行梯度被分解为对状态 $s$ 的求和与对动作 $a$ 的求和其中 $\nu^{\pi_{\theta}}(s)$ 是策略 $\pi_{\theta}$ 下的状态访问分布on-policy 状态分布$Q^{\pi_{\theta}}(s, a)$ 是动作价值函数。这里用 $\propto$正比于而非等号是因为策略梯度定理的完整形式还包含一项对状态价值的梯度项该项期望为零故可省略。第二行通过分子分母同乘 $\pi_{\theta}(a|s)$将 $\nabla_{\theta} \pi_{\theta}(a|s)$ 改写为 $\pi_{\theta}(a|s) \cdot \frac{\nabla_{\theta} \pi_{\theta}(a|s)}{\pi_{\theta}(a|s)}$为引入对数技巧做准备。第三行利用 $\nabla_{\theta} \log \pi_{\theta}(a|s) \frac{\nabla_{\theta} \pi_{\theta}(a|s)}{\pi_{\theta}(a|s)}$ 将对数梯度引入整个式子化成一个关于状态动作对 $(s,a)$ 的期望。这个对数似然比 × 奖励的形式被称为似然比技巧likelihood ratio trick或分数函数score function技巧它是策略梯度方法能够用采样数据估计梯度的关键。策略梯度的直观理解从公式可以直观理解策略梯度的工作机制在每一个状态下梯度的修改会让策略更多地去采样带来高 $Q$ 值的动作更少地去采样带来较低 $Q$ 值的动作。也就是说$Q$ 值充当了方向信号——高价值动作的概率被推高低价值动作的概率被压低整个策略分布沿期望回报增大的方向移动。on-policy 的本质为什么策略梯度必须用当前策略采样推导中有一个容易被忽视却至关重要的细节第三行期望的下标是 $\pi_{\theta}$这意味着期望是在当前策略 $\pi_{\theta}$ 生成的分布上求的。因此策略梯度算法是在线策略on-policy算法——必须使用当前策略 $\pi_{\theta}$ 采样的数据来计算梯度。对比本系列 part-4 中引入的概念可以加深理解在线策略学习要求使用在当前策略下采样得到的样本进行学习一旦策略被更新当前的样本就被放弃。Sarsa 是 on-policy 的典型它必须用当前 $\epsilon$-贪婪策略选择真实的 $A_{t1}$ 来更新。离线策略学习可以反复利用采集到的经验能更好地利用历史数据具有更小的样本复杂度达到收敛所需的环境采样数量。Q-learning 是 off-policy 的典型它的 TD 目标中用的是 $\arg\max_a Q(s_{t1}, a)$与行为策略无关。策略梯度的期望建立在当前策略分布之上因此一旦 $\theta$ 更新旧策略采样的数据在统计意义上就过期了。这个性质对工程实践有直接影响策略梯度训练中每一次参数更新后都需要重新采样重新 rollout数据利用率低这正是后续 Actor-Critic、PPO 等算法试图改善的工程问题之一。REINFORCE 算法REINFORCE 是策略梯度乃至强化学习的典型代表算法其流程如下初始化策略模型参数 $\theta$for $e 1 \to E$迭代 $E$ 个回合用当前策略 $\pi_{\theta}$ 采样轨迹 ${s_1, a_1, r_1, s_2, a_2, r_2, \ldots, s_T, a_T, r_T}$计算当前轨迹每个时间点往后的回报 $\sum_{tt}^{T} \gamma^{t-t} r_{t}$ 记为 $\psi_t$对 $\theta$ 进行更新$\theta \theta \alpha \sum_{t} \psi_t \nabla_{\theta} \log \pi_{\theta}(a_t|s_t)$end for对算法细节做进一步剖析步骤 1采样轨迹REINFORCE 使用蒙特卡洛方法让智能体以当前策略 $\pi_{\theta}$ 与环境完整交互得到一整条轨迹直到终止状态 $T$。注意这里的策略是随机策略因此每个时间步的动作都是从概率分布 $\pi_{\theta}(\cdot|s_t)$ 中采样得到的。步骤 2计算回报$\psi_t \sum_{tt}^{T} \gamma^{t-t} r_{t}$ 是从时间步 $t$ 开始的折扣回报discounted return即从当前时刻往后所有奖励的折扣累加。它替代了策略梯度定理中的 $Q^{\pi_{\theta}}(s_t, a_t)$——因为在实际交互中我们无法预知真实的 $Q$ 值只能用采样到的实际回报作为它的无偏估计。这里 $\gamma$ 是折扣因子取值范围 $[0,1)$含义见 part-2控制远期奖励的打折程度。步骤 3参数更新$\alpha$ 是学习率$\nabla_{\theta} \log \pi_{\theta}(a_t|s_t)$ 是对数策略梯度。整个求和把所有时间步的回报 × 对数似然梯度累加起来再沿梯度上升方向更新 $\theta$。这与策略梯度定理的期望形式 $\mathbb{E}{\pi{\theta}}[Q^{\pi_{\theta}}(s, a) \nabla_{\theta} \log \pi_{\theta}(a|s)]$ 完全对应——蒙特卡洛采样把期望替换成了样本均值。REINFORCE 的定位从交互中直接学习REINFORCE 智能体根据当前策略直接和环境交互通过采样得到的轨迹数据直接计算出策略参数的梯度进而更新当前策略使其向最大化策略期望回报的目标靠近。这种学习方式是典型的从交互中学习并且有两点值得强调优化目标更直接REINFORCE 优化的目标策略期望回报正是最终所使用策略的性能本身这比基于价值的强化学习算法的优化目标一般是时序差分误差的最小化更加直接、与最终目标对齐。理论保证REINFORCE 算法理论上是能保证局部最优的——它借助蒙特卡洛方法采样轨迹来估计动作价值这种做法的一大优点是可以得到无偏的梯度unbiased gradient。REINFORCE 的方差问题与演进方向正是因为使用了蒙特卡洛方法REINFORCE 算法的梯度估计方差很大可能会造成一定程度上的训练不稳定。方差来源的本质在于每一步的未来转移都可能存在不确定的转移方向单条轨迹只是所有可能轨迹中的一次抽样用它估计 $Q$ 值天然伴随较大的随机波动。后续算法正是围绕减小方差、保持无偏/低偏差这一主线演进的part-7 给出了完整的解决思路。在策略梯度的一般形式$$ g \mathbb{E} \left[ \sum_{t0}^{T} \psi_t \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) \right] $$中$\psi_t$ 可以有多种选择$\sum_{t0}^{T} \gamma^{t} r_{t}$轨迹的总回报即 REINFORCE 的变体$\sum_{tt}^{T} \gamma^{t-t} r_{t}$动作 $a_t$ 之后的回报即本文 REINFORCE 伪代码中的 $\psi_t$$\sum_{tt}^{T} \gamma^{t-t} r_{t} - b(s_t)$基线改进baseline用基线函数 $b(s_t)$ 减小方差$Q^{\pi_{\theta}}(s_t, a_t)$用动作价值函数代替采样回报即Actor-Critic的思路$A^{\pi_{\theta}}(s_t, a_t)$优势函数advantage function用 $Q$ 减去状态价值 $V$是 PPO、GRPO 等现代算法的核心$r_t \gamma V^{\pi_{\theta}}(s_{t1}) - V^{\pi_{\theta}}(s_t)$时序差分残差允许算法在每一步之后更新不依赖完整轨迹。从工程实现角度看REINFORCE 依赖蒙特卡洛样本、只能在序列结束后才进行更新这同时要求任务有明确的步数而 Actor-Critic 算法则可以在每一步之后都进行更新并且不对任务的步数做假设。更进一步TRPO 引入信任区域trust region用 KL 散度约束策略更新幅度保证性能单调性PPO 用截断clip或惩罚penalty两种简化方式实现了同样的约束——这些内容在 part-7 中有完整推导。从 REINFORCE 到 RLHF策略梯度家族在 LLM 中的应用这条从 REINFORCE 出发的演进线正是现代 LLM 对齐技术RLHF的算法根源。本仓库的 rlhf 目录收录了大量相关实践例如 OpenRLHF 框架围绕 PPO 等策略梯度类算法实现 RLHF 训练流水线veRL 则提供了大规模 rollout 与训练编排的工程实现GRPO 文档详细对比了 GRPO 与 PPO/GRPO 的关系见 rlhf/sppo/compare_with_ppo_grpo.md。这些框架中的 PPO、GRPO 都属于基于策略的在线强化学习方法其核心都是对策略梯度目标函数的工程化改造在线采样沿袭 REINFORCE 的 on-policy 特性每次更新都要用当前 LLM 策略生成新的响应数据rollout这对推理引擎的吞吐提出了极高要求正是 sglang 等推理系统与 RL 训练框架深度结合的原因优势估计用优势函数 $A$$\psi_t$ 的形式 5替代原始回报大幅压缩梯度方差使大规模语言模型的策略更新稳定可行约束更新PPO 用截断系数 $\epsilon$ 限制新旧策略概率比避免单次更新步子过大导致训练崩溃。从这个角度看本文的策略梯度与 REINFORCE 是理解整个 RLHF 技术栈的第一块基石只有先理解为什么策略梯度必须是 on-policy、为什么蒙特卡洛回报方差大才能理解 PPO 为什么需要 clip、GRPO 为什么用群体基线做优势归一化也才能理解为什么 RL 训练系统需要把 rollout 与训练尽可能重叠以摊薄采样成本。小结策略梯度算法确立了直接参数化并优化策略这一范式目标函数 $J(\theta) \mathbb{E}{s_0}[V^{\pi_{\theta}}(s_0)]$ 衡量策略的期望回报策略梯度定理通过似然比技巧将梯度化为 $\mathbb{E}{\pi_{\theta}}[Q^{\pi_{\theta}}(s, a) \nabla_{\theta} \log \pi_{\theta}(a|s)]$ 这一可采样的形式而期望下标 $\pi_{\theta}$ 决定了它必须是 on-policy 算法。REINFORCE 用蒙特卡洛回报 $\psi_t$ 替换 $Q$ 值得到无偏但高方差的梯度估计——这一方差问题直接催生了基线、Actor-Critic、TRPO 与 PPO 的整条演进链。理解 REINFORCE就是理解从经典强化学习到现代 RLHF 的一把钥匙后续请继续阅读本系列的 part-7Actor-Critic、TRPO 与 PPO以及仓库 rlhf 目录下的工程框架文档把算法原理与实际训练系统打通。赞分享文档教程人工智能大模型RLHF【免费下载链接】Awesome-ML-SYS-TutorialMy learning notes for ML SYS.项目地址https://gitcode.com/gh_mirrors/aw/Awesome-ML-SYS-Tutorial点击查看免费下载相关推荐多臂老虎机与 ε-greedy 探索策略Awesome-ML-SYS-Tutorial 强化学习系列开篇多臂老虎机与 ε greedy 探索策略Awesome ML SYS Tutorial 强化学习系列开篇 本文是仓库 Awesome ML SYS Tutor文档教程人工智能大模型RLHFFlutter Architecture Template模块化设计如何扩展和定制功能模块Flutter Architecture Template模块化设计如何扩展和定制功能模块 Flutter Architecture Template是一个功无模型强化学习奠基从时序差分到 Sarsa 与 Q-learning 的同/异策略辨析Awesome-ML-SYS-Tutorial 学习笔记 part-4无模型强化学习奠基从时序差分到 Sarsa 与 Q learning 的同/异策略辨析Awesome ML SYS Tutorial 学习笔记 part 4文档教程人工智能大模型RLHF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考