深度强化学习实战:用OpenAI Gym构建智能体

978-7-115-56159-6
作者: 普拉文·巴拉尼沙米(Praveen Palanisamy)
译者: 洪贤斌汤奎桦
编辑: 吴晋瑜

图书目录:

详情

这是一本介绍用 OpenAI Gym 构建智能体的实战指南。全书先简要介绍智能体和 学习环境的一些入门知识,概述强化学习和深度强化学习的基本概念和知识点,然后 重点介绍 OpenAI Gym 的相关内容,随后在具体的 Gym 环境中运用强化学习算法构建 智能体。本书还探讨了这些算法在游戏、自动驾驶领域的应用。 本书适合想用 OpenAI Gym 构建智能体的读者阅读,也适合对强化学习和深度强 化学习感兴趣的读者参考。读者应具备一定的 Python 编程基础。

图书摘要

版权信息

书名:深度强化学习实战:用OpenAI Gym构建智能体

ISBN:978-7-115-56159-6

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    [印] 普拉文•巴拉尼沙米(Praveen Palanisamy)

译    洪贤斌 汤奎桦

责任编辑 吴晋瑜

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e56159”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

内容提要

这是一本介绍用OpenAI Gym构建智能体的实战指南。全书先简要介绍智能体和学习环境的一些入门知识,概述强化学习和深度强化学习的基本概念和知识点,然后重点介绍OpenAI Gym的相关内容,随后在具体的Gym环境中运用强化学习算法构建智能体。本书还探讨了这些算法在游戏、自动驾驶领域的应用。

本书适合想用OpenAI Gym构建智能体的读者阅读,也适合对强化学习和深度强化学习感兴趣的读者参考。读者应具备一定的Python编程基础。

致中国读者

能让中国的朋友们读到这本关于构建智能体的书,我感到非常荣幸!希望你们都能从中受益,享受到阅读这本书的乐趣。欢迎通过我的Twitter账户@PraveenPsamy联系我。

Praveen Palanisamy

 

 

 

 

向我亲爱的母亲Sulo致敬,感谢她的无私奉献和为我所做的一切!

向我的父亲致敬,感谢他对我的支持和爱护!

向所有披星戴月、一路前行的生命致敬!

作者简介

感谢那些为OpenAI Gym和PyTorch开源做出贡献的人。感谢Packt团队,特别是Rushi、Eisha和Ishita,感谢他们在整个写作过程中给予我的帮助。

普拉文巴拉尼沙米Praveen Palanisamy)专注于研究自主智能系统。他是通用汽车研发部门的AI(人工智能)研究员,主要负责针对自动驾驶开发基于深度强化学习的规划和决策算法。在此之前,他在卡内基-梅隆大学机器人所从事自动导航的研究(包括可移动机器人的感知与智能),曾从零开始研发一个完整的、自动的机器人系统。

审校者简介

Sudharsan Ravichandiran是一名数据科学家、研究者、人工智能爱好者和YouTube栏目作者(请搜索“Sudharsan reinforcement learning”)。他毕业于印度的安娜大学,拥有信息技术学士学位,主要关注深度学习和强化学习的实际实现,包括自然语言处理和计算机视觉。他是畅销书Hands-on Reinforcement Learning with Python(Packt出版社出版)的作者。

译者简介

洪贤斌 西交利物浦大学与英国利物浦大学联合培养的机器学习方向的博士生,主要研究方向为终身机器学习。曾担任苏州谷歌开发者社区组织者,热衷于分享机器学习及TensorFlow相关知识。热爱在线教育,是CSDN金牌讲师,曾作为优达学城助教及Coursera课程翻译,通过线上课程认识新的朋友。邮箱地址为derekgrant01@gmail.com。

汤奎桦 茄子快传视频推荐算法工程师,曾负责多个基于深度学习的推荐系统,在推荐和广告系统有多年工程经验。热爱新思维和新技术,致力于强化学习在推荐和广告方向上的新应用。邮箱地址为tkuihua@gmail.com。

中文版审校者简介

武强 兰州大学博士、电子科技大学博士后,微软全球机器学习专家(MVP),谷歌全球AI开发专家(GDE),主要从事人工智能和复杂网络的交叉研究,已发表论文16篇(包含SCl顶刊论文、IEEE交通会议最佳论文,ICML人工智能顶级会议论文),申请发明专利8项(6项为第一发明人),授权4项,参与1部人工智能教材的编写。

