OpenAI Gym

本文介绍了OpenAI的CartPole环境,一个用于强化学习的标准化环境,通过示例展示了如何使用Python进行环境初始化、观察空间和动作空间操作。着重强调了智能体通过与环境交互生成数据的过程,以OpenAIGym为例,探讨了智能体在游戏环境中的学习策略。
摘要由CSDN通过智能技术生成

在第 2 章介绍的大多数成功案例中,强化学习起着主导作用,这激发了人们对强化学习 算法的广泛兴趣。OpenAI 是一个致力于促进人工智能研究,特别是强化学习研究的组织。 OpenAI 开发并开源了一套环境,称为 OpenAI Gym,允许通过标准化 API 训练 RL 智能体。 在众多环境中,有模拟经典强化学习问题的 CartPole 环境(或游戏),即把一根杆子直立 在推车上,目的是通过左右移动推车来学习平衡杆子的策略。环境状态由 4 个参数表示, 包括以下物理测量值:推车位置、推车速度、极角和极角速度(尖端)。图 9-1 描述了一个 可视化的环境。 图 9-1:OpenAI Gym 的 CartPole 环境 考虑以下 Python 代码,该代码实例化了 CartPole 的环境对象并检查了观察空间。观察空 间是环境状态的模型。 In [1]: import os import math import random import numpy as np import pandas as pd from pylab import plt, mpl plt.style.use('seaborn') mpl.rcParams['savefig.dpi'] = 300 mpl.rcParams['font.family'] = 'serif' np.set_printoptions(precision=4, suppress=True) os.environ['PYTHONHASHSEED'] = '0' In [2]: import gym In [3]: env = gym.make('CartPole-v0') ➊ In [4]: env.seed(100) ➊ env.action_space.seed(100) ➊ Out[4]: [100] In [5]: env.observation_space ➋ Out[5]: Box(4,)206 | 第 9 章 In [6]: env.observation_space.low.astype(np.float16) ➋ Out[6]: array([-4.8 , -inf, -0.419, -inf], dtype=float16) In [7]: env.observation_space.high.astype(np.float16) ➋ Out[7]: array([4.8 , inf, 0.419, inf], dtype=float16) In [8]: state = env.reset() ➌ In [9]: state ➍ Out[9]: array([-0.0163, 0.0238, -0.0392, -0.0148]) ➊ 具有固定种子值的环境对象。 ➋ 具有最小值和最大值的观察空间。 ➌ 环境重置。 ➍ 初始状态:推车位置、推车速度、极角和极角速度。 在以下环境中,允许的动作由动作空间来描述,在这种情况下有两个动作空间,分别用 0 (向左推车)和 1(向右推车)来表示。 In [10]: env.action_space ➊ Out[10]: Discrete(2) In [11]: env.action_space.n ➊ Out[11]: 2 In [12]: env.action_space.sample() ➋ Out[12]: 1 In [13]: env.action_space.sample() ➋ Out[13]: 0 In [14]: a = env.action_space.sample() ➋ a ➋ Out[14]: 1 In [15]: state, reward, done, info = env.step(a) ➌ state, reward, done, info ➍ Out[15]: (array([-0.0158, 0.2195, -0.0395, -0.3196]), 1.0, False, {}) ➊ 动作空间。 ➋ 从动作空间中采样的随机动作。 ➌ 基于随机动作向前迈进。 ➍ 环境的新状态、奖励、成功 / 失败以及附加信息。 只要 done=False,智能体就还在游戏中,并且可以选择另一个动作。当智能体达到总计 200 步或总奖励达到 200(每步奖励 1.0)时,即取得成功。当推车上的杆子到达一定角度 导致杆子从推车上掉下来时,故障被观测到,在这种情况下,返回 done=True。强化学习 | 207 简单智能体是遵循完全随机策略的智能体:无论观察到什么状态,智能体都会选择一个随 机动作,如下面的代码实现所示。在这种情况下,智能体可以走的步数仅取决于它的幸运 程度,其并未以更新策略的形式进行学习。 In [16]: env.reset() for e in range(1, 200): a = env.action_space.sample() ➊ state, reward, done, info = env.step(a) ➋ print(f'step={e:2d} | state={state} | action={a} | reward={reward}') if done and (e + 1) < 200: ➌ print('*** FAILED ***') ➌ break step= 1 | state=[-0.0423 0.1982 0.0256 -0.2476] | action=1 | reward=1.0 step= 2 | state=[-0.0383 0.0028 0.0206 0.0531] | action=0 | reward=1.0 step= 3 | state=[-0.0383 0.1976 0.0217 -0.2331] | action=1 | reward=1.0 step= 4 | state=[-0.0343 0.0022 0.017 0.0664] | action=0 | reward=1.0 step= 5 | state=[-0.0343 0.197 0.0184 -0.2209] | action=1 | reward=1.0 step= 6 | state=[-0.0304 0.0016 0.0139 0.0775] | action=0 | reward=1.0 step= 7 | state=[-0.0303 0.1966 0.0155 -0.2107] | action=1 | reward=1.0 step= 8 | state=[-0.0264 0.0012 0.0113 0.0868] | action=0 | reward=1.0 step= 9 | state=[-0.0264 0.1962 0.013 -0.2023] | action=1 | reward=1.0 step=10 | state=[-0.0224 0.3911 0.009 -0.4908] | action=1 | reward=1.0 step=11 | state=[-0.0146 0.5861 -0.0009 -0.7807] | action=1 | reward=1.0 step=12 | state=[-0.0029 0.7812 -0.0165 -1.0736] | action=1 | reward=1.0 step=13 | state=[ 0.0127 0.9766 -0.0379 -1.3714] | action=1 | reward=1.0 step=14 | state=[ 0.0323 1.1722 -0.0654 -1.6758] | action=1 | reward=1.0 step=15 | state=[ 0.0557 0.9779 -0.0989 -1.4041] | action=0 | reward=1.0 step=16 | state=[ 0.0753 0.7841 -0.127 -1.1439] | action=0 | reward=1.0 step=17 | state=[ 0.0909 0.5908 -0.1498 -0.8936] | action=0 | reward=1.0 step=18 | state=[ 0.1028 0.7876 -0.1677 -1.2294] | action=1 | reward=1.0 step=19 | state=[ 0.1185 0.9845 -0.1923 -1.5696] | action=1 | reward=1.0 step=20 | state=[ 0.1382 0.7921 -0.2237 -1.3425] | action=0 | reward=1.0 *** FAILED *** In [17]: done Out[17]: True ➊ 随机动作策略。 ➋ 向前一步。 ➌ 少于 200 步则失败。 通过交互获得数据 在监督学习中,假设训练数据集、验证数据集和测试数据集在训练开始之前 已经存在,而在强化学习中,智能体通过与环境交互来生成自己的数据。在 许多情况下(比如在游戏中),这是一个巨大的简化。考虑一下国际象棋游 戏:一个 RL 智能体可以通过与另一个国际象棋引擎或另一个版本的自身对 战,而不是将数千个人类历史上所生成的国际象棋棋谱加载到计算机中。

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenAI Gym是一个用于开发和比较强化学习算法的开源工具包。它提供了许多经典的强化学习环境,让研究者能够更轻松地实验和测试自己的算法。 OpenAI Gym包含了一系列模拟环境,可以在这些环境中训练强化学习算法。这些环境包括了各种各样的问题,例如棋盘游戏、控制机器人或车辆等场景。这些问题复杂多样,要求智能体在环境中进行观察、决策和行动。 OpenAI Gym的设计使得使用者能够方便地编写、测试和比较各种不同的强化学习算法。用户可以在该工具包中选择合适的环境,并使用内置的API进行训练和测试。此外,用户还可以通过插入自定义代码来扩展现有环境或创建全新的环境。 OpenAI Gym还提供了一种称为“gym spaces”的概念。这是一种用于描述观察空间和动作空间的通用接口。用户只需定义环境的观察空间和动作空间的特征,就可以使用这些通用接口来处理不同类型的环境。 通过使用OpenAI Gym,研究者可以在一个统一的框架下进行强化学习算法的开发和评估。这使得算法的比较更加公平和准确。同时,OpenAI Gym的开源性质也促进了算法共享和交流,推动了强化学习领域的发展。 总之,OpenAI Gym是一个强大的工具包,为研究者提供了广泛的强化学习环境和便利的开发、测试以及比较算法的功能。它的开源性质和通用接口设计使得研究者能够更加高效地进行算法的开发和创新。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值