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

策略梯度方法 学习笔记

策略梯度方法的核心思想

在强化学习中,策略梯度(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

http://www.jsqmd.com/news/351131/

相关文章:

  • 从零构建企业级AI Agent系统:多智能体协作架构的实战密码
  • 【Linux入门篇】摆脱权限混乱困境:Linux用户组管理+sudo提权,一步到位
  • CANN轻量化开发实战:快速上手与多场景适配
  • .
  • CANN模型服务化:构建高可用、弹性伸缩的AIGC推理服务引擎
  • CANN多模态引擎:打通文本-图像-音频的AIGC推理新范式
  • 专注时钟:在线番茄工作法工具,重塑高效工作流
  • 【AI就业干货27】NLP工程实战:类别不平衡与长文本处理的高效解决方案
  • 2026年,微前端终于“死“了
  • 信息流聚合工具:一站式掌握全网热点与技术动态
  • 解析CANN ops-nn中的MatMul算子:大语言模型矩阵运算核心组件深度剖析
  • Zabbix使用飞书实现发送告警卡片[适用于zabbix 5.x版本]
  • Spring Boot 中事务(Transaction)的正确使用姿势
  • TypeScript/JavaScript 中的异步迭代语句
  • 一文读懂:传统RAG、多模态RAG与Agent的本质区别与联系,收藏级技术解析
  • 基于SpringBoot + Vue的自驾游攻略查询系统
  • 微信小程序Python-uniapp儿童疫苗接种预约医疗提醒系统
  • CANN生态深度解析:ops-nn仓库的算子实现与性能优化
  • 【收藏必备】颠覆Skills!新型Agent自己造工具开源,零技能起步性能碾压Gemini 3 Pro
  • 速看!AI应用架构师如何运用AI驱动质量管理降本增效
  • js中的生成器函数
  • SAP核心模块单据关系及关键数据表详解
  • 微信小程序Python-uniapp基于Android的全民健身App设计与实现
  • 地平线征程 6 工具链入门教程 | 征程 6B 计算平台部署指南
  • 微信小程序Python-uniapp 小区果蔬商城
  • Vibe Coding 与 LangChain、LangGraph 的协同进化
  • 代码生成超越 GPT-4:DeepSeek-V4 编程任务实战与 2026 开发者效率提升指南
  • 微信小程序Python-uniapp 游戏攻略系统 逃跑吧!少年的游戏角色介绍系统
  • 【毕设】基于人脸识别的实验室智能门禁系统的设计与实现
  • 微信小程序Python-uniapp 演唱会售票系统