Part 1 - 自定义gym环境
强化学习的智能体必须和环境交互才能或者reward和observation。对于有些任务,比如机器人的训练任务,在现实中就不能直接实施,需要先在仿真中确保算法没有问题,才能迁移到真实机器人上。这样会节省很多时间,同时也可以减少机器人的磨损。

OpenAI Gym是目前最流行的强化学习虚拟环境。他提供了智能体和环境之间方便易用的接口,使之非常容易的与环境交互、执行动画、获取奖励和生成实时仿真动画。

大量的benchmark environment被封装好,用来比较不同强化学习算法的性能。比如CartPole、MountainCar、inverted Pendulum等环境。

这些环境用来学习强化学习算法或者比较一下自己算法的性能是很好的,但是对于自己的问题,比如量化交易、机器人和自动驾驶等问题就需要建立自己的新的虚拟环境。

Gym和物理引擎结合的很好,对于物理世界的机器人、自动驾驶等任务,都需要物理引擎的介入。目前仿真中有图像引擎和物理引擎,对于物理特性不敏感的任务,物理引擎不需要特别精确,但是对于像机器人、自动驾驶等物理特性强需求的任务,一个好的物理引擎就非常重要。

目前物理引擎有Mujoco、Bullet、ODE、PhysX等。在强化学习领域,使用最多的是Mujoco(Multi-Joint dynamics with Contact),因为在Gym中,对于机器人的连续控制,就是使用Mujoco;同时,Mujoco在很多指标性能上面,也是同行第一的水平,关于这几个引擎的比较,请看论文Simulation Tools for Model-Based Robotics:
Comparison of Bullet, Havok, MuJoCo, ODE and PhysX

Mujoco虽好,但是需要license,学生可以免费申请单机一年的使用权。购买的话license很贵。

仿真软件也有Mujoco、PyBullet、Gazebo、V-REP、Unity(不常用,现在unity出了个unity-ml,用于强化学习训练,unity的渲染是优势)等常见软件。Mujoco使用Mujoco引擎,收费;PyBullet使用Bullet引擎,免费开源,而且在强化学习领域应用甚广,目前谷歌在维护;Gazebo和V-REP是传统机器人仿真软件,使用ODE、Bullet、PhysX等引擎,但是在强化学习领域应用不广,开源代码较少;Unity刚推出不久。

鉴于上,后文选择使用PyBullet作为仿真平台。Pybullet有很多顶尖研究的应用,具体可参考官网PyBullet
Part 1 - 自定义gym环境

对于训练一个应用强化学习的机器人,常用的流程就是这样
Part 1 - 自定义gym环境
后面的系列文章就讲述怎么创建一个针对自己机器人系统的强化学习环境。

Part 1 - 自定义gym环境
Part 1.1 - 注册自定义Gym环境
Part 1.2 - 实现一个井字棋游戏的gym环境

参考
https://www.datamachinist.com/applied-reinforcement-learning/part-8-virtual-environments-for-reinforcement-learning/

相关文章: