DeepMind发布Acme,高效分布式强化学习算法框架轻松编写RL智能体
DeepMind 本周发布了一个强化学习优化框架 Acme,可以让AI驱动的智能体在不同的执行规模上运行,从而简化强化学习算法的开发过程。
Acme 背后的工程师和研究人员共同撰写了一篇关于这项工作的技术论文,根据他们的说法,用这种方法创建智能体,并行性会更好。
强化学习可以让智能体与环境互动,生成他们自己的训练数据,这在电子游戏、机器人技术、自动驾驶机器人出租车等领域取得了突破。
随着所使用的培训数据量的增加,这促使设计了一个系统,使智能体与环境实例相互作用,迅速积累经验。DeepMind 断言,将算法的单进程原型扩展到分布式系统通常需要重新实现相关的智能体,这就是 Acme 框架的用武之地。
DeepMind研究员写道,「Acme 是一个用于构建可读、高效、面向研究的 RL 算法的框架。Acme 的核心是设计用于简单描述 RL 智能体,这些智能体可以在不同规模的执行中运行,包括分布式智能体。」
「通过发布 Acme,我们的目标是使学术界和工业实验室开发的各种 RL 算法的结果更容易为整个机器学习社区复制和扩展。」
Acme 框架要实现的目标?
研究者明确指出了Acme框架的高级目标:
1 实现方法和结果可重复性
2 简化新算法设计的方式
3 提高RL智能体的可读性
如何实现这一目标?
从最高层次来看,我们可以将 Acme 视为一个经典的强化学习接口,其作用是将 actor(比如一个动作选择智能体)连接到环境。
actor 是一个具有选择动作、观察并实现自我更新能力的简单接口。
从内部看,学习智能体可以拆分为「执行」和「学习」两部分。从表面上看,这使得我们在不同的多智能体之间重复使用 acting portion。
但是,更重要的是,这提供了一个可以对学习过程进行划分和并行化处理的关键边界。我们甚至可以从此处按比例缩小规模,并在没有环境,只有固定数据集的情况下无缝攻击批RL设置(batch RL setting)。
这些不同级别的复杂度的图示如下:
除了 Acme 的基础框架之外,研究人员还发布了用 Acme 框架创建的大量智能体的单进程实例。
通过跨越执行/学习边界,我们能够以分布式方式运行这些相同的智能体,过程中的改变最小。
Acme 框架首个版本主要针对学生和研究人员使用最多的单进程智能体。
研究者在 control suite、Atari 和 bsuite 等环境中对这些智能体进行了基准测试。
Acme 框架有哪些优势?
Acme是一组开发套件,用于培训强化学习智能体,用来解决复杂性和规模的问题,其组件用于从算法和策略到学习者等不同抽象层次来指导代理。
这样做可以让idea快速迭代,并在生产过程中对这些 idea 进行评估,主要是通过训练循环、强迫性日志记录和检查点。
一种特殊类型的 Acme actor 包括执行和学习两个组件``它们都被称为「智能体」``它们的状态更新是由learner组件中的一些步骤触发的。也就是说,智能体大部分情况会把他们的行动选择权交给他们自己的执行组件。
在 Acme 框架中,actors与环境密切交互,通过观察环境,执行动作,反过来为环境提供素材。
在观察了随后发生的变化后,actors 有机会更新其状态,这通常与其行动选择策略有关,这些策略决定了它们为应对环境而采取的行动。
Acme 提供了一个位于 actor 和 learner 组件之间的数据集模块,该模块由一个名为 Reverb 的低级存储系统支持,DeepMind 本周也刚刚发布这个系统。此外,该框架建立了一个接入Reverb的通用接口,使不同风格的预处理和观察数据的持续聚合成为可能。
Reverb是一个专为机器学习研究设计的高效、易用的数据存储和传输系统。Reverb主要作为分布式强化学习算法的经验回放(experience replay)系统,但该系统也支持多种数据结构表示,如FIFO、LIFO和优先级队列等。
在 Acme 当中,执行、学习和存储组件被划分为不同的线程或进程,这带来了两个好处: 环境交互与学习过程非同步发生,以及数据生成的加速。
在其他地方,Acme允许从学习到执行以任何速率运行,只要流程保持在一定的定义公差内就可以不受阻碍。例如,如果一个进程由于网络问题或资源不足而落后于另一个进程,速率限制器将阻塞落后者,而另一个进程将赶上来。
除了这些工具和资源,Acme 还附带了一组示例智能体,作为各自强化学习算法以及强大研究基线的参考实现。
DeepMind研究人员写道,「通过提供这些... ... 我们希望 Acme 将有助于提高[强化学习]的可再生性地位,并为学术研究者提供简单的组件来创造新的智能体。」「此外,我们的baseline应该提供额外的衡量标准,以衡量该领域的进展。」