1. 演员与评论家 (Actor and Critic)
在第9章中,我们学习了 Policy Gradient (如 REINFORCE)。它虽然能处理连续动作,但方差极大,因为它用整条 Episode 的回报 $G_t$ 来评估一个动作的好坏。
在第7章中,我们学习了 TD Learning (如 Q-learning)。它方差小(单步更新),但很难处理连续动作。
Actor-Critic (AC) 结合了这两者的优点:
- Actor (策略网络):$\pi(a|s, \theta)$。负责选动作,像个演员。
- Critic (价值网络):$q(s, a, w)$ 或 $v(s, w)$。负责给动作打分,像个评论家。
核心逻辑:
Actor 不再盲目等待环境的随机回报 $G_t$,而是听从 Critic 的评价。Critic 说这个动作好(TD Error > 0),Actor 就增加概率;Critic 说不好,就减少概率。
2. 优势函数 (Advantage Function)
REINFORCE 的更新公式:
$$ \nabla J \approx \mathbb{E} [ \nabla \ln \pi(a|s) \cdot G_t ] $$
Actor-Critic 的更新公式:
$$ \nabla J \approx \mathbb{E} [ \nabla \ln \pi(a|s) \cdot Q_w(s, a) ] $$
为了进一步降低方差,我们引入 Advantage Function $A(s, a) = Q(s, a) - V(s)$。
即:动作 $a$ 的价值,相对于当前状态平均价值 $V(s)$ 的优势。
$$ \nabla J \approx \mathbb{E} [ \nabla \ln \pi(a|s) \cdot (R + \gamma V_w(s’) - V_w(s)) ] $$
这里我们用 TD Error $\delta = R + \gamma V(s’) - V(s)$ 来近似 Advantage。这样我们只需要一个网络估计 $V(s)$ 即可。这就是 A2C (Advantage Actor-Critic)。
3. A2C 算法架构
A2C 通常共享神经网络的前几层(特征提取层),然后分叉出两个头:
- Policy Head: 输出动作概率分布(Softmax)。
- Value Head: 输出状态价值(Scalar)。
损失函数:
- Actor Loss: $-\log \pi(a|s) \cdot \delta$ (最大化 Advantage)。
- Critic Loss: $\delta^2 = (R + \gamma V(s’) - V(s))^2$ (最小化 TD Error)。
- Entropy Loss: $-\sum \pi \log \pi$ (可选,鼓励探索,防止过早收敛)。
$$ Loss = Loss_{Actor} + 0.5 \cdot Loss_{Critic} - 0.01 \cdot Loss_{Entropy} $$
4. PyTorch 代码实战:A2C
1 | import torch |
5. 进阶:从 A2C 到 PPO
A2C 是现代 Policy-based 方法的基石。但它有个缺点:步长 $\alpha$ 难调。
- 步长太大:策略更新过猛,导致性能崩塌(Policy Collapse)。
- 步长太小:训练太慢。
PPO (Proximal Policy Optimization) 通过限制策略更新的幅度(Clip 操作),保证了每次更新都在一个“信任区域”内,是目前最流行的 Deep RL 算法(OpenAI 默认算法)。
6. 全系列总结
恭喜你!你已经走完了《强化学习数学原理》的全部旅程:
- MDP: 一切的起点,定义了状态、动作、奖励。
- Bellman Eq: 评估策略好坏的标尺。
- VI/PI: 有模型时的上帝视角解法。
- MC: 无模型,从经验中学习(采样)。
- TD (Sarsa/Q-learning): 边走边学,结合了 DP 和 MC。
- Function Approx (DQN): 征服无限状态空间。
- Policy Gradient: 征服连续动作空间。
- Actor-Critic: 集大成者,迈向现代 RL。
强化学习的数学大厦已经建成。接下来,就是去实践,去解决真正的问题!

