Files
2026-05-16 17:16:51 +08:00

8.2 KiB
Raw Permalink Blame History

title, draft, tags
title draft tags
03-AC-A2C false
AC
A2C
Actor-Critic
强化学习
深度强化学习

1. 理论源头:策略梯度定理 (Policy Gradient Theorem)

在 Policy-based 方法中,我们参数化策略 $\pi_\theta(a|s)$。我们的目标是最大化累积回报的期望 $J(\theta) = \mathbb{E}{\pi\theta}[G_t]$。

根据策略梯度定理,其梯度为:

\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} \left[ \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \Psi_t \right]

其中 \Psi_t 可以有多种选择:

  1. \Psi_t = \sum r_t: 轨迹总奖励REINFORCE方差极大

  2. \Psi_t = Q^\pi(s, a): 动作价值函数。

  3. \Psi_t = A(s, a) = Q^\pi(s, a) - V^\pi(s): 优势函数 (Advantage Function)

直觉理解: 优势函数衡量"这个动作比平均好多少"。如果 $A(s,a) > 0$,说明这个动作比该状态下的平均动作更好,应该增加其概率;如果 $A(s,a) < 0$,说明动作低于平均水平,应该降低概率。


2. Actor-Critic (AC) 的数学架构

AC 架构通过引入一个参数化的 Critic V_\phi(s) 来估计 $\Psi_t$。

2.1 结构拆解Actor 与 Critic 的分工

组件 网络 输入 输出 更新目标
Actor (策略网络) \pi_\theta(a\|s) 状态 s 动作 a 的概率分布 \pi_\theta(a\|s) 增加高优势动作的概率,降低低优势动作的概率
Critic (价值网络) V_\phi(s) 状态 s 标量价值 V_\phi(s) \approx \mathbb{E}[G_t\|s_t=s] 最小化 TD 误差,精确估计状态价值

直觉理解:

  • Actor 如同一个 运动员根据裁判Critic的评分来调整自己的动作技术。评分高就多练习这个动作评分低就少做。
  • Critic 如同一个 教练,负责客观评价运动员当前状态的好坏。它不直接决定动作,只提供"这个状态值多少分"的估计。

两者的协作关系: Actor 的梯度方向由 Critic 给出的优势值决定Critic 的更新依赖 Actor 采集的样本。两者的优化目标相互耦合,形成"评价-决策"的闭环。

2.2 更新公式推导

在最基础的 AC 中,我们利用 TD 误差 (Temporal Difference error) 来更新。

TD 误差 \delta_t 定义为:

\delta_t = r_{t+1} + \gamma V_\phi(s_{t+1}) - V_\phi(s_t)

其中 \delta_t 的物理意义是"实际奖励与期望的偏离程度":若 $\delta_t > 0$,说明该过渡带来了超出预期的价值更新。

数学上可以证明,\delta_tA(s_t, a_t) = Q(s_t, a_t) - V(s_t) 的无偏估计:

\mathbb{E}_{s_{t+1} \sim P(\cdot|s_t, a_t)}[\delta_t | s_t, a_t] = \mathbb{E}[r_{t+1} + \gamma V(s_{t+1}) - V(s_t) | s_t, a_t] = Q(s_t, a_t) - V(s_t) = A(s_t, a_t)

这意味着 TD 误差是优势函数的无偏采样,我们可以直接用 \delta_t 作为优势函数的估计来更新 Actor而无需知道完整的 Q 函数或 V 函数。

Actor 更新 (梯度上升):

\theta \leftarrow \theta + \alpha_\theta \nabla_\theta \log \pi_\theta(a_t|s_t) \delta_t

Critic 更新 (梯度下降):

其目标是最小化均方误差 (MSE)

L(\phi) = \mathbb{E} [ (r_{t+1} + \gamma V_\phi(s_{t+1}) - V_\phi(s_t))^2 ] \phi \leftarrow \phi - \alpha_\phi \nabla_\phi L(\phi)

3. A2C (Advantage Actor-Critic) 的严谨化

A2C 在 AC 的基础上进行了两项重大数学改进:优势函数的规范化熵正则化

3.1 优势函数 A(s, a) 的多步推导 (n-step Return)

为了平衡偏差 (Bias) 和方差 (Variance)A2C 经常使用 n 步回报来计算优势:

  1. n-step 回报: G_{t:t+n} = r_{t+1} + \gamma r_{t+2} + \dots + \gamma^{n-1}r_{t+n} + \gamma^n V_\phi(s_{t+n})

  2. 优势估计: \hat{A}(s_t, a_t) = G_{t:t+n} - V_\phi(s_t)

3.2 完整目标函数 (Objective Function)

A2C 的总损失函数通常由三部分组成:

