在PyBullet环境中进行强化学习

在进行强化学习时,一个常用的起点是已经熟悉的Cartpole环境。然而,PyBullet提供了更多的环境选择。在本系列文章中,将主要教授一个仿人机器人如何行走,但在开始之前,先来看看其他几个环境:Hopper和Ant。

Hopper环境

Hopper环境非常有趣:它代表了一个单独的无身体的腿。目标是训练一个策略,使腿尽可能快地跳跃。让看看这个环境有多复杂。

在Python中,可以这样创建Hopper环境:

import gym import pybullet_envs env = gym.make('HopperBulletEnv-v0') print(env.observation_space) print(env.action_space)

在这个环境中,观察空间和动作空间都是连续的,并且比CartPole环境更加复杂。观察空间有15个维度,而CartPole只有4个,动作空间有3个维度,而不仅仅是1个。

以下是在Hopper环境中使用SAC算法进行训练的代码:

import pyvirtualdisplay from pyvirtualdisplay import Display _display = Display(visible=False, size=(1400, 900)) _ = _display.start() import ray from ray import tune from ray.rllib.agents.sac import SACTrainer import pybullet_envs ray.shutdown() ray.init(ignore_reinit_error=True) ENV = 'HopperBulletEnv-v0' from ray.tune.registry import register_env def make_env(env_config): import pybullet_envs return gym.make(ENV) register_env(ENV, make_env) TARGET_REWARD = 6000 TRAINER = SACTrainer tune.run( TRAINER, stop={ "episode_reward_mean": TARGET_REWARD}, config={ "env": ENV, "num_workers": 7, "num_gpus": 1, "monitor": True, "evaluation_num_episodes": 50, } )

训练过程在22.6小时后被终止。学习进度如下所示:

(此处应插入学习进度图表)

最后一个进度快照的视频显示,代理已经学会了很好地跳跃。

(此处应插入视频)

Ant环境

蜘蛛有八条腿,昆虫有六条,但PyBullet的Ant代理只有四条。在Ant环境中,必须训练一个简单的四足生物快速移动而不跌倒。

在开始训练之前,让先检查一下环境:

import gym import pybullet_envs env = gym.make('AntBulletEnv-v0') print(env.observation_space) print(env.action_space)

这代表了维度的另一个提升:观察空间从15增加到28,动作空间从3增加到8。一个四足蚂蚁比一条腿更复杂,这并不奇怪。

因为这也是另一个简单的环境,可以在代码中更改指定的环境,而不需要调整任何学习参数:

ENV = 'AntBulletEnv-v0'

训练过程在25.8小时后被终止。可能会更喜欢将TARGET_REWARD设置为3000。学习进度如下所示:

(此处应插入学习进度图表)

这是最终快照的视频。代理进步很快,似乎没有什么可以学习的了。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485