EN

LLM Notes

LLM 与强化学习学习笔记 - Transformer、RLHF、PPO、DPO 等技术深度解析

RL 学习笔记(三):基于策略的强化学习

2025-12-19 · Qi Lu · Views:

在上一篇文章中,我们介绍了 Value-Based 方法:先学习 $Q^*$,再通过 $\arg\max$ 导出策略。这种方法在离散动作空间中效果很好,但遇到以下问题时会遇到困难:

如果动作空间是连续的(如机器人关节角度),如何计算 $\arg\max_a Q(s,a)$?

如果最优策略是随机的(如石头剪刀布),如何用确定性策略表示?

Policy-Based 方法提供了一种更直接的思路:直接参数化策略 $\pi_\theta(a|s)$,通过梯度上升最大化期望回报

1. 为什么需要 Policy-Based 方法?

1.1 Value-Based 方法的局限性

  1. 连续动作空间困难:$\max_a Q(s,a)$ 需要枚举或优化所有动作
  2. 函数逼近不稳定(Deadly Triad):函数逼近 + Bootstrapping + Off-policy 可能发散
  3. 优化目标间接:最小化 TD 误差,而非直接优化期望回报 $J(\pi)$
  4. 只能学习确定性策略:$\arg\max$ 输出确定动作,但某些环境中随机策略更优

1.2 参数化策略

Policy-Based 方法直接参数化策略 $\pi_\theta(a|s)$:

\[J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ G_0 \right] = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^{T} \gamma^t r_t \right]\]

策略参数化的常见形式:

Policy-Based 方法的优势

  1. 处理连续动作:直接输出动作分布,无需 $\arg\max$
  2. 学习随机策略:可以输出动作的概率分布
  3. 直接优化目标:梯度上升直接最大化 $J(\theta)$
  4. 更好的收敛性质:策略参数的小变化导致策略的小变化(光滑)

2. Policy Gradient 定理

Policy Gradient 定理是 Policy-Based RL 的理论基础,它给出了目标函数 $J(\theta)$ 关于参数 $\theta$ 的梯度表达式。

2.1 Log-Derivative Trick

计算 $\nabla_\theta J(\theta)$ 的关键技巧是 Log-Derivative Trick

\[\nabla_\theta p(x|\theta) = p(x|\theta) \nabla_\theta \log p(x|\theta)\]

证明:由对数的求导法则,$\nabla_\theta \log p(x|\theta) = \frac{\nabla_\theta p(x|\theta)}{p(x|\theta)}$,两边同乘 $p(x|\theta)$ 即得。

Log-Derivative Trick 的妙处:将对 $p(x|\theta)$ 的求导转化为对 $\log p(x|\theta)$ 的求导,后者往往更容易计算,特别是当 $p$ 是乘积形式时。

2.2 Policy Gradient 定理

定理 (Policy Gradient Theorem)

\[\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t \right]\]

其中 $G_t = \sum_{k=0}^{T-t} \gamma^k r_{t+k}$ 是从时刻 $t$ 开始的 reward-to-go。

证明思路

Step 1:应用 Log-Derivative Trick

\[\begin{aligned} \nabla_\theta J(\theta) &= \nabla_\theta \int p(\tau|\theta) R(\tau) d\tau \\ &= \int p(\tau|\theta) \nabla_\theta \log p(\tau|\theta) R(\tau) d\tau \\ &= \mathbb{E}_{\tau \sim \pi_\theta} \left[ \nabla_\theta \log p(\tau|\theta) \cdot R(\tau) \right] \end{aligned}\]

Step 2:展开 $\nabla_\theta \log p(\tau|\theta)$

回顾轨迹概率分解:$p(\tau|\theta) = p(s_0) \prod_{t} \pi_\theta(a_t|s_t) P(s_{t+1}|s_t,a_t)$

取对数并求梯度:

\[\nabla_\theta \log p(\tau|\theta) = \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t)\]