王金强 兰州大学博士研究生,研究方向为深度强化学习和自动驾驶,目前已发表SCI、EI论文5篇。

译者序

近年来人工智能的火热,很大程度上始于2016年AlphaGo与围棋大师李世石的世纪对决。深度学习和强化学习作为人工智能的核心支撑技术,已成为当今主流的机器学习算法,并在视觉检测、语音识别、机器翻译等领域取得了令人瞩目的成果。作为强化学习与深度学习的结合体,深度强化学习在机器人控制和无人驾驶等领域有着举足轻重的地位。

强化学习起初只作为不起眼的章节出现在机器学习类图书的最后一章,极少有专门的图书对其进行讲解。时至今日,关于强化学习的译作已不在少数,其中不乏结合Python、TensorFlow和PyTorch等框架平台的技术实践教程。本书介绍的OpenAI Gym是在强化学习领域有着中流砥柱地位的重要代码框架和训练平台。OpenAI Gym内置了大量成熟的强化学习环境,如工业机械臂、魔方机器人、多足MuJoCo机器人和令人着迷的雅达利(Atari)游戏。不仅如此,OpenAI Gym还支持扩展,可以兼容更多第三方的优秀环境,例如CARLA驾驶模拟器、星际争霸Ⅱ和Dota等。对于星际玩家或者Dota玩家来说,能为自己热爱的游戏开发AI模块,恐怕是一种特别的情怀或者一生的梦想。有了这些环境,你不用浪费时间自己去搭建环境,只需专注于算法的优化。对于一名从业者来说,这无疑会节省大量宝贵的时间。即使你只是一名普通的爱好者,这些环境也能为你极大地降低学习门槛。

本书共10章,将系统介绍强化学习和OpenAI Gym的用法。我们将先介绍强化学习的基础知识和术语,然后介绍OpenAI Gym,以及如何使用其中的700余种学习环境。从第5章起,我们会真正在具体的环境中进行强化学习算法的开发。如果你热衷于无人驾驶,请务必认真学习第7章和第8章中的CARLA驾驶模拟器和相关算法。游戏开发爱好者则绝对不能错过第9章,因为其中有非常多的经典游戏等待你的探索。如果你专注于强化学习方面的学习,我想你一定不会错过第10章关于更多算法的探究。

感谢人民邮电出版社责编王峰松和吴晋瑜老师的帮助,感谢两位审校者的辛勤付出,也感谢朱嘉珉博士提出的专业建议和校对帮助。

在本书翻译过程中,我们深感相关专业术语及知识点的繁杂,翻译实属不易,虽经反复校对,恐仍有不足或错漏之处,还望广大读者不吝指出。与此同时,出于对质量的把控,优秀的译作往往难以及时面世,原书与译作的面世时间常间隔一年甚至更长,对学习者来说是一个很大的阻碍。即使经过认真翻译,很多词汇由于语言文化上的差异,也很难找到对应的中文词汇,从而造成理解上的困难。由此,真切希望更多读者能够努力提高自身英语水平,尽可能地对照阅读原作,加强对内容的理解,也恳请更多有能力的读者加入译者队伍,贡献更多优秀的译作。

洪贤斌 汤奎桦

前  言

本书旨在引导你利用所有重要的模块去实现自己的智能体,解决离散或连续值的序列决策问题,并在过山车、车杆平衡、先进的自动驾驶模拟器CARLA等多样的环境中体验开发、调试、可视化、定制化和测试智能体的过程。

读者对象

如果你是学生、游戏/机器学习开发者或者人工智能爱好者,想用OpenAI Gym接口与学习环境去构建智能体和算法以解决多样的问题,那么本书是不错的选择。如果你想学习如何基于深度强化学习的智能体解决你所关心领域的问题,那么本书也是非常有帮助的。

本书涵盖了上述你需要了解的基本概念和大部分Python相关的应用知识。

本书内容概述

第1章介绍了OpenAI Gym工具包的重要性。OpenAI Gym工具包可用于创造人工智能体,以帮助你解决一些系统任务、游戏和控制任务。学完本章,你会对如何利用Python在Gym环境中创建实例有足够的了解。

