策略梯度方法 学习笔记

策略梯度方法的核心思想

在强化学习中,策略梯度(Policy Gradient, PG)方法直接对策略本身进行参数化并优化,而不是先学价值函数再间接导出策略。

  • 策略:

    \[\pi_\theta(a \mid s) \]

    用参数 \(\theta\)(通常是神经网络)表示在状态 \(s\) 下选择动作 \(a\) 的概率。

  • 目标:最大化期望回报

    \[J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}[R(\tau)] \]

    其中 \(\tau = (s_0, a_0, s_1, a_1, \dots)\) 是一条轨迹。

策略梯度的关键在于直接对 \(J(\theta)\) 求梯度,并用梯度上升更新策略参数

策略梯度定理

目标函数梯度的可计算形式:

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

其中:

  • \(G_t = \sum_{k=t}^T \gamma^{k-t} r_k\):从时刻 (t) 开始的累计回报
  • \(\log \pi_\theta(a_t \mid s_t)\):对数似然
  • \(\gamma\):折扣因子

REINFORCE 算法

REINFORCE 是最基础、最经典的 Monte Carlo 策略梯度算法,由 Williams(1992)提出。

它直接使用完整轨迹的采样回报来估计梯度:

\[\nabla_\theta J(\theta) \approx \sum_{t} \nabla_\theta \log \pi_\theta(a_t \mid s_t) \cdot G_t \]

梯度上升更新:

\[\theta \leftarrow \theta + \alpha \sum_t \nabla_\theta \log \pi_\theta(a_t \mid s_t) G_t \]

为了减少方差,通常引入baseline

优点

  • 无偏估计(unbiased)
  • 概念简单,适合理论分析
  • 可直接用于连续动作空间

缺点

  • 方差极大
  • 需要完整 episode(Monte Carlo)
  • 样本效率低

重要性采样(Importance Sampling, IS)

在很多场景中:

  • 当前策略是 (\(\pi_\theta\))
  • 但数据来自旧策略 (\(\pi_{\theta'}\))

即 off-policy 学习问题。

此时直接用旧数据估计新策略的期望是错误的,需要用到重要性采样。

重要性采样的基本公式

对任意函数 \(f(\tau)\)

\[\mathbb{E}_{\tau \sim \pi_\theta}[f(\tau)] = \mathbb{E}_{\tau \sim \pi_{\theta'}} \left[ \frac{p_\theta(\tau)}{p_{\theta'}(\tau)} f(\tau) \right] \]

轨迹级重要性权重:

\[w(\tau) = \prod_t \frac{\pi_\theta(a_t \mid s_t)}{\pi_{\theta'}(a_t \mid s_t)} \]

带重要性采样的策略梯度

\[\nabla_\theta J(\theta) = \mathbb{E}_{\pi_{\theta'}} \left[ w(\tau) \sum_t \nabla_\theta \log \pi_\theta(a_t \mid s_t) G_t \right] \]

注意\(w(\tau)\)是修正了轨迹出现的概率,所以其他的部分是不变的。

但直接使用轨迹级权重:

  • 方差极高(\(w(\tau)\)分子可能极小)
  • 数值极不稳定

常见改进:PPO等

posted @ 2026-02-06 20:16  wljss  阅读(12)  评论(0)    收藏  举报