关键观察:$p(s_0)$ 是环境的初始状态分布,$P(s_{t+1}|s_t,a_t)$ 是环境的动力学模型,它们都与策略参数 $\theta$ 无关,因此梯度为零!

这意味着:即使不知道环境动力学 $P$,我们也能计算 Policy Gradient——这是 Policy Gradient 方法能够 Model-Free 的根本原因。

Step 3:引入 Reward-to-go(因果性)

动作 $a_t$ 只影响未来奖励,不影响过去。因此可以用 reward-to-go $G_t$ 替代完整回报 $R(\tau)$。

Policy Gradient 定理的直观理解

  • $\nabla_\theta \log \pi_\theta(a_t|s_t)$ 是”增加动作 $a_t$ 概率”的方向
  • $G_t$ 是该动作之后获得的累积奖励
  • 如果 $G_t > 0$:沿梯度方向更新,增加 $a_t$ 的概率
  • 如果 $G_t < 0$:反向更新,减少 $a_t$ 的概率

简言之:好的动作更可能被选择,坏的动作更少被选择

3. REINFORCE 算法

REINFORCE 是最简单的 Policy Gradient 算法,直接使用蒙特卡洛采样来估计梯度。

REINFORCE Algorithm

REINFORCE 是无偏估计:$\mathbb{E}[\hat{g}] = \nabla_\theta J(\theta)$

但方差很大

4. Baseline 与方差降低

4.1 Baseline 技巧

一个巧妙的技巧是:从 $G_t$ 中减去一个 baseline $b(s_t)$,可以降低方差而不引入偏差。

定理 (Baseline 不改变期望):对于任意只依赖于状态 $s$(不依赖于动作 $a$)的函数 $b(s)$:

\[\mathbb{E}_{a \sim \pi_\theta(\cdot|s)} \left[ \nabla_\theta \log \pi_\theta(a|s) \cdot b(s) \right] = 0\]

证明:由于 $b(s)$ 不依赖于 $a$,可以提出期望外:

\[b(s) \cdot \mathbb{E}_{a \sim \pi_\theta} \left[ \nabla_\theta \log \pi_\theta(a|s) \right] = b(s) \cdot \nabla_\theta \sum_a \pi_\theta(a|s) = b(s) \cdot \nabla_\theta 1 = 0\]

因此,Policy Gradient 可以写成:

\[\nabla_\theta J(\theta) = \mathbb{E} \left[ \sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot (G_t - b(s_t)) \right]\]

4.2 为什么 Baseline 能降低方差?

4.3 最优 Baseline

定理:在不改变期望的前提下,使方差最小的 baseline 是状态价值函数:$b^*(s) = V^\pi(s)$

当 $b(s) = V^\pi(s)$ 时,$G_t - V^\pi(s_t)$ 的期望正是 advantage 函数

5. Advantage Function 与 Actor-Critic

5.1 Advantage 的定义与直觉

\[A^\pi(s,a) = Q^\pi(s,a) - V^\pi(s)\]

当使用 $V^\pi(s)$ 作为 baseline 时:

\[\mathbb{E}_\pi \left[ G_t - V^\pi(s_t) \mid s_t, a_t \right] = Q^\pi(s_t, a_t) - V^\pi(s_t) = A^\pi(s_t, a_t)\]

因此,Policy Gradient with Advantage:

\[\nabla_\theta J(\theta) = \mathbb{E} \left[ \sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot A^\pi(s_t, a_t) \right]\]

Advantage $A(s,a)$ 的直觉

  • $V(s)$:在状态 $s$ 的”平均”表现
  • $Q(s,a)$:在状态 $s$ 选择动作 $a$ 的表现
  • $A(s,a) = Q(s,a) - V(s)$:动作 $a$ 比平均好多少

$A > 0$:这个动作好于平均,应该增加其概率 $A < 0$:这个动作差于平均,应该减少其概率