第2章简明扼要地阐释强化学习相关的术语和概念。学完本章,你将对实现人工智能体的基本强化学习框架有一个良好的认识,还将了解一些深度强化学习的知识和能够解决前沿问题的算法。

第3章主要介绍如何完整安装OpenAI Gym学习环境,以及如何安装深度强化学习所需要的工具和库,例如用于深度学习开发的PyTorch。

第4章主要介绍Gym所包含的700余种学习环境的分类和命名,以帮助你选择正确的环境版本和种类。学完本章,你将了解如何探索Gym,体验自己感兴趣的环境,理解不同环境的接口和描述。

第5章介绍如何使用强化学习让智能体解决过山车问题。通过训练、观察智能体这些实现细节,你可以运用所学知识去开发和训练智能体,以解决不同的任务或完成游戏制作。

第6章涵盖多种实现Q-Learning的方式,包括使用深度神经网络的动作-值函数近似、经验回放、目标网络和必要的相关实用工具,以及常用于训练和测试深度强化学习智能体的组件。学完本章,你能实现一个基于深度Q-Learning网络的智能体,做出最优化离散控制的决策,可以训练智能体玩一些Atari游戏,并观察它的性能。

第7章介绍如何将真实环境问题转化为OpenAI Gym可以兼容的环境。学完本章,你将了解如何分析Gym中的环境,能够基于CARLA模拟器创建自己的定制环境。

第8章介绍基于策略梯度的强化学习算法基础,以帮助你直观地理解深度n步优势算法。学完本章,你可以用同步和异步深度n步优势算法实现一个可以在CARLA中学会自动驾驶的超智能体。

第9章展示其他一些可以帮助你训练智能体的优秀学习环境套件。学完本章,你将理解和学会使用多种环境,例如Roboschool、Gym Retro,以及非常受欢迎的星际争霸Ⅱ——PySC2和DeepMind Lab。

第10章介绍了深度强化学习算法的一些内容。学完本章,你会了解3类深度强化学习算法,即基于演员-评论家的深度确定性策略梯度(Deep Deterministic Policy Gradient,DDPG)算法、基于近端策略优化(Proximal Policy Optimization,PPO)的策略梯度算法以及基于值的Rainbow算法。

学习前提

要想更好地学习本书所涉及的内容,你应先掌握本书所涉及的程序语法、模块安装、库安装所需要的Python相关知识,并能熟练运行基本的Linux或macOS X命令,如在文件系统中定位和运行Python脚本。

体例约定

本书常用的习惯性写法。

黑体:表示新的术语名词、重点注意的词。

代码以如下形式显示:

#!/usr/bin/env python
import gym
env = gym.make("Qbert-v0")
MAX_NUM_EPISODES = 10
MAX_STEPS_PER_EPISODE = 500

对于需要引起注意的代码,我们会以加粗样式显示:

for episode in range(MAX_NUM_EPISODES):
    obs = env.reset()
    for step in range(MAX_STEPS_PER_EPISODE):
        env.render()

命令行代码输入或输出会按以下格式:

$ python get_observation_action_space.py 'MountainCar-v0'

 警告或者重要提示的标志。
 

 提示或者技巧的标志。
 

资源与支持

