【深度强化学习】OpenAI Gym

本文介绍了如何安装和使用OpenAI Gym进行基本环境交互,包括随机动作导致的较低性能。着重讲解了Observations,展示了step()函数的返回值及其含义,并剖析了action space和observation space的概念。通过实例演示了环境状态的观察和采样策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenAI Gym

1 安装

$ pip install gym #minimal install
or
$ pip install gym[all] #full install, fetch gym as a package

安装成功后即可跑一下简单的demo看看:

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

在这里插入图片描述

就会出现一个这样的窗口,agent 操作手推车保持杆的平衡。代码中采用的是随机的 action,性能显然较差。

2 Observations

如果想要针对 state 做出最优的 action,我们需要先知道 agent 所观测到的东西是什么。

step()\text{step()}step() 函数会返回四个值:

  1. observation(object)\text{observation(object)}observation(object):object 是基于不同的环境的,代表的是 agent 对环境的观测。
  2. reward(float)\text{reward(float)}reward(float):前一个 action 所获得的 reward。不同环境给出的 reward 不相同,但我们的目标都是要最大化 reward。
  3. done(boolean)\text{done(boolean)}done(boolean):是否 reset()\text{reset()}reset() 并且重新进入环境。大多数任务被视为一个个 episode,而当 done = True\text{done = True}done = True 时,意味着 episode 的结束。
  4. info(dict)\text{info(dict)}info(dict):对调试有帮助的诊断信息。它有时对学习很有用(例如,它可能包含环境最后状态变化背后的原始概率)。但是,agent 不允许将此用于学习。

根据 step()\text{step()}step() 函数,即完成了一次 “agent-environment” 的循环。

在这里插入图片描述

import gym
env = gym.make('CartPole-v0')
## 进行20个episode
for i_episode in range(20):
    observation = env.reset()
    for t in range(100):
        env.render()
        print(observation)
        ##从状态空间中进行采样,随机action
        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()

下图是最后一个 episode 的过程。

在这里插入图片描述

可以看到,最后一个 episode 运行了19步。

3 Spaces

在上面的例子中,我们一直在从环境的动作空间中采样随机动作。但这些行为究竟是什么?每个环境都带有一个 action space\text{action space}action spaceobservation space\text{observation space}observation space。这些类型都是 Space\text{Space}Space,它们描述了有效操作和观察的格式:

我们打印一下:

import gym
env = gym.make('CartPole-v0')
print(env.action_space)
print(env.observation_space)

在这里插入图片描述

其中,Discrete\text{Discrete}Discrete 空间为固定范围的非负整数,这里即为 0 和 1。Box\text{Box}Box 空间是一个 n 维向量,因此这里有效的观察是一个4维向量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

见见大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值