当前位置: 首页 > 科技观察

5个Python强化学习框架

时间:2023-03-21 00:52:49 科技观察

从头开始??编写您自己的强化学习实现可能需要大量工作,但您不需要这样做。有许多很棒、简单且免费的框架,可让您在几分钟内开始学习。有很多用于监督和非监督机器学习的标准库,例如Scikit-learn、XGBoost甚至Tensorflow,它们可以让您立即入门,并且可以在网上找到支持日志。遗憾的是,强化学习(RL)并非如此。不是没有框架,其实有很多RL框架。问题是目前还没有标准,所以很难在网上找到支持来开始、解决问题或定制解决方案。这可能是因为尽管RL是一个非常受欢迎的研究课题,但它仍处于工业实施和使用的早期阶段。但这并不意味着没有强大的框架可以帮助您入门并使用RL来解决您喜欢的任何问题。我在这里列出了一些我逐渐了解和使用的框架,以及它们的优缺点。我希望这能让您快速了解当前可用的RL框架,以便您可以选择更适合您需求的框架。1.Keras-RL我必须承认,在整个列表中,这是我最喜欢的。在我看来,它是迄今为止在几种RL算法的代码实现中最容易理解的,包括DeepQ-Learning(DQN)、DualDQN、DeepDeterministicPolicyGradient(DDPG)、ContinuousDQN(CDQNorNAF)、Cross-熵方法(CEM,决斗DQN)和SARSA。当我说“最容易理解的代码”时,我的意思是不使用它,而是自定义它并将其用作项目的构建块*。Keras-RLgithub还包含一些您可以立即开始使用的示例。它当然使用Keras,您可以将它与Tensorflow或PyTorch一起使用。不幸的是,Keras-RL维护得不好,其官方文档也不是最好的。这激发了该项目的一个分支,称为Keras-RL2。(*)我用这个框架做什么?嗯,很高兴你问-是我吗?我使用此框架创建了一个自定义的TutoredDQN代理,您可以在此处阅读更多相关信息。2.Keras-RL2Keras-RL2是Keras-RL的一个分支,因此它与Keras-RL2共享对相同代理的支持,并且易于定制。这里最大的变化是Keras-RL2得到了更好的维护,并使用了Tensorflow2.1.0。不幸的是,这个库没有文档,即使是Keras-RL的文档也可以很容易地在这个fork中使用。3.OpenAIBaselinesOpenAIBaselines是OpenAI的一套高质量RL算法实现,OpenAI是AI,尤其是RL研发领域的领先公司之一。它的构想是为了让研究人员能够轻松地比较他们的RL算法,以OpenAI的最先进技术(即名称)为基准。该框架包含许多流行代理的实现,例如A2C、DDPG、DQN、PPO2和TRPO。>[来自Stablebaselines基准测试的图。]不利的一面是,OpenAIBaselines的文档很少,尽管代码上有很多有用的注释。此外,由于它被开发为用作基线而不是构建块,如果您想为您的项目自定义或修改某些代理,它不是那么代码友好。事实上,下一个框架是解决大多数这些问题的基础的一个分支。4.StableBaselines>[图片来自StableBaselines文档。]StableBaselines是OpenAIBaselines的一个分支,具有主要的结构重构和代码清理。其官方文档站点中列出的更改如下:符合PEP8(统一代码样式)的所有算法的统一结构文档化的函数和类更多测试和更多代码覆盖率附加算法:SAC和TD3(+用于DQN、DDPG、HER支持对于SAC和TD3)我过去曾亲自使用过“稳定基线”,并且可以确认它确实有据可查且易于使用。一个liner甚至可以用来为OpenAIGym环境训练代理:fromstable_baselinesimportPPO2PPO2model=PPO2('MlpPolicy','CartPole-v1').learn(10000)5.AcmeAcme来自DeepMind,可能是最著名的强化学习公司.因此,它是为构建可读、高效、面向研究的RL算法而开发的,并且包含几个最先进的代理的实现,例如D4PG、DQN、R2D2、R2D3等。Acme使用Tensorflow作为后端,一些代理实现也使用JAX和Tensorflow的组合。Acme在开发时牢记使其代码尽可能可重用,因此它的设计是模块化的并且易于定制。它的文档并不广泛,但足以向您很好地介绍该库,并且有一些示例可以帮助您开始使用JupyterNotebooks。总结这里列出的所有框架都是任何RL项目的可靠选择。使用哪一个取决于您的偏好和您想要使用的功能。为了更好地可视化每个框架及其优缺点,我做了以下可视化总结:Keras-RL—Github:RL算法的选择:☆☆☆文档:☆☆☆定制:☆☆☆☆☆维护:☆后端:Keras和Tensorflow1.14。Keras-RL2—Github:RL算法的选择:☆☆☆文档:不可用定制:☆☆☆☆☆维护:☆☆☆后端:Keras和Tensorflow2.1.0。OpenAI基准测试—Github:RL算法的选择:☆☆☆文档:☆☆定制:☆☆维护:☆☆☆后端:Tensorflow1.14。稳定的基线——Github:RL算法的选择:☆☆☆☆文档:☆☆☆☆☆定制:☆☆☆维护:☆☆☆☆☆后端:Tensorflow1.14。Acme-Github:RL算法的选择:☆☆☆☆文档:☆☆☆定制:☆☆☆☆维护:☆☆☆☆☆后端:Tensorflowv2+和JAX如果你已经决定使用哪个框架,那么现在只需要一个环境。您可以从OpenAIGym开始,它已经在这些框架的大多数示例中使用,但如果您想在其他任务(例如交易股票、建立网络关系或提出建议)上尝试RL,您可以找到易于使用的列表。