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

强化学习——A2C 和 PPO网络更新的比较

A2C(Advantage Actor-Critic)PPO(Proximal Policy Optimization) 都是基于 Actor-Critic 框架的强化学习算法,但在更新 Critic 网络和 Actor 网络的方式上有显著不同。以下是它们的详细对比:


1. Critic 网络的更新

Critic 网络的目标是估计状态值函数 V ( s ) V(s) V(s),用于评估当前策略的好坏。

A2C
  • Critic 的更新目标

    • 使用 TD 误差(Temporal Difference Error) 作为 Critic 的损失函数:
      L critic = 1 2 ( G t − V ( s t ) ) 2 L_{\text{critic}} = \frac{1}{2} \left( G_t - V(s_t) \right)^2 Lcritic=21(GtV(st))2
      其中 G t G_t Gt是目标值,通常通过 bootstrapping 计算:
      G t = r t + γ V ( s t + 1 ) G_t = r_t + \gamma V(s_{t+1}) Gt=rt+γV(st+1)
    • Critic 通过最小化 TD 误差来更新。
  • 特点

    • 直接使用 TD 误差进行更新,简单直观。
    • 可能存在高方差问题,因为 TD 误差依赖于单步采样。
PPO
  • Critic 的更新目标

    • 同样使用 TD 误差作为 Critic 的损失函数:
      L critic = 1 2 ( G t − V ( s t ) ) 2 L_{\text{critic}} = \frac{1}{2} \left( G_t - V(s_t) \right)^2 Lcritic=21(GtV(st))2
    • 但与 A2C 不同的是,PPO 通常使用 广义优势估计(Generalized Advantage Estimation, GAE) 来计算目标值 G t G_t Gt
      G t = ∑ k = 0 ∞ ( γ λ ) k δ t + k G_t = \sum_{k=0}^{\infty} (\gamma \lambda)^k \delta_{t+k} Gt=k=0(γλ)kδt+k
      其中 δ t = r t + γ V ( s t + 1 ) − V ( s t ) \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t) δt=rt+γV(st+1)V(st)是 TD 误差, λ \lambda λ是 GAE 的超参数。
  • 特点

    • 使用 GAE 减少了 Critic 估计的方差,提高了稳定性。
    • 计算稍微复杂,但效果更好。

2. Actor 网络的更新

Actor 网络的目标是优化策略 π ( a ∣ s ) \pi(a|s) π(as),以最大化期望回报。

A2C
  • Actor 的更新目标

    • 使用 策略梯度 方法,直接最大化期望回报:
      L actor = − log ⁡ π ( a t ∣ s t ) ⋅ A ( s t , a t ) L_{\text{actor}} = -\log \pi(a_t|s_t) \cdot A(s_t, a_t) Lactor=logπ(atst)A(st,at)
      其中 A ( s t , a t ) = G t − V ( s t ) A(s_t, a_t) = G_t - V(s_t) A(st,at)=GtV(st)是优势函数。
  • 特点

    • 更新直接基于策略梯度,简单高效。
    • 可能存在较大的策略更新步长,导致训练不稳定。
PPO
  • Actor 的更新目标

    • 使用 裁剪的替代目标(Clipped Surrogate Objective) 来限制策略更新的步长:
      L actor = − min ⁡ ( r t ( θ ) ⋅ A ( s t , a t ) , clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) ⋅ A ( s t , a t ) ) L_{\text{actor}} = -\min \left( r_t(\theta) \cdot A(s_t, a_t), \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \cdot A(s_t, a_t) \right) Lactor=min(rt(θ)A(st,at),clip(rt(θ),1ϵ,1+ϵ)A(st,at))
      其中 r t ( θ ) = π θ ( a t ∣ s t ) π θ old ( a t ∣ s t ) r_t(\theta) = \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)} rt(θ)=πθold(atst)πθ(atst)是策略更新比率, ϵ \epsilon ϵ是裁剪范围(通常取 0.1 或 0.2)。
  • 特点

    • 通过裁剪策略更新比率,防止策略更新过大,提高了训练的稳定性。
    • 相比 A2C,PPO 更鲁棒,适合复杂任务。

3. 更新频率

A2C
  • 同步更新
    • Actor 和 Critic 在每一步或每个 episode 后同步更新。
  • 特点
    • 更新频率高,但可能导致训练不稳定。
PPO
  • 批量更新
    • 收集一批数据后,进行多次更新(通常使用 mini-batch)。
  • 特点
    • 更新频率较低,但每次更新更稳定,适合大规模任务。

4. 算法复杂度

A2C
  • 简单
    • 实现简单,计算效率高。
  • 缺点
    • 训练不稳定,容易出现策略崩溃。
