gpt4 book ai didi

python - 如何解释 OpenAI gym 中 RAM 环境的观察结果?

转载 作者:行者123 更新时间:2023-11-28 20:02:40 25 4
gpt4 key购买 nike

在一些 OpenAI 健身房环境中,有一个“ram”版本。例如:Breakout-v0Breakout-ram-v0

使用 Breakout-ram-v0,每个观察值都是一个长度为 128 的数组。

问题:如何将 Breakout-v0(这是一张 160 x 210 图像)的观察结果转换为 Breakout- 的观察结果ram-v0(长度为128的数组)?

我的想法是在 Breakout-ram-v0 上训练一个模型,并显示使用 Breakout-v0 环境播放的训练模型。

最佳答案

有几种方法可以理解 ram 选项。

假设您想学习乒乓球。如果您从像素开始训练,您可能会使用多层卷积网络。有趣的是,convnet 的最终输出是一维特征数组。您将这些传递给完全连接的层,并可能根据卷积网络在图像中识别的特征输出正确的“ Action ”。或者,您可以使用处理一维特征阵列的强化层。

现在假设您觉得 pong 非常简单,并且可能用 16x16 的图像而不是 160x160 来表示。直接下采样不能提供足够的细节,因此您使用 openCV 来提取球和 Racket 的位置,并创建您的迷你版 16x16 乒乓球。具有漂亮、清晰的像素。代表游戏本质所需的计算比你的深层网络要少得多,而且你的新卷积网络又好又小。然后你意识到你甚至不再需要你的卷积网络了。您可以为每个 16x16 像素做一个完全连接的层。

所以,想想你有什么。现在你有 2 种不同的方法来获得游戏的简单表示,以训练你的全连接层。 (或 RL 算法)

  1. 您的深度卷积网络经过多个层并输出一维数组,例如最后一层中的 256 个特征。你将它传递给全连接层。
  2. 您的手动特征提取使用 OpenCV 提取 Blob (pattles/ball),制作 16x16 乒乓球。通过将其传递到您的全连接层,它实际上只是一组 16x16=256“提取的特征”。

所以模式是您找到一种简单的方法来“表示”游戏状态,然后将其传递给您的全连接层。

进入选项3。游戏的RAM可能只是一个256字节的数组。但是你知道这包含游戏的“状态”,所以它就像你的 16x16 版本的乒乓球。它很可能是比您的 16x16“更好”的表示,因为它可能包含有关球的方向等信息。

所以现在您有 3 种不同的方法来简化游戏状态,以训练您的全连接层或强化算法。

因此,OpenAI 通过为您提供 RAM 所做的是帮助您避免学习游戏“表示”的任务,让您直接学习“策略”或根据状态做什么游戏的。

OpenAI 可能会提供一种在 ram 版本上“查看”视觉输出的方法。如果他们不这样做,您可以要求他们提供。但那是你能得到的最好的。他们不会对代码进行逆向工程以“渲染”RAM,也不会对代码进行逆向工程以基于像素“生成”“RAM”,这实际上是不可能的,因为像素只是状态的一部分游戏的。

如果 ram 对他们来说很容易获得,他们只会提供 ram,这样您就可以尝试学习算法,假设有一些东西可以给他们提供良好的状态表示。

没有(简单的)方法可以完成您的要求,例如将像素转换为 RAM,但很可能有一种方法可以要求 Atari 系统为您提供 ram 和像素,这样您就可以工作在 ram 上但显示像素。

关于python - 如何解释 OpenAI gym 中 RAM 环境的观察结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45207569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com