0
雷锋网 AI 科技评论按:近日,Github 上开源的一个专注模块化和快速原型设计的深度强化学习框架 Huskarl 有了新的进展。该框架除了轻松地跨多个 CPU 内核并行计算环境动态外,还已经成功实现与 OpenAI Gym 环境的无缝结合。TensorFlow 发布了相应的文章来报道此研究成果,雷锋网 AI 科技评论将其编译如下。
深度学习革命在计算机视觉和自然语言处理等领域取得了许多最新的进展和突破。尤其是在深度强化学习这个特别的领域,我们已经看到了非凡的进展。2013 年 DeepMind 出版了「用深度强化学习来玩 Atari」,这个模型只通过观看屏幕上的像素,就可以学习如何玩 Atari 游戏。三年后,AlphaGo 击败了围棋世界冠军,这一举动吸引了全球观众的注意。在这之后,AlphaZero 又打破了从人类比赛中学习的规定,将自我学习推广到任何完美的信息游戏,并有效地成为围棋、国际象棋和日本将棋的世界冠军。Huskarl 在这样的深度学习热潮之下,有了更深入的研究进展。
模型框架
Huskarl 是一个新的开源框架,用于深度强化学习训练,专注于模块化和快速原型设计。它基于 TensorFlow 2.0 构建,并使用了 tf.keras API 以实现其简洁性和可读性。
Huskarl 最近在 PoweredByTF 2.0 挑战赛(https://tensorflow.devpost.com/)中获得第一名,该挑战赛意在让研究人员更易于对深度强化学习算法进行运行、测试、优化和对比的操作。
Huskarl 与 TensorFlow 抽象出计算图的管理以及 Keras 创建高级模型的想法类似,它抽象出了智能体与环境的交互。这便使用户能够专注于开发和理解算法,同时还可以防止数据泄漏。Huskarl 可以做到与 OpenAI Gym 环境的无缝结合,其中也包括了 Atari 环境。下面是创建并可视化深度强化学习网络(DQN)智能体所需的完整代码,该智能体将学习 cartpole 平衡问题。
创建并可视化深度强化学习网络(DQN)智能体的完整代码
Huskarl DQN 智能体学习平衡 cartpole(完整动态图点击原文链接查看)
目前 Huskarl 支持的一些算法可以在三类可调智能体上运行。
第一类是 DQN 智能体,它可以实现深度 Q 学习(https://arxiv.org/abs/1509.06461)以及多种增强功能,例如:可变步长跟踪(variable-step traces)、双 DQN 和可调整的对抗架构(dueling architecture)。DQN 是一种非策略算法,我们的实现默认使用优先经验回放(Prioritized experience replay)。DQN 智能体主要处理离散动作空间的问题。
第二类是 A2C 智能体,它采用了同步、多步的「优势动作-评论」(Advantage Actor-Critic)模型,这是一种基于策略的算法。(有关 A2C 与 A3C 之间差异的更多信息,可参阅此博客文章 https://openai.com/blog/baselines-acktr-a2c/)Huskarl 允许像 A2C 这样基于策略的算法轻松地同时从多个环境实例中获取经验数据,这有助于数据的整理过程变得更加稳定,从而更利于学习。
第三类是 DDPG 智能体,它采用了变步长跟踪的深度确定性策略梯度(Deep Deterministic Policy Gradient)算法,同时在默认情况下也使用优先经验回放。DDPG 智能体专用于处理连续动作空间的问题。
Huskarl DDPG 智能体学习提升钟摆
Huskarl 可以轻松地跨多个 CPU 内核并行计算环境动态,这非常很有助于如 A2C 和 PPO 这类策略性(从多个并发经验源中学习数据)算法的加速。首先,如果要同时使用多个环境实例,我们只需为基于策略的智能体和模拟器提供所需数量的环境实例;然后将环境实例分布在多个进程上,这些进程将在可用的 CPU 内核上自动并行化;之后我们只需在调用 sim.train()函数时为 max_subprocesses 参数提供所需的值即可,详情如下面的代码段所示。
Huskarl 实现策略性算法加速的代码段(跳转原文可查看完整代码)
另外需要注意的是,为每个环境实例使用不同的策略非常简单,无需提供单个策略对象,只需提供策略列表即可。
Huskarl A2C 智能体同时学习 16 个环境实例来平衡 cartpole。其中,较粗的蓝线表示使用贪婪的目标政策获得的奖励,当在其他 15 个环境中起作用时使用高斯ϵ-贪婪(gaussian epsilon-greedy)策略,epsilon 均值从 0 变为 1
但如果在某些简单环境中,如 cartpole 环境,强行使用多个进程并行会因进程间通信成本增大而减慢训练速度。因此,只有在计算成本较高的环境下,这种多进程并行才能发挥有利的作用。
所有可运行的智能体都会依赖于每个问题规范,因此,其使用的神经网络由用户提供。这些神经网络是多样化的(简单、浅显、复杂、富有深度均可)。智能体通常会在内部向所提供的神经网络添加一个或多个层,以便正确地执行它们的预期功能。此外,所有算法都充分利用了自定义 Keras 损失,使其运行能够尽可能快速与简洁。目前我们有三个示例(每个智能体一个),这些示例使用了微小的、完全连接的网络来展示智能体的功能,甚至是使用简单模型,结果也不会改变。
目前,Huskarl 支持 DQN(Deep Q-Learning Network)、Multi-step DQN、Double DQN、A2C(Advantage Actor-Critic)、DDPG(Deep Deterministic Policy Gradient)等算法,PPO(Proximal Policy Optimization)、Curiosity-Driven Exploration 等算法仍在计划中。
Huskarl 支持算法列表
我们计划加入更新颖的深度强化学习算法,例如近端策略优化算法(PPO,Proximal Policy Optimization),柔性致动/评价算法(SAC,Soft Actor-Critic)和双延迟深度确定性策略梯度(TD3,Twin Delayed Deep Deterministic Policy Gradient)。
此外,我们还计划引入内在的奖励方法,如好奇心方法(curiosity)和赋权方法(empowerment)。其目的是希望用户能够更轻松地交换和组合深度强化学习算法中的不同组件,例如经验回放、辅助奖励以及像堆叠乐高积木一样的智能体任务。同时,我们还计划在未来开源多智能体环境和 Unity3D 环境。
原文地址
Github 地址
雷锋网 AI 科技评论
雷峰网原创文章,未经授权禁止转载。详情见转载须知。