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

强化学习策略梯度算法梳理:从REINFORCE到PPO2(REINFORCE、QAC、A2C、Off-Policy AC、PP01、PPO2))

强化学习策略梯度算法:从REINFORCE到PPO2

0 策略梯度算法对比总览

J(θ)=∑stdπθ(st)∑atπθ(at∣st)Qπθ(st,at)J(\theta) = \sum_{s_t} d^{\pi_{\theta}}(s_t) \sum_{a_t} \pi_{\theta}(a_t|s_t) Q^{\pi_{\theta}}(s_t, a_t)J(θ)=stdπθ(st)atπθ(atst)Qπθ(st,at)

算法名称核心思想关键改进点目标函数 (期望形式)主要优势主要劣势
REINFORCE蒙特卡洛策略梯度直接使用轨迹回报J(θ)=Eτ∼πθ[R(τ)]J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} [R(\tau)]J(θ)=Eτπθ[R(τ)]无偏,实现简单高方差,样本效率低,必须回合更新
QAC引入时序差分学习Actor-Critic架构,用Q值代替回报,单步更新Jactor(θ)=Est∼dπθ,at∼πθ[Qπθ(st,at)]J_{actor}({\theta}) = \mathbb{E}_{s_t \sim d^{\pi_{\theta}}, a_t \sim \pi_{\theta}} [Q^{\pi_{\theta}}(s_t, a_t)]Jactor(θ)=Estdπθ,atπθ[Qπθ(st,at)]方差降低,在线学习引入偏差,On-Policy
A2C引入优势函数用A值代替Q值,进一步降低方差Jactor(θ)=Est∼dπθ,at∼πθ[Aπθ(st,at)]J_{actor}({\theta}) = \mathbb{E}_{s_t \sim d^{\pi_{\theta}}, a_t \sim \pi_{\theta}} [A^{\pi_{\theta}}(s_t, a_t)]Jactor(θ)=Estdπθ,atπθ[Aπθ(st,at)]方差更低,学习更快Critic误差影响Actor,on-policy样本效率有限
Off-Policy AC引入重要性采样可复用历史数据,off-policyJactor(θ)=Est∼dβ,at∼β[rt(θ)Aπθ]J_{actor}({\theta}) = \mathbb{E}_{s_t \sim d^{\beta}, a_t \sim \beta} \left[r_t(\theta) A_{\pi_{\theta}} \right]Jactor(θ)=Estdβ,atβ[rt(θ)Aπθ]样本效率高高方差,不稳定
PPO1限制策略更新幅度KL散度约束Jactor(θ)=Est∼dπθold,at∼πθold[rt(θ)Aπθ−βKL]]J_{actor}({\theta}) = \mathbb{E}_{s_t \sim d^{\pi_{\theta_{old}}}, a_t \sim \pi_{\theta_{old}}} \left[ r_t(\theta) A_{\pi_{\theta}} - \beta \text{KL}] \right]Jactor(θ)=Estdπθold,atπθold[rt(θ)AπθβKL]]训练稳定,方差低计算成本高
PPO2裁剪简化算法简化PPO1,裁剪代替KL约束Jactor(θ)=Est,at[min⁡(rtAAπθ,clip(rt,1ϵ,1+ϵ)Aπθ)]J_{actor}({\theta})=\mathbb{E}_{s_t,a_t} [\min(r_t AA_{\pi_{\theta}}, \text{clip}(r_t,1\epsilon,1+\epsilon) A_{\pi_{\theta}})]Jactor(θ)=Est,at[min(rtAAπθ,clip(rt,1ϵ,1+ϵ)Aπθ)]简单高效,稳定超参数敏感

1 REINFORCE算法:蒙特卡洛策略梯度

1.目标函数

  • 初始目标函数(期望形式)
    J(θ)=Eτ∼πθ[R(τ)]J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} [R(\tau)]J(θ)=Eτπθ[R(τ)]

  • 初始目标函数(展开形式)
    J(θ)=∑τP(τ;θ)R(τ)J(\theta) = \sum_{\tau} P(\tau;\theta) R(\tau)J(θ)=τP(τ;θ)R(τ)

