跳到内容

VariBAD的实现:通过元学习实现贝叶斯自适应深度RL的一种非常好的方法-Zintgraf等人(ICLR 2020)

许可证

通知 您必须登录才能更改通知设置

lmzintgraf/varibad公司

存储库文件导航

VariBAD公司

论文代码“VariBAD:一种很好的基于元学习的贝叶斯自适应深度RL方法" -路易斯·津格拉夫、基里亚科斯·希亚利斯、马克西米利安·伊格尔、塞巴斯蒂安·舒尔泽,Yarin Gal、Katja Hofmann、Shimon Whiteson,于2020年ICLR上发表。

@进行中{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本机随机函数。有关示例,请参见在这里.

要求

我们使用PyTorch编写此代码,并使用TensorboardX记录结果。

主要要求见要求.txt.

对于MuJoCo实验,您需要安装MuJoCo。确保您拥有正确的MuJoCo版本:

  • 对于猎豹和蚂蚁环境,请使用穆约科150.(您还可以使用穆约科200除了AntGoal,因为有一个错误导致80%的env状态为零)。
  • 对于步行机/料斗,使用穆约科131.

对于穆约科131,使用:健身房==0.9.1健身房[mujoco]==0.9.1 mujoco-py==0.5.7

概述

VariBAD的主要训练循环可以在中找到金属学习者.py,模型在模型/,VAE设置和损失在阀门.py以及中的RL算法算法/.

在各自的脚本中有相当多的文档,因此请查看其中的详细信息。

进行实验

要从论文中评估gridworld上的variBAD,请运行

python main.py—env类型gridworld_varibad

它将使用超参数配置/gridworld/args_grid_varibad.py.

要在MuJoCo实验上运行variBAD,请使用:

python main.py--环境类型cheetah_dir_variabadpython main.py—env-type猎豹_vel_varibadpython main.py—环境类型ant_dir_varibadpython main.py—env-type walker_varibad

您还可以运行RL2和Oracle,只需替换瓦里巴德使用相应的字符串。请参见主.py适用于所有选项。

默认情况下,结果将保存在./日志,但是您也可以使用--结果日志目录/path/to/dir.

默认配置位于配置/文件夹。可以使用命令行参数覆盖任何默认超参数。

结果将写入张量板事件文件,不时会打印一些图像。

配置

关于配置文件中标志的一些注释:

  • 您可以通过将相应的标志设置为true来选择解码器的类型:--decode_reward为真和/或--decode_state为真.
  • 您还可以选择任务解码器(--decode_task为真),由提出Humplik等人(2019年).此方法在元训练期间使用特权信息(例如,任务描述或ID)监督学习后验分布。(请注意,我们的实现基于variBAD体系结构,因此与他们的略有不同。)
  • 可以使用更改潜在维度的大小--潜伏的黎明.
  • 根据我们的经验,PPO的性能在很大程度上取决于小批量的数量(--ppo_num_最小批次),纪元的数量(ppo_num_epochs),和批大小(更改为--策略num_steps和/或--数字处理).另一个重要参数是kl项的权重(--kl_重量)在ELBO中。

结果

MuJoCo结果(平滑的学习曲线)和绘制它们的脚本可以找到在这里.

评论

  • 当旗帜禁用元学习器激活时,文件学习者.py将被使用,而不是金属加热器.py.这是一个没有编码器、解码器、随机潜在变量等的精简版本。它可以用来训练(信仰)神谕或平均良好的政策。
  • 目前,VAE从不查看启动状态,但之前的状态是独立的代理的启动位置。这样更容易实现。由于第一步无法获得行动/奖励,另一种选择是用零填充。
  • 我在中添加了一个带有空方法的示例环境环境/example_env.py,如果你想知道环境应该做什么。

关于

VariBAD的实现:通过元学习实现Bayes自适应深度RL的一种非常好的方法-Zintgraf等人(ICLR 2020)

资源

许可证

星星

观察者

叉子

语言文字