0Pricing
Learn AI with Python · 课时

Actor-Critic 方法(A2C)

优势函数、actor(策略)与 critic(价值),以及同步 A2C 实现。

Actor-Critic 方法(A2C) 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

结合策略与价值

演员-评论家方法结合了两个理念:actor(负责选择动作的策略)和critic(负责评判动作的价值函数)。相比原始回报,critic 提供的反馈方差更低,从而使学习更加稳定。

actor

actor就是策略网络。它会针对当前状态输出动作对数几率(或概率),与 REINFORCE 中完全相同,并决定采取什么行动。

class ActorCritic(nn.Module):
    def __init__(self, obs_dim, n_actions):
        super().__init__()
        self.shared = nn.Sequential(nn.Linear(obs_dim, 128), nn.ReLU())
        self.actor = nn.Linear(128, n_actions)

critic

critic会估计状态价值 V(s):从状态 s 出发的期望回报。它是一个单输出头,用于预测当前情况有多好。

        self.critic = nn.Linear(128, 1)

    def forward(self, s):
        h = self.shared(s)
        return self.actor(h), self.critic(h)

共享主干网络和两个输出头

actor 和 critic 通常会共享早期层(主干网络),然后分成两个输出头。共享特征既高效,又能让两个任务共同强化有用的表示。

优势函数

关键量是优势 A = r + gamma * V(s') - V(s)。它衡量某个动作比 critic 预期的表现好多少。正优势表示“优于平均水平”,负优势表示表现更差。

advantage = reward + gamma * V_next - V_current

为什么优势优于原始回报

使用优势而不是完整回报 G_t,可以将信号集中在 critic 的估计值附近,大幅降低方差。这是演员-评论家比 REINFORCE 学习更加稳定的主要原因。

actor 损失

actor 的训练方式与 REINFORCE 类似,但使用优势而不是回报进行加权:提高具有正优势的动作的概率。

actor_loss = -(log_prob * advantage.detach()).mean()

critic 损失

critic 学习准确预测回报。它的损失是其预测值 V(s) 与观测目标 r + gamma * V(s') 之间的平方误差。

target = reward + gamma * V_next.detach()
critic_loss = (V_current - target).pow(2).mean()

组合损失

将两个输出头的损失相加,同时训练它们(通常还会加入少量熵奖励以鼓励探索)。一次反向传播就能更新共享主干网络和两个输出头。

loss = actor_loss + 0.5 * critic_loss - 0.01 * entropy
loss.backward()

同步 A2C

A2C(优势演员-评论家)是同步版本:多个并行工作进程同时从环境副本中收集经验,然后使用所有工作进程的数据执行一次同步更新,从而提高稳定性和吞吐量。

# N parallel envs step together each iteration
# gather all transitions, then one combined update

A2C 与 A3C

异步变体 A3C 允许工作进程独立更新。A2C 会将它们同步起来,因此更简单、更适合 GPU,通常也同样有效,这正是它广受欢迎的原因。

快速检查

请测试您对演员-评论家的理解。

回顾:演员-评论家与 A2C

您学会了 actor 如何输出策略对数几率,以及 critic 如何估计 V(s),通常采用shared 主干网络和两个输出头的结构。优势 r + gamma*V(s') - V(s) 可以降低方差,而同步 A2C 使用并行工作进程进行稳定、高效的训练。

常见问题解答

「Actor-Critic 方法(A2C)」课时是免费的吗?

是的 — 「Actor-Critic 方法(A2C)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「Actor-Critic 方法(A2C)」这节课中我会学到什么?

优势函数、actor(策略)与 critic(价值),以及同步 A2C 实现。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「Actor-Critic 方法(A2C)」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 策略梯度方法:REINFORCE
  2. Actor-Critic 方法(A2C)
  3. 近端策略优化(PPO)
  4. 自定义 Gymnasium 环境
← 返回 Learn AI with Python