Python中5种强化学习框架

2025年1月4日 | 阅读 9 分钟

强化学习是机器学习的一个基本子领域。它主要应用于动作层面,指的是在特定奖励的参考下,根据环境判断要采取的最佳可能行动。人们利用它来确定软件或机器在给定环境中应该做出什么样的适当动作或决策。监督学习与强化学习不同,因为在前者中,训练数据集附带了解决方案,并且模型通常使用要完成任务的实际解决方案进行训练;而在后者中,没有解决方案,但强化学习代理会自行开发执行给定任务的最佳策略。否则,它将从经验中学习,特别是当它缺乏训练数据集时。首先,这是对强化学习(或 RL,正如它更常被称为的)领域的极其简化的概述,它可以被视为决策的科学。这涉及到如何在环境中行动,以便获得最高的奖励。在 RL 中,通过机器从采用试错方法的机器学习系统中收集的数据会被累积。与机器学习系统中的监督学习或无监督学习过程不同,在 RL 中,数据不是输入。强化学习的范畴包括基于结果的学习和选择下一步行动。每次动作后,算法都会因其做出的决定而受到惩罚,或者会收到一条评论,表明该决定是正确、无效还是错误。对于自动系统需要在几乎没有人为输入的情况下在战术层面做出大量决策的情况,这是一种很好的技术。另一方面,强化学习是一种完全自我的改进技术,可以被描述为一种“试错”的学习类型。它旨在实现目标,并专注于获得最高水平的收益;换句话说,它是学习过程中的一种培训活动,旨在取得最佳结果。

KerasRL

KerasRL 是一个深度强化学习 Python 库。它包含了许多先进的 RL 算法,并与深度学习框架 Keras 无缝集成。

此外,KerasRL 从根本上就兼容 OpenAI Gym。当然,这意味着你可以相当轻松地评估甚至尝试各种算法。

要安装 KerasRL,只需使用 pip 命令即可,

让我们看看 KerasRL 是否符合标准:让我们看看 KerasRL 是否符合标准

  • 已经开发了许多最先进的强化学习 (SOTA RL) 算法。
  • 截至今日,KerasRL 已实现以下算法:深度 Q 学习 (DQN) 及其扩展,如 Double 和 Dueling。使用的模型恰当地命名为深度确定性策略梯度 (DDPG)。FF 算法的一个变体是连续 DQN (CDQN,也称为 NAF)。交叉熵方法 (CEM) Deep SARSA 正如你可能注意到的,KerasRL 缺少两个重要的代理:PPO 和 Actor-Critic 方法,包括 DDPG 算法的 Actor-Critic 架构。
  • 论文、文档和指南:如果存在各种教程和示例,那么它们应该被文档化,以便人们可以参考。代码几乎是自文档化的,而且是免费软件,这很棒。然而,我认为它仍然有点缺乏系统性,因为一些重要方面没有被描述,即参数和教程。然而,在实践示例方面,情况并不那么令人满意。你只需要按照示例创建一个新的代理,然后将其添加到 rl.Agents 中。
  • 支持的环境数量:KerasRL 最初设计为仅在 OpenAI Gym 上运行,但现在也可以与 Gandalf 一起使用。由于环境定义得如此具体,如果你想在任何其他环境中运行代理,你必须修改代理本身。
  • 日志和跟踪工具支持:尚未实现日志和跟踪工具的技术功能支持。但是,你可以使用 Neptune 来跟踪你的实验。
  • 矢量化环境功能:包含矢量化环境功能。
  • 定期更新:该库的最后更新是在一年多以前,似乎该库不再频繁更新。

总而言之,可以说 KerasRL 具有合理的实现。然而,一些有趣的方面,例如可视化工具、新架构和现有架构的更新,都被忽略了。你可能应该使用另一个库。

Pyqlearning

Pyqlearning 是一个实现 RL 的 Python 库。它专注于 Q-learning 和多智能体深度 Q 网络。