2.梯度函数

  • 目标函数的梯度(期望形式)
    ∇θJ(θ)=Eτ∼πθ[∑t=0T∇θlog⁡πθ(at∣st)⋅Gt]\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]θJ(θ)=Eτπθ[t=0Tθlogπθ(atst)Gt]

  • 目标函数的梯度(展开形式)
    ∇θJ(θ)=∑τP(τ;θ)[∑t=0T∇θlog⁡πθ(at∣st)⋅Gt]\nabla_{\theta} J(\theta) = \sum_{\tau} P(\tau;\theta) \left[ \sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) \cdot G_t \right]θJ(θ)=τP(τ;θ)[t=0Tθlogπθ(atst)Gt]

3.符号解释

符号解释

  • τ\tauτ: 轨迹
  • P(τ;θ)P(\tau;\theta)P(τ;θ): 轨迹τ\tauτ的发生概率
  • R(τ)R(\tau)R(τ): 轨迹的累积回报
  • πθ(at∣st)\pi_{\theta}(a_t|s_t)πθ(atst): 策略函数
  • GtG_tGt: 从时间步t开始的回报

4.优缺点

优点

  1. 概念简单直观,易于实现
  2. 直接优化策略,适用于连续和离散动作空间
  3. 具有理论上的无偏性

缺点

  1. 方差非常高
  2. 样本效率低
  3. 收敛速度慢,且训练不稳定

5.解决的问题

策略梯度定理给出了一个理论可行的方法,可以直接优化策略,适用于连续动作空间,可学习随机策略。reinforce算法提供了策略梯度定理的一个具体实现方案,但没有解决高方差问题

2 QAC算法:引入时序差分学习

1.目标函数

  • 初始目标函数(期望形式)
    J(θ)=Est∼dπθ,at∼πθ[Qπθ(st,at)]J(\theta) = \mathbb{E}_{s_t \sim d^{\pi_{\theta}}, a_t \sim \pi_{\theta}} [Q^{\pi_{\theta}}(s_t, a_t)]J(θ)=Estdπθ,atπθ[Qπθ(st,at)]

  • 初始目标函数(展开形式)
    J(θ)=∑stdπθ(st)∑atπθ(at∣st)Qπθ(st,at)J(\theta) = \sum_{s_t} d^{\pi_{\theta}}(s_t) \sum_{a_t} \pi_{\theta}(a_t|s_t) Q^{\pi_{\theta}}(s_t, a_t)J(θ)=stdπθ(st)atπθ(atst)Qπθ(st,at)

2.梯度函数

  • 目标函数的梯度(期望形式)
    ∇θJ(θ)=Est∼dπθ,at∼πθ[∇θlog⁡πθ(at∣st)⋅Qw(st,at)]\nabla_{\theta} J(\theta) = \mathbb{E}_{s_t \sim d^{\pi_{\theta}}, a_t \sim \pi_{\theta}} \left[ \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) \cdot Q_w(s_t, a_t) \right]θJ(θ)=Estdπθ,atπθ[θlogπθ(atst)Qw(st,at)]

  • 目标函数的梯度(展开形式)
    ∇θJ(θ)=∑stdπθ(st)∑atπθ(at∣st)∇θlog⁡πθ(at∣st)⋅Qw(st,at)\nabla_{\theta} J(\theta) = \sum_{s_t} d^{\pi_{\theta}}(s_t) \sum_{a_t} \pi_{\theta}(a_t|s_t) \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) \cdot Q_w(s_t, a_t)θJ(θ)=stdπθ(st)atπθ(atst)θlogπθ(atst)Qw(st,at)

3.符号解释

符号解释

  • dπθ(st)d^{\pi_{\theta}}(s_t)dπθ(st): 策略πθ\pi_{\theta}πθ下的状态分布
  • Qw(st,at)Q_w(s_t, a_t)Qw(st,at): 由参数w近似的动作价值函数

4.优缺点

优点

  1. 方差显著降低
  2. 样本效率提高
  3. 学习更稳定

缺点

  1. 引入了估计偏差
  2. 对函数近似器的选择敏感
  3. 仍然是On-Policy