5.2 Advantage 的估计方法

  1. Monte Carlo 估计:$\hat{A}_t^{\text{MC}} = G_t - \hat{V}(s_t)$(无偏但高方差)

  2. TD 估计(1-step):$\hat{A}_t^{\text{TD}} = r_t + \gamma \hat{V}(s_{t+1}) - \hat{V}(s_t) = \delta_t$(低方差但有偏)

  3. n-step 估计:介于两者之间

  4. GAE:通过 $\lambda$ 参数灵活权衡偏差和方差

5.3 Actor-Critic 架构

为了估计 $\hat{V}(s)$,我们引入一个 Critic 网络。Actor-Critic 方法同时学习:

Actor-Critic Architecture

A2C (Advantage Actor-Critic) 的核心更新规则:

Actor 更新(Policy Gradient with Advantage): \(\theta \leftarrow \theta + \alpha_\theta \sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot \hat{A}_t\)

Critic 更新(Value Function Regression): \(\phi \leftarrow \phi - \alpha_\phi \nabla_\phi \sum_t \left( \hat{V}_\phi(s_t) - \text{target} \right)^2\)

为什么需要 Critic?

  • 提供 $\hat{V}(s)$ 来计算 advantage $\hat{A}_t$
  • 比纯 MC(使用 $G_t$)方差更小
  • 可每步更新,不用等 episode 结束

6. Generalized Advantage Estimation (GAE)

GAE 提供了一种在偏差和方差之间灵活权衡的 advantage 估计方法,是现代 Policy Gradient 算法(如 PPO)的核心组件。

6.1 GAE 的定义

定义 (Generalized Advantage Estimation)

\[\hat{A}_t^{\text{GAE}(\gamma, \lambda)} = \sum_{l=0}^{\infty} (\gamma \lambda)^l \delta_{t+l}\]

其中 $\delta_t = r_t + \gamma \hat{V}(s_{t+1}) - \hat{V}(s_t)$ 是 TD 残差,$\lambda \in [0,1]$ 是衰减参数。

定理:GAE 等价于 n-step Advantage 的加权和:

\[\hat{A}_t^{\text{GAE}} = (1-\lambda) \sum_{n=1}^{\infty} \lambda^{n-1} \hat{A}_t^{(n)}\]

6.2 $\lambda$ 参数的偏差-方差权衡

$\lambda$ 值 等价形式 偏差 方差
$\lambda = 0$ $\delta_t$(TD) 高(依赖 $\hat{V}$)
$\lambda = 1$ $G_t - \hat{V}(s_t)$(MC)
$\lambda \in (0,1)$ 加权平均 中等 中等

实践中,$\lambda = 0.95$ 或 $\lambda = 0.97$ 是常用的选择。

GAE 的直觉理解

  • $\delta_t$ 是”一步后用 Critic 估计剩余价值”的 advantage
  • GAE 把多步 $\delta$ 加权求和,$(\gamma\lambda)^l$ 让远处的 $\delta$ 权重指数衰减
  • $\lambda$ 越小,越依赖 Critic 估计(偏差大但方差小)
  • $\lambda$ 越大,越依赖实际回报(偏差小但方差大)

6.3 GAE 的实际计算

GAE 可以通过递推高效计算:

\[\hat{A}_t^{\text{GAE}} = \delta_t + \gamma\lambda \hat{A}_{t+1}^{\text{GAE}}\]

边界条件:$\hat{A}_T^{\text{GAE}} = 0$。从后往前计算,复杂度为 $O(T)$。

7. 重要性采样与 Off-Policy Policy Gradient

7.1 On-Policy 的问题

Policy Gradient 是 on-policy 的:每次更新 $\theta$ 后,旧数据的分布就与新策略不同了。这导致:

重要性采样(Importance Sampling, IS)允许我们复用旧数据。

7.2 重要性采样原理

用分布 $q(x)$ 的样本估计 $p(x)$ 下的期望:

\[\mathbb{E}_{x \sim p}[f(x)] = \mathbb{E}_{x \sim q}\left[ \frac{p(x)}{q(x)} f(x) \right]\]

其中 $\rho(x) = \frac{p(x)}{q(x)}$ 称为重要性权重

