(给Python开发者加星标,提升Python技能)
来源:机器之心
强化学习通过使用奖励函数对智能体的策略进行优化,深度强化学习则将深度神经网络应用于强化学习算法。深度强化学习由于其可扩展性,受到科研界和工业界越来越多的关注,其应用包括简单的基于图像的游戏,和高度复杂的游戏如星际争霸,以及棋牌类游戏如围棋、德州扑克等,在机器人控制领域也逐渐被科研人员采用。
近日,为了让工业界能更好地使用前沿强化学习算法,Tensorlayer 强化学习团队发布了专门面向工业界的整套强化学习基线算法库---RLzoo。(TensorLayer 是基于 TensorFlow 的延伸库,用于对基本的神经网络构建和多样的神经网络应用进行更好的支持,未来将支持更多底层计算引擎。)
RLzoo 项目是自 TensorFlow 2.0 发布以来首个较全面的以 TensorLayer 2.0 搭配 TensorFlow 2.0 的强化学习开源算法库,该库目前同时支持 OpenAI Gym, DeepMind Control Suite 以及其他大规模仿真环境,如机械臂学习环境 RLBench 等。
据介绍,该项目是 TensorLayer 强化学习团队发布学术版强化学习算法库之后的又一开源项目,而这次开源的项目面向工业界需求为主。之前的学术版算法库以精简清晰的结构展示主要强化学习算法实现,并可轻便快捷的适用于新的学习环境;而这次的工业界版本库则以结构化的封装使得部署大规模基准测试更加简便,只需要几行代码就可以实现非常复杂的算法,给科研和工程人员提出和检验新算法带来方便。
RLzoo 通用算法接口(例:Soft Actor-Critic 算法在 CartPole-v0 环境)
贡献者来自帝国理工、北京大学和中科院,包括丁子涵、董豪、余天洋、黄彦华、张鸿鸣。
面向工业界 RLZoo:https://github.com/tensorlayer/RLzoo
面向学术界 DRL_tutorial:https://github.com/tensorlayer/tensorlayer/tree/master/examples/reinforcement_learning
Slack 交流群:https://app.slack.com/client/T5SHUUKNJ/D5SJDERU7
当前,TensorLayer 2.0 是基于 TensorFlow 2.0 的开源库,用于支持对神经网络层的封装和各种应用所需高级 API,未来将会支持更多的底层计算引擎。TensorLayer 2.0 的 Eager execution 模式和 Session 的取消使得神经网络的搭建过程更加灵活简便,而 TensorLayer 2.0 则在此基础上同时支持静态网络和动态网络的构建,支持整个开发工作流,以适应多样的科研和工业项目需要。在 TensorLayer 的基础上,RLzoo 实现了基本的策略和价值网络的搭建,以支持各种广泛应用的强化学习算法。在 RLzoo 所提供的公共函数中,策略网络和价值网络能够根据输入状态空间和动作空间的维度和类型,自适应的调整网络输入输出端口,能够更方便的部署到各种环境中训练。比如,对于 Atari 游戏中的图像输入,RLzoo 提供的网络会自动选择卷积神经网络模块进行预处理,提取低维特征作为后续网络的输入。同时,对于各种离散或连续动作输出,RLzoo 也能够自动选择相应输出端口,如对连续动作的 stochastic 策略,RLzoo 提供 Diagonal Gaussian 分布,对离散动作 stochastic 策略,RLzoo 提供 Categorical 分布,等等。
RLzoo 开源项目以方便用户对复杂的强化学习算法进行灵活配置为目标,其各种算法的学习参数、神经网络结构、优化器等都可以进行简单选择和替换,从而最大限度方便学术和工业界的调试、基准测试和使用。TensorLayer 为 RLzoo 提供了灵活的网络构建方式,使得强化学习算法的实现更加简便。未来,RLzoo 团队将开源对现有强化学习算法在各种学习环境下的测试对比及参数选定,实现更加透明的算法效果对比。
此次开源 RLzoo 中包括算法 Deep Q-Network (DQN), Double DQN, Dueling DQN, Prioritized Experience Replay (PER), Policy Gradient (PG), Actor-Critic (AC), Asynchronous Advantage Actor-Critic (A3C), Deep Deterministic Policy Gradient (DDPG), Twin Delayed DDPG (TD3), Soft Actor-Critic (SAC), Proximal Policy Optimization (PPO), Distributed PPO (DPPO), Trust Region Policy Optimization (TRPO)。团队将持续更新各种新型算法,以及学习环境,并欢迎大家的反馈和贡献。
Li Y . Deep Reinforcement Learning: An Overview[J]. 2017. (https://arxiv.org/abs/1701.07274)
强化学习的过程是智能体通过与环境交互,不断试错并提升决策能力的过程。通过观察状态,执行动作并获得回报,智能体根据某种学习方法不断进步并习得最优决策。深度强化学习是指将深度神经网络与强化学习相结合,利用神经网络的拟合能力和强化学习的决策能力,在广泛的任务上取得了优异的效果。强化学习算法可以分为 on-policy/off-policy,model-free/model-based,value-based/policy-based 等。这里我们按照 value-based/policy-based 的方式进行分类,如上图所示。
单纯 value-based 方法主要包括 Q-learning、SARSA 等,其与深度学习结合的算法主要为 DQN 及各种变体。这类方法的基本思路是建立值函数的线性或非线性映射,先评估值函数,再改进当前策略。这类方法的优点在于样本利用效率高,值函数估计方差小,不易陷入局部最优。但其缺点在于其动作空间通常为离散空间,连续空间通常无能为力,且 epsilon-greedy 策略容易出现过估计的问题等。
在开源库中团队实现了 DQN 以及一系列的改进算法:Prioritized Experience Replay 根据 TD 偏差给经验赋予权重提升学习效率;Dueling DQN 改进网络结构,将动作值函数分解为状态值函数 V 和优势函数 A,提升函数逼近效果;Double DQN 将动作选择和动作评估用不同参数实现,解决过估计问题;Retrace 修正 Q 值的计算方法,减小值估计的方差;Noisy DQN 给网络参数添加噪声,增加探索度;Distributed DQN 将 Q 值的估计细化为 Q 分布的估计。在基准库中我们将这些算法进行封装,统一到 DQN 算法内部,通过外部参数实现对算法细节的调整,可以快速实现不同算法间的全面比较。
单纯 policy-based 方法主要包括 stochastic policy gradient、 trust-region-based methods、演化算法等。其中 stochastic policy gradient 和 trust-region-based methods 是基于梯度的方法,演化算法是无梯度方法。这类方法通过直接对策略进行迭代计算,迭代更新策略参数直到累积回报最大化。这类方法相比纯 value-based 方法,其策略参数化简单,收敛性质更好,且适用于离散和连续的动作空间。其缺点在于轨迹方差大,样本利用效率低且易收敛到局部最优等。
这里团队实现了 Policy Gradient (PG)、Trust Region Policy Optimization (TRPO)、Proximal Policy Optimization (PPO) 等算法。其中 TRPO 和 PPO 在 PG 的基础上对更新步长作了约束,防止出现 policy collapse 的情形,使得算法更加稳定的上升。
Actor-critic 方法结合了 value-based 方法和 policy-based 方法的优点,利用 value-based 方法训练 Q 函数提升样本利用效率,利用 policy-based 方法训练策略,适用于离散和连续动作空间。可以将这类方法看作 value-based 方法在连续动作空间上的扩展,也可以看作 policy-based 方法对减少采样方差的改进。这类方法虽然吸收了二者的优点,同时也继承了相应的缺点,例如 critic 同样存在过估计问题,actor 存在探索不足的问题等。
这里我们实现了 AC 算法及其一系列改进:A3C 将 AC 算法作到异步并行,打乱数据间相关性,提升数据收集和训练速度;DDPG 继承 DQN 的 target network,actor 为确定性策略,训练更加稳定简单;TD3 引入 Double DQN 的方式和延迟更新策略,解决过估计问题;SAC 在 Q 值估计中引入熵正则化,提升探索能力。
此外,还有最大熵方法和策略/值迭代等方法。例如 SAC 便是 actor-critic 与最大熵的结合,value-based 和 policy-based 方法里也包含策略/值迭代的思想。具体算法和相关信息见下表。
在这次开源的基准库 RLzoo 中,所支持的环境包括 Openai Gym (Atari, Classic Control, Box2D, Mujoco, Robotics), Deepmind Control Suite, RLBench,主要的算法与环境的具体兼容情况如下表:
觉得本文对你有帮助?请分享给更多人
关注「Python开发者」加星标,提升Python技能
好文章,我在看❤️