作家
登录

基于TensorFlow打造强化学习API:TensorForce是怎样炼成的?

作者: 来源: 2017-07-17 12:45:27 阅读 我要评论

【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路!


本文将环绕一个实际的问题进话旧绍:应用强化进修的社区可以若何大年夜对脚本和单个案例的收集更进一步,实现一个强化进修 API——一个用于强化进修的 tf-learn 或 skikit-learn?在评论辩论 TensorForce 框架之前,我们将谈一谈启发了这个项目标不雅察和思惟。如不雅你只想懂得这个 API,你可以跳过这一部分。我们要强调一下:这篇文┞仿并不包含对深度强化进修本身的介绍,也没有提出什么新模型或谈论最新的最佳算法,是以对于纯研究者来说,这篇文┞仿可能并不会那么竽暌剐趣。

开辟念头

对深度强化进修、DQN、vanilla 策略梯度、A3C 等介绍文┞仿已经有很多了,比如 Karpathy 的文┞仿(http://karpathy.github.io/2016/05/31/rl/)对策略梯度办法背后的直不雅思惟就进行了很好的描述。别的,你也能找到很多可以赞助上手的代码,比如 OpenAI 上手智能体(https://github.com/openai/baselines)、rllab(https://github.com/openai/rllab)以及 GitHub 上很多特定的算法。

更常见的情况可能是将 TensorForce 用作驱动控制的外部应用库,是以无法供给一个情况句柄。对研究者来说,这可能无足轻重,但在计算机体系等范畴,这是一个典范的安排问题,这也是大年夜多半研究脚本只能用于模仿,而无法实际应用的根来源基本因。

然则,我们发明在强化进修的研究框架开辟和实际应用之间还存在一个巨大年夜的鸿沟。在实际应用时,我们可能会见临如下的问题:

  • 强化进修逻辑与模仿句柄的慎密耦合:模仿情况 API 是异常便利的,比如,它们让我们可以创建一个情况对象然后将其用于一个 for 轮回中,同时还能治理其内部的更新逻辑(比如:经由过程收集输出特点)。如不雅我们的目标是评估一个强化进修思惟,那么这就是合理的,但将强化进修代码和模仿情况分开则要艰苦得多。它还涉及到流程控制的问题:当情况就鹱?,强化进修代码可声调用它吗?或者当情况须要决定计划时,它会调用强化进修智能体吗?对于在很多范畴中实现的应用强化进修库,我们往往须要后者。
  • 固定的收集架构:大年夜多半实现案例都包含了硬编码的神经收集架构。这平日并不是一个大年夜问题,因为我们可以很直接地按照需求参加或移除不合的收集层。尽管如斯,如不雅有一个强化进修库可以或许供给声明式接口的功能,而无需修改库代码,那么情况就会好得多。此外,在有的案例中,修改架构(进出不测埠)要可贵多,比如当须要治理内部状况的时刻(见下文)。
  • 不兼容状况/动作接口:很多早期的开源代码都应用了风行的 OpenAI Gym 情况,具有平坦的状况输入的简单接口和单个离散或持续动作输出。但 DeepMind Lab 则应用了一种词典格局,一般具有多个状况和动作。而 OpenAI Universe 则应用的是定名关键事宜(named key events)。幻想情况下,我们想让强化进修智能体能处理随便率性数量的状况和动作,并且具有潜在的不合类型和外形。比如说,TensorForce 的一位作者正在 NLP 中应用强化进修并且想要处理多模态输入,个一一个状况在概念上包含两个输入——一张图像和一个对应的描述。
  • 不通明的履行设置和机能问题:写 TensorFlow 代码的时刻,我们很天然地会优先存眷逻辑。这会带来大年夜量反复/不须要的运算或实现不须要的中心值。此外,分布式/异步/并行强化进修的目标也有点不固定,而分布式 TensorFlow 须要对特定的硬件设置进行必定程度的人工调节。同样,如不雅最终有一种履行设备只须要声明可用设备或机械,然后就能在内部处理好其它一切就好了,比如两台有不合 IP 的机械可以运行异步 VPG。

明白一下,这些问题并不是要批驳研究者写的代码,因为这些代码本来就没计算被用作 API 或用于其它应用。在这里我们介绍的是想要将强化进修应用到不合范畴中的研究者的不雅点。

TensorForce API

TensorForce 供给了一种声明式接口,它是可以应用深度强化进修算法的稳健实现。在想要应用深度强化进修的应用中,它可以作为一个库应用,让用户无需担心所有底层的设计就能实验不合的设备和收集架构。我们完全懂得当前的深度强化进修办法往往比较脆弱,并且须要大年夜量的微调,但这并不料味着我们还不克不及为强化进修解决筹划构建通用的软件基本举措措施。

TensorForce 并不是原始实现结不雅的集合,因为这不是研究模仿,要将原始实现用在实际情况的应用中还须要大年夜量的工作。任何如许的框架都将弗成避免地包含一些构造决定计划,这会使得非标准的工作变得加倍末路人(抽象泄漏(leaky abstractions))。这就是为什么核心强化进修研究者可能更偏向于大年夜头打造他们的模型的原因。应用 TensorForce,我们的目标是获取当缁ゎ佳研究的┞符体偏向,包含个中的新兴看法和标准。

接下来,我们精深刻到 TensorForce API 的各个根本方面,并评论辩论我们的设计选择。

创建和设备智能体

from tensorforce import Configurationfrom tensorforce.agents import DQNAgentfrom tensorforce.core.networks import layered_network_builder# Define a network builder from an ordered list of layerslayers = [dict(type='dense', size=32),          dict(type='dense', size=32)]network = layered_network_builder(layers_config=layers)# Define a statestates = dict(shape=(10,), type='float')# Define an action (models internally assert whether# they support continuous and/or discrete control)actions = dict(continuous=False, num_actions=5)# The agent is configured with a single configuration objectagent_config = Configuration(    batch_size=8,    learning_rate=0.001,    memory_capacity=800,    first_update=80,    repeat_update=4,    target_update_frequency=20,    states=states,    actions=actions,    network=network)agent = DQNAgent(config=agent_config)	
			
 1/5    1 2 3 4 5 下一页 尾页

  推荐阅读

  必看!深入理解linux系统的目录结构就靠本文了

【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! 1、常用的重要目次Linux和Windows操作体系中的文件体系些不合,在进修应用linux之前,可以或许懂得这个不>>>详细阅读


本文标题:基于TensorFlow打造强化学习API:TensorForce是怎样炼成的?

地址:http://www.17bianji.com/lsqh/36233.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)