美文网首页
迷雾探险11 | Gym简介

迷雾探险11 | Gym简介

作者: 臻甄 | 来源:发表于2019-02-15 16:47 被阅读19次

    参考博客: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
    ****************************************************

    可以将你的结果提交到在线网站上进行评估,你的结果会被自动评分,并且会产生一个漂亮的界面。【怎么提交的

    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/

    相关文章

      网友评论

          本文标题:迷雾探险11 | Gym简介

          本文链接:https://www.haomeiwen.com/subject/aouqlqtx.html