该库在 Pyqlearning 中,它为设计者提供组件,而不是为最终用户提供最先进的黑盒学习。因此,目前的库是一个相当具有挑战性的库。你可以用它来创建一个信息搜索算法,例如在游戏 AI 或网页爬虫中。

要安装 Pyqlearning,只需使用 pip 命令即可:要安装 Pyqlearning,只需使用 pip 命令

让我们看看 Pyqlearning 是否符合标准

  • 实例化了许多 SOTA RL 算法。
  • 截至今日,Pyqlearning 已实现以下算法: DQN 及其变体(EG 和 GB)。确切地说,在这里,您可以看到 Pyqlearning 库非常简单,只有一个关键代理。在最好的情况下,该库可以说是不够的。
  • Pyqlearning 的当前版本有两个实例,用于不同的任务和两个教程:两个示例是深度 Q 网络中的迷宫求解和追逐-逃跑游戏。你可以在官方文档或论文中找到它们。文档似乎有所欠缺,因为重点在于数学方面,而不是库及其应用。
  • Pyqlearning 是一个可供开发人员舒适地根据自己的喜好进行调整的免费库。源代码可在 Github 社交平台上找到。代码缺少注释。要识别如何修改它相当具有挑战性。也许教程可以做到这一点,但是。
  • 支持的环境数量:另一个优点是,由于该库是中立的,因此可以轻松地集成到几乎任何环境中。
  • 监控和编译工具很有用:说到杂项应用程序,教程的作者更喜欢简单的日志记录包。pyqlearning 不支持其他日志和跟踪工具,例如 TensorBoard。因此,Pyqlearning 没有矢量化环境功能。
  • 定期更新:该库正在维护中。正如前面提到的,最后一次更新是在两个月前。然而,开发过程看起来进展缓慢。

总而言之,Pyqlearning 相当薄弱。它不是一个会被社会频繁使用的库。因此,你很可能应该使用其他东西。

TensorForce

Tensorforce 是一个基于 Google 的 Tensorflow 的深度 RL 工具,Tensorflow 也是一个开源工具。它非常容易使用,并有可能成为最好的强化学习库之一。

Tensorforce 的关键设计选择使其与其他 RL 库不同:Tensorforce 的关键设计选择使其与其他 RL 库不同

  • 模块化组件化设计:大多数时候,它意味着实现尽可能通用和灵活。
  • RL 算法与应用的隔离:这些算法不知道输入(状态/观察)和输出(动作/决策)的类型和形式,也不知道它们如何与应用程序交互。

要安装 Tensorforce,只需使用 pip 命令即可:要安装 Tensorforce,只需使用 pip 命令

让我们看看 Tensorforce 是否符合标准:让我们看看 Tensorforce 是否符合标准

  • 此指标指代代理中实现的 SOTA RL 算法的数量。
  • 截至今日,Tensorforce 已实现以下算法集
    • 强化学习,特别是 Q-Learning 及其变体:深度 Q-Learning (DQN)、Double 和 Dueling。
    • Vanilla Policy Gradient (PG)
    • DDPG 或深度学习确定性策略梯度
    • DQN 的一个常见扩展是我们已经介绍过的,称为连续 DQN 或 CDQN,或 NAF。
    • 评估 Actor-Critic ( A2C 和 A3C)
    • 更具体地说,它是 Trust Region Policy Optimization (TRPO)。
    • Proximal Policy Optimization (PPO)
      然而,你可能已经注意到 Tensorforce 不包含 SAC 的实现。除此之外,它堪称完美。
  • 教程、示例和官方文档的可用性:首先,由于存在简单的示例和教程,Tensorforce 相对容易上手。官方文档的布局看起来很全面,而且易于搜索。由于可读代码的意图应该是普遍存在的,因此轻松增加该代码的能力应该是关键要素。
    Tensorforce 的结构因其模块化而非常有益。这些组件中的每一个,例如网络、模型和运行器,都彼此独立。因此,你可以轻松地更改它们。尽管如此,代码几乎没有注释,这可能是一个大问题。
  • 支持的环境数量:Tensorforce 支持许多环境,包括 OpenAI Gym、OpenAI Retro 和 DeepMind Lab。它还有文档可以帮助你集成到其他环境中。
  • 日志和跟踪工具增强:我们支持 TensorBoard 和其他日志/跟踪工具。
  • 矢量化环境功能:具体来说,Tensorforce 支持矢量化环境功能。
  • 定期更新:Tensorforce 会定期更新。上次报告是在几周前完成的。

总而言之,Tensorforce 确实是强化学习最强大的工具之一。它很新,并且有所有必需的文档供你开始使用。

RL_coach

Reinforcement Learning Coach (Coach) 是 Intel AI Lab 开发的一个高性能、开源的 RL Python 库,包含许多最先进的算法。

它提供了一套易于使用的 API,用于 RL 实验和新算法。该库的组成部分,如算法、环境和多种神经网络架构,都是模块化的。因此,对现有组件进行扩展和重用非常容易。

要安装 RL_coach,请在命令提示符中键入以下命令

但是,你应该查看官方安装教程,因为其中有几个先决条件。

让我们看看 Coach 是否符合标准

  • 实现的 SOTA RL 算法数量: RL Coach 实现了一系列算法
    • Actor-Critic
    • 行为克隆
    • Bootstrapped DQN
    • Categorical DQN
    • 条件模仿学习
    • 深度确定性策略梯度
    • Double DQN
    • Rainbow
    • Wolpertinger
      正如你所见,RL_coach 提供了各种各样的算法。
  • 官方文档中提供了教程和示例:该文档为 RL_Coach 库提供了补充教程。此外,RL_Coach 中还有一套教程。这使得初学者可以轻松开始使用 RL_Coach。
    文档包含可读的代码,易于定制。RL_Coach 是一个开源库,并利用了模块化设计;该库中的代码注释较少。定制代码可能是一项艰巨的任务。
  • RL_Coach 库支持许多环境。

TFAgents

TFAgents 是一个专门的 RL 系统,它用 Python 实现,以简化创建、部署和测试 RL 算法的过程。它被描述为具有模块化设计,并且可以帮助提供特别精炼的组件,这些组件可以轻松修改和进一步改进。

目前,TFAgents 仍在开发中,但所描述的组件集已将 TFAgents 置于所有其他可用的 RL 库之上。

要安装 TFAgents,只需使用 pip 命令:TFAgents 可通过以下 Python pip 命令轻松安装

让我们看看 TFAgents 需要符合哪些标准

  • SOTA RL 算法实现数量。
  • 到目前为止,TFAgents 已实现多个算法

     
    • DDPG(深度确定性策略梯度)
    • TD3
    • SAC(软 Actor-Critic)
    • REINFORCE
  • 官方文档的可用性、教程和示例的出现:TFAgents 为每个主要组件都有一系列教程。然而,官方文档的条理似乎不足,我甚至可以说没有足够的文档。尽管如此,教程和简单的示例达到了预期的效果,但缺乏良好的文档,这仍然是一个缺点。
  • 易于修改的内聚语言:代码中有许多注释;此外,实现几乎没有不适之处。比较这三者的组件,TFAgents 似乎拥有最好的库代码。
  • 支持的环境数量:该库是独立的。正因如此,你可以轻松地将其集成到任何地方,因为它即插即用。
  • 写作和监控工具支持:鼓励使用日志和跟踪系统。
  • 矢量化环境功能:支持矢量化环境。
  • 定期更新:我们还要指出,TFAgents 仍在积极开发中。最后一次更新是在几天前。

总而言之,TFAgents 是一个非常有前途的库。它必须配备所有必要的工具,以便在购买或获取后即可开始使用。