尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Go-Explore Phase 2强化学习实战:如何用SIL把演示轨迹炼成鲁棒PPO策略

Go-Explore Phase 2强化学习实战:如何用SIL把演示轨迹炼成鲁棒PPO策略 Go-Explore Phase 2强化学习实战如何用SIL把演示轨迹炼成鲁棒PPO策略【免费下载链接】go-exploreCode for Go-Explore: a New Approach for Hard-Exploration Problems项目地址: https://gitcode.com/gh_mirrors/go/go-exploreGo-Explore 是解决硬探索问题的经典强化学习算法而本项目 go-explore 提供了它的完整开源实现。本文带你实战Phase 2 强化阶段把 Phase 1 探索得到的演示轨迹.demo文件通过SIL自模仿学习Self-Imitation Learning蒸馏进PPO策略网络最终得到一个在噪声与随机扰动下依然稳定的鲁棒策略。一、先看懂两阶段流水线从会玩到玩得好Go-Explore 的完整流程分两步Phase 1 探索阶段Go-Explore 智能体在环境中打怪升级产出results/xxxx_随机串/目录下的经验文件*_experience.gz记录智能体到达过的所有状态树Phase 2 强化阶段从经验中挑选高价值演示轨迹再用 SILPPO 训练神经网络把偶尔能通关变成稳定通关。为什么要做 Phase 2因为 Go-Explore 探索时依赖状态树时间回溯只能复现单条轨迹而 SILPPO 学到的是一般化的策略对 no-ops、sticky actions、随机扰动等现实噪声都更抗揍 核心代码都在robustified/目录下脚本入口一览探索robustified/phase1_montezuma.sh、robustified/phase1_pitfall.sh生成演示robustified/gen_demo_atari.sh、robustified/gen_demo_fetch.sh强化robustified/phase2_atari.sh、robustified/phase2_fetch.sh测试robustified/phase2_atari_test.sh对照组robustified/control_ppo_fetch.sh纯 PPO、robustified/control_im_fetch.shPPOIM二、生成演示轨迹gen_demo 如何挑选精华轨迹Phase 2 的原料是.demo文件。运行./gen_demo_atari.sh Phase1结果目录 输出目录 游戏名核心逻辑在 robustified/gen_demo/new_gen_demo.py加载所有*_experience.gz经验文件重建探索树RefTree筛选成功轨迹可指定--select_reward有奖励、--select_done通关或--select_fetch_targetFetch 抓物目标多样性选择每次选完一条轨迹后计算它与候选轨迹树的距离优先挑分数高且已选轨迹覆盖不到的分支避免 10 条演示长得一模一样。 官方建议把10 次 Phase 1 独立运行产出的演示合并到一个文件夹再用单条也能跑但成功率低。Fetch 环境则是从单次运行直接产 10 条演示省去重复跑 Phase 1 的麻烦。Fetch 机械臂推箱子任务环境Phase 1 探索与 Phase 2 SIL 训练的载体之一三、读懂 SIL 参数phase2 脚本里的关键开关以robustified/phase2_atari.sh为例默认游戏 MontezumaRevenge、25 亿帧几个核心参数值得记住参数含义--sil_coef0.1SIL 损失在总损失中的权重--sil_vf_coefSIL 价值函数分支的权重--n_sil_envs专门回放演示的 SIL 并行环境数Atari 用 2Fetch 用 8--demo_selectionnormalize_by_target按目标归一化挑选演示提升数据利用率--sil_weight_success_rate演示权重随成功率自适应--sil_pg_weight_by_value/--sil_vf_relu策略梯度按价值加权 / 价值网络用 ReLU论文中的稳定性改进--extra_sil_from_start_prob0.3一定概率从游戏起始状态开始插值演示帮助策略学会从头走Fetch 版robustified/phase2_fetch.sh则把nenvs开到 120、帧数 7.5 亿并指定--fetch_typeboxes_1、--fetch_target_location目标货架编号。四、启动 Phase 28 卡 MPI 一键跑论文中所有 Phase 2 结果都用 8 块 GPU 通过 MPI 跑出来脚本本身不自带 MPI需要这样调用路径建议用绝对路径强化代码对相对路径支持不佳mpirun -np 8 ./phase2_atari.sh 游戏 演示文件夹 结果文件夹 帧数训练过程中日志会打印Saving to ...那个路径就是最终神经网络的存档位置。五、验收用 no-ops 压测策略的鲁棒性策略到底鲁不鲁棒跑robustified/phase2_atari_test.sh 游戏 网络路径 输出目录它会输出no-ops 从 0 到 30 各档位的.json结果分数、关卡、精确动作序列。no-op 档数越多、分数越稳定说明策略对环境噪声越免疫——这正是 SIL 蒸馏相比单条演示轨迹复现的价值所在。想做消融对照Fetch 上可以跑robustified/control_ppo_fetch.sh注意它内部--n_sil_envs0 --demo __nodemo__即纯 PPO 基线和robustified/control_im_fetch.shPPOIM和 SIL 版结果对比直观感受 SIL 带来的提升。六、Fetch 机械臂环境快速上手Fetch 机械臂拨杆任务演示 Phase 1 探索到达的关键状态需本地安装MuJoCo 2.0和对应版本mujoco-pyAtari 用户可跳过目标货架标识符取0001/0010/0100/1000对应货架四个位置强化时确保goexplore_py所在目录在PYTHONPATH中环境定义见robustified/goexplore_py/complex_fetch_env.py。七、避坑清单 ✅依赖atari_resetSILPPO 训练器robustified/README.md要求把它放到与goexplore_py同级目录本仓库policy_based/atari_reset/已附带一份实现可参考TensorFlow 1.15.2 horovodmpi4py缺一不可演示不够多 → 先多跑几次 Phase 1 再合并.demo训练中途看 GPU 利用率低多半是n_sil_envs太小可参考 Fetch 配置调大。跑通这套Phase 1 探索 → gen_demo 挑精华 → SILPPO 蒸馏 → no-ops 压测的流水线你就掌握了 Go-Explore 从找到解到稳定解的完整闭环。【免费下载链接】go-exploreCode for Go-Explore: a New Approach for Hard-Exploration Problems项目地址: https://gitcode.com/gh_mirrors/go/go-explore创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表