强化学习仿真环境gym(一)

搞深度强化学习,训练环境的搭建是必须的,因为训练环境是测试算法,训练参数的基本平台(当然,也可以用实际的样机进行训练,但时间和代价是相当大的)。

现在大家用的最多的是openai的gym( openai/gym ),或者universe

(openai/universe),。这两个平台非常好,是通用的平台,而且与tensorflow和Theano无缝连接,虽然目前只支持python语言,但相信在不久的将来也会支持其他语言。下面我根据自己的理解,讲下关于gym的一些事情。

Gym的原理是什么?它是新东西吗?

在我看来,gym并不是完全的新东西,它不过是用python语言写的仿真器。对于仿真器大家肯定并不陌生。学控制的人都用过或听过matlab的simulink,学机械的人应该用过动力学仿真软件adams,gym在本质上和simulink,adams没什么区别。

如果把Gym,simulink,adams等等这些仿真器去掉界面显示(如动画显示),剩下的本质不过是一组微分方程。所以Gym,simulink,adams等等一切仿真器的本质是微分方程。比如,运动学微分方程,动力学微分方程,控制方程等。Gym在构造环境时,主要的任务就是构建描述你模型的微分方程。

我们举例说明:

Gym中的CartPole环境是如何构建的:

下面的链接是gym中CartPole环境模型:

https://github.com/openai/gym/blob/master/gym/envs/classic_control/cartpole.py

在该环境模型中,最核心的函数是def _step(self, action)函数,该函数定义了CartPole的环境模型,而在该函数中最核心的代码如下:

《强化学习仿真环境gym(一)》
《强化学习仿真环境gym(一)》

图中方框中又是这段代码中最核心的地方,这两行代码便决定了CartPole的模型。简单的模型,通过手工推导便可完成。

那么对于复杂的模型,比如战斗机器人,各种大型游戏怎么办呢?

这就需要专门的多刚体仿真软件了,这些软件背后的核心技术都是物理引擎。大家可以搜下物理引擎这个词,游戏以及各种仿真软件都要用到物理引擎,用的多的而且开源的物理引擎有:ODE, Bullet, Havok, Physx等。原则上来说利用这些物理引擎都可以搭建训练环境。Gym在搭建机器人仿真环境用的是mujoco,ros里面的物理引擎是gazebo。

后面我会陆续地详细讲解gym仿真环境的使用。

PS:决定写gym系列是源于知乎受邀回答一个问题。具体问题链接为深度强化学习训练环境如何构建? – 知乎。零零碎碎在看一些东西,等我把知识点理透了再给大家详细讲讲,目前还是集中在算法上。由于能力有限,有些地方理解地还不到位,欢迎提意见,交流。

    原文作者:天津包子馅儿
    原文地址: https://zhuanlan.zhihu.com/p/26250938
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