深度强化学习课程文档
训练我们的机器人
并获取增强的文档体验
开始使用
训练我们的机器人
pip install imitation
从 Godot RL Repository 下载 imitation learning 脚本的副本。
使用以下参数运行训练:
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 文件路径设置为录制的演示。如果您有多个演示文件,请在它们之间添加空格,例如 --demo_files demos.json demos2.json
。
您还可以为 --gail_timesteps
设置大量的 timestep,然后使用 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
统计信息,我们可以看到在这种情况下它们非常接近

logs/ILTutorial
中找到日志。如果进行多次运行,请在每次运行之间更改 --experiment_name
参数。即使设置环境奖励不是必需的,并且在这里的训练中未使用,但也实现了一个简单的稀疏奖励来跟踪成功。掉出地图、掉入水中或陷阱会将 reward += -1
,而激活拉杆、收集钥匙和打开宝箱各设置 reward += 1
。如果 ep_rew_mean
接近 3,我们就会得到一个好的结果。 ep_rew_wrapped_mean
是来自 GAIL 判别器的奖励,它不能直接告诉我们 agent 在解决环境方面有多成功。
让我们测试训练好的 agent
训练完成后,您将在启动训练脚本的文件夹中找到一个 model.onnx
文件(您还可以在控制台的训练日志中找到 .onnx
文件的完整路径,靠近末尾)。将其复制到 Godot 游戏项目文件夹中。
打开 onnx 推理场景
此场景与演示记录场景一样,仅使用关卡的一个副本。它还将其 Sync
节点模式设置为 Onnx Inference
。
单击 Sync
节点,并将 Onnx Model Path
属性设置为 model.onnx
。

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