Actor-Critic框架与A2C/A3C
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:
- 从全局网络拉取最新参数。
- 采集n步轨迹(n-step rollout)。
- 计算累积优势。
- 异步地将梯度推送到全局网络(不锁定)。
- 优势:异步更新打破了样本相关性,提高计算资源利用率。
- 问题:梯度是过时的(Stale Gradients),但实验发现影响不大。
A2C vs A3C: | 特性 | A2C | A3C | |------|-----|-----| | 更新 | 同步等待所有Worker | 异步独立推送 | | 效率 | 受限于最慢Worker | 更充分利用资源 | | 实现复杂度 | 低 | 高(需锁/队列) | | 效果 | 类似或更好 | 原始版本 |
实际中A2C因其同步简单、更好利用GPU而被广泛采用,A3C在CPU集群上表现更优。