本文主要讲解有关 OpenAI gym 中怎么查看每个环境是做什么的,以及状态和动作有哪些可取的值,奖励值是什么样的。然后给出一个完整的代码,最后再说明一下 gym 中的 done 标志的含义。
gym 是 OpenAI 针对强化学习推出的诸多环境的集合,我们可以直接在这些环境上使用各种强化学习算法来训练我们模型,这样我们就可以专注于强化学习算法本身而不是编写环境了。至于 gym 的安装过程,我就不再说了,网上的教程已经非常多了。值得一提的是,目前 gym 已经基本支持 windows 系统了。
对于一个 gym 中的环境,我们怎么查看这个环境要求你做什么、状态和动作是什么样的,以及奖励是什么呢?这一点 gym 并不是十分友好,我在其官网上没有找到明确的说明。这个问题可以通过在 github 上 gym 对应的仓库来找到说明。
首先在 github 上搜索 “openai/gym”,然后选择 star 数最高的那个仓库,然后点击 “Wiki” 就可以在右边看到各种 gym 中的环境名称了,点击想要查看的环境名称就得到了有关该环境的相应介绍。如下图所示:
要是嫌麻烦,也可以直接点击以下链接查看 Gym。
除了上述所说的方式,还可以用代码的方式来查看环境的某些属性。在 gym 中的环境主要可以分为两类,一类是动作是连续的,另一类是动作是离散的。在某些地方这两者会有轻微的差异,这一部分还是直接看代码和注释吧。
1 | import gym |
大家可以看到在以上代码 s_,r,done,info=env.step(a)
中有个 done 标志,从字面意思来看 done 是环境是否做完的一个标志。但是实际没这么简单,就拿 MountainCar
、CartPole
和 Pendulum
这三个环境为例。MountainCar
环境中当小车拿到旗子后就算成功的完成任务了,此时 done 为 True。CartPole
环境中当小车和杆子跑出屏幕之外后,就相当于出错了,需要重新开始,这时 done 也为 True。但是对于 Pendulum
环境来说,它的目标是将杆子树立起来,但是该环境中动作可以无限的进行下去,done 永远为 False,所以这种情况下只能用步数达到一定数量来判定是否该结束。
- 本文作者: 俎志昂
- 本文链接: zuzhiang.cn/2019/11/14/gym/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!