GYM 强化学习 文档 (一)

一、安装 Installationpip install gym

二、环境 Environments

以下是让强化学习运行的最小化的原始案例,首先,我们会初始化一个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
env.close()

推荐您可以使用如: MountainCar-v0MsPacman-v0 代替上文的CartPole-v0,去尝试更多好玩的样例。

更多问题,请查验:https://github.com/openai/gym

三、观测量 Observations:

如果你想要的结果并不是每次都采用随机化的行动,你想要的agent是想让他从环境中得到一些反馈的,那么环境的 Step 函数可以精确的帮助我们做到这个功能,Step 函数返回四个值:

  • observation (object), 一个具体的环境对象,代表着你能观测的环境。就好像 相机中的像素数据,棋盘游戏中的棋盘状态等;
  • reward (float),一些对于先前行为的奖励,这个奖励的尺度取决与您游戏的环境,当然,所有的游戏的目标都是一样的,就是最大最小化代价,也就是最大化游戏中的奖励函数;
  • done (boolean),表示是否该重新启动新的一轮环境,大多数的任务都是有明确划分的,即一轮(episode)任务的完成是well-defined,当done的值取true的时候,则代表着这一轮的训练过程结束了;
  • info (dict),对调试有用的诊断信息,当然这只是诊断的信息,并不能帮助你训练;

标准的agent-environment循环如下所示,他可能可以帮助你理解上述的四个值:

在这个循环中,agent都会选择一个action,然后环境返回一个obseration与reward

每个这样的过程循环,需要用 reset() 函数进行设置(然后返回一个初始化的obseration),所以经过介绍后,我们可以将最初的代码写成如下的样子:

import gym
env = gym.make('CartPole-v0')
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.close()

四、空间 Spaces:

在上面的样例中,我们从环境的动作空间(environment action space)进行随机行为的抽样,但是这些action到底是什么呢?每一个环境都有一个action_space与一个obseration_space,他们都是Space类型的;

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

(1)这个Discrete的空间是一个连续的定长的非负数字,如Discrete(2) = 0 and 1;

(2)这个Box的空间代表这 n-D 的框,所以有效的obseration是一个四个数字的数组,就像下面一样

print(env.observation_space.high)
#> array([ 2.4       ,         inf,  0.20943951,         inf])
print(env.observation_space.low)
#> array([-2.4       ,        -inf, -0.20943951,        -inf])

以上两个Space都是最常用的空间,所以你可以通过以下代码来进行检查

from gym import spaces
space = spaces.Discrete(8) # Set with 8 elements {0, 1, 2, ..., 7}
x = space.sample()
assert space.contains(x)
assert space.n == 8

For CartPole-v0 one of the actions applies force to the left, and one of them applies force to the right. (Can you figure out which is which?)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值