应用到 Policy Gradient,单步的重要性权重:

\[\rho_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\text{old}}(a_t|s_t)}\]

Off-policy Policy Gradient

\[\nabla_\theta J(\theta) = \mathbb{E}_{(s,a) \sim \pi_{\text{old}}} \left[ \rho_t(\theta) \nabla_\theta \log \pi_\theta(a_t|s_t) \hat{A}_t \right]\]

7.3 方差问题

当 $\rho_t$ 偏离 1 太多时,方差会急剧增大。需要限制策略更新幅度,保持 $\rho_t \approx 1$。

8. Trust Region 方法:TRPO 与 PPO

8.1 TRPO:KL 约束优化

TRPO 通过 KL 散度约束限制策略更新:

\[\begin{aligned} \max_\theta \quad & L(\theta) = \mathbb{E}_{(s,a) \sim \pi_{\text{old}}} \left[ \rho_t(\theta) \hat{A}_t \right] \\ \text{s.t.} \quad & \bar{D}_{\text{KL}}(\pi_{\text{old}} \| \pi_\theta) \leq \delta \end{aligned}\]

TRPO 理论上保证单调改进,但需要计算 KL 散度的 Hessian,实现复杂。

8.2 PPO:简化的 Trust Region

PPO 通过更简单的方式近似 TRPO 的效果。

PPO-Clip 目标

\[L^{\text{CLIP}}(\theta) = \mathbb{E} \left[ \min \left( \rho_t \hat{A}_t, \, \text{clip}(\rho_t, 1-\epsilon, 1+\epsilon) \hat{A}_t \right) \right]\]

其中 $\text{clip}(x, a, b) = \max(a, \min(x, b))$,$\epsilon$ 通常取 0.1 或 0.2。

PPO-Clip 的直觉

8.3 Entropy Bonus

为了鼓励探索,PPO 通常还会加入 entropy bonus:

\[L^{\text{total}}(\theta) = L^{\text{CLIP}}(\theta) + c_1 \cdot H(\pi_\theta)\]

其中 $H(\pi_\theta) = -\mathbb{E}[\log \pi_\theta(a|s)]$ 是策略的熵。

8.4 PPO 完整算法

PPO Algorithm

PPO 的成功原因

  1. 简单高效:只需一阶优化,不需要计算 Hessian
  2. 样本效率:可多次复用同一批数据($K$ 次更新)
  3. 稳定性:clip 机制防止策略剧烈变化
  4. 鲁棒性:对超参数不敏感,适用于多种任务

PPO 是目前最常用的 Policy Gradient 算法,也是 RLHF 中的标准选择。

本章小结

核心内容

  1. Policy Gradient 定理
    • 给出了目标函数梯度的解析形式:$\nabla_\theta J = \mathbb{E}[\sum_t \nabla \log \pi \cdot G_t]$
    • Log-Derivative Trick 是推导的关键
    • 环境动力学与 $\theta$ 无关,实现了 Model-Free
  2. 方差降低技术
    • Baseline 技巧:减去 $b(s)$ 不改变期望但降低方差
    • 最优 baseline 是 $V^\pi(s)$
    • 使用 Advantage $A = Q - V$ 替代 $G_t$
  3. Actor-Critic 架构
    • Actor(策略网络)+ Critic(价值网络)
    • Critic 提供 $\hat{V}(s)$ 来估计 advantage
  4. GAE
    • $\hat{A}^{\text{GAE}} = \sum_l (\gamma\lambda)^l \delta_{t+l}$
    • $\lambda$ 控制偏差-方差权衡
  5. Trust Region 方法
    • 重要性采样允许复用旧数据,但需要限制策略变化
    • TRPO:KL 约束优化,实现复杂
    • PPO:clip 机制,简单高效,是实践中的首选

Policy Gradient 演进

下一篇文章将介绍 Model-Based RL 与多智能体学习,包括 MCTS 和 AlphaGo/Zero。

← Back to Home

Comments