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 updateA2C 与 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 反馈 — 无需本地设置。
此课程中的所有课时
- 策略梯度方法:REINFORCE
- Actor-Critic 方法(A2C)
- 近端策略优化(PPO)
- 自定义 Gymnasium 环境