如何在强化学习中提升胜任本职工作的能力( 三 )


多谢邀请 。关于gym可参考我的知乎专栏帖子:强化学习实战 第一讲 gym学习及二次开发 - 知乎专栏 。关注该专栏,可以学到很多强化学习的知识(理论知识和实践知识) 。
【如何在强化学习中提升胜任本职工作的能力】下面正式回答你的问题:搞深度强化学习,训练环境的搭建是必须的,因为训练环境是测试算法,训练参数的基本平台(当然,也可以用实际的样机进行训练,但时间和代价是相当大的) 。
现在大家用的最多的是openai的gym( githubcom/openai/gym ) , 或者universe
(githubcom/openai/unive), 。这两个平台非常好,是通用的平台,而且与tensorflow和Theano无缝连接,虽然目前只支持python语言 , 但相信在不久的将来也会支持其他语言 。下面我根据自己的理解 , 讲下关于gym的一些事情 。
Gym的原理是什么?它是新东西吗?
在我看来,gym并不是完全的新东西,它不过是用python语言写的仿真器 。对于仿真器大家肯定并不陌生 。学控制的人都用过或听过matlab的simulink,学机械的人应该用过动力学仿真软件adams,gym在本质上和simulink , adams没什么区别 。
如果把Gym , simulink,adams等等这些仿真器去掉界面显示(如动画显示),剩下的本质不过是一组微分方程 。所以Gym,simulink,adams等等一切仿真器的本质是微分方程 。比如,运动学微分方程,动力学微分方程,控制方程等 。Gym在构造环境时,主要的任务就是构建描述你模型的微分方程 。
我们举例说明:
Gym中的CartPole环境是如何构建的:
下面的链接是gym中CartPole环境模型:
githubcom/openai/gym/b
在该环境模型中,最核心的函数是def _step(self, action)函数,该函数定义了CartPole的环境模型,而在该函数中最核心的代码如下:
图中方框中又是这段代码中最核心的地方,这两行代码便决定了CartPole的模型 。简单的模型 , 通过手工推导便可完成 。
那么对于复杂的模型,比如战斗机器人,各种大型游戏怎么办呢?
这就需要专门的多刚体仿真软件了,这些软件背后的核心技术都是物理引擎 。大家可以搜下物理引擎这个词,游戏以及各种仿真软件都要用到物理引擎,用的多的而且开源的物理引擎有:ODE, Bullet, Havok, Physx等 。原则上来说利用这些物理引擎都可以搭建训练环境 。Gym在搭建机器人仿真环境用的是mujoco,ros里面的物理引擎是gazebo 。
下面针对你的问题,逐条回答:
1 gym中CartPole, MountainCar这种环境的构建原理是怎样的?
答:这种简单的环境只需要手动推导便可写出动力学方程,然后可以人为编写环境模型 。只是,gym中除了给出了动力学方程,还加入了界面程序,将结果更直观地显示出来 。