L_{total} = L_{policy} + c_1 L_{value} - c_2 L_{entropy}

其中超参数 c_1, c_2 用于平衡三个目标的权重(通常 $c_1=0.5, c_2=0.01$)。

  1. 策略损失 (Policy Loss):

    L_{policy} = -\mathbb{E}_{s_t, a_t} [ \log \pi_\theta(a_t|s_t) \hat{A}(s_t, a_t) ]

    物理意义: 这是策略梯度的负号版本。当 $\hat{A} > 0$(好动作)时,\log \pi_\theta(a_t|s_t) 增大,即提高该动作的概率;当 \hat{A} < 0 时,降低该动作概率。

  2. 价值损失 (Value Loss):

    L_{value} = \mathbb{E}_{s_t} [ (G_{t:t+n} - V_\phi(s_t))^2 ]

    物理意义: 使估计的价值函数逼近实际的 n 步回报,减少价值估计的偏差。

  3. 熵正则项 (Entropy Regularization):

    L_{entropy} = \mathbb{E}_{s_t} [ -\sum_a \pi_\theta(a|s_t) \log \pi_\theta(a|s_t) ]
    • 数学意义: 熵越大表示策略越“随机”。在 L_{total} 中减去熵(或加上 $-H$),相当于鼓励 Actor 保持一定的随机性,防止模型太快收敛到某个次优的确定性动作上。

4. 训练流程细节:同步 vs 异步

4.1 A2C同步 Advantage Actor-Critic

A2C 的”同步”体现在梯度的累积上:

  1. Worker 采样: N 个线程Worker各自在环境里跑 n 步,得到样本 ${(s_i, a_i, r_i, s'{i})}{i=1 \dots n \times N}$。

  2. 计算梯度:

    • 每个 Worker 计算自己的策略梯度 g_{\theta, i} 和价值梯度 $g_{\phi, i}$。
  3. 聚合更新:

    • 计算平均梯度:$\bar{g}\theta = \frac{1}{N} \sum{i=1}^N g_{\theta, i}$(以及 $\bar{g}_\phi$)。
    • 主网络执行一次参数更新:$\theta \leftarrow \theta + \eta \bar{g}\theta$$\phi \leftarrow \phi - \eta \bar{g}\phi$。
  4. 分发权重: 更新后的 \theta, \phi 同步给所有 Worker等待所有 Worker 到达同步点后开始下一轮。

4.2 A3C异步 Advantage Actor-Critic

A3C 与 A2C 的核心区别在于异步更新

特性 A2C同步 A3C异步
梯度更新 等待所有 Worker 完成采样后,聚合梯度,统一更新 每个 Worker 独立更新主网络,无需等待
通讯开销 高(需等待同步) 低(独立更新)
数据吞吐 受最慢 Worker 限制 利用多线程并行,环境交互与计算重叠
收敛稳定性 更高(批量更新更稳定) 稍低(异步更新可能带来梯度噪声)

直觉理解: A3C 就像一支 独立训练、偶尔交流 的运动员团队——每个人自己练自己的,定期把训练成果(梯度)汇报给教练(主网络),教练整合后把新策略分发给所有人。而 A2C 是所有人同时训练、然后对答案的方式。

为什么 A3C 反而更常用? 虽然 A2C 更新更稳定,但 A3C 的异步机制让环境交互(慢速操作)和梯度计算(快速操作)可以重叠进行,实际训练速度往往更快。


5. A2C 面临的数学挑战与 PPO 的引子

5.1 采样效率与 Off-policy 缺失

A2C 是一种 On-policy 算法。这意味着一旦参数 \theta 更新了,之前采样的所有数据就“失效”了,不能再用于训练。这导致 A2C 对数据的消耗量极大。

5.2 步长敏感度 (The Step Size Problem)

L_{policy} 中,梯度的量级受 \hat{A}(s, a) 影响。如果某次采样的优势函数极大,会导致 \nabla \theta 剧烈跳变。这种跳变可能导致策略分布 \pi_\theta 发生根本性改变(例如从原来的平滑分布直接变成倾向于某一个极端动作),从而使智能体进入一个“无法回头”的糟糕状态空间。

5.3 开启 PPO约束下的优化

为了解决 A2C 步长难调的问题,PPO (Proximal Policy Optimization) 引入了新的数学工具:

  • 重要性采样 (Importance Sampling): 允许利用旧策略采集的数据来更新新策略。

  • KL 散度限制/剪切 (Clipped Objective): 在数学上强制要求新策略 \pi_{\theta_{new}} 和旧策略 \pi_{\theta_{old}} 的概率比值在 [0.8, 1.2] 之间。

下章预告: PPO 如何利用一个简单的 clip 函数,就解决了困扰强化学习多年的“训练崩溃”难题。