深度 RL 课程文档

优势行动者-评论员 (A2C)

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

优势行动者-评论员 (A2C)

使用行动者-评论员方法减少方差

减少 Reinforce 算法的方差并更快更好地训练我们的智能体的解决方案是结合使用基于策略和基于价值的方法:行动者-评论员方法

为了理解行动者-评论员,想象一下你在玩电子游戏。你可以和一个朋友一起玩,他会给你一些反馈。你是行动者,你的朋友是评论员。

Actor Critic

一开始你不知道怎么玩,所以你随机尝试一些动作。评论员观察你的动作并提供反馈

从这些反馈中学习,你将更新你的策略,并在玩这个游戏中变得更好。

另一方面,你的朋友(评论员)也会更新他们提供反馈的方式,以便下次可以更好。

这就是行动者-评论员背后的思想。我们学习两个函数逼近:

  • 策略,它控制我们的智能体如何行动πθ(s) \pi_{\theta}(s)

  • 价值函数,通过衡量所采取的行动有多好来辅助策略更新q^w(s,a) \hat{q}_{w}(s,a)

行动者-评论员过程

现在我们已经了解了行动者评论员的概况,让我们深入了解行动者和评论员在训练期间如何共同改进。

正如我们所见,使用行动者-评论员方法,存在两个函数逼近(两个神经网络):

  • 行动者,一个由 theta 参数化的策略函数πθ(s) \pi_{\theta}(s)
  • 评论员,一个由 w 参数化的价值函数q^w(s,a) \hat{q}_{w}(s,a)

让我们看看训练过程,以了解行动者和评论员是如何优化的

  • 在每个时间步 t,我们从环境中获取当前状态St S_t将其作为输入传递给我们的行动者和评论员

  • 我们的策略接收状态并输出一个动作At A_t .

Step 1 Actor Critic
  • 评论员也将该动作作为输入,并使用St S_tAt A_t 计算在该状态下采取该动作的价值:Q 值
Step 2 Actor Critic
  • 在环境中执行的动作At A_t输出一个新的状态St+1 S_{t+1}和一个奖励Rt+1 R_{t+1} .
Step 3 Actor Critic
  • 行动者使用 Q 值更新其策略参数。
Step 4 Actor Critic
  • 由于其更新的参数,行动者产生在At+1 A_{t+1} 给定新状态St+1 S_{t+1} .

  • 评论员然后更新其价值参数。

Step 5 Actor Critic

在行动者-评论员 (A2C) 中添加优势函数

我们可以通过使用优势函数作为评论员而不是动作价值函数来进一步稳定学习。

这个想法是优势函数计算一个动作相对于状态下其他可能动作的相对优势:在一个状态下采取该动作与该状态的平均价值相比有多好。它是从状态-动作对中减去状态的平均价值

Advantage Function

换句话说,此函数计算如果我们在该状态下采取此动作,与我们在该状态下获得的平均奖励相比,我们获得的额外奖励

额外奖励是超出该状态期望价值的部分。

  • 如果 A(s,a) > 0:我们的梯度朝那个方向推进
  • 如果 A(s,a) < 0(我们的动作比该状态的平均价值更差),我们的梯度朝相反方向推进

实现此优势函数的问题在于它需要两个价值函数 —Q(s,a) Q(s,a)V(s) V(s)。幸运的是,我们可以使用 TD 误差作为优势函数的良好估计器。

优势函数 < > 在 GitHub 上更新