转载

OpenAI 基线:ACKTR 和 A2C

发布了两个新的 OpenAI 基线实现:ACKTR 和 A2C。A2C 是 Asynchronous Advantage Actor Critic (A3C) 的同步、确定性变体,我们发现它具有相同的性能。ACKTR 是一种比 TRPO 和 A2C 更有效的样本强化学习算法,每次更新只需要比 A2C 稍微多一点的计算。


ACKTR 可以学习连续的控制任务,例如将机械臂移动到目标位置,完全来自低分辨率像素输入(左)。

ACKTR(发音为“actor”)——使用 Kronecker-factored Trust Region 的 Actor Critic——由多伦多大学和纽约大学的研究人员开发,OpenAI 与他们合作发布了 Baselines 实现。作者 使用 ACKTR 来学习模拟机器人(以像素作为输入和连续动作空间)和 Atari 代理(以像素作为输入和离散动作空间)的控制策略。

ACKTR 结合了三种不同的技术:  actor-critic 方法、 信任域优化 以实现更一致的改进,以及 分布式 Kronecker 分解 以提高样本效率和可扩展性。

样本和计算效率

对于机器学习算法,有两个成本需要重点考虑:样本复杂度和计算复杂度。样本复杂度是指智能体与其环境交互的时间步数,计算复杂度是指必须执行的数值运算的数量。

ACKTR 比 A2C 等一阶方法具有更好的样本复杂度,因为它在 自然梯度 方向上迈出一步,而不是梯度方向(或 ADAM 中的重新缩放版本)。自然梯度为我们提供了参数空间中的方向,该方向在网络输出分布的每单位变化目标中实现最大(瞬时)改进,如使用 KL 散度测量的那样。通过限制 KL 散度,我们确保新策略的行为不会与旧策略有根本不同,这可能会导致性能崩溃。

至于计算复杂性,ACKTR 使用的 KFAC 更新每个更新步骤的成本仅比标准梯度更新高 10-25%。这与 TRPO(即无 Hessian 优化)等方法形成对比,后者需要更昂贵的共轭梯度计算。

在下面的视频中,您可以看到使用 ACKTR 训练以解决游戏 Q-Bert 的代理与使用 A2C 训练的代理在不同时间步的比较。ACKTR 智能体比使用 A2C 训练的智能体获得更高的分数。

A2C
ACKTR
使用 ACKTR 训练的代理(右)比使用 A2C(左)等其他算法训练的代理在更短的时间内获得更高的分数。

基线和基准

此版本包括 ACKTR 的 OpenAI 基线版本,以及 A2C 版本。

我们还发布了  在一系列任务中针对 A2C、 PPO 和 ACER 评估 ACKTR 的 基准。在下图中,我们展示了 ACKTR 在 49 款 Atari 游戏上的性能与其他算法的对比:A2C、PPO、ACER。ACKTR 的超参数由 ACKTR 的作者仅针对一款游戏 Breakout 进行了调整。

基准

ACKTR 性能也可以很好地随批大小缩放,因为它不仅从每个批中的信息中得出梯度估计,而且还使用该信息来近似参数空间中的局部曲率。此功能特别有利于使用大批量的大规模分布式训练。

图表

A2C 和 A3C

自论文 发表以来,Asynchronous Advantage Actor Critic 方法 (A3C) 一直非常有影响力 。该算法结合了几个关键思想:

  • 对固定长度的经验片段(例如 20 个时间步长)进行操作并使用这些片段来计算回报和优势函数的估计量的更新方案。
  • 在策略和价值函数之间共享层的架构。
  • 异步更新。

读完这篇论文后,AI 研究人员想知道异步是否会提高性能(例如,“也许添加的噪声会提供一些正则化或探索?”),或者它是否只是一个允许使用基于 CPU 的系统进行更快训练的实现细节执行。

作为异步实现的替代方案,研究人员发现您可以编写一个同步的、确定性的实现,等待每个参与者完成其体验片段,然后再执行更新,对所有参与者进行平均。这种方法的一个优点是它可以更有效地使用 GPU,它在大批量时表现最佳。这个算法自然叫做A2C,advantage actor critic的简称。(该术语已在 多篇论文中使用。)

我们的同步 A2C 实现比我们的异步实现执行得更好——我们没有看到任何证据表明异步引入的噪声提供了任何性能优势。这种 A2C 实现在使用单 GPU 机器时比 A3C 更具成本效益,并且在使用更大的策略时比仅 CPU 的 A3C 实现更快。

我们在基线中包含了使用 A2C 在 Atari 基准测试上训练前馈卷积网络和 LSTM 的代码。

详细论文