当前位置: 首页 > news >正文

3.1 策略梯度方法(Policy Gradient Methods)

策略梯度方法(Policy Gradient Methods)


背景

在基于值函数的方法(如 DQN)中,直接逼近 Q 值存在多种问题:

  • Q 值无界:可能取任意实数(正或负),输出层必须是线性的;
  • Q 值方差大:不同 \((s,a)\) 对的 Q 值差异巨大,神经网络难以拟合;
  • 仅适用于离散动作空间:在连续动作空间中无法直接求最大动作。

因此,可直接逼近策略 \(\pi_\theta(s,a)\),即用神经网络输出动作概率或连续控制信号。
这类网络称为参数化策略(Parameterized Policy)

  • 对离散动作空间:输出层通常为 softmax,表示每个动作的概率;
  • 对连续动作空间:输出层可直接生成动作值(如机械臂角度)。

policysearch


策略搜索直接学习参数化策略 \(\pi_\theta\),目标是最大化由该策略生成的轨迹的期望回报:

\[J(\theta) = \mathbb{E}_{\tau \sim \rho_\theta}[R(\tau)] = \mathbb{E}_{\tau \sim \rho_\theta}\left[\sum_{t=0}^T \gamma^t r(s_t, a_t, s_{t+1})\right] \]

其中轨迹 \(\tau = (s_0,a_0,s_1,a_1,\ldots,s_T,a_T)\) 的概率为:

\[\rho_\theta(\tau) = p_0(s_0) \prod_{t=0}^T \pi_\theta(s_t,a_t) p(s_{t+1}|s_t,a_t) \]

目标函数可表示为积分形式:

\[J(\theta) = \int_\tau \rho_\theta(\tau) R(\tau) d\tau \]

利用 Monte Carlo 采样,可近似计算目标函数:

\[J(\theta) \approx \frac{1}{N} \sum_{i=1}^N R(\tau_i) \]

但这种方法存在高方差、样本效率低、仅限回合式任务等问题。

为优化 \(J(\theta)\),我们使用梯度上升:

\[\theta \leftarrow \theta + \eta \nabla_\theta J(\theta) \]

关键问题是如何估计策略梯度 \(\nabla_\theta J(\theta)\)
REINFORCE 与 DPG(确定性策略梯度)等算法提供了相应的估计方法。


REINFORCE 算法

策略梯度推导

@Williams1992 提出利用对数技巧(log-trick)估计策略梯度。

从定义出发:

\[\nabla_\theta J(\theta) = \nabla_\theta \int_\tau \rho_\theta(\tau) R(\tau) d\tau = \int_\tau (\nabla_\theta \rho_\theta(\tau)) R(\tau) d\tau \]

利用恒等式:

\[\nabla_\theta \rho_\theta(\tau) = \rho_\theta(\tau) \nabla_\theta \log \rho_\theta(\tau) \]

得到:

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

展开 \(\log \rho_\theta(\tau)\)

\[\log \rho_\theta(\tau) = \log p_0(s_0) + \sum_{t=0}^T \log \pi_\theta(s_t,a_t) + \sum_{t=0}^T \log p(s_{t+1}|s_t,a_t) \]

由于环境动态不依赖于 \(\theta\),梯度简化为:

\[\nabla_\theta \log \rho_\theta(\tau) = \sum_{t=0}^T \nabla_\theta \log \pi_\theta(s_t,a_t) \]

因此:

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


REINFORCE 算法流程

  1. 使用当前策略 \(\pi_\theta\) 采样 \(N\) 条轨迹 \(\{\tau_i\}\)

  2. 计算每条轨迹的回报 \(R(\tau_i)\)

  3. 估计策略梯度:

    \[\nabla_\theta J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \sum_{t=0}^T \nabla_\theta \log \pi_\theta(s_t,a_t) R(\tau_i) \]

  4. 更新策略:

    \[\theta \leftarrow \theta + \eta \nabla_\theta J(\theta) \]

优点:

  • 模型无关(model-free);
  • 适用于部分可观测环境(POMDP)。

缺点:

  • 高方差;
  • 样本效率低;
  • 只能用于回合式任务;
  • 需频繁采样。

方差问题与基线校正

