迷雾探险11 | Gym简介

参考博客:https://www.cnblogs.com/mandalalala/p/6227201.html
参考博客:http://darren1231.pixnet.net/blog/post/333261294-open-ai--gym-%E5%B9%B3%E5%8F%B0%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95
Gym Upload的example:https://www.programcreek.com/python/example/98664/gym.upload
参考文章:https://chenrudan.github.io/blog/2016/09/04/cartpole.html
官方文档:https://gym.openai.com/docs
GYM Beta版本http://gym.openai.com/read-only.html

1 Openai gym 是什么

openai gym 是一个RL算法的测试床(testbed)

  • gym开源库:包含一个测试问题集,每个问题成为环境(environment),可以用于自己的RL算法开发。这些环境有共享的接口,允许用户设计通用的算法。其包含了deep mind 使用的Atari游戏测试床。
  • Openai gym服务:提供一个站点和api允许用户对他们训练的算法进行性能比较。

2 Openai gym是如何工作的

建议阅读博客https://zhuanlan.zhihu.com/p/26985029,简单讲解了内部原理,并举例说明。

增强学习中有2个基本概念
(1)环境(environment),称为外部世界。
(2)智能体agent(写的算法)。
agent发送action至environment,environment返回观察和回报。
所以gym有几个概念。

2.1 环境Env

gym的核心接口是environment。提供以下几个核心方法:
(1)reset(self):重置环境的状态,回到初始环境,方便开始下一次训练。
(2)step(self, action):推进一个时间步长,返回四个值:
         ① observation(object): 对环境的一次观察,比如摄像头里的一个像素,机器人的关节角和关节速度,或者木板游戏里的木板状态;
         ② reward(float):上次动作获得的奖励;
         ③ done(boolean):代表是否需要重置环境,大多数任务都要分成几个不同的训练回合结果,done代表子回合是否结束. (比较杆子翻得太远,或者主角死了);
         ④ info(dict):用于调试的诊段信息. 比如用来了解上一次状态改变的概率。但在正式的评估时不允许使用这样的知识。
(3)render(self,mode=’human’,close=False):重绘环境的一帧。默认模式一般比较友好,如弹出一个窗口。

2.2 空间Space

在代码中打印空间值,可以看到我们在环境的「动作空间」选择的动作,和「观察空间」观察到的值。

import gym
env = gym.make('CartPole-v0')
print(env.action_space)
#> Discrete(2)
print(env.observation_space)
#> Box(4,)

此外,还有「块空间」和「离散空间」

  • 离散空间:代表固定区间区间的正整数,为0或者1
  • 块空间:表示N维盒子,有效的observations是4个数字的数组
print(env.observation_space.high)
#> array([ 2.4       ,         inf,  0.20943951,         inf])
print(env.observation_space.low)
#> array([-2.4       ,        -inf, -0.20943951,        -inf])

2.3 结果记录Monitor

Gym可以记录算法的性能数据,和学习过程的视频。monitor支持将一个环境的多个案例写入一个单独的目录。比如下面这个例子,运行前记得确保电脑安装了ffmpeg模块,以MacOS为例brew install ffmpeg,这样才能录制视频。

import gym
from gym import wrappers
env = gym.make('CartPole-v0')
env = wrappers.Monitor(env, directory='./tmp/cartpole-experiment-1', force=True) # force=True指的是每次执行前都清空输出目录
# 也可以设置一些参数
# env = Monitor(directory='./tmp/cartpole-experiment-1',video_callable=False, write_upon_reset=True)(env)
for i_episode in range(20):
    observation = env.reset()
    for t in range(100):
        env.render()
        print(observation)
        action = env.action_space.sample()
        observation, reward, done, info = env.step(action)
        if done:
            print("Episode finished after {} timesteps".format(t+1))
            break
env.env.close() # 防止出现很烦人的报错

gym\monitoring\tests里面有测试的案例,参考test_monitor.py写代码
也可以把你的结果加载到OpenAI Gym,api_key怎么获取

import gym
gym.upload('/tmp/cartpole-experiment-1', api_key=' sk_FYp0Gc1dQU69epifs7ZE6w')

输出应该是这样

[2017-05-11 00:11:13,592] [CartPole-v0] Uploading 20 episodes of > training data
[2017-05-11 00:11:21,614] [CartPole-v0] Uploading videos of 3 training episodes (8459 bytes)
[2017-05-11 00:11:33,060] [CartPole-v0] Creating evaluation object from /tmp/cartpole-experiment-1 with learning curve and training video
[2017-05-11 00:11:33,669]
****************************************************
You successfully uploaded your evaluation on CartPole-v0 to
OpenAI Gym! You can find it at:
https://gym.openai.com/evaluations/eval_mVPNxudETYOY9eCCwwWzw
****************************************************

【Attention:现在Gym平台好像不支持在线评估了,可能是评估的人太多= = 】
可以将你的结果提交到在线网站上进行评估,你的结果会被自动评分,并且会产生一个漂亮的界面。【怎么提交的

API key怎么获取
官网注册账号后,可以在个人页面上看到自己的API_Key

image.png

目的
在大多数环境中,你的目标是用最少的步数达到性能的要求(有一个阈值)。而在一些特别复杂的环境中,阈值是什么还不清楚,因此,你的目标是最优化性能。

2.4 估值Gist

每次上传都会导致OpenAI Gym的服务器上的评估对象,然后,自己应该创建一个Gist,显示如何重现自己算法的结果,评估页面将具有如下您可以通过Gist网址的框:

或者,也可以通过传递写入参数在上传时提供Gist:

gym.upload('/tmp/cartpole-experiment-1', writeup='https://gist.github.com/gdb/b6365e79be6052e7531e7ba6ea8caf23', api_key='sk_Gmo4wYBhRoeJ9shfSS8hvg')

也可以跟着莫烦大神来:https://morvanzhou.github.io/tutorials/machine-learning/ML-practice/RL-build-arm-from-scratch1/

附录

  • 申请MuJoCo试用账号
    通过MuJoCo官方链接注册使用即可,目的是安装mujoco-py,使用普通邮箱可试用30天,一个邮箱在试用期30天内可为3台机器申请注册码。学生邮箱可以使用一年。
    mujoco下载页面:https://www.roboti.us/

如果没注册过的邮箱显示错误,可能是这个IP地址注册过了,可以换个baidu wifi重新申请。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容