5.解决的问题

引入时序差分的思想,用Q值代替回报,单步更新,降低方差,提高样本效率

3 A2C算法:引入优势函数

1.目标函数

  • 初始目标函数(期望形式)
    J(θ)=Est∼dπθ,at∼πθ[Aπθ(st,at)]J(\theta) = \mathbb{E}_{s_t \sim d^{\pi_{\theta}}, a_t \sim \pi_{\theta}} [A^{\pi_{\theta}}(s_t, a_t)]J(θ)=Estdπθ,atπθ[Aπθ(st,at)]

  • 初始目标函数(展开形式)
    J(θ)=∑stdπθ(st)∑atπθ(at∣st)Aπθ(st,at)J(\theta) = \sum_{s_t} d^{\pi_{\theta}}(s_t) \sum_{a_t} \pi_{\theta}(a_t|s_t) A^{\pi_{\theta}}(s_t, a_t)J(θ)=stdπθ(st)atπθ(atst)Aπθ(st,at)

2.梯度函数

  • 目标函数的梯度(期望形式)
    ∇θJ(θ)=Est∼dπθ,at∼πθ[∇θlog⁡πθ(at∣st)⋅Aπθ(st,at)]\nabla_{\theta} J(\theta) = \mathbb{E}_{s_t \sim d^{\pi_{\theta}}, a_t \sim \pi_{\theta}} \left[ \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) \cdot A^{\pi_{\theta}}(s_t, a_t) \right]θJ(θ)=Estdπθ,atπθ[θlogπθ(atst)Aπθ(st,at)]

  • 目标函数的梯度(展开形式)
    ∇θJ(θ)=∑stdπθ(st)∑atπθ(at∣st)∇θlog⁡πθ(at∣st)⋅Aπθ(st,at)\nabla_{\theta} J(\theta) = \sum_{s_t} d^{\pi_{\theta}}(s_t) \sum_{a_t} \pi_{\theta}(a_t|s_t) \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) \cdot A^{\pi_{\theta}}(s_t, a_t)θJ(θ)=stdπθ(st)atπθ(atst)θlogπθ(atst)Aπθ(st,at)

3.符号解释

符号解释

  • Aπθ(st,at)A^{\pi_{\theta}}(s_t, a_t)Aπθ(st,at): 优势函数,Aπθ=Qπθ(st,at)−Vπθ(st)A^{\pi_{\theta}} = Q^{\pi_{\theta}}(s_t,a_t) - V^{\pi_{\theta}}(s_t)Aπθ=Qπθ(st,at)Vπθ(st)

4.优缺点

优点

  1. 方差进一步降低
  2. 学习更稳定、更快
  3. 探索性更好

缺点

  1. 需要同时学习V和π
  2. 仍受限于On-Policy

5.解决的问题

引入基线,构造优势函数,用A值代替Q值,进一步降方差

4 Off-policy AC算法:引入重要性采样

1.目标函数

  • 初始目标函数(期望形式)
    J(θ)=Est∼dβ,at∼β[rt(θ)Aπθ]J(\theta) = \mathbb{E}_{s_t \sim d^{\beta}, a_t \sim \beta} \left[r_t(\theta) A_{\pi_{\theta}} \right]J(θ)=Estdβ,atβ[rt(θ)Aπθ]
    rt(θ)=πθ(at∣st)β(at∣st)r_t(\theta) = \frac{\pi_{\theta}(a_t|s_t)}{\beta(a_t|s_t)}rt(θ)=β(atst)πθ(atst)
    Aπθ=Qπθ(st,at)−Vπθ(st)A_{\pi_{\theta}}=Q_{\pi_{\theta}}(s_t,a_t)-V_{\pi_{\theta}}(s_t)Aπθ=Qπθ(st,at)Vπθ(st)

  • 初始目标函数(展开形式)
    J(θ)=∑stdβ(st)∑atβ(at∣st)πθ(at∣st)β(at∣st)Aπθ(st,at)J(\theta) = \sum_{s_t} d^{\beta}(s_t) \sum_{a_t} \beta(a_t|s_t) \frac{\pi_{\theta}(a_t|s_t)}{\beta(a_t|s_t)} A_{\pi_{\theta}}(s_t, a_t)J(θ)=stdβ(st)atβ(atst)β(atst)πθ(atst)Aπθ(st,at)

