DeepMind 控制套件是强化学习算法(基于物理控制)的设计和性能比较的起点。它提供了各种各样的任务(从几乎微不足道的任务到相当困难的任务)。统一的奖励结构可以实现对套件整体性能的评估。学习曲线不是基于穷举的超参数优化,并且对于给定的算法,在控制套件的所有任务中都使用相同的超参数。因因此,我们期望能够获得更好的性能或数据效率,特别是在每个任务的基础上。
基准测试领域:顶端: 机器人、球杯、卡杆、猎豹、手指、鱼、单足跳者。底部: 人形机器人、操纵器、钟摆、质点、Reacher、游泳运动员(6 和15 个连接点)、行走者。
未来研究方向
对于Control Suite 的当前版本来说,里面还缺少一些元素。有一些特征,比如缺乏丰富的任务,这是在设计中没有考虑到的。该套件,尤其是基准测试任务旨在成为一个稳定、简单的学习控制起点。像复杂地形中的完全操纵和运动的任务类别需要对任务和模型的分布进行推理,而不仅仅是对初始状态进行操作。而所有这些都需要更为强大的工具,我们希望未来在不同的分支机构中能够进行共享。以下几个特性并没有包含在当前发布的版本中,但我们打算在将来的版本中将其添加在内。 它们包括:一个四足行走的动作任务;一个交互式的可视化程序,用其便可以查看和扰乱模拟;支持C 回调和多线程动态;MuJoCo TensorFlow 封装器和Windows ™ 支持。
dm_control:DeepMind 控制套件和控制包
此软件包含:
(1)一套由MuJoCo 物理引擎驱动的Python 强化学习环境。
(2)为Mujoco 物理引擎提供python 绑定的库。
安装要求
请按照以下步骤安装DM_control:
1. 从Mujoco 网站的下载页面下载Mujoco pro1.50。必须在安装dm_contect 之前安装mujoco pro,因为dm_contect 的安装脚本由mujoco 的头文件生成python ctypes绑定。默认情况下,dm_contect 假定mujo COZIP 归档文件被提取为~/.mujoCO/mjpro150。
2. 通过运行pip install git + git://github.com/deepmind/dm_control.git(PyPI 包即将推出)或通过复制存储库并运行pip install /path / to / dm_control / 来安装dm_controlPython 包。在安装时,dm_control 在~/mujoco / mjpro150 / include 中查找步骤1 中的MuJoCo 头文件,然而这个路径可以使用headers-dir 命令行参数进行配置。
3. 为mujoco 安装一个许可密钥,该密钥在运行时由dm_controls 命令。有关详细信息,请参阅Mujoco 许可密钥页面。默认情况下,dm_contect 在~/.mujoco/mjkey.txt 处查找mujo co 许可密钥文件。
4. 如果在非默认路径上安装许可密钥(例如mjkey.txt)或mujocopro 提供的共享库(例如libmujoco150.so 或libmujoco150.dylib),则分别使用mjkey_jmpATH 和libm path 指定它们的位置。
关于macOS 上的自制软件用户的其他说明
1. 只要你使用的是由Homebrew 安装的python 解释器(而不是系统默认的解释器),那么以上使用pip 的说明应该有效。
2. 要使Open GL 正常工作, 请通过运行brew 来安装GLFW, 然后安装来自Homebrew 的GLFW 包。
3. 在运行之前,需要使用GLFW 库的路径更新DYLD_library_path 环境变量。这可以通过运行export dyld_library_path=(brew--prefix)/lib:dyld_library_path 来完成。
Control Suite 中所有任务的标注为数据(第一列)和挂钟时间(第二列)对比的平均返回值。第一行显示使用。低维特征作为输入的任务中的A3C、DDPG 和D4PG 的性能表现。第二行显示了D4PG 在仅使用原始像素作为输入
的任务上的性能表现
控制套件快速入门
from dm_control import suite
# Load one task:
env = suite.load(domain_name="cartpole",task_name="swingup")
# Iterate over a task set:
for domain_name, task_name in suite.
BENCHMARKING:
env = suite.load(domain_name, task_name)
# Step through an episode and print out reward, discount and observation.
action_spec = env.action_spec()
time_step = env.reset()
while not time_step.last():
action = np.random.uniform(action_spec.minimum,a ction_spec.maximum,
size =action_spec.shape)
time_step = env.step(action)
p r i n t ( t i m e _ s t e p . r e w a r d , t i m e _ s t e p .discount, time_step.observation)