OpenAI 健身房的“Pong-v0”环境的不同动作代表什么?

人工智能 强化学习 环境 健身房 行动空间
2021-11-14 22:30:32

action_spacePong-v0 的打印Discrete(6)作为输出,即0,1,2,3,4,5是根据文档在环境中定义的操作。但是,游戏只需要 2 个控件。为什么我们会有这种差异?此外,是否有必要确定从 0 到 5 的哪个数字对应于健身房环境中的哪个动作?

3个回答

您可以自己尝试这些操作,但如果您需要其他参考,请查看 GitHub 上的 ALE 文档

特别是,0 表示没有动作,1 表示开火,这就是为什么它们对球拍没有影响。

这是一个更好的方法:

env.unwrapped.get_action_meanings()

您可以尝试使用此类脚本找出操​​作的确切作用:

action = 0  # modify this!
o = env.reset()
for i in xrange(5): # repeat one action for five times
    o = env.step(action)[0]
IPython.display.display(
    Image.fromarray(
        o[:,140:142]  # extract your bat
    ).resize((300, 300))  # bigger image, easy for visualization
)

action0 和 1 似乎没用,因为球拍没有任何反应。

action2 & 4 使球拍上升,action3 & 5 使球拍下降。

有趣的是,当我将上面的脚本运行action两次(从 2 到 5 次)时,我得到了不同的结果。有时球拍到达顶部(底部)边界,有时没有。我认为球拍的速度可能存在一些随机性,因此可能很难衡量哪种类型的 UP(2 或 4)更快。

2 & 4 和 3 & 5 之间似乎没有区别。Icyblade 提到的不一致是由于 Pong 环境的机制。

“每个动作在 k 帧的持续时间内重复执行,其中 k 是从 {2,3,4} 中均匀采样的”

因此,由于随机性,该动作只是重复了不同的次数