2.梯度函数

  • 目标函数的梯度(期望形式)
    ∇θJ(θ)=Est∼dβ,at∼β[πθ(at∣st)β(at∣st)∇θlog⁡πθ(at∣st)⋅Aπθ]\nabla_{\theta} J(\theta) = \mathbb{E}_{s_t \sim d^{\beta}, a_t \sim \beta} \left[ \frac{\pi_{\theta}(a_t|s_t)}{\beta(a_t|s_t)} \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) \cdot A_{\pi_{\theta}} \right]θJ(θ)=Estdβ,atβ[β(atst)πθ(atst)θlogπθ(atst)Aπθ]

  • 目标函数的梯度(展开形式)
    ∇θJ(θ)=∑stdβ(st)∑atβ(at∣st)(πθ(at∣st)β(at∣st)∇θlog⁡πθ(at∣st)⋅Aπθ)\nabla_{\theta} J(\theta) = \sum_{s_t} d^{\beta}(s_t) \sum_{a_t} \beta(a_t|s_t) \left( \frac{\pi_{\theta}(a_t|s_t)}{\beta(a_t|s_t)} \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) \cdot A_{\pi_{\theta}} \right)θJ(θ)=stdβ(st)atβ(atst)(β(atst)πθ(atst)θlogπθ(atst)Aπθ)

3.符号解释

符号解释

  • β(at∣st)\beta(a_t|s_t)β(atst): 行为策略
  • πθ(at∣st)β(at∣st)\frac{\pi_{\theta}(a_t|s_t)}{\beta(a_t|s_t)}β(atst)πθ(atst): 重要性采样比率

4.优缺点

优点

  1. 极高的样本效率
  2. 探索与利用分离
  3. 适用于大规模问题

缺点

  1. 高方差问题
  2. 数值不稳定
  3. 理论复杂

5.解决的问题

引入重要采样,可复用历史数据,将on-policy的AC方法转化为off-policy的方法

5 PPO1算法:限制策略更新幅度

1.目标函数

  • 初始目标函数(期望形式)

J(θ)=Est∼dπθold,at∼πθold[rt(θ)Aπθ−β⋅KL[πθold(⋅∣st)∣∣πθ(⋅∣st)]]J(\theta) = \mathbb{E}_{s_t \sim d^{\pi_{\theta_{old}}}, a_t \sim \pi_{\theta_{old}}} \left[ r_t(\theta) A_{\pi_{\theta}} - \beta \cdot \text{KL}[\pi_{\theta_{old}}(\cdot|s_t) || \pi_{\theta}(\cdot|s_t)] \right]J(θ)=Estdπθold,atπθold[rt(θ)AπθβKL[πθold(st)∣∣πθ(st)]]
rt(θ)=πθ(at∣st)β(at∣st)r_t(\theta) = \frac{\pi_{\theta}(a_t|s_t)}{\beta(a_t|s_t)}rt(θ)=β(atst)πθ(atst)
Aπθ=Q(st,at)−V(st)A_{\pi_{\theta}}=Q(s_t,a_t)-V(s_t)Aπθ=Q(st,at)V(st)

2.梯度函数

  • 目标函数的梯度:涉及约束优化,无简单形式,用的不多,后续补上

3.符号解释

符号解释

  • πθold\pi_{\theta_{old}}πθold: 旧策略
  • KL\text{KL}KL: KL散度
  • β\betaβ: 惩罚系数

4.优缺点

优点

  1. 训练稳定
  2. 方差更低
  3. 更少的超参数调优

缺点

  1. 计算成本较高
  2. 性能可能稍逊于TRPO

5.解决的问题

引入信任域思想,约束策略变化,

