11.04课后作业:Actor-Critic算法改进

2024年11月4日 强化学习

作业题目

题目:分析Actor-Critic算法的4种重要改进:A2C/A3C、DDPG、SAC和PPO,比较它们的改进动机、算法原理、优缺点及适用场景。

1. A2C/A3C算法

1.1 A3C (Asynchronous Advantage Actor-Critic)

改进动机

  • 解决传统AC算法训练不稳定的问题
  • 提高样本效率和训练速度
  • 避免样本间的相关性

算法原理

A3C使用多个并行的worker,每个worker独立地与环境交互并计算梯度:

$$\nabla_\theta J(\theta) = \mathbb{E}_{s_t,a_t}\left[\nabla_\theta \log \pi_\theta(a_t|s_t) A(s_t,a_t)\right]$$

其中优势函数:

$$A(s_t,a_t) = Q(s_t,a_t) - V(s_t)$$

算法特点

  • 异步并行:多个worker同时训练,减少数据相关性
  • 优势函数:使用优势函数减少方差
  • 经验回放省略:直接使用on-policy数据

1.2 A2C (Advantage Actor-Critic)

改进动机

  • A3C的异步实现复杂,同步版本更易于实现
  • 在单机上获得与A3C相当的性能

算法特点

同步多个worker,定期更新全局网络。使用熵正则化项:

$$H(\pi) = -\mathbb{E}_{a\sim\pi}[\log\pi(a|s)]$$

损失函数:

$$L = -\mathbb{E}[A(s,a)\log\pi(a|s)] + c_1L^{VF} + c_2H(\pi)$$

优点

  • 训练稳定,收敛性好
  • 实现相对简单
  • 支持连续和离散动作空间

缺点

  • 仍然是on-policy算法,样本效率相对较低
  • 需要调参(优势函数计算、熵系数等)

2. DDPG (Deep Deterministic Policy Gradient)

2.1 算法原理

改进动机

  • 扩展AC算法到高维连续动作空间
  • 结合确定性策略梯度和DQN的成功经验

核心思想

DDPG使用确定性策略 \(\mu(s|\theta^\mu)\) 而非随机策略:

$$\nabla_{\theta^\mu} J \approx \mathbb{E}_{s_t\sim\mathcal{D}}\left[\nabla_a Q(s,a|\theta^Q)|_{a=\mu(s_t|\theta^\mu)} \nabla_{\theta^\mu} \mu(s_t|\theta^\mu)\right]$$

算法特点

  1. Actor网络:输出确定性动作 \(\mu(s|\theta^\mu)\)
  2. Critic网络:评估Q值 \(Q(s,a|\theta^Q)\)
  3. 目标网络:稳定训练,软更新:\(\theta' \leftarrow \tau\theta + (1-\tau)\theta'\)
  4. 经验回放:提高样本效率

2.2 算法流程

  1. 从经验回放池采样 \((s_i, a_i, r_i, s_{i+1})\)
  2. 计算目标值:\(y_i = r_i + \gamma Q'(s_{i+1}, \mu'(s_{i+1}|\theta^{\mu'})|\theta^{Q'})\)
  3. 更新Critic:最小化 \(L = \frac{1}{N}\sum_i(y_i - Q(s_i,a_i|\theta^Q))^2\)
  4. 更新Actor:\(\nabla_{\theta^\mu}J \approx \frac{1}{N}\sum_i \nabla_a Q(s,a|\theta^Q)|_{s=s_i,a=\mu(s_i)} \nabla_{\theta^\mu}\mu(s_i|\theta^\mu)\)

优点

  • 适用于高维连续动作空间
  • 样本效率高(off-policy + 经验回放)
  • 训练相对稳定

缺点

  • 对超参数敏感
  • 容易陷入局部最优
  • 探索不足(确定性策略)

3. SAC (Soft Actor-Critic)

3.1 算法原理

改进动机

  • 解决DDPG探索不足的问题
  • 提高训练稳定性和样本效率
  • 引入最大熵框架

核心思想

SAC基于最大熵强化学习,目标函数为:

$$J(\pi) = \sum_{t=0}^T \mathbb{E}_{(s_t,a_t)\sim\rho_\pi}[r(s_t,a_t) + \alpha H(\pi(\cdot|s_t))]$$

