深度强化学习课程文档
训练我们的机器人
并获得增强的文档体验
开始使用
训练我们的机器人
pip install imitation
从 Godot RL 仓库下载模仿学习脚本的副本。
使用以下参数运行训练:
sb3_imitation.py --env_path="path_to_ILTutorial_executable" --bc_epochs=100 --gail_timesteps=1450000 --demo_files "path_to_expert_demos.json" --n_parallel=4 --speedup=20 --onnx_export_path=model.onnx --experiment_name=ILTutorial
将 env 路径设置为导出的游戏,将 demo 文件路径设置为录制的 demos。如果您有多个 demo 文件,请用空格分隔它们,例如 --demo_files demos.json demos2.json
。
您还可以为 --gail_timesteps
设置大量时间步,然后使用 CTRL+C
手动停止训练。我用这种方法在奖励开始接近 3 时停止了训练,此时 total_timesteps | 1.38e+06
。这大约花了 41 分钟,而 BC 预训练在我的 PC 上使用 CPU 训练大约花了 5.5 分钟。
要在训练期间观察环境,请添加 --viz
参数。在 BC 训练期间,环境将冻结,因为此阶段除了获取有关观察和动作空间的一些信息外,不使用环境。在 GAIL 训练阶段,环境渲染将更新。
以下是使用 tensorboard 显示的日志中的 ep_rew_mean
和 ep_rew_wrapped_mean
统计数据,我们可以看到它们在这种情况下非常匹配

尽管在此处设置环境奖励并非必要且未用于训练,但我们实现了一个简单的稀疏奖励来跟踪成功。掉出地图、掉入水中或陷阱会使 reward += -1
,而激活杠杆、收集钥匙和打开宝箱都会使 reward += 1
。如果 ep_rew_mean
接近 3,我们就取得了不错的结果。ep_rew_wrapped_mean
是 GAIL 判别器的奖励,它不能直接告诉我们代理在解决环境方面有多成功。
让我们测试训练好的智能体
训练结束后,您会在启动训练脚本的文件夹中找到一个 model.onnx
文件(您也可以在控制台的训练日志中,接近末尾处找到 .onnx
文件的完整路径)。将其复制到 Godot 游戏项目文件夹。
打开 onnx 推理场景
这个场景,像演示录制场景一样,只使用了一个关卡副本。它的 Sync
节点模式也设置为 Onnx Inference
。
点击 Sync
节点,并将 Onnx Model Path
属性设置为 model.onnx
。

按 F6 启动场景,让我们看看智能体学到了什么!
训练好的智能体视频
看来智能体能够从两个位置(左平台或右平台)收集钥匙,并很好地复制了录制的行为。如果您得到了类似的结果,恭喜您,您已成功完成本教程! 🏆👏
如果您的结果差异很大,请注意,录制演示的数量和质量可能会影响结果,调整 BC/GAIL 阶段的步数以及修改 Python 脚本中的超参数可能会有所帮助。此外,运行之间也存在一些差异,因此即使设置相同,结果有时也会略有不同。
< > 在 GitHub 上更新