@进行中{zintgraf2020varibad, title={VariBAD:Bayes-Adaptive Deep RL的一种很好的元学习方法}, 作者={Zintgraf、Luisa和Shiarlis、Kyriacos和Igl、Maximilian和Schulze、Sebastian和Gal、Yarin和Hofmann、Katja和Whiteson、Shimon}, booktitle={学习代表国际会议(ICLR)}, 年份={2020}}
! 重要!
如果您在自己的环境中使用此代码, 确保不要使用
np.随机 在他们中间 (例如生成任务),因为它不是线程安全的 (这可能会导致线程之间重复)。 相反,请使用python本机随机函数。 有关示例,请参见 在这里 .
对于猎豹和蚂蚁环境,请使用 穆约科150 . (您还可以使用 穆约科200 除了AntGoal, 因为有一个错误导致80%的env状态为零)。 对于步行机/料斗,使用 穆约科131 .
python main.py--环境类型cheetah_dir_variabad python main.py—env-type猎豹_vel_varibad python main.py—环境类型ant_dir_varibad python main.py—env-type walker_varibad
您可以通过将相应的标志设置为true来选择解码器的类型: --decode_reward为真 和/或 --decode_state为真 . 您还可以选择任务解码器( --decode_task为真 ),由提出 Humplik等人(2019年) . 此方法在元训练期间使用特权信息(例如,任务描述或ID) 监督学习后验分布。 (请注意,我们的实现基于variBAD体系结构, 因此与他们的略有不同。) 可以使用更改潜在维度的大小 --潜伏的黎明 . 根据我们的经验,PPO的性能在很大程度上取决于 小批量的数量( --ppo_num_最小批次 ), 纪元的数量( ppo_num_epochs ), 和批大小(更改为 --策略num_steps 和/或 --数字处理 ). 另一个重要参数是kl项的权重( --kl_重量 )在ELBO中。
当旗帜 禁用元学习器 激活时,文件 学习者.py 将被使用,而不是 金属加热器.py . 这是一个没有编码器、解码器、随机潜在变量等的精简版本。 它可以用来训练(信仰)神谕或平均良好的政策。 目前,VAE从不查看启动状态,但之前的状态是独立的 代理的启动位置。 这样更容易实现。 由于第一步无法获得行动/奖励, 另一种选择是用零填充。 我在中添加了一个带有空方法的示例环境 环境/example_env.py , 如果你想知道环境应该做什么。