炼数成金 门户 商业智能 强化学习 查看内容

TensorFlow Agents日前开源,在TensorFlow中构建强化学习算法

2017-9-12 16:27| 发布者: 炼数成金_小数| 查看: 21720| 评论: 0|来自: 雷锋网
摘要: 用于在TensorFlow中构建并行强化学习算法的高效基础架构范例TensorFlow Agents日前开源,这个项目是由谷歌的两位研究员James Davidson、Vincent Vanhoucke,以及Danijar Hafner共同研发的。TensorFlow Agents为强化 ...
工具 Python 算法 架构 Tensorflow 强化学习
用于在TensorFlow中构建并行强化学习算法的高效基础架构范例TensorFlow Agents日前开源,这个项目是由谷歌的两位研究员James Davidson、Vincent Vanhoucke,以及Danijar Hafner共同研发的。

TensorFlow Agents
TensorFlow Agents为强化学习提供了优化的基础架构,它将OpenAI gym接口扩展到多个并行环境,并能在TensorFlow中训练智能体,进行批量计算。在这个项目中,我们提供BatchPPO,这是针对近端策略优化(Proximal Policy Optimization,PPO)的一个实现。

如果你在研究中使用了我们这个项目的代码,请引用我们之前发布的关于TensorFlow Agents的论文TensorFlow Agents: Efficient Batched Reinforcement Learning in TensorFlow,论文地址:https://drive.google.com/file/d/0B20Yn-GSaVHGMVlPanRTRlNIRlk/view

  @misc{hafner2017agents,
  title={TensorFlow Agents: Efficient Batched Reinforcement Learning in TensorFlow},
  author={Hafner, Danijar and Davidson, James and Vanhoucke, Vincent},
  year={2017}
  }

工具:Python 2/3, TensorFlow 1.3+, Gym, rumamel.yaml

说明
先执行如下代码复制数据库并运行PPO算法。
python3 -m agents.scripts.train --logdir=/path/to/logdir --config=pendulum

这里用的算法已经在配置中定义好了,其中pendulum利用了已有的PPO实现。可以在agents/scripts/configs.py中查看更多的预定义配置。

如果想要重新开始运行之前的任务,可以在最后的指令中增加--timestamp=标志,并提供你运行的目录名中的时间戳。

为了将度量可视化,需要从另一个终端启动TensorBoard,然后将浏览器指向http://localhost:2222:
tensorboard --logdir=/path/to/logdir --port=2222

如果要渲染视频,收集OpenAI Gym的统计数据上传至记分板,请输入以下代码:
python3 -m agents.scripts.visualize --logdir=/path/to/logdir/- --outdir=/path/to/outdir/

修正
这个项目的发布能让新的强化学习思想更容易实现。当修正代码之后,你可以从如下几个文件开始执行任务。
scripts/configs.py(指定任务和算法的实验配置)
scripts/networks.py(被定义为TensorFlow RNNCell的神经网络模型)
scripts/train.py(包含训练设置的可执行文件)
ppo/algorithm.py(PPO算法的TensorFlow图)

如果要运行所有的单元测试,请输入如下代码:
python3 -m unittest discover -p "*_test.py"
如果有更多问题,可以在 Github上提问。

执行
这次的发布还包括OpenAI Gym环境下的一个批处理接口,它能与TensorFlow无缝集成,实现高效的算法。这是通过如下核心组件实现的:
agents.tools.wrappers.ExternalProcess
agents.tools.wrappers.ExternalProcess是构造外部进程里的OpenAI Gym 环境的包装(wrapper),它可以调用step()、reset()以及属性访问,转发到进程中,然后等待结果,可以并行运行多个环境而不受Python全局解释器锁(global interpreter lock)的限制。

agents.tools.BatchEnv
agents.tools.BatchEnv能将OpenAI Gym接口扩展至多个环境中,它可以联合多个OpenAI Gym环境,用step()接受批量的动作,返回观察值、奖励、完成的标记和info对象。如果有多个独立的环境在外部进程中,它们将能被并行处理。

agents.tools.InGraphBatchEnv
agents.tools.InGraphBatchEnv将batch环境集成到TensorFlow图中,保证step()和reset()函数都可以被调用。观察值、最后的动作、奖励和完成的标记中的batch都存储在变量中,并作为可用的张量。

agents.tools.simulate()
agents.tools.simulate()将in-graph batch环境和强化学习算法融合成一步,可以在训练循环中调用,这减少了调用会话的数量,并提供了一种简单的方法来训练接下来的算法。

如果要理解这些代码,需要对TensorFlow的控制流运算(尤其是tf.cond(),tf.scan()和tf.control_dependencies())非常熟悉。
GitHub地址:https://github.com/tensorflow/agents

欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754

鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

  GMT+8, 2017-11-21 14:23 , Processed in 0.191416 second(s), 26 queries .