PPO
  • 复杂
    • 需要实现裁剪替代目标和 GAE,计算稍复杂。
  • 优点
    • 训练稳定,适合复杂任务。

总结对比

特性A2CPPO
Critic 更新使用 TD 误差使用 GAE,减少方差
Actor 更新直接策略梯度裁剪替代目标,限制更新步长
更新频率同步更新(每一步或每个 episode)批量更新(多次更新一批数据)
稳定性较低,容易出现策略崩溃较高,适合复杂任务
实现复杂度简单较复杂
适用场景简单任务,计算资源有限复杂任务,需要高稳定性


TD error与优势函数的比较

1. TD 误差(Temporal Difference Error)

TD 误差是用于评估当前值函数估计的误差,通常用于更新 Critic 网络。

定义

TD 误差表示当前奖励与值函数预测之间的差异:
δ t = r t + γ V ( s t + 1 ) − V ( s t ) \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t) δt=rt+γV(st+1)V(st)
其中:
- r t r_t rt:时刻 t t t的奖励。
- γ \gamma γ:折扣因子。
- V ( s t ) V(s_t) V(st):状态 s t s_t st的值函数估计。
- V ( s t + 1 ) V(s_{t+1}) V(st+1):下一个状态 s t + 1 s_{t+1} st+1的值函数估计。

作用
  • 用于更新 Critic 网络,使其更好地估计状态值函数 V ( s ) V(s) V(s)
  • 是强化学习中的一种 bootstrapping 方法,结合了当前奖励和未来值函数的预测。

2. 优势函数(Advantage Function)

优势函数用于评估某个动作相对于当前策略的期望回报的优劣。

定义

优势函数表示在状态 s t s_t st下采取动作 a t a_t at的期望回报与当前策略的期望回报之间的差异:
A ( s t , a t ) = Q ( s t , a t ) − V ( s t ) A(s_t, a_t) = Q(s_t, a_t) - V(s_t) A(st,at)=Q(st,at)V(st)
其中:
- Q ( s t , a t ) Q(s_t, a_t) Q(st,at):状态-动作值函数,表示在状态 s t s_t st下采取动作 a t a_t at的期望回报。
- V ( s t ) V(s_t) V(st):状态值函数,表示在状态 s t s_t st下遵循当前策略的期望回报。

作用
  • 用于更新 Actor 网络,指导策略优化。
  • 如果 A ( s t , a t ) > 0 A(s_t, a_t) > 0 A(st,at)>0,说明动作 a t a_t at比当前策略更好;如果 A ( s t , a t ) < 0 A(s_t, a_t) < 0 A(st,at)<0,说明动作 a t a_t at比当前策略更差。

3. 优势函数和 TD 误差的关系

优势函数和 TD 误差之间有一个重要的联系:TD 误差是优势函数的一个估计

推导

根据优势函数的定义:
A ( s t , a t ) = Q ( s t , a t ) − V ( s t ) A(s_t, a_t) = Q(s_t, a_t) - V(s_t) A(st,at)=Q(st,at)V(st)
Q ( s t , a t ) Q(s_t, a_t) Q(st,at)可以表示为:
Q ( s t , a t ) = r t + γ V ( s t + 1 ) Q(s_t, a_t) = r_t + \gamma V(s_{t+1}) Q(st,at)=rt+γV(st+1)
Q ( s t , a t ) Q(s_t, a_t) Q(st,at)代入优势函数的定义:
A ( s t , a t ) = ( r t + γ V ( s t + 1 ) ) − V ( s t ) A(s_t, a_t) = (r_t + \gamma V(s_{t+1})) - V(s_t) A(st,at)=(rt+γV(st+1))V(st)
这正是 TD 误差的定义:
A ( s t , a t ) = δ t A(s_t, a_t) = \delta_t A(st,at)=δt

结论
  • TD 误差是优势函数的一个单步估计
  • 通过 TD 误差,我们可以间接估计优势函数,而无需显式计算 Q ( s t , a t ) Q(s_t, a_t) Q(st,at)

4. 广义优势估计(Generalized Advantage Estimation, GAE)

在实际应用中,为了减少方差,通常使用 广义优势估计(GAE) 来估计优势函数。GAE 是对 TD 误差的加权平均,考虑了多步的 TD 误差。

定义

A t GAE = ∑ k = 0 ∞ ( γ λ ) k δ t + k A_t^{\text{GAE}} = \sum_{k=0}^{\infty} (\gamma \lambda)^k \delta_{t+k} AtGAE=k=0(γλ)kδt+k
其中:
- λ \lambda λ是 GAE 的超参数,用于控制偏差和方差的权衡。
- δ t + k \delta_{t+k} δt+k是时刻 t + k t+k t+k的 TD 误差。

