OpenAI Gym入门级导游 | 附PDF手册下载 | 山人刷强化 | 4th
Gym入门手册PDf下载
公众号回复20180616
Gym是一个强化学习算法开发和对比的工具箱。该环境支持智能体的各种训练任务,从走路到玩游戏,如Pong、Pinball等。
强化学习(RL,Reinforcement Learing)本身是什么,有什么优势在前面的文章中已有介绍(历史文章清单见文末),这里只划两个重点:
1.RL是一个非常通用的、包括所有需要做一系列决策的问题。
2.RL算法开始在许多非常复杂的环境中实现了很棒的效果。
说RL是为了引出Gym,Gym的出现是OpenAI组织为了解决RL中两个瓶颈问题而推出的环境平台。
Gym定位
1.需要更好的benchmarks.,从而为RL提供成长的土壤,一如CNN爆发时的ImageNet一样。
2.发表成果中缺少标准化的环境,导致了复现成果困难、阻碍了研究者之间的交流、继承和进展。
特色
1)开源了强化学习任务的交互环境。Gym库提供了便于使用的强化学习任务组件。
例如:
import gym env = gym.make("Taxi-v1")
observation = env.reset()
for _ in range(1000):
env.render()
action = env.action_space.sample() # your agent here
(this takes random actions)
observation, reward, done, info = env.step(action)
2)我们提供环境,你提供算法。你可以使用已有的数字化计算库实现智能体,如Tensorflow或Theano。
1.安装
安装非常方便,可以通过pip、Github的clone等方式,具体参见入门手册。
2.环境
这里一些主要环境,还有很多大家自己摸索:
Classic control and toy text
提供了一些RL相关论文中的一些小问题,开始学习Gym从这开始!
Atari
这里提供了一些小游戏,比如我们小时候玩过的小蜜蜂,弹珠等等。这些问题对RL研究有着很大影响!
Board games
提供了Go这样一个简单的下棋游戏,由于这个问题是多人游戏,Gym提供有opponent与你训练的agent进行对抗。
2D and 3D robots
机器人控制环境。 这些问题用 MuJoCo 作为物理引擎。
当然还有很多好玩的问题,比如CNN的自动调参、Minecraft等。
举个栗子:立摆平衡环境
立摆平衡环境,CartPole-v0,可提供一个1000步长的立摆环境,代码和动画如下所示。调用代码如下
import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
env.render()
env.step(env.action_space.sample()) # take a random action
生成环境视频如下:
3.观察
Gym的step函数提供了我们训练算法所需要的反馈,主要有四类值。
observation(object)
实体在特定环境中的返回值
reward(float)
执行动作的反馈奖励信息
done(boolean)
是否需要重置环境的信号,如游戏中已经game over等
info(dict)
用于调试的诊断信息,也可以用来调试学习算法,不过在环境中不允许用这类信息训练算法。
4.空间
每个环境的定义是由两个空间组成的:动作空间action_space和观察空间observation_space。详细设计代码参见入门手册。
授人以渔
上手Gym两种姿势:1)入门手册;2)Github
Gym入门手册PDF下载:微信公众号回复20180616
Github地址:https://github.com/openai/gym
OpenAI Gym网址:https://gym.openai.com/
参考资料
OpenAI Gym网址:https://gym.openai.com/
Open AI Gym简介:http://www.cnblogs.com/yifdu25/p/8179861.html
- 1050: [HAOI2006]旅行comf
- 某厂2016实习招聘安全技术试题答案及解析
- 3732: Network
- 洛谷P3388 【模板】割点(割顶)(tarjan求割点)
- 每天学一点Docker(3)(制作你的第一个容器)
- 1635: [Usaco2007 Jan]Tallest Cow 最高的牛
- 1653: [Usaco2006 Feb]Backward Digit Sums
- 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场
- 1682: [Usaco2005 Mar]Out of Hay 干草危机
- 1637: [Usaco2007 Mar]Balanced Lineup
- AutoFac在项目中的应用
- 每天学一点Docker(5)——了解Docker架构
- 跨站请求伪造(CSRF/XSRF)
- 我这么玩Web Api(一)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 深入解析Android中的setContentView加载布局原理
- Android编程之自定义ProgressBar示例
- Android自动获取输入短信验证码库AutoVerifyCode详解
- Android编程实现对话框形式进度条功能示例
- Android ButtonOnClick事件的写法总结
- Android 自定义弹出菜单和对话框功能实例代码
- linux文件管理命令实例分析【权限、创建、删除、复制、移动、搜索等】
- Android编程操作手机通讯录的方法示例
- Android中oncreate中获得控件高度或宽度的实现方法
- Android编程自定义对话框(Dialog)位置及大小的方法
- android端实现验证码随机生成功能
- Android编程实现切换imageView的方法分析
- 猿实战20——商品发布之sku与笛卡尔乘积的那些事儿
- 浅谈Android单元测试的作用以及简单示例
- linux上传并配置jdk和tomcat的教程详解