深度强化学习实验室
官网:http://www.neurondance.com/
论坛:http://deeprl.neurondance.com/
编辑:DeepRL
元学习作为一种增加强化学习的灵活性和样本效率的方法,科研学者对此的关注兴趣迅速增长。然而,该研究领域中的一个问题是缺乏足够的基准测试任务。通常,过去基准的基础结构要么太简单以至于无法引起兴趣,要么就太不明确了以至于无法进行有原则的分析。在当前的工作中,DeepMind科学家介绍了用于元RL研究的新基准:Alchemy,该基准是将结构丰富性与结构透明性相结合。它是在Unity中实现的3D视频游戏,涉及潜在的因果结构,该过程都经过程序重新采样,从而提供了结构学习,在线推理,假设测试以及基于抽象领域知识的动作排序。并在Alchemy上评估了一对功能强大的RL方法,并对这些方法进行了深入分析。结果清楚地表明,Alchemy作为元RL的挑战性基准提供了验证。
一种有前途的方法是元学习或学习学习(learning to learn)。这里的想法是,学习者可以从大量的经验中获得可用于目标的知识,并且随着知识的积累,学习者可以越来越快地适应遇到的每个新任务。在深度RL中开发元学习方法的兴趣迅速增长。尽管在“元强化学习”方面取得了实质性进展,但由于缺乏基准测试任务,这一领域的研究受到了阻碍。在当前的工作中,作者旨在通过引入(和开源)Alchemy(一种有用的meta-RL基准环境)以及一套分析工具来缓解此问题。
为了进行元学习,环境必须向学习者提供的不是单一任务,而是一系列任务或一系列任务,所有这些任务都有一些共同的高级特征。以前关于meta-RL的工作通常依赖于任务分布,这些任务分布要么是有趣的(例如强盗任务),要么是有趣的(例如,Atari游戏),而没有兴趣。Alchemy旨在提供两全其美的体验。
Alchemy是在Unity中实现的单人视频游戏。玩家可以看到桌子上的第一人称视角,桌子上有许多物体,包括一组彩色的石头,一组装有彩色药水的盘子和一个中央大锅。石头具有不同的点值,并且在将石头添加到大锅中时会收集点。通过将石头浸入魔药中,玩家可以改变石头的外观,从而改变它们的价值,从而增加可赢得的分数。
但是,Alchemy也涉及到一个至关重要的陷阱:每次玩游戏时,控制药水如何影响石头的“化学作用”都会改变。熟练的演奏者必须执行一组有针对性的实验,以发现当前化学反应的原理,并使用这些实验的结果来指导战略行动序列。在多轮Alchemy中学习如何做到这一点,正是meta-RL的挑战。
Alchemy具有“有趣”的结构,从某种意义上讲,它涉及潜在的因果关系组成的集合,并且需要策略性实验和动作排序。但是Alchemy的结构也是“可访问的”,因为游戏级别是根据明确的生成过程创建的。
通过创建可访问生成过程的贝叶斯最优求解器,这种可访问性使我们能够确定Alchemy中的最佳元学习性能。这种最佳试剂提供了宝贵的金标准,可与任何深层RL进行比较。
作为Alchemy的首次应用,作者将其介绍给了两种功能强大的深层RL智能体(IMPALA和V-MPO)。正如我们的论文中详细介绍的那样,尽管这些智能体在许多单任务RL环境中都表现良好,但在Alchemy中,它们都显示出非常差的元学习性能。即使经过大量的训练,两位特工的行为也仅反映了对任务的表面“理解”-本质上是将石头随机浸入药水中,直到碰巧产生了很高的石头价值。通过一系列详细的分析,我们能够确定元学习的失败不仅是由于3D环境的视觉运动挑战,也不是为了实现目标而对动作进行排序的难度。相反,智能体的糟糕表现特别反映了结构学习和潜伏状态推理的失败,这是元学习所涉及的核心功能。
开源代码初始化应用:
代码语言:javascript复制$ git clone https://github.com/deepmind/dm_alchemy.git
$ pip install wheel
$ pip install --upgrade setuptools
$ pip install ./dm_alchemy
# To also install the dependencies for the examples/, install with:
$ pip install ./dm_alchemy[examples]
Once dm_alchemy is installed, to instantiate a dm_env instance run the following:
代码语言:javascript复制import dm_alchemy
LEVEL_NAME = ('alchemy/perceptual_mapping_'
'randomized_with_rotation_and_random_bottleneck')
settings = dm_alchemy.EnvironmentSettings(seed=123, level_name=LEVEL_NAME)
env = dm_alchemy.load_from_docker(settings)
Blog: https://deepmind.com/research/publications/alchemy
Github: https://github.com/deepmind/dm_alchemy
Paper: https://arxiv.org/pdf/2102.02926.pdf
完