REINFORCE 的高方差源于:

  • 策略与环境均为随机;
  • 长时间跨度下,返回的不确定性积累。

解决方案之一是减去基线(baseline)

\[\nabla_\theta J(\theta) \approx \frac{1}{N} \sum_{i,t} \nabla_\theta \log \pi_\theta(s_t,a_t) [R(\tau_i) - \hat{R}] \]

其中:

\[\hat{R} = \frac{1}{N}\sum_i R(\tau_i) \]

这种方式不会引入偏差(证明见 @Williams1992),但能有效降低方差与奖励尺度敏感性。

最优基线为:

\[b = \frac{\mathbb{E}[(\nabla_\theta \log \rho_\theta(\tau))^2 R(\tau)]}{\mathbb{E}[(\nabla_\theta \log \rho_\theta(\tau))^2]} \]

在实践中,使用均值或状态值估计 \(\hat{V}(s_t)\) 即可。


策略梯度定理(Policy Gradient Theorem)

进一步推导得:

\[\nabla_\theta J(\theta) = \mathbb{E}_{s \sim \rho_\theta, a \sim \pi_\theta}[\nabla_\theta \log \pi_\theta(s,a) Q^{\pi_\theta}(s,a)] \]

即:每个状态–动作的梯度加权其期望 Q 值。

这一定理的意义在于:

  • 策略梯度可在单步转移上计算(可引入自举 bootstrapping);
  • 允许与值函数近似器(critic)结合。

Actor–Critic 框架

由策略梯度定理可得,策略学习可结合 Q 值估计形成 Actor–Critic 结构

  • Actor(行为者):学习策略 \(\pi_\theta(s,a)\)
  • Critic(评论者):估计 Q 值 \(Q_\varphi(s,a)\)

策略梯度:

\[\nabla_\theta J(\theta) = \mathbb{E}[\nabla_\theta \log \pi_\theta(s,a) Q_\varphi(s,a)] \]

评论者的目标是最小化 TD 误差:

\[\mathcal{L}(\varphi) = \mathbb{E}[(r + \gamma Q_{\varphi'}(s',\arg\max_{a'} Q_\varphi(s',a')) - Q_\varphi(s,a))^2] \]

policygradient

该结构将策略梯度与时序差分学习结合,成为深度强化学习中最常用的框架之一。

http://www.hskmm.com/?act=detail&tid=29571

相关文章:

  • perl语言中的三目运算符和do代码块
  • CCPC2023女生专场 游记(VP)
  • 2.5 分布式学习(Distributed Learning)
  • 心得:刷算法的痛点-只根据题目的case思考,不考虑边界情况,写出一坨shit
  • OI 数论 1
  • 2.4 DQN 变体(Rainbow)
  • Emacs折腾日记(三十二)——org mode的基本美化
  • 2025 工业风机十大品牌全景解析报告:覆盖离心风机,防爆风机,矿用风机的最新推荐
  • 2.3 深度 Q 网络(Deep Q-Network, DQN)
  • Linux存储媒介devmount
  • Linux系统目录(文件)结构
  • 实用指南:如何读懂Mach-O:构建macOS和iOS应用安全的第一道认知防线
  • vim配置使用
  • shell高级
  • shell流程控制
  • shell展开shell数组
  • shell排错
  • 原木
  • 格式化输出与文本处理
  • 2025年10月镀锌卷板厂家最新推荐排行榜,有花镀锌卷板,无花镀锌卷板,高锌层镀锌卷板,批发镀锌卷板公司推荐
  • React 19.2 重磅更新!这几个新特性终于来了
  • Akka.NET高性能分布式Actor框架完全指南
  • 基于Docker搭建MySQL Cluster
  • 2025 年抗氧剂厂家最新推荐排行榜,聚酯防黄变抗氧剂,透明膜防晶点抗氧剂,PC聚碳防黄变抗氧剂公司推荐!
  • PaddleX服务化部署精度低于命令行调用的原因及解决方案 - 指南
  • 某中心与华盛顿大学公布机器人研究奖项与学者名单
  • 会话跟踪方案
  • 阻塞、非阻塞、同步、异步的区别是什么?
  • 如何防范员工泄露数据给 AI?2025年选型与落地实战版
  • Linux文本编辑三剑客之grep