Paper: Dopamine–a research framework for deep reinforcement Learning
Github: https://github.com/google/dopamine
论文的首页明显告诉我们,这是一篇Google出的论文(所以值得一读),该文作者提出了一种新的深度强化学习研究框架: 多巴胺(Dopamine),旨在于丰富DRL的多样性,该框架是一个开源的,基于tensorflow平台的的最先进的智能体实现平台,并通过深入研究RL中不同研究目标的分类来补充这一产品。虽然并非详尽无遗,但分析强调了该领域研究的异质性以及框架的价值。
Introduction
目前很多强化学习的研究主要集中在特定领域的决策,比如视觉识别后的控制(atari)等,由于复杂的相互作用的转变,为深度RL研究编写可重复使用的软件也变得更具挑战性。首先,写一个智能体需要一个architecure,比如用openai的baseline实现DQN,它的智能体由6个模块组成,其次,现在有很多算法可供选择,因此在一个实现中全面实现通常需要牺牲简单性。 最重要的是深度RL研究的日益多样化使得很难预见下一个研究项目可能具备的软件需求。
这篇文章提出的多巴胺的目的是为深度强化学习提供一个基础研究,它强调的是紧凑,而不是全面,第一个版本由12个python文件,这些为Arcade学习环境提供了最先进的,基于价值的智能体的测试实现。该代码旨在为该领域的新手容易理解,同时为所有智能体提供交互式笔记本,训练模型和可下载的训练数据,以及包括以前发布的学习曲线的源。
同时作者确定了不同的研究目标,并讨论了支持这些目标的代码的期望:architecture research, comprehensive studies, visualization, algorithmic research, and instruction,并在设计Dopamine时考虑了最后两个目标,他们的研究只在于在深层RL框架生态系统中扮演着独特的角色。
深度强化学习的软件研究
深度学习社区现已确定了许多对其研究目标至关重要的操作:组件模块化,自动区分和可视化等,由于强化学习是一个比较新的领域,导致在对软件的共识一直很elusive(难懂的;难捉摸的),该文不会详尽的去解释,但强调了该研究自然属性的多样性。为了能够对重点突出研究,作者仅从下面两个方面研究:
- 深度强化学习的基础研究。
- 应用于或评估模拟环境。
同时,该文的研究环境为:Arcade Learning Environment(该环境是一个为很多研究者提供实现atari游戏智能体的简单的框架:Arcade Learning Environment,
case研究
所谓的架构研究涉及组件之间的交互,包括网络拓扑,以创建深度RL代理。 DQN在使用代理体系结构方面具有创新性,包括目标网络,重放内存和Atari特定的预处理。 从那时起,如果没有预料到代理由多个交互组件组成就变得司空见惯了,通常情况下从以下三个方面着手:
- Algorithmic research 架构研究
- Comprehensive studies
- Visualization
不同目标的不同软件的研究从下面四个角度开始
- Comprehensive studies
- Architecture research
- Algorithmic research
- Conclusions.
多巴胺(Dopamine)
在多巴胺的设计中,google 设计它满足了两个条件:自给自足且紧凑、可靠且可重复:
自给自足且紧凑可以帮助研究者实现一个简单的框架,并且可以集中进行算法研究,同时可靠则保证了实验、算法的结果具有trust。
多巴胺的整体结构设计
其中:蓝盒子是软件组件。 黄色框表示组成软件组件的文件名; 有向箭头表示类继承,而括号中的数字表示非注释Python行的数量。
- Runner类管理代理和ALE之间的交互(例如,采取步骤和接收观察)以及簿记(例如,分别通过检查指针和记录器进行检查点和记录)。
- Checkpointer负责定期保存实验状态,使故障后能够正常恢复,并重新学习重量。
- 记录器负责将实验统计(例如,累积的培训或评估奖励)保存到磁盘以进行可视化。
- Colab提供交互式笔记本,以便于这些统计数据的可视化。
可靠且可重复:
作者为所有代码库提供了一整套测试,代码覆盖率超过98%。除了帮助确保代码的正确性之外,这些测试还提供了另一种形式的文档,补充了随框架提供的常规文档和交互式笔记本。
多巴胺使用gin-config 【config过程】来配置不同的模块。 Gin-config是参数注入的简单方案,即动态更改方法的默认参数。 在多巴胺中,在单个文件中指定实验的所有参数。 下面代码显示了默认DQN代理设置的配置示例(附录D中提供了所有代理的完整gin-config文件)
DQNAgent.gamma = 0.99
DQNAgent.epsilon_train = 0.01
DQNAgent.epsilon_decay_period = 250000 # agent steps
DQNAgent.optimizer = @tf.train.RMSPropOptimizer()
tf.train.RMSPropOptimizer.learning_rate = 0.00025
Runner.sticky_actions = True
WrappedReplayBuffer.replay_capacity = 1000000
WrappedReplayBuffer.batch_size = 32
基准线对比
作者在探索的目的不是提供一组最佳的超参数,而是提供一致的集合作为基线,同时促进超参数探索的过程。下图是实验的数据显示:
同时作者也将已发布设置的结果与默认设置进行比较(下图),平均超过5次运行。 在每个游戏中,已发布和默认设置之间的y-scales是不同的; 这主要是因为默认设置中使用了粘滞action。
重新审视ARCADE学习环境:一个测试案例
Episode终止
当一个人正常停止游戏时,ALE认为一个episode完成:当他们完成游戏或者用尽生命时。 将这种终止条件称为“游戏结束”。 Mnih等引入了一种称为生命损失的启发式方法,当玩家失去生命时,它会在重放记