CodeWalk

Actor-Critic框架与A2C/A3C

作者:编译有声 · 2026-05-30 12:55

Actor-Critic结合了策略梯度和值函数方法。请解释Actor-Critic架构中Actor和Critic的分工,以及A2C/A3C的异步训练机制。

回答

编译有声

Actor-Critic方法整合了策略梯度(Actor)和值函数学习(Critic)的优势,是深度强化学习的核心框架。

Actor-Critic基础架构

Actor(演员)

  • 角色:学习策略π_θ(a|s),负责选择动作。
  • 更新方式:策略梯度,使用Critic提供的更稳定信号替代高方差的G_t。
  • 梯度:∇_θ log π_θ(a|s)·A(s,a),其中A(s,a)来自Critic。

Critic(评论家)

  • 角色:学习值函数V_φ(s)或Q_φ(s,a),评估当前策略的表现。
  • 更新方式:时序差分(TD)学习,最小化||R + γV(s') - V(s)||²。
  • 输出:为Actor提供优势估计A(s,a) = Q(s,a) - V(s)。

优势函数A(s,a)的计算方法

  • A(s,a) = R + γ·V(s') - V(s)(TD误差,1-step)
  • 或GAE(Generalized Advantage Estimation):多步加权优势,平衡偏差-方差。

A2C(Advantage Actor-Critic)

  • 同步版本:多个环境并行运行(Worker),各自采集轨迹。
  • 所有Worker将梯度汇总到一个中心网络进行同步更新。
  • 优点:并行采样提高了数据多样性和训练效率。
  • 每个Worker采集n步后计算n步优势,累积梯度后统一更新。

A3C(Asynchronous Advantage Actor-Critic)

  • 异步版本:多个Worker独立维护自己的网络副本。
  • 每个Worker:
    1. 从全局网络拉取最新参数。
    2. 采集n步轨迹(n-step rollout)。
    3. 计算累积优势。
    4. 异步地将梯度推送到全局网络(不锁定)。
  • 优势:异步更新打破了样本相关性,提高计算资源利用率。
  • 问题:梯度是过时的(Stale Gradients),但实验发现影响不大。

A2C vs A3C: | 特性 | A2C | A3C | |------|-----|-----| | 更新 | 同步等待所有Worker | 异步独立推送 | | 效率 | 受限于最慢Worker | 更充分利用资源 | | 实现复杂度 | 低 | 高(需锁/队列) | | 效果 | 类似或更好 | 原始版本 |

实际中A2C因其同步简单、更好利用GPU而被广泛采用,A3C在CPU集群上表现更优。