6 PPO2算法:引入裁剪简化算法

  • 初始目标函数(期望形式)
    Jactor(θ)=Est∼dπθold,at∼πθold[min⁡(rt(θ)Aπθ,clip(rt(θ),1−ϵ,1+ϵ)Aπθ)]J_{actor}({\theta}) = \mathbb{E}_{s_t \sim d^{\pi_{\theta_{old}}}, a_t \sim \pi_{\theta_{old}}} \left[ \min \left( r_t(\theta) A_{\pi_{\theta}}, \text{clip} \left( r_t(\theta), 1-\epsilon, 1+\epsilon \right) A_{\pi_{\theta}} \right) \right]Jactor(θ)=Estdπθold,atπθold[min(rt(θ)Aπθ,clip(rt(θ),1ϵ,1+ϵ)Aπθ)]
    rt(θ)=πθ(at∣st)πθold(at∣st)r_t(\theta) = \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}rt(θ)=πθold(atst)πθ(atst)
    Aπθ=Q(st,at)−V(st)A_{\pi_{\theta}}=Q(s_t,a_t)-V(s_t)Aπθ=Q(st,at)V(st)
  • 目标函数的梯度:通过自动微分计算

符号解释

  • clip\text{clip}clip: 裁剪函数
  • ϵ\epsilonϵ: 裁剪幅度超参数
  • AπθA_{\pi_{\theta}}Aπθ优势函数,PPO实际上采用的是GAE版本的优势函数,可参考博客:深入解析强化学习中的 Generalized Advantage Estimation (GAE)

优点

  1. 实现简单,计算高效
  2. 训练非常稳定
  3. 成为主流算法

缺点

  1. 超参数ϵ\epsilonϵ敏感
  2. 可能限制探索

7 总结

从REINFORCE到PPO2的演进过程,清晰地展示了深度强化学习算法在发展中所追求的核心目标:在保持无偏或可控偏差的前提下,不断降低方差、提高样本效率、增强训练稳定性

  • REINFORCE 作为起点,奠定了策略梯度的基础,但其高方差低样本效率是主要瓶颈。
  • QACA2C 通过引入价值函数近似优势函数,有效降低了方差并实现了更高效的在线更新
  • Off-policy AC 利用重要性采样打破了on-policy的限制,大幅提升了样本效率,但引入了新的方差问题。
  • PPO1PPO2 通过限制策略更新幅度(KL约束或裁剪),极大地增强了训练的稳定性,使算法更易于使用和调参,最终成为当前最流行的策略梯度算法之一。
    后记
    在deepseek辅助下完成。
http://www.dtcms.com/a/397930.html

相关文章:

  • 产品网站开发流程图邹平做网站
  • ruoyi 框架添加新module
  • python解析通达信dat与blk数据文件【附源码】
  • 捕获Mybatis执行的Sql
  • Kubernetes 进阶实战:CRD、Gateway API 与优先级调度
  • Netdata系统监控:30秒定位服务器故障的实践方法
  • 制作 Bash Shell 方式的软件发布安装包的原理和方法
  • 网站标题怎么做链接云服务器建设网站教程
  • 栈-堆理解题(c++)
  • 江西同为科技有限公司亮相2025北京国际两用先进技术装备展览会 —— 致力于电气联接与保护,推动两用技术融合发展
  • 网站首页幻灯片不显示知更鸟wordpress主题
  • React 基础:快速掌握 State、事件和 Hook
  • 烟台网站制作计划wordpress怎么修改logo尺寸
  • Apache Hive 如何在大数据中发挥能量
  • CSS——实现盒子在页面居中
  • RocketMQ相对于RabbitMQ 的优势
  • ELK 企业级日志分析系统(完整版)
  • WaveTerminal+cpolar:提升远程协作效率的开发利器
  • 【记录】Ubuntu系统实现从远程服务器上传下载文件
  • 通过串口控制RDA5807收音模块(stm32+c#上位机)
  • hive表元数据修复脚本
  • React中的Hook
  • React简单例子
  • Playwright MCP 服务器对比高层级的 MCP 服务器解决方案
  • app下载网站模板wordpress将公网ip改为域名
  • 个人做网站如何推广安全优化大师
  • jupyter notebook用简易python代码跑本地模型
  • Android 安卓RIL介绍
  • 开源 java android app 开发(十五)绘图定义控件--仪表盘
  • Android如何自动弹出软键盘?