本书由异步社区出品,社区(https://www.epubit.com)为你提供相关资源和后续服务。

您还可以扫码二维码, 关注【异步社区】微信公众号,回复“e56159”直接获取,同时可以获得异步社区15天VIP会员卡,近千本电子书免费畅读。

勘误

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎你将发现的问题反馈给我们,帮助我们提升图书的质量。

当你发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“发表勘误”,输入勘误信息,单击“提交勘误”按钮即可(如下图所示)。本书的作者和编辑会对你提交的勘误进行审核,确认并接受后,将赠予你异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

扫码关注本书

扫描下方二维码,你将会在异步社区微信服务号中看到本书信息及相关的服务提示。

与我们联系

我们的联系邮箱是contact@epubit.com.cn。

如果你对本书有任何疑问或建议,请你发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果你有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线投稿(直接访问www.epubit.com/ contribute即可)。

如果你来自学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果你在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请你将怀疑有侵权行为的链接发邮件给我们。你的这一举动是对作者权益的保护,也是我们持续为你提供有价值的内容的动力之源。

关于异步社区和异步图书

我们的联系邮箱是contact@epubit.com.cn。

如果读者对本书有任何疑问或建议,请发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果读者有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区投稿(直接访问www.epubit.com/ contribute即可)。

如果读者来自学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果读者在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请将怀疑有侵权行为的链接通过邮件发给我们。这一举动是对作者权益的保护,也是我们持续为读者提供有价值的内容的动力之源。

关于异步社区和异步图书

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近40年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、人工智能、测试、前端、网络技术等。

异步社区

微信服务号

第1章 智能体与学习环境入门

欢迎来到第1章!在本书中,你会了解到OpenAI Gym的相关知识,继而开启一段奇妙的旅程。同时,你将与其他读者一起了解先进的人工智能技术。我们会带领你完成多个有趣的项目,例如开发无人驾驶汽车、研发超越人类的雅达利(Atari)游戏智能体等,让你获得强化学习和深度强化学习方面的实战经验。学完本书,你将能够利用人工智能在算法、游戏以及自动控制等领域探索无穷的可能性。

本章包括以下内容:

介绍智能体和学习环境;

介绍OpenAI Gym的大致构成;

介绍可供选择的多种任务/环境,并简要介绍各类适配场景;

介绍OpenAI Gym的主要特性;

介绍OpenAI Gym工具包的主要功能;

创建并可视化第一个Gym环境。

让我们从理解智能体开始学习之旅吧!

1.1 智能体简介

人工智能的一个主要目标是构建智能体。智能体的主要特征是:能够感知环境并对其进行理解和推理,从而做出决策并制订计划,继而采取动作。说到这里,我们有必要了解一下什么是智能体。在深入了解智能体之前,我们先简单介绍一下智能体及其基本概念。

智能体(agent)是一个能够基于对所处环境的观察(感知)而采取行动的实体。人类和机器人就是物理形式的智能体实例。

 人类或者动物是以其器官(眼睛、耳朵、鼻子、皮肤等)作为传感器观察/感知所处环境,并用其物理形式的身体(手臂、手掌、腿、头等)做出行动的智能体。机器人使用传感器(摄像头、麦克风、激光雷达、雷达等)观察/感知环境,用机械身体(机械手臂、机械手/爪、机械腿、扬声器等)做出动作。

软件智能体(software agent)是通过与环境的交互而做出决定并采取行动的计算机程序。软件智能体可以嵌入某种实体形式中,比如机器人。

自主智能体(autonomous agent是通过对环境的理解和推理而自动进行决策和行动的实体。

智慧智能体(intelligent agent)则是通过和环境的交互来进行学习并自我提高的自主实体。智能体可以通过观测来分析自身行为和表现。

我们将通过开发智能体来解决序列决策问题。结果依赖于一系列决策和动作的问题或任务被称为序列决策问题。这类问题一般可在非严格马尔可夫(Loosely Markovian[1])环境中由一系列(独立的)决策/行为来解决,其中某些环境中还可以(通过感知)收到奖励信号形式的反馈。

[1] 非严格马尔可夫环境是指那些未严格满足马尔可夫性质的环境。——译者注

1.2 学习环境

学习环境是一个用于智能体训练与智能系统开发的必要系统组件,定义了智能体需要解决的问题或任务。

一些学习环境拥有不同的特征,如下所示:

全局可观测信息与局部可观测信息;

确定过程与随机过程;

独立回合决策与序列决策;

静态与动态;

离散与连续;

离线状态空间与连续状态空间;

离散行为空间与连续行为空间。

本书会使用由OpenAI Gym Python例库实现的学习环境,因为它提供了简单且标准的接口和环境实现。用户利用这套例库可以实现定制化的环境。

在后续几节中,我们将简要介绍OpenAI Gym工具包,帮助你了解OpenAI Gym工具包的相关知识。我们将介绍Gym工具包,并介绍不同类别下可用的各种学习环境,然后是你可能感兴趣的Gym的功能,但暂时不考虑各种应用场景。接下来,我们将简要探究Gym工具包的定位以及使用Gym的方法。我们将在后续几节中利用Gym工具包构建几个很酷的智能体。在本章的最后,我们还将快速创建和可视化第一个OpenAI Gym环境。由此可见,本章的确是全书内容的基础。让我们马上开始吧!

1.3 OpenAI Gym简介

OpenAI Gym是一个开源工具包,提供了各种不同的任务集合——我们称其为环境(environment)。该工具包提供了一套标准的应用程序编程接口(API)用以连接强化学习环境,它提供的标准接口可以用于开发和调试智能体。每个环境都附有版本号,以确保运行结果的可比较和可复现,利于评估算法或环境本身的优化。

Gym工具包通过各种环境为强化学习提供了一种episodic式的设置,其中智能体按一系列回合分开运行。在每一回合中,程序会从一个分布中随机采样来初始化智能体的状态,并让智能体与环境继续交互直到环境到达最终状态。如果你不熟悉强化学习的相关内容,请不要担心,我们将在第2章介绍强化学习。

OpenAI Gym函数库提供的一些基本环境如图1-1所示。

图1-1 

截至本书完成之际,OpenAI Gym原生支持的环境已达797个之多,涵盖了许多不同的任务。著名的雅达利(Atari)分类占据了很大一部分,大约有116个(半数为屏幕输入,半数为内存输入)。工具包支持的任务/环境列举如下:

算法环境;

雅达利游戏环境;

棋盘游戏;

Box2D游戏;

经典控制问题;

Doom(非官方);

我的世界(非官方);

MuJoCo;

足球游戏;

玩具文本;

机器人(新添加,不列入讲解范围)。

接下来,我们会给出不同类别下可用的环境(或任务)以及每个环境的简要描述。记住,你可能需要在系统上安装一些其他工具和软件包才能运行这些类别中的所有环境。别担心,我们将在后续章节中介绍你需要做的每一步,以帮助你启动和运行任何环境。敬请关注!

前文提到的不同类别任务的详细介绍如下。

(1)算法环境。该环境提供一些需要智能体进行计算的任务,例如添加多位数字、从输入序列复制数据、反转序列等。

(2)雅达利(Atari)游戏环境。该环境提供了几个经典的Atari主机游戏的界面。环境接口是街机学习环境(Arcade Learning Environment,ALE)之上的封装器,它们提供游戏的屏幕图像或RAM作为输入来训练智能体。

(3)棋盘游戏。此类任务涉及非常流行的9×9和19×19围棋游戏环境。那些一直关注谷歌DeepMind技术进展的人可能会对此很感兴趣。DeepMind开发了一个名为AlphaGo的智能体,该智能体使用包括蒙特卡洛树搜索在内的强化学习技术和其他的学习和规划技术,击败了包括樊麾和李世石在内的世界顶级人类围棋玩家。DeepMind还发布了关于AlphaGo Zero的工作,不同于最初的AlphaGo使用了人类的棋局数据,AlphaGo Zero是从零开始训练的。AlphaGo Zero逐渐超越了原版AlphaGo的性能,最终横空出世。它是一个自主系统,学会了围棋和日本将棋的自我对局(没有任何人工监督训练),并且其性能水平超越了之前开发的系统。

(4)Box2D游戏。这是一个用来模拟2D场景下刚性肢体的开源物理引擎。Gym工具包中有一些利用Box2D模拟器开发的连续控制任务,如图1-2所示。

图1-2 

这些任务包括训练赛车在赛道上行驶、训练双足机器人行走和将月球着陆器导航到着陆区域。在本书中,我们会运用强化学习算法训练智能体并实现赛车的自动驾驶!

(5)经典控制问题。此类别下有许多任务,过去在强化学习文献中有许多应用。这些任务构成了强化学习算法的一些早期基础和评估算法的基准。例如,经典控制类别下的环境之一是过山车环境,该环境由Andrew Moore(CMU计算机科学学院院长,匹兹堡创始人)于1990年首次在他的博士论文中引入,且有时仍被用作强化学习算法的实验平台。在本章最后,我们将引导你创建第一个OpenAI Gym环境!

(6)Doom此类别为流行的第一人称射击游戏Doom提供了环境接口。它是一个由社区基于ViZDoom创建的非官方Gym环境。ViZDoom基于Doom的AI研究平台,提供易于使用的API,适合使用原始视觉输入来开发智能体。它可以用来开发AI机器人,而只需使用屏幕缓冲就可以玩几轮具有挑战性的Doom游戏!如果你玩过这款游戏,就会知道在游戏过程中进行多轮游戏而不会失去生命是多么惊心动魄!虽然它没有一些现代的第一人称射击游戏那样炫酷的图形特效,但抛开视觉效果不谈,它的确是一款十分出色的游戏。最近,一些关于机器学习(特别是深度强化学习)的研究利用ViZDoom平台开发了新的算法来解决游戏中遇到的目标导向问题。你可以访问ViZDoom的研究网页获取使用该平台的研究列表。图1-3列出了在Gym中可以作为独立环境来训练智能体的任务。

(7)我的世界。这是另一个很棒的平台,游戏AI开发人员可能对此环境尤其感兴趣。它的Gym环境是用微软的Malmo构建的,Malmo是在我的世界之上构建的人工智能实验和研究平台。图1-4显示了OpenAI Gym环境提供的一些任务。这样的环境为解决独特环境中的问题提供了灵感。

图1-3 

图1-4 

(8)MuJoCo对机器人感兴趣吗?你是否梦想着开发出一种算法,可以使人形机器人行走和奔跑,或者像波士顿动力公司的Atlas机器人那样做后空翻?你可以在OpenAI Gym MuJoCo环境中应用将在本书学习的强化学习方法开发自己的算法,使二维机器人行走、奔跑、游泳或跳跃,或使三维多足机器人行走或奔跑!图1-5中,MuJoCo环境下有一些很酷的、真实的、类似机器人的环境。

图1-5 

(9)足球游戏。这个环境适合训练可相互协作的多个智能体。Gym工具包提供的足球环境具有连续的状态空间和动作空间。想知道这意味着什么吗?在第2章讨论强化学习时,我们会深入讨论这部分内容。现在,我们仅给出一个简单的解释:连续的状态和动作空间意味着智能体可以采取的动作和智能体接收的输入都是连续值。这意味着它们可以取(0,1)内的任意实数值(0.5、0.005等),而不局限于一些离散的值集,例如{1, 2, 3}。有3种类型的环境。基本的足球环境在球场上初始化单个选手并且给予进球加1(未进球为0)的奖励。为了让智能体进球,它需要学会识别球,接近球,并将球踢向球门。听起来是不是非常简单?但是计算机很难自己解决这个问题,特别是当只有得分时加1而在任何其他情况下得分为0时,计算机会非常困惑。你可以自己开发学习足球知识的智能体,并使用本书中学到的方法进球。

(10)玩具文本。在这个类别下,OpenAI Gym还有一些简单的基于文本的环境,包括一些经典问题,例如冰冻湖,其目标是找到穿过冰面和水面的安全路径。它被归于玩具文本,因为它使用更简单的环境表示——文本形式。

以上就是OpenAI Gym工具包提供的所有不同类别和环境类型的概述。现在,你应该对OpenAI Gym中可用的各种环境类别以及每个类别提供的环境有所了解了。接下来,我们将介绍OpenAI Gym的主要功能,正是这些功能才使其成为当今许多智能体开发中不可或缺的组成部分,尤其是对于那些需要使用强化学习或深度强化学习的智能体而言。

1.4 理解OpenAI Gym的主要特性

在本节中,我们关注那些使OpenAI Gym工具包风靡整个强化学习社区并使之得以广泛传播的关键特性。

1.4.1 简单的环境接口

OpenAI Gym为环境提供了一个简单而通用的Python接口。具体而言,它在每一步将动作作为输入,基于每个动作给出观察奖励完成与否等反馈,并将可选信息对象作为输出。这里只是为了让你对接口有一个大致的了解,以便明确它的简单性。接口简单、方便,为用户提供了极大的灵活性,让他们可以根据自己喜欢的任何范例(不受限于使用特定范例)设计和开发智能体算法。

1.4.2 可比较与可复现

直观来看,我们应该能够就特定任务中的智能体或算法的性能与同一任务中的另一个智能体或算法的性能进行比较。例如,如果一名特工在名为《太空入侵者》的Atari游戏中平均得分为1000,那么我们应该能得知,在相同训练时间下,这个智能体的表现比平均得分5000的智能体表现得更差。但是,如果游戏的评分系统略有改变,会怎样呢?如果修改了环境接口使第二个智能体获得了更多游戏状态而取得优势呢?显然,这会使分数间的比较变得不公平。

为了处理环境中的此类变化,OpenAI Gym对环境使用严格的版本控制,如果环境有任何更改,就会更新版本号。因此,如果Atari的《太空入侵者》游戏环境的原始版本被命名为SpaceInvaders-v0,在对环境进行一些更改以提供有关游戏状态的更多信息之后,环境的名称将更改为SpaceInvaders-v1。这个简单的版本控制机制确保我们始终可以在完全相同的环境设置下测量和比较性能。通过这种方式获得的结果是可比较和可复现的。

1.4.3 进程可监控

Gym工具包中的环境都配备了监控程序,用于记录模拟程序的每个时间片和每次环境重置。这意味着环境会自动跟踪智能体是如何学习和适应每一步的,甚至可以将监控程序配置成智能体训练时实时自动录制游戏视频。十分有趣,对吧?

1.5 OpenAI Gym工具包的作用

Gym工具包提供了一种标准化的方法,用于为那些可以使用强化学习解决的问题而开发的环境定义接口。如果你熟悉或听说过ImageNet大规模视觉识别挑战赛(ILSVRC),就很容易理解标准化的测试平台对加速研发的影响有多大。对于那些不熟悉ILSVRC的人,这里有一个简短的总结值得借鉴:这是一个竞赛,参与团队评估他们为给定数据集开发的监督学习算法,并通过几个视觉识别任务进行竞争,以获得更高的准确率。这个通用平台加上AlexNet推广的基于深度神经网络算法的成功,为我们目前所处的深度学习时代铺平了道路。

类似地,Gym工具包提供了一个对强化学习算法进行标准化测试的通用平台,并鼓励研究人员和工程师为几项具有挑战性的任务开发出得分更高的算法。简而言之,Gym工具包之于强化学习,就像ILSVRC之于监督学习。

1.6 创建第一个OpenAI Gym环境

我们将在第3章中详细介绍如何设置OpenAI Gym的依赖以及训练强化学习智能体所需的其他工具。在本节中,我们给出了一种通过virtualenv在Linux和macOS上开始使用OpenAI Gym Python API的快速方法,以便抢先体验Gym!

macOS和Ubuntu Linux系统默认安装了Python,你可以通过在终端窗口运行python –version检查Python的版本。如果返回python并附带一个版本号,那么你可以进行下一步操作!如果收到错误提示“未找到Python命令”,则需要先安装Python(见第3章)。

(1)安装virtualenv。代码如下:

$pip install virtualenv

 如果系统中尚未安装pip,则可以使用 sudo easy_install pip命令安装它。
 

(2)使用virtualenv工具创建名为openai-gym的虚拟开发环境。代码如下:

$virtualenv openai-gym

(3)激活openai-gym虚拟环境。代码如下:

$source openai-gym/bin/activate

(4)从上游安装Gym工具包所需的所有包。代码如下:

$pip install -U gym

 如果运行pip install命令之后出现了permission denied或者failed with error code 1这两种报错信息,那么最大的可能是期望的安装目录(这里是指virtualenv中的openai-gym目录)需要特定权限或是root权限。运行sudo -H pip install -U gym[all]可以解决上述问题,也可以通过运行sudo chmod -R o+rw ~/openai-gym命令来改变openai-gym目录的授权。

(5)测试以确保安装成功。代码如下:

$python -c 'import gym; gym.make("CartPole-v0");'

创建并可视化新的Gym环境

只需一两分钟,就可以创建一个OpenAI Gym环境实例,让我们开始吧!

启动一个新的Python命令行工具并导入gym模块:

>>import gym

一旦gym模块导入成功,使用gym.make方法就可以创建一个新的环境,如下所示:

>>env = gym.make('CartPole-v0')
>>env.reset()
env.render()

执行以上命令,即可启动一个图1-6所示的窗口。

图1-6 

1.7 小结

恭喜你学完第1章!创建自己的环境是不是很有趣?在本章中,我们概述了OpenAI Gym工具包的内容相关,包括其提供的功能以及该工具包可执行的操作,让你对OpenAI Gym有一个基本的了解。在第2章中,我们将介绍强化学习的基础知识,帮助你奠定良好的基础,进而引导你构建出炫酷的智能体。

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e56159”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

相关图书

深度学习高手笔记 卷2:经典应用
深度学习高手笔记 卷2:经典应用
深度学习详解
深度学习详解
ChatGPT原理与应用开发
ChatGPT原理与应用开发
深度学习的数学——使用Python语言
深度学习的数学——使用Python语言
人工智能和深度学习导论
人工智能和深度学习导论
动手学深度学习(PyTorch版)
动手学深度学习(PyTorch版)

相关文章

相关课程