为什么强化学习方法样本效率低下?

人工智能 强化学习 dqn 文件 ddpg 样本效率
2021-10-20 02:44:03

强化学习方法被认为是样本效率极低的方法。

例如,在 Hessel 等人最近的 DeepMind论文中,他们表明,为了在以每秒 60 帧的速度运行的 Atari 游戏上达到人类水平的性能,他们需要运行 1800 万帧,这相当于 83 小时的游戏时间经验。对于大多数人在几分钟内上手的 Atari 游戏来说,这是很多时间。

是什么让 DQN、DDPG 等样本如此低效?

2个回答

我会尽量给出一个广泛的答案,如果它没有帮助,我会删除它。

当我们谈论采样时,我们实际上是在谈论代理学习环境的良好模型所需的交互次数。一般来说,我会说有两个与样本效率相关的问题:1“动作”+“环境状态”空间的大小 2 使用的探索策略。

关于第一点,在强化学习中确实很容易遇到可能的动作和可能的环境状态的组合数量激增,变得难以处理的情况。让我们以您链接的 Rainbow 论文中的 Atari 游戏为例:在这种情况下,代理运行的环境由大小为 (210, 160, 3) 的 rgb 图像组成。这意味着代理“看到”一个大小为 100800 的向量。代理可以采取的行动只是对该向量的修改,例如,我可以向左移动一个角色,稍微改变整个画面。尽管在许多游戏中可能的动作数量相当少,但我们必须记住,环境中还有其他物体也会改变位置。其他对象/敌人的行为显然会影响下一个时间步中要执行的最佳动作的选择。动作和环境状态之间的大量可能组合与学习良好环境模型所需的大量观察/交互相关。到目前为止,人们通常所做的就是压缩环境的信息(例如通过调整图片大小并将图片转换为灰度),以减少要观察的可能状态的总数。DQL 本身基于使用神经网络以固定大小的密集表示形式压缩从环境中收集的信息的想法。动作和环境状态之间的大量可能组合与学习良好环境模型所需的大量观察/交互相关。到目前为止,人们通常所做的就是压缩环境的信息(例如通过调整图片大小并将图片转换为灰度),以减少要观察的可能状态的总数。DQL 本身基于使用神经网络以固定大小的密集表示形式压缩从环境中收集的信息的想法。动作和环境状态之间的大量可能组合与学习良好环境模型所需的大量观察/交互相关。到目前为止,人们通常所做的就是压缩环境的信息(例如通过调整图片大小并将图片转换为灰度),以减少要观察的可能状态的总数。DQL 本身基于使用神经网络以固定大小的密集表示形式压缩从环境中收集的信息的想法。

对于探索策略的关注点,我们可以再次将问题划分为子类别:1 我们如何探索环境 2 我们从每次探索中获得多少信息。探索通常通过贪心超参数进行调整。有时,我们让代理执行随机动作,以避免陷入次优策略(例如根本不动以避免陷入陷阱,最终由于贪婪的动作,代理将尝试跳跃并学习它提供了更高的奖励)。探索伴随着执行更多模拟的成本,因此人们很快意识到我们不能仅仅依靠更多的探索来训练更好的策略。提高性能的一种方法是不仅利用当前迭代,还利用过去的交互,这种方法称为体验重播下划线的想法是根据加权过去的奖励更新 q 值,存储在内存缓冲区中。其他方法指向计算效率,而不是减少模拟量。遵循此方向的一项旧提议技术是优先扫描 Moore 等人。1993 年,其中 q 值的大变化被优先考虑,即在迭代中稳定的 q 值基本上被忽略(这是一个非常粗略的说法,我不得不承认我仍然必须正确掌握这个概念)。这两种技术实际上都应用在了 Rainbow 论文中。

在更个人的层面上(只是我从这里的纯粹观点)我会说 RL 代理和人类之间的问题是我们(人类)有很多我们可以利用的常识知识,并且我们能够以某种方式通过认知启发式和捷径,在不知不觉中关注相关内容。RL 智能体在没有任何先验知识的情况下学习与环境交互,它们只是通过反复试验学习一些概率分布,如果发生全新的事情,它们根本没有能力根据外部知识采取行动。在我看来,一个有趣的未来方向是奖励建模,在此视频中进行了描述:https ://youtu.be/PYylPRX6z4Q

我特别喜欢强调人类唯一擅长的事情就是判断。我们不知道如何设计适当的奖励函数,因为同样,我们在现实生活中执行的大多数行为都是由我们不知道的奖励驱动的,但是我们可以一眼看出代理是否正在执行以适当的方式完成任务。将这种“判断力”结合到 RL 探索中似乎是提高 RL 样本效率的一种非常有效的方法。

这主要是因为人类在开始学习游戏(先验)时已经掌握了信息,这使他们能够更快地学习它。我们已经知道要跳上怪物或避开它们或获得看起来像金子的物体。

当您删除这些先验知识时,您会发现人类在学习这些游戏方面做得更差。链接

他们在研究中尝试了一些实验来消除这些先验,其中用彩色方块替换所有值得注意的对象、反转和加扰控制、改变重力,以及通常用随机像素替换所有精灵。所有这些实验都使人类学习变得更加困难,并增加了死亡率、所需时间和游戏中访问的状态。

如果我们希望强化学习算法表现得和人类一样好,我们将不得不在训练网络之前以某种方式包含我们作为人类所拥有的这些先验。这当然还没有完成(据我所知)