@fpedregosa: 开始一个新的博客系列,从基础深入理解现代强化学习算法。第1部分涵盖经典的…
摘要
开始一个关于现代RL算法从头开始的博客系列,第1部分涵盖REINFORCE估计器,推导无偏策略梯度并分析方差。
查看缓存全文
缓存时间: 2026/07/12 18:59
开始一个新的博客系列,从零开始深入理解现代强化学习算法。第一部分介绍经典的 REINFORCE 估计器:推导无需通过环境求导的无偏策略梯度,并分析其方差:https://t.co/RZ6PrIIfL4 —
策略梯度 第一部分:REINFORCE 估计器
来源:https://fa.bianp.net/blog/2026/policy-gradient/
我有一个不为人知的秘密。好吧,其实我有很多秘密。但其中之一是,我从未真正理解过强化学习背后的基本算法。所以我打算通过一系列博客文章来弥补这个不足,从 REINFORCE 到前沿算法,涵盖一些基本的 RL 算法。这是第一篇,介绍强化学习中最古老、最实用的梯度估计器之一——REINFORCE 估计器,并展示它是如何在不通过环境求导的情况下工作的。
设定
以下是我在整个系列中使用的符号。智能体通过观察状态 s \in \mathcal{S}、采取动作 a \in \mathcal{A}、接收奖励 r(s, a) \in \RR,并根据环境的转移概率分布 {\color{colordynamics}p(s' | s, a)} 转移到新状态 s' 来与环境交互。初始状态分布(对 s_0 \in \mathcal{S})记为 {\color{colordynamics}p(s_0)}。智能体的行为由策略 {\color{colorpolicy}\pi_\theta(a | s)} 决定,它将状态映射到动作上的分布。该策略有参数 \theta \in \RR^d,我们希望找到能最大化期望回报的参数:
\begin{equation}\label{eq:objective} J(\theta) \defas \EE_{\tau \sim {\color{colorpolicy}\pi_\theta}}\left[ {\color{colorreturn}R(\tau)} \right] = \int p(\tau | \theta) , {\color{colorreturn}R(\tau)} , \dif\tau,, \end{equation}
其中 {\color{colorreturn}R(\tau)} = \sum_{t=0}^{T-1} r(s_t, a_t) 是轨迹 \tau = (s_0, a_0, s_1, a_1, \ldots, s_{T-1}, a_{T-1}, s_T) 的回报,T 是轨迹长度或时间范围(可以是固定的,也可以是到达终止状态时由环境决定的),p(\tau | \theta) 是在策略 {\color{colorpolicy}\pi_\theta} 下观测到轨迹 \tau 的概率。为简化起见,我们此处关注无折扣的有限时间范围回报,但所有推导可直接扩展到折现回报 R(\tau) = \sum_{t=0}^{T-1} \gamma^t r(s_t, a_t),其中折扣因子 \gamma \in (0, 1)。在整个过程中,我们用颜色标注关键量:{\color{colorpolicy}\text{绿色}} 表示策略,{\color{colorreturn}\text{橙色}} 表示回报,{\color{colordynamics}\text{紫色}} 表示环境动态。
当事情变得棘手时
假设我们想用梯度上升来最大化期望回报 J(\theta)。写出期望回报的梯度:
\begin{equation}\label{eq:naive_grad} \nabla_\theta J(\theta) = \nabla_\theta \int p(\tau | \theta) {\color{colorreturn}R(\tau)} \dif\tau = \int \nabla_\theta p(\tau | \theta) {\color{colorreturn}R(\tau)} \dif\tau,. \end{equation}
要计算这个积分,我们需要计算轨迹概率的梯度 \nabla_\theta p(\tau | \theta)。利用概率的链式法则,在策略 {\color{colorpolicy}\pi_\theta} 下轨迹 \tau 的概率是初始状态概率、策略选择和环境转移的乘积: \begin{equation}\label{eq:trajectory_prob} p(\tau | \theta) = {\color{colordynamics}p(s_0)} \prod_{t=0}^{T-1} {\color{colorpolicy}\pi_\theta(a_t | s_t)} , {\color{colordynamics}p(s_{t+1} | s_t, a_t)},. \end{equation}
现在我们遇到了障碍。要计算 \nabla_\theta p(\tau | \theta),我们需要对这个乘积关于 \theta 求导。但乘积中包含环境的转移动态 {\color{colordynamics}p(s_{t+1} | s_t, a_t)},这通常是一个黑盒:机械臂与物体碰撞涉及不连续的接触力,棋盘游戏根据离散规则推进。无论哪种情况,我们都无法分析或微分地访问转移函数,因此无法直接计算 \nabla_\theta p(\tau | \theta)。
对数导数技巧
为了继续前进,我们使用随机优化中的一个经典恒等式,称为对数导数技巧(也称为似然比方法或得分函数估计器)。关于得分函数及其与分部积分和随机平滑的联系的更广泛视角,请参见 [Francis Bach 的精彩博客文章 (https://francisbach.com/integration-by-parts-randomized-smoothing-score-functions/)]。对于任何可微的概率密度 p_\theta(x) > 0,我们有恒等式 \nabla_\theta p_\theta(x) = p_\theta(x) \, \nabla_\theta \log p_\theta(x),这来源于链式法则:
\begin{equation}\label{eq:log_derivative_trick} \nabla_\theta \log p_\theta(x) = \frac{\nabla_\theta p_\theta(x)}{p_\theta(x)},. \end{equation}
这个恒等式让我们用 \nabla_\theta \log p(\tau | \theta) 重写棘手的梯度 \nabla_\theta p(\tau | \theta),将积分转化为期望:
\begin{align} \nabla_\theta J(\theta) &= \int \left( \nabla_\theta p(\tau | \theta) \right) {\color{colorreturn}R(\tau)} \dif\tau \nonumber \ &= \int p(\tau | \theta) \nabla_\theta \log p(\tau | \theta) {\color{colorreturn}R(\tau)} \dif\tau \nonumber \ &= \EE_{\tau \sim {\color{colorpolicy}\pi_\theta}}\left[ {\color{colorreturn}R(\tau)} \nabla_\theta \log p(\tau | \theta) \right],. \label{eq:rl_score_sub} \end{align}
我们用期望内的 \nabla_\theta \log p(\tau | \theta) 替换了难以处理的 \nabla_\theta p(\tau | \theta)。但这会更简单吗?
世界淡出
对轨迹概率 \eqref{eq:trajectory_prob} 取对数,将乘积变为和:
\begin{equation}\label{eq:log_trajectory_prob} \log p(\tau | \theta) = \log {\color{colordynamics}p(s_0)} + \sum_{t=0}^{T-1} \log {\color{colorpolicy}\pi_\theta(a_t | s_t)} + \sum_{t=0}^{T-1} \log {\color{colordynamics}p(s_{t+1} | s_t, a_t)},. \end{equation}
这至关重要:将乘法结构变为加法结构,使得微分变得容易得多。关于 \theta 取梯度:
\begin{equation}\label{eq:grad_log_trajectory} \nabla_\theta \log p(\tau | \theta) = \underbrace{\nabla_\theta \log {\color{colordynamics}p(s_0)}}{= , 0} + \sum{t=0}^{T-1} \nabla_\theta \log {\color{colorpolicy}\pi_\theta(a_t | s_t)} + \underbrace{\sum_{t=0}^{T-1} \nabla_\theta \log {\color{colordynamics}p(s_{t+1} | s_t, a_t)}}_{= , 0},. \end{equation}
环境动态 {\color{colordynamics}p(s_{t+1} | s_t, a_t)} 描述了环境的固定规律,而非智能体的策略,因此它们关于 \theta 的导数恒为零。同样,初始状态分布 {\color{colordynamics}p(s_0)} 也不依赖于 \theta。未知的环境动态完全消失,只剩下我们可微的策略:
\begin{equation}\label{eq:grad_log_simplified} \nabla_\theta \log p(\tau | \theta) = \sum_{t=0}^{T-1} \nabla_\theta \log {\color{colorpolicy}\pi_\theta(a_t | s_t)},. \end{equation}
将 \eqref{eq:grad_log_simplified} 代回 \eqref{eq:rl_score_sub},得到我们的基本结果——REINFORCE 估计器:像拼写那样读出来,但要大声。令 \hat{g}(\tau) 为轨迹 \tau 的 REINFORCE 估计器,定义为:
\begin{equation}\label{eq:reinforce} \hat{g}(\tau) = \left(\sum_{t=0}^{T-1} \nabla_\theta \log {\color{colorpolicy}\pi_\theta(a_t | s_t)}\right) {\color{colorreturn}R(\tau)},. \end{equation}
这是期望回报梯度的无偏估计器,即
\begin{equation}\label{eq:reinforce_expectation} \EE_{\tau \sim {\color{colorpolicy}\pi_\theta}} [\hat{g}(\tau)] = \nabla_\theta J(\theta),. \end{equation}
这使得我们能够通过从环境中采样轨迹来优化期望回报,而无需对其转移动态求导。
REINFORCE 梯度估计器通常归功于 Williams (1992),有趣的史实:REINFORCE 实际上是 Williams 创造的一个反向首字母缩略词,代表 REward Increment = Nonnegative Factor × Offset Reinforcement × Characteristic Eligibility,指的是更新规则的结构。尽管对数导数技巧在此之前就已众所周知。在最优控制和仿真优化中,这种直接参数化控制律的一般范式称为策略空间近似,由此得出的估计器称为似然比方法。关于策略空间近似和似然比梯度方法的全面阐述,请参见 Bertsekas (2019) 的第5章。
注意发生了什么。梯度 \nabla_\theta J(\theta) 被表示为估计器 \hat{g}(\tau) 的期望值,其中只涉及策略的对数概率和回报。转移动态 {\color{colordynamics}p(s_{t+1} | s_t, a_t)} 没有出现在表达式中。它们是隐式的:它们决定了当我们采样 \tau \sim {\color{colorpolicy}\pi_\theta} 时哪些轨迹更可能,但我们无需知道它们的函数形式或对它们求导。这就是关键洞察:对数导数技巧将“对分布求导”转化为“在分布下评估得分函数”。
方差
无偏估计器是一个好的开始,但离实用还很远。理想情况下,这个估计器应该具有低方差。在假设下,我们可以证明 REINFORCE 梯度估计器的方差以 O(T^3) 为界,并且当每步期望奖励具有非零均值时,它按 \Theta(T^3) 缩放。我们做出以下假设。首先,每步奖励有界于常数 r_{\max},即对于所有 t,\|r(s_t, a_t)\| \le r_{\max}。其次,每步得分的二阶矩有界,即对于某个常数 C > 0 和所有 t,\EE[\|\nabla_\theta \log \pi_\theta(a_t | s_t)\|^2] \le C。这个假设对于标准策略成立:对于 softmax 策略,只要 logit 梯度(网络雅可比)有界;对于 高斯策略 \mathcal{N}(\mu_\theta(s), \sigma^2 I),只要均值网络有界梯度且方差 \sigma^2 远离零。
在上述假设下,REINFORCE 估计器的总方差 \text{Var}(\hat{g}(\tau)) \defas \EE[\|\hat{g}(\tau) - \EE[\hat{g}(\tau)]\|^2] 有界为:
\begin{equation}\label{eq:variance_bound} \text{Var}(\hat{g}(\tau)) \le T^3 r_{\max}^2 C = O(T^3),. \end{equation}
显示证明
为了推导这个界,让我们将估计器写为乘积:\hat{g}(\tau) = S(\tau) \cdot {{\color{colorreturn}R(\tau)}},其中 S(\tau) = \sum_{t=0}^{T-1} \nabla_\theta \log {\color{colorpolicy}\pi_\theta(a_t | s_t)} 是轨迹得分。利用总方差的定义 \text{Var}(\hat{g}) \defas \EE[\|\hat{g} - \EE[\hat{g}]\|^2] = \EE[\|\hat{g}\|^2] - \|\EE[\hat{g}]\|^2,我们有:
\begin{equation} \text{Var}(\hat{g}) = \EE[|S(\tau)|^2 , {{{\color{colorreturn}R(\tau)}}}^2] - |\nabla_\theta J(\theta)|^2 \leq \EE[|S(\tau)|^2 , {{{\color{colorreturn}R(\tau)}}}^2],. \end{equation}
由于减去的项 \|\nabla_\theta J(\theta)\|^2 非负,去掉它给出了方差的上界。现在让我们对剩余期望中的两个项分别进行界定。
1️⃣ 得分 \|S(\tau)\|^2 按 O(T) 缩放。 得分 S(\tau) = \sum_{t=0}^{T-1} \nabla_\theta \log {\color{colorpolicy}\pi_\theta(a_t | s_t)} 是 T 个每步得分向量 X_t \defas \nabla_\theta \log {\color{colorpolicy}\pi_\theta(a_t | s_t)} \in \RR^d 的和。关键的是,给定状态 s_t 的条件下,动作得分的期望为零:
\begin{align*} \EE_{a_t \sim \pi_\theta(\cdot | s_t)} [X_t \mid s_t] &= \int \left( \nabla_\theta \log \pi_\theta(a_t | s_t) \right) \pi_\theta(a_t | s_t) \dif a_t \ &\stackrel{\eqref{eq:log_derivative_trick}}{=} \int \nabla_\theta \pi_\theta(a_t | s_t) \dif a_t \ &= \nabla_\theta \underbrace{\int \pi_\theta(a_t | s_t) \dif a_t}_{=, 1} = 0,, \end{align*}
其中我们利用了 \pi_{\theta} 是一个积分为1的概率分布这一事实。
现在考虑任意两个时间步 t < t'。根据全期望定律:
\begin{equation} \EE[X_t^\top X_{t’}]=\EE\Big[\EE[X_t^\top X_{t’} \mid s_0, a_0, \ldots, s_{t’}]\Big],. \end{equation}
在内层期望中,剩余的唯一随机性是动作 a_{t'}(通过条件化,直到 s_{t'} 的所有量都是固定的)。由于 t < t',X_t 完全由条件化集决定,可以从内层期望中提出来。此外,由于 X_{t'} 仅依赖于 s_{t'} 和 a_{t'},且 a_{t'} 从 \pi_\theta(\cdot \mid s_{t'}) 中抽取,我们有 \EE[X_{t'} \mid s_0, a_0, \ldots, s_{t'}] = \EE[X_{t'} \mid s_{t'}] = 0,于是:
\begin{equation} \EE[X_t^\top X_{t’}]=\EE\Big[X_t^\top \underbrace{\EE[X_{t’} \mid s_{t’}]}_{=, 0}\Big]=0,. \end{equation}
因此,不同时间步的得分向量是不相关的,在展开范数平方时所有交叉项消失:
\begin{equation} \EE[|S(\tau)|^2]=\EE\left[\left|\sum_{t=0}^{T-1} X_t\right|^2\right]=\sum_{t=0}^{T-1} \EE[|X_t|^2],. \end{equation}
在有界得分方差假设(对所有 t,\EE[\|X_t\|^2] \leq C)下,对 T 步求和得到:
\begin{equation} \EE[|S(\tau)|^2] \le T C = O(T),. \end{equation}
2️⃣ 回报 ${{\color{colorreturn}R(\tau)}}}^2$ 按 O(T^2) 缩放。 利用有界奖励假设(\|r(s_t, a_t)\| \leq r_{\max}),我们有 \|{{\color{colorreturn}R(\tau)}}\| = \|\sum_{t=0}^{T-1} r(s_t, a_t)\| \leq T r_{\max}。平方这个上界得到确定性上界 ${{\color{colorreturn}R(\tau)}}}^2 \le T^2 r_{\max}^2 = O(T^2)$。
3️⃣ 综合起来。 由于 \|{{\color{colorreturn}R(\tau)}}\| \le T r_{\max} 对每条轨迹 \tau 都确定性地成立,我们可以界定 ${{\color{colorreturn}R(\tau)}}}^2 \le T^2 r_{\max}^2$。结合得分的界 \EE[\|S(\tau)\|^2] \le T C,并根据柯西-施瓦茨不等式,我们有 $\EE[|S(\tau)|^2 , {{\color{colorreturn}R(\tau)}}}^2] \le T^2 r_{\max}^2 \cdot T C = T^3 r_{\max}^2 C$,因此方差的上界为 O(T^3)。
相似文章
@jiqizhixin:太棒了!关于推理型LLM的强化学习现状 https://aweers.de/blog/2026/rl-for-llms/…
一篇全面回顾推理型LLM强化学习现状的博文,涵盖从REINFORCE、PPO到GRPO乃至更多方法,并与InstructGPT、DeepSeek-R1等关键模型相联系。
@cwolferesearch: 我刚刚发表了一篇关于智能体强化学习的博客,涵盖了该领域10多个最新框架。以下是关键要点……链接……
一篇博客文章,总结了十个最新的智能体强化学习框架和最佳实践,涵盖模块化接口、轨迹结构、动作掩码、过程奖励、优势归一化、可扩展的 rollout、稳定性/探索以及任务课程。
@_djdumpling: Luke 是在 RL 基础设施方面最出色的人之一,绝对值得一读!
Luke J. Huang 的新博客文章调研了异步强化学习理论与基础设施,涵盖 8 家开放权重前沿实验室,并讨论了算法技术以及针对训练-推理不匹配的系统修复方案。
@SergioPaniego:如果你想在周末读点长文 ↓↓↓ @adithya_s_k 撰写的强化学习环境终极指南 https://hug…
本文由 AdithyaSK 在 Hugging Face Space 上发布,分享了在大型语言模型(LLM)时代构建和扩展强化学习环境的全面指南。
@neural_avb: 今年早些时候发布的这篇后训练文章完全被我忽略了。强烈推荐给我的GRP…
推荐一篇关于GRPO/RLVR的后训练文章,该文章今年早些时候被忽视,适合对基于可验证奖励的强化学习感兴趣的人。