【LLM 对齐系列】(三):强化学习的优化目标与策略梯度定理¶
在上一篇文章中,我们介绍了强化学习的三个重要概念:策略(Policy)是智能体的行动指南,奖励(Reward)是评价行动好坏的标尺,而轨迹(Trajectory)则是智能体与环境交互的全过程。
有了这些概念,我们就可以正式进入强化学习的核心问题:如何训练智能体?换句话说,我们已经有了“运动员”(策略)和“裁判”(奖励函数),现在的任务是:如何调整运动员的动作参数 \(\theta\),让他的得分越来越高?
本文作为 LLM 对齐系列的第三篇,将介绍强化学习需要优化的目标函数,并推导出指导优化目标函数的策略梯度定理。

强化学习的优化目标¶
在上一篇文章中,我们介绍了轨迹 \(\tau\) 及其概率 \(p(\tau; \theta)\) 的概念。我们知道,对于任意一条轨迹,环境都会反馈一个回报 \(R(\tau)\)。由于策略 \(\pi_\theta\) 的随机性,每次交互产生的轨迹可能都不相同,获得的回报自然也会有波动。因此,要衡量一个策略到底“好不好”,我们不能只看单次结果,而应该看它在统计意义上的平均表现,即期望回报。
强化学习的优化目标,就是要找到一组参数 \(\theta\),使得策略 \(\pi_{\theta}\) 的期望回报最大化。数学上,我们将优化目标函数 \(J(\theta)\) 定义为:
直观上看,如果我们希望 \(J(\theta)\) 变大,则需要调整参数 \(\theta\),使得那些获得高回报 \(R(\tau)\) 的轨迹 \(\tau\) 出现的概率 \(p(\tau; \theta)\) 变大,而低回报轨迹出现的概率变小。
如何最大化目标?——梯度上升¶
为了最大化 \(J(\theta)\),最直接的方法是梯度上升(Gradient Ascent)。我们需要计算目标函数关于参数 \(\theta\) 的梯度 \(\nabla_\theta J(\theta)\),然后沿着梯度的方向更新参数:
其中 \(\alpha\) 是学习率。
然而,计算 \(J(\theta)\) 梯度并不容易。让我们试着直接对目标函数求导,看看会发生什么:
由于求和与求导是线性的,我们可以把梯度符号移到求和符号内部:
这里我们遇到了一个棘手的问题:现在的公式变成了所有轨迹的“概率梯度”乘以“回报”的总和。但是,在强化学习中,我们无法遍历所有可能的轨迹 \(\tau\),只能通过通过环境交互来采样。为了利用采样来近似计算,我们必须把公式凑成“期望”的形式,也就是 \(\mathbb{E}_{p}[\dots] = \sum p(\tau) \times (\dots)\) 的形式。遗憾的是,上面的公式里只有 \(\nabla_\theta p(\tau; \theta)\),缺少了关键的概率项 \(p(\tau; \theta)\)。
为了解决这个问题,我们需要做一个巧妙的恒等变换:在公式中人为地乘以并除以 \(p(\tau; \theta)\),这样就能获得 \(p(\tau; \theta)\) 这一项。这个操作并不改变原式的值:
此时,我们观察到分数部分 \(\frac{\nabla_\theta p(\tau; \theta)}{p(\tau; \theta)}\) 正好符合对数求导法则(Log-Derivative Rule),即 \((\log x)' = x' / x\)。所以:
将这个替换代回原公式:
现在,公式开头出现了 \(p(\tau; \theta)\),这正是我们想要的期望形式:
至此,我们将难以计算的梯度,成功转化为了“对数概率梯度的期望”。这意味着我们可以通过采样轨迹,计算 \(\nabla_\theta \log p(\tau; \theta) R(\tau)\) 的平均值来近似真正的梯度。
策略梯度定理(Policy Gradient Theorem)¶
\(\nabla_\theta J(\theta)\) 的公式看起来已经很简洁了,但在实际计算中,我们仍然面临一个障碍:\(\nabla_\theta \log p(\tau; \theta)\) 到底怎么算?
在上一篇文章中,我们知道,一条特定的轨迹 \(\tau\) 的发生概率 \(p(\tau; \theta)\) 是由环境和策略这两个对象共同决定的。
\(p(\tau; \theta)\) 是一个累乘的形式。因此,对于 \(\nabla_\theta J(\theta)\) 中的 \(\log p(\tau; \theta)\) 这一项,在取对数后就变成了累加的形式:
我们需要求 \(\log p(\tau; \theta)\) 关于 \(\theta\) 的梯度,可以逐个分析这三部分对 \(\theta\) 求梯度的结果。
-
初始状态分布 \(p(s_0)\) 来源于环境,与 \(\theta\) 无关,因此第一项的梯度为 0。
-
对第二项直接添加梯度符号,变成 \(\sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t)\)。
-
状态转移概率 \(p(s_{t+1}|s_t, a_t)\) 取决于客观环境,也与 \(\theta\) 无关,因此第三项的梯度也为 0。
因此,公式中所有涉及环境的项在求梯度后全部消失!只剩下与策略有关的项:
这就是策略梯度定理的基础形式。它告诉我们:即使我们完全不知道客观的环境模型(Model-free),只要我们能计算策略网络的梯度,就可以对智能体进行优化。
最后,将这个结果代回我们的目标函数梯度公式中:
策略梯度定理的直观解释¶
公式 \(\eqref{1}\) 的直觉含义十分朴素,可以用一句话概括:动作带来的期望回报越高,越要增大这个动作出现的概率。
-
\(\nabla_\theta \log \pi_\theta(a_t|s_t)\) 告诉我们如何调整参数 \(\theta\),才能让智能体在状态 \(s_t\) 下更有可能选出动作 \(a\),即“增加当前动作出现概率”的梯度方向。
-
\(R(\tau)\) 则充当了一个方向和权重系数的角色。
-
如果 \(R(\tau)\) 是一个很大的正数,说明这个策略得到的轨迹的回报很高。我们就会沿着“增加当前动作出现概率”的梯度方向迈出一大步。这意味着我们要大幅增加这条轨迹中所有动作出现的概率。即:“刚才这么做既然得分了,下次遇到这种情况,还要这么做!”
-
如果 \(R(\tau)\) 是一个很小的负数,说明这个策略得到的轨迹的回报很低。将 \(\nabla_\theta \log \pi_\theta(a_t|s_t)\) 乘以一个负数后,原本“增加当前动作出现概率”的方向就会变成“减少当前动作出现概率”的方向。这意味着我们要抑制这些动作再次出现。即:“刚才这么做扣分了,下次千万别这么干了!”
-
这就是策略梯度定理最核心的思想:通过不断地试错(采样),利用最终的回报 \(R(\tau)\) 作为参考,去放大那些导致高回报的动作的概率,同时抑制导致低回报的动作。即使我们不知道客观的环境模型,只要盯着“回报”这个指挥棒,智能体就能一步步学会正确的策略。
总结¶
本文介绍了强化学习的优化目标——最大化期望回报,并推导出了著名的策略梯度定理。
这一定理的推导过程展示了一个精妙的变换:通过对数导数技巧,我们将难以直接计算的目标函数梯度,转化为可以通过采样近似的“对数概率梯度的期望”。更重要的是,推导结果证明了我们不需要知道环境模型(状态转移概率),只需要根据策略网络的梯度和采样得到的轨迹回报,就能指导智能体不断进化。这为 Model-free 强化学习奠定了坚实的理论基础。
策略梯度定理是现代强化学习算法的基石。在接下来的文章中,我们将基于这一理论,介绍具体的算法实现,从最基础的 REINFORCE 算法开始,一步步走进 PPO 等在大模型对齐中广泛应用的高级算法。