1.介绍

在编写强化学习模型的时候,希望去知道自己的模型能应用的游戏环境是什么样的。核心就是,需要知道游戏环境的状态空间和动作空间是什么样的。为什么需要知道游戏环境的状态空间和动作空间呢?将从两个例子分别说明:
例1:如果要将DQN模型应用到游戏环境上,由于DQN只能处理离散动作空间的问题,那就必须知道什么游戏环境的动作空间离散的。而对于连续动作空间,我们就可以用DDPG、TD3等模型去处理。因此,有必要去了解游戏环境的动作空间是什么样的。
例2:有些游戏环境的状态可以使用一些数值来描述(比如,使用坐标、角度、角速度、力),而有的游戏环境的状态是直接通过整张游戏画面来描述的。那就意味着我们在编写神经网络的时候,是对数值进行处理,还是对图像(游戏画面)进行处理。如果是对数值进行处理,那简单,输入几个数就行。但是如果是对图像进行处理,那就的使用卷积神经网络来提取图像特征了。因此,游戏环境的状态是什么,会影响我们神经网络的结构。这就有必要去了解游戏环境的状态空间是什么样的。
本文,主要是想介绍一下mujuco里面的机器人环境,网上对mujuco的环境进行介绍的少之又少。而目前强化学习论文当中会经常使用到的mujuco环境。后面有几个我觉得有意思的游戏我也介绍了一些,不过论文里基本不用。

2.游戏环境介绍

介绍6个mujuco环境,目前所有针对连续动作空间设计方法的论文,所进行的实验基本都是这6个环境。
(1)环境名:Ant-v2(论文中使用频率超级高)
动作空间是连续的,是八维的数值。
状态空间是数值型的,是六维的数值,即利用6个数值表示状态,如[ 0.9999784 0.00657323 0.99861482 0.05261607 0.0634599 -0.13775426]
该环境运行的效果如下(一只蚂蚁要学会爬行)
强化学习之Mujuco的环境使用介绍
(2)环境名:HalfCheetah-v2(论文中使用频率超级超级高)
动作空间是连续的,是六维的数值。
状态空间是数值型的,是17维的数值
该环境运行的效果如下(半只猎豹要学习如何奔跑。为什么是半只呢?因为只有两条腿哈哈,所以叫半猎豹环境)
强化学习之Mujuco的环境使用介绍
(3)环境名:Hopper-v2(论文中使用频率超级超级高)
动作空间是连续的,是3维的数值。
状态空间是数值型的,是11维的数值
该环境运行的效果如下(是不是看不出来是啥?我图截的不是很好,这图是一条腿,目标是学会如何单腿奔跑)
强化学习之Mujuco的环境使用介绍

(4)环境名:Humanoid-v2(论文中使用频率超级高)
动作空间是连续的,是17维的数值。
状态空间是数值型的,是376维的数值
该环境运行的效果如下(这个人要学会如何奔跑。我截的这个画面,这个人摔倒了)
强化学习之Mujuco的环境使用介绍

(5)环境名:Swimmer-v2(论文中使用频率超级高)
动作空间是连续的,是二维的数值
状态空间是数值型的,是8维的数值
该环境运行的效果如下(第一眼以为是只蚯蚓在学怎么爬行,实际上是模拟的一个人如何学习游泳,不可思议吧)
强化学习之Mujuco的环境使用介绍
(6)环境名:Walker2d-v2(论文中使用频率超级超级高)
动作空间是连续的,是6维的数值
状态空间是数值型的,是17维的数值
该环境运行的效果如下(两只腿,要学会如何奔跑)
强化学习之Mujuco的环境使用介绍

下面的环境不是mujuco的了,gym提供的,我觉得比较有意思的两个环境

(7)环境名:BipedalWalkerHardcore-v3(论文中基本从不使用这个环境)
动作空间是连续的,是四维的数值,如[ 0.59484816 0.5661155 -0.32750046 0.04999254]
状态空间是数值型的,是24维的数值,即利用24个数值表示状态。不举例了,之后也不举例了。
该环境运行的效果如下强化学习之Mujuco的环境使用介绍
(8)环境名:CarRacing-v0(论文中基本从不使用这个环境)
动作空间是连续的,是四维的数值,如[ 0.59484816 0.5661155 -0.32750046 0.04999254]
状态空间是图像型的,输出的是大小维96×96×3的像素矩阵。
该环境运行的效果如下
强化学习之Mujuco的环境使用介绍

3.结束语

此外,gym给我们提供了非常多的游戏环境。如果感兴趣可以去搜搜看。但是我认为,环境只是让我们测试模型的一个平台。我们更应该把注意力放在如何涉及好的算法上。在与其他人的算法比较时,其他人使用什么样的环境,我们就使用一样的环境进行性能比较就行了。

相关文章: