Actor-Critic算法是深度强化学习领域的一座里程碑,它将基于价值与基于策略的方法巧妙融合,彻底解决了传统REINFORCE算法训练效率低、方差大的痛点。本文将通过马里奥游戏案例,带你深入理解这一AI核心技术的运作机制。

一、从REINFORCE的困境到Actor-Critic的诞生

在之前的文章中,我们学习了基础的策略梯度算法REINFORCE。它虽然直观,却存在两个致命缺陷:

  • 训练效率极低:必须等一整局游戏结束,才能更新一次策略参数
  • 训练极不稳定:蒙特卡洛估计的方差非常大,导致梯度震荡严重

Actor-Critic算法正是为解决这些问题而生。它的核心思想是“分工合作”——把原来由策略网络独自承担的任务,拆分成两个网络协同完成:Actor(演员)负责选择动作,即原来的策略网络;Critic(评论家)负责评价动作的好坏,即价值网络。这样一来,我们不再需要等待一整局结束,每交互一步就可以同时更新两个网络,训练效率和稳定性都得到了质的飞跃。

本文承接上篇策略梯度基础,深入讲解Actor-Critic(演员-评论家) 这一目前最主流的强化学习架构。全程沿用超级马里奥案例,详解双网络的结构设计、TD学习与策略梯度的协同训练机制,给出完整的算法步骤与交互流程,帮你彻底搞懂价值与策略如何互补,实现高效、稳定的强化学习。

二、Actor-Critic核心架构:双网络如何协同工作

Actor-Critic的本质是基于价值的方法与基于策略的方法的有机结合。它同时维护两个神经网络,各自承担明确的分工:

  • 策略网络(Actor):参数为θ,输入状态s,输出所有动作的概率分布
  • 价值网络(Critic):参数为w,输入状态s和动作a,输出该状态-动作对的估计价值

这两个网络的训练目标是相辅相成的:

  • 更新Actor(θ):让状态价值尽可能大,即让演员的表现越来越好
  • 更新Critic(w):让价值网络的估计尽可能准确,即让评论家的打分越来越靠谱

这种双网络架构使得Actor-Critic在深度学习框架下能够高效地处理复杂的连续控制问题,成为现代AI系统的基础组件。

一个非常形象的比喻:

  • Actor是舞台上的演员,负责表演(选择动作)
  • Critic是台下的评委,负责打分(评价动作的好坏)
  • 演员根据评委的打分改进自己的表演
  • 评委根据演员的实际表现改进自己的打分标准

三、详解两个网络的结构(马里奥案例)

我们以超级马里奥游戏为例,看看两个网络在具体应用中的设计。

3.1 Actor网络(策略网络)

Actor网络和我们之前讲的策略网络完全一致:

  • 输入:当前游戏的一帧画面(状态s)
  • 网络结构:卷积层提取视觉特征 → 全连接层变换 → Softmax层
  • 输出:三个动作的概率分布,且概率和为1

例如,在马里奥游戏中,Actor可能会输出:向左0.2、向右0.1、向上0.7的概率分布,表示它认为向上跳是最优选择。

3.2 Critic网络(价值网络)

Critic网络是Actor-Critic特有的组件,结构稍复杂一些:

  • 输入:当前游戏画面(状态s)和一个具体动作a
  • 网络结构:状态分支通过卷积层提取视觉特征,动作分支通过全连接层提取动作特征,然后将两者拼接,再经过全连接层变换
  • 输出:一个标量值q(s,a;w),表示“在状态s下执行动作a,未来能获得的平均总回报”

这种设计使得Critic能够精确评估每个动作的长期价值,为Actor提供高质量的反馈信号。

四、双网络的训练机制:交替更新的艺术

Actor-Critic的训练是一个交替进行的过程:先更新Critic,再用更新后的Critic去指导Actor更新。

4.1 更新Critic:时序差分(TD)学习

Critic的训练方法与DQN类似,都使用时序差分学习:

  1. 计算当前状态-动作对的预测价值qt
  2. 采样下一个动作(仅用于计算,不执行)
  3. 计算下一个状态-动作对的预测价值qt+1
  4. 计算TD目标:yt = rt + γ·qt+1
  5. 计算均方误差损失,梯度下降更新Critic参数

4.2 更新Actor:策略梯度

Actor的训练方法仍然是策略梯度,但和REINFORCE有一个关键区别:我们不再用实际的折扣回报,而是用Critic给出的估计价值qt。Critic给出的qt是对未来回报的实时估计,它的方差比蒙特卡洛估计小得多,因此策略梯度的方差也小得多,训练更稳定。

环境 → 状态s → Actor网络 → 动作a → 环境 → 新状态s' 和 奖励r
                          ↓
                    Critic网络 ←─────┘
                          ↓
                    输出价值q → 计算TD误差 → 更新Critic
                          ↓
                    用q指导Actor更新

五、完整算法流程与核心交互

现在,我们把所有步骤整合起来,得到Actor-Critic算法的完整流程:

  1. 初始化策略网络参数θ和价值网络参数w
  2. 观测当前环境状态st
  3. 根据当前策略采样动作at
  4. 执行动作at,得到新状态st+1和即时奖励rt
  5. 采样下一个动作(不执行)
  6. 计算价值网络的输出qt和qt+1
  7. 计算TD误差
  8. 梯度下降更新价值网络
  9. 梯度上升更新策略网络
  10. 令st=st+1,回到步骤2重复直到收敛

六、优缺点深度剖析

6.1 核心优势 ✅

  • 单步更新:每交互一步就可以更新一次网络,训练效率远高于REINFORCE
  • 低方差:用Critic的估计代替蒙特卡洛估计,大幅降低了梯度的方差,训练更稳定
  • 通用性强:同时支持离散动作空间和连续动作空间
  • 在线学习:可以边和环境交互边学习,不需要存储大量历史数据

6.2 潜在挑战 ⚠️

  • 有偏估计:Critic的价值估计本身就有偏差,这会导致策略梯度也有偏差
  • 训练不稳定:Actor和Critic的更新相互影响,如果一个网络更新太快,另一个会跟不上
  • 超参数敏感:需要仔细调整Actor和Critic的学习率,否则很难收敛
[AFFILIATE_SLOT_1]

七、后续学习路线与进阶方向

Actor-Critic是现代深度强化学习的基石,几乎所有主流算法都是在它的基础上改进而来:

  • A2C/A3C:用优势函数代替动作价值函数,进一步降低方差;A3C是并行版本,训练速度更快
  • PPO:目前最主流的强化学习算法,解决了传统策略梯度步长难以选择的问题
  • DDPG/TD3/SAC:专门针对连续动作空间的深度强化学习算法,广泛应用于机器人控制领域
  • SAC:引入最大熵强化学习,兼顾探索与利用,性能非常优秀

掌握Actor-Critic,就等于拿到了通往高级强化学习领域的钥匙。无论是自然语言处理中的对话策略优化,还是机器人控制中的动作规划,Actor-Critic及其变体都是不可或缺的工具。

[AFFILIATE_SLOT_2]

结语

Actor-Critic算法巧妙地融合了基于价值和基于策略两种方法的优点,既保留了策略方法直接、灵活的特性,又吸收了价值方法高效、稳定的优点。它是从强化学习入门到进阶的必经之路,也是理解所有现代深度强化学习算法的钥匙。如果你正在学习AI或深度学习,Actor-Critic绝对是你不能错过的核心算法。