其中熵项:

$$H(\pi(\cdot|s_t)) = \mathbb{E}_{a_t\sim\pi(\cdot|s_t)}[-\log\pi(a_t|s_t)]$$

3.2 关键技术

1. 重参数化技巧

$$a_t = f_\theta(\epsilon_t; s_t), \quad \epsilon_t \sim \mathcal{N}(0,1)$$

2. 自适应温度参数

通过梯度下降调整温度参数 \(\alpha\):

$$\alpha^* = \arg\min_\alpha \mathbb{E}_{a_t\sim\pi_t}[-\alpha\log\pi_t(a_t|s_t) - \alpha\bar{H}]$$

3. 两个Q函数

使用两个独立的Q函数,取最小值来避免过高估计:

$$Q(s,a) = \min(Q_1(s,a), Q_2(s,a))$$

优点

  • 样本效率极高
  • 训练稳定,鲁棒性强
  • 自动平衡探索与利用
  • 性能优异,适用于复杂任务

缺点

  • 计算复杂度较高(两个Q网络)
  • 需要调参(温度参数、重参数化等)
  • 理论相对复杂

4. PPO (Proximal Policy Optimization)

4.1 算法原理

改进动机

  • 解决传统策略梯度算法步长难以控制的问题
  • 提高训练稳定性和样本效率
  • 实现简单,易于调参

核心思想

PPO使用裁剪的目标函数限制策略更新幅度:

$$L^{CLIP}(\theta) = \hat{\mathbb{E}}_t\left[\min\left(r_t(\theta)\hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)\hat{A}_t\right)\right]$$

其中重要性采样比率:

$$r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}$$

4.2 PPO变种

PPO-Penalty

使用KL散度惩罚项:

$$L^{KLPEN}(\theta) = \hat{\mathbb{E}}_t\left[\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t - \beta \cdot KL\right]$$

PPO-Clip

使用裁剪机制,更简单有效

4.3 算法特点

  • 信任区域约束:通过裁剪或KL惩罚限制策略更新幅度
  • 优势函数标准化:\(\hat{A}_t \leftarrow \frac{\hat{A}_t - \mu(\hat{A})}{\sigma(\hat{A})}\)
  • 多epoch更新:同一批次数据多次更新,提高样本效率

优点

  • 实现简单,易于调参
  • 训练稳定,收敛性好
  • 样本效率适中
  • 适用于各种任务

缺点

  • 仍然是on-policy算法
  • 需要仔细选择裁剪参数
  • 性能可能略逊于SAC等最新算法

5. 算法对比分析

算法 策略类型 数据使用 核心改进 样本效率 训练稳定性 适用场景
A2C/A3C 随机策略 On-policy 并行训练+优势函数 中等 较好 离散/连续动作
DDPG 确定性策略 Off-policy 确定性策略+目标网络 中等 连续高维动作
SAC 随机策略 Off-policy 最大熵+重参数化 极高 极好 连续动作
PPO 随机策略 On-policy 裁剪目标函数 中等 极好 离散/连续动作

详细差异分析

1. 算法做法差异

并行化策略
  • A3C:异步并行多个worker
  • A2C:同步并行多个worker
  • DDPG/SAC:单智能体+经验回放
  • PPO:单智能体或多智能体,但同步更新
策略表示
  • A2C/A3C:随机策略 \(\pi(a|s)\)
  • DDPG:确定性策略 \(\mu(s)\)
  • SAC:随机策略(重参数化)
  • PPO:随机策略
优势估计
  • A2C/A3C:TD误差优势 \(A = Q - V\)
  • DDPG:直接使用Q值
  • SAC:使用最小双Q值
  • PPO:GAE优势估计

2. 改进动机差异

A2C/A3C: 解决训练不稳定和样本相关性
DDPG: 扩展到连续高维动作空间
SAC: 提高探索能力和训练稳定性
PPO: 简化训练过程,提高稳定性

3. 优缺点对比

样本效率排名: SAC > DDPG > A2C/A3C ≈ PPO
训练稳定性排名: PPO ≈ SAC > A2C/A3C > DDPG
实现复杂度排名: DDPG ≈ A2C > PPO > SAC
适用性排名: PPO > A2C/A3C > SAC > DDPG