Actor-Critic 深度强化学习

介绍 Actor-Critic 深度强化学习的基本原理,包括 A2C、A3C 等算法的核心思想、优势函数的定义与计算方法,以及它们在深度强化学习中的应用和实现细节

AC 方法

  • 核心思想 —— 将策略和价值函数结合在一起训练:

    • Actor:表示策略函数 πθ(a∣s)\pi_\theta (a|s),负责从状态 ss 中选择动作 aa
    • Critic:表示价值函数 Vw(s)V_w (s) 或 Qw(s,a)Q_w (s,a),负责评估当前策略的表现,提供策略改进的学习信号
    • 相比于传统的策略梯度方法(如 REINFORCE),AC 方法引入 Critic 来降低策略梯度的方差,从而提升学习效率和稳定性
  • 策略更新(Actor):使用策略梯度(REINFORCE)更新策略网络参数 θ\theta:

    ∇θJ(θ)≈∇θlog⁡πθ(at∣st)⋅A(st,at)\nabla_\theta J (\theta) \approx \nabla_\theta \log \pi_\theta (a_t|s_t) \cdot A (s_t, a_t)
  • 其中 A(s,a)A (s,a) 是优势函数,估计该动作是否比平均值更好,常用:

    A(st,at)=Rt+γVw(st+1)−Vw(st)A (s_t, a_t) = R_t + \gamma V_w (s_{t+1}) - V_w (s_t)
  • 价值函数更新(Critic):通过 TD 误差更新价值网络参数 ww:

    δt=Rt+γVw(st+1)−Vw(st)w←w−α∇wδt2w←w+α⋅δt⋅∇wVw(st)\delta_t = R_t + \gamma V_w (s_{t+1}) - V_w (s_t) \\ w \leftarrow w - \alpha \nabla_w \delta_t^2\\ w \leftarrow w + \alpha \cdot \delta_t \cdot \nabla_w V_w (s_t)

A2C 方法(Advantage Actor-Critic)

  • A2C 是A3C 的同步版本,是对标准 Actor–Critic 的工程化改进

  • 核心思想

    • 使用**多个并行环境(workers)**同时采样
    • 在每一轮中同步汇总所有 worker 的梯度
    • 再统一更新一套共享的 Actor / Critic 参数
    • 本质仍是单策略、单价值函数的 on-policy AC
  • 优势函数(常用 n-step TD Advantage)

    • 为了进一步降低偏差与方差折中,常用 nn 步回报:

      Gt(n)=∑k=0n−1γkrt+k+γnVw(st+n)G_t^{(n)} = \sum_{k=0}^{n-1}\gamma^k r_{t+k} + \gamma^n V_w (s_{t+n})
    • 对应优势函数:

      At=Gt(n)−Vw(st)A_t = G_t^{(n)} - V_w (s_t)
  • Actor 更新(策略梯度)

    ∇θJ(θ)≈1N∑i=1N∇θlog⁡πθ(at(i)∣st(i))⋅At(i)\nabla_\theta J (\theta) \approx \frac {1}{N}\sum_{i=1}^N \nabla_\theta \log \pi_\theta (a_t^{(i)}|s_t^{(i)}) \cdot A_t^{(i)}
    • NN 为并行环境数量
    • 梯度来自多个 worker 的平均
  • Critic 更新(价值函数回归)

    LV(w)=12(Gt(n)−Vw(st))2w←w−α∇wLV(w)L_V (w) = \frac {1}{2}\big (G_t^{(n)} - V_w (s_t)\big)^2\\ w \leftarrow w - \alpha \nabla_w L_V (w)
  • 特点总结

    • 同步更新,实现简单、数值稳定
    • 易于 GPU 加速
    • 相比 A3C:吞吐量略低,但工程上更常用
    • PPO、IMPALA 等方法的 “基础版本”
  • n 步回报与 TD (λ) 的区别

    • TD (λ) 定义的是λ- 回报(λ-return):TD (λ) = 所有 n-step 回报的指数加权平均

      Gt(n)=∑k=0n−1γkrt+k+γnV(st+n)Gt(λ)=(1−λ)∑n=1∞λn−1Gt(n)\begin {align*} G_t^{(n)} &=\sum_{k=0}^{n-1}\gamma^k r_{t+k} + \gamma^n V (s_{t+n})\\ G_t^{(\lambda)} &=(1-\lambda)\sum_{n=1}^{\infty} \lambda^{n-1} G_t^{(n)} \end {align*}
    • n-step:实现简单、批量计算友好、易并行(A2C/A3C)

    • TD (λ):需要 eligibility trace 或等价实现、并行环境下实现复杂、GPU 上不如 n-step 友好

    • 因此 A2C 选择了 TD (λ) 的 “离散近似版本”

A3C 方法(Asynchronous Advantage Actor-Critic)

  • A3C 是第一个成功的大规模并行深度强化学习算法

  • 核心思想

    • 使用多个异步 worker
    • 每个 worker:
      • 拥有独立的环境实例
      • 使用共享的全局参数副本
      • 独立采样、独立计算梯度
    • 梯度异步推送到全局网络(无锁更新)
  • 异步机制的作用

    • 打破样本间的时间相关性
    • 不依赖经验回放(Replay Buffer)
    • 天然具备探索多样性(不同 worker 处于不同状态分布)
  • 优势函数(n-step TD,与 A2C 相同)

    At=∑k=0n−1γkrt+kγnVw(st+n)Vw(st)A_t = \sum_{k=0}^{n-1}\gamma^k r_{t+k}\gamma^n V_w (s_{t+n}) V_w (s_t)
  • Actor 更新(每个 worker 独立计算,梯度直接异步累加到全局参数)

    ∇θJ(θ)≈∇θlog⁡πθ(at∣st)⋅At\nabla_\theta J (\theta) \approx \nabla_\theta \log \pi_\theta (a_t|s_t)\cdot A_t
  • Critic 更新(同样是异步更新)

    LV(w)=12(Gt(n)−Vw(st))2L_V (w)=\frac {1}{2}(G_t^{(n)}-V_w (s_t))^2
  • 关键工程特征

    • 不需要同步 barrier
    • 更新是Hogwild-style(无锁)
    • CPU 多线程友好(A3C 诞生于 GPU 尚不成熟时期)
  • 局限性

    • 异步带来梯度噪声
    • GPU 利用率较低
    • 在现代硬件下常被 A2C / PPO 替代
这篇文档有帮助吗?

On this page

页面信息