作用
  • GAE 通过多步 TD 误差的加权平均,提供了更稳定的优势函数估计。
  • λ = 0 \lambda = 0 λ=0时,GAE 退化为单步 TD 误差;当 λ = 1 \lambda = 1 λ=1时,GAE 考虑了无限步的 TD 误差。

总结对比

概念定义用途
TD 误差 δ t = r t + γ V ( s t + 1 ) − V ( s t ) \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t) δt=rt+γV(st+1)V(st)更新 Critic 网络,估计值函数
优势函数 A ( s t , a t ) = Q ( s t , a t ) − V ( s t ) A(s_t, a_t) = Q(s_t, a_t) - V(s_t) A(st,at)=Q(st,at)V(st)更新 Actor 网络,优化策略
关系 A ( s t , a t ) = δ t A(s_t, a_t) = \delta_t A(st,at)=δt(单步估计)TD 误差是优势函数的单步估计
GAE A t GAE = ∑ k = 0 ∞ ( γ λ ) k δ t + k A_t^{\text{GAE}} = \sum_{k=0}^{\infty} (\gamma \lambda)^k \delta_{t+k} AtGAE=k=0(γλ)kδt+k通过多步 TD 误差估计优势函数

举例说明

假设在一个环境中:

  • 当前状态 s t s_t st的值函数估计 V ( s t ) = 5 V(s_t) = 5 V(st)=5
  • 采取动作 a t a_t at后,获得奖励 r t = 2 r_t = 2 rt=2,下一个状态 s t + 1 s_{t+1} st+1的值函数估计 V ( s t + 1 ) = 6 V(s_{t+1}) = 6 V(st+1)=6
  • 折扣因子 γ = 0.9 \gamma = 0.9 γ=0.9
计算 TD 误差

δ t = r t + γ V ( s t + 1 ) − V ( s t ) = 2 + 0.9 × 6 − 5 = 2 + 5.4 − 5 = 2.4 \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t) = 2 + 0.9 \times 6 - 5 = 2 + 5.4 - 5 = 2.4 δt=rt+γV(st+1)V(st)=2+0.9×65=2+5.45=2.4

计算优势函数

A ( s t , a t ) = δ t = 2.4 A(s_t, a_t) = \delta_t = 2.4 A(st,at)=δt=2.4

结论
  • 动作 a t a_t at的优势函数为 2.4,说明该动作比当前策略更好。

总结

  • TD 误差 是用于更新 Critic 网络的误差,表示当前奖励与值函数预测之间的差异。
  • 优势函数 是用于更新 Actor 网络的指标,表示某个动作相对于当前策略的期望回报的优劣。
  • 关系:TD 误差是优势函数的一个单步估计,即 A ( s t , a t ) = δ t A(s_t, a_t) = \delta_t A(st,at)=δt
  • GAE 是对 TD 误差的加权平均,提供了更稳定的优势函数估计。

希望这个解释能帮助你理清优势函数和 TD 误差之间的关系!如果还有疑问,欢迎继续讨论!

相关文章:

  • ONES 功能上新|ONES Copilot、ONES Project 新功能一览
  • Python 的基础语法
  • 全面解析:如何查找电脑的局域网与公网IP地址‌
  • 山东大学计算机网络第二章习题解析
  • LabVIEW 项目长时间稳定运行注意事项
  • 十一、OSG学习笔记-操作系统接口
  • STM32中使用PWM对舵机控制
  • Octave3D 关卡设计插件
  • 数据库的三个范式及其含义
  • 内网穿透:打破网络限制的利器
  • AI问答-供应链管理:SIPOC图 / 供方(S)、输入(I)、流程(P)、输出(O)、客户(C)
  • 前端面试题---小程序跟vue的声明周期的区别
  • STM32寄存器控制引脚高低电平
  • Python中if else以及嵌套
  • 1.68M 免安装多格式图片批量转 webp 无广告软件推荐
  • MySQL 性能优化
  • 开源工具推荐:Checkmate监控
  • AI触手可及 | 基于函数计算玩转AI大模型
  • 【Docker基础】理解 Registry 镜像仓库:分类、工作机制、命令与实操
  • 【多部电梯群控】01群控要求分析与策略简介
  • 广西百色“致富果”:高品质芒果直供香港,带动近五千户增收
  • 广西壮族自治区政府主席蓝天立任上被查
  • 消息人士称俄方反对美国代表参加俄乌直接会谈
  • 湖北宜化拟斥资超32亿加价回购“弃子”,布局上游煤炭业务
  • 30平米的无障碍酒吧里,我们将偏见折叠又摊开
  • 陈吉宁龚正黄莉新胡文容等在警示教育基地参观学习,出席深入贯彻中央八项规定精神学习教育交流会