首页>参考读物>计算机科学与技术>软件与程序设计

Python深度强化学习:基于Chainer和OpenAI Gym
作者 : [日]牧野 浩二(Koji Makino),[日]西崎 博光(Hiromitsu Nishizaki) 著
译者 : 申富饶 于僡 译
出版日期 : 2021-10-22
ISBN : 978-7-111-69258-4
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 227
开本 : 16
原书名 : Pythonによる深層強化学習入門 ChainerとOpenAI Gymではじめる強化学習
原出版社: オーム社(OHM 社)
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书基于强化学的库Chainer(Chainere)和AI模拟环境的OpenAI gym,不仅仅是软件模拟,也详述了使用RaspbbilryPi和ARduino的实际环境的应用。

图书特色

图书前言

近年来,机器学习受到了人们的广泛关注。在机器学习中,主要通过向学习器提供受训目标(有标签信息)来进行有监督学习,例如,大多数图像识别和语音识别都是通过有监督学习来进行的。
另外,还存在一种称为半监督学习的方法,该方法不像有监督学习那样提供有标签信息,这种机器学习方法中典型的便是强化学习。强化学习是机器学习的一种,它根据特定环境(例如游戏的棋盘盘面等)中的当前情况来决定下一步要采取的行动。例如,让计算机学习下围棋时,思考在某种局面下,接下来应该在哪里放置棋子更好。
强化学习会对计算机考虑到的行动进行评估,并以奖励的形式进行反馈,评估行动的好坏(例如在围棋比赛中的赢或输), 这样一来,计算机将自动采取在特定情况下会增加奖励的行动。深度强化学习将强化学习与深度学习融合在一起,取得了很好的成效。其中让我们记忆犹新的便是由DeepMind公司开发的围棋智能体AlphaGo Zero。 它在不使用任何人类对弈数据的情况下和自己进行对局(计算机对战计算机),仅用一个多月就达到了很高的水平,而且几乎没有弱点。
深度学习成为众人瞩目的焦点已经将近10年了,但它并非一开始就是一种全新的技术,它是自1970年以来研究的人工神经网络发展而来的一种方法。当前的深度学习热潮也被称为第三次人工智能热潮,它与目前为止的人工智能热潮的区别之一是,多家公司已经发布了机器学习框架,非专业人士也可以免费使用它们,因而不论是学生还是在职人员都可以轻松尝试深度学习。此外,机器学习的某些框架不仅支持深度学习,而且还支持结合了强化学习的深度强化学习。因此,当前学习深度学习的门槛远低于此前的几次人工智能热潮。
在本书中,除了详细的理论说明外,还有针对在Python上运行的深度强化学习框架ChainerRL的讲解,从而引导读者在实际中使用深度强化学习。如果你想通过模拟实验检验深度强化学习的结果,只要有台个人计算机就可以轻松尝试。另外,如果你有一台像Raspberry Pi这样的小型计算机,则可以通过连接来控制电路元件和机器人。深度强化学习适用于“情况因操作而异”的问题,因此,它适用于在一方操作之后局面会发生改变的问题,如围棋和将棋等棋局问题。此外,用机械臂自动识别物体,将其进行抓握和移动也是深度强化学习的擅长领域。因此,在本书中,我们会讲解如何通过深度强化学习来进行黑白棋对战,以及如何将其应用于实际的机器人上。
如前所述,由于深度强化学习将强化学习整合到了深度学习中,因此,如果了解了这两种学习方法的原理,就能更好地运用深度强化学习。
本书第1章首先介绍进行深度强化学习所需的PC端环境构建。第2章介绍深度学习。为了理解深度强化学习,有必要了解深度学习的相关知识。由于市面上已经有许多有关深度学习的书籍,因此本书以读者参考了那些书中的详细信息为前提,在第2章中讲解理解深度强化学习所需掌握的内容。使用Chainer进行过深度学习编程的人可以跳过这一章。接下来,第3章我们将讲解强化学习中的一种典型方法Q学习,希望读者能在这一章中了解强化学习的基础。在第4章中我们将进入深度强化学习的讨论。第5章介绍如何使用深度强化学习来控制移动机器人。
这样一来,本书从基础出发,通过从开发环境构建到深度学习、强化学习、深度强化学习的逐步深入,来对控制实际事物的应用进行讲解。因此,深度学习和深度强化学习的初学者和中级学习者(例如,大学生或希望将深度学习和深度强化学习应用于工作的在职人员)可以在逐步学习的同时学习深度强化学习的基础。本书将帮助这类读者加深对强化学习的理解。
此外,本书的附录中包含的信息有助于学习深度强化学习。例如,仅使用PC的CPU进行深度学习和深度强化学习的计算需要很长时间,因此我们将介绍一种使用图形操作单元(GPU)加速学习过程的方法。对于使用Intel CPU的用户,我们还会介绍一种使用由Intel发布的Intel CPU矩阵计算优化引擎来加速的方法。
在编写本书时,为了尝试让初学者也可以学习深度强化学习,山梨大学本科院医工农学综合教育学部的刘震先生和名取智纮先生在阅读本书的手稿时构造了一个开发环境并检查了程序的运行情况,在此对他们深表谢意。还要感谢协助进行运行检查的山梨大学工程学院的佐野祐太先生、村田义伦先生和依田直树先生。此外,作者所属的山梨大学工学院信息机电工程学系的教职员工以及实验室的本科生和研究生也提供了支持。最后,如果没有OHM公司所有人的鼎力相助,本书也难以出版,我们要再次感谢所有向我们提供帮助的人。
使用本书时的注意事项
本书中涉及的程序可以从OHM公司的网站(https://www.ohmsha.co.jp/)以及华章图书官网(http://www.hzbook.com)进行下载。
本书的程序可以在以下环境中运行。
Windows 8.1/10
搭载了macOS 10.13 High Sierra的MacBook和MacBook Pro
Raspbian OS(版本2.7.0)/ Raspberry Pi2 Model B或Raspberry Pi3 Model B
搭载Ubuntu 16.04 / Intel Core i7的PC 或 VirtualBox上的虚拟环境
Python 2.7.14或Python 3.6.4
大部分程序在Python 2系列和Python 3系列中都能运行,但部分程序在Python 2中不能运行,关于这类程序我们标注了注意事项。
另外,在Python库的安装中使用pip命令,但在Linux、Mac和RasPi中如果不标明pip3,则不能作为Python 3系列中可用的库进行安装,请注意这一点。如果只有pip,则有时会作为Python 2系列的库被安装。想要明确指定Python 2系列的情况下使用python -m pip更为可靠。
除以上环境外均不适用,敬请谅解。
本书上登载的是本书写作时的信息,实际使用时情况可能会有变化。特别是作为深度学习框架的Chainer、ChainerRL的版本升级间隔很短,Python的库也在频繁地进行版本升级。本书内容不会随着版本升级而改动,请事先谅解。
对于因使用本书而造成的直接或间接损失,作者及OHM公司难以承担一切责任。如需使用,请由使用者个人负责。
关于本书提供的程序的再发布以及使用声明如下:
程序是免费软件。个人和商用都可以自由使用。
程序可以自由再发布、修改。
程序不受担保。即使发生由于程序故障等造成的损失,作者及OHM公司也无法担保一切责任,请事先谅解。

上架指导

计算机\程序设计

封底文字

近年来,机器学习受到了人们的广泛关注。本书面向普通大众,指导读者在Python(基于Chainer和OpenAI Gym)中实践深度强化学习。读者只需要具备一些基本的编程经验即可读懂书中内容,通过实现具体程序来掌握深度强化学习的相关知识。
本书内容:
·介绍深度学习、强化学习和深度强化学习的基本知识。
·通过多种实际对战游戏(如太空侵略者、吃豆人)来介绍算法,如ε-greedy算法。
·使用Anaconda设置本地PC,在倒立摆和老鼠学习问题中实现深度强化学习。
·使用Python实现MNIST手写数字分类任务。
·实现深度强化学习的基本算法DQN。
·详解继DQN之后提出的新的深度强化学习技术(DDQN、PER-DQN、DDPG和A3C等)。

译者序

这是一本可以从实践中学习深度强化学习的入门书,适合对强化学习感兴趣的初学者阅读。只要将本书通读一遍并加以实践,就能掌握深度强化学习的基本知识。本书涵盖强化学习、CNN、Python环境构建以及实际环境下的实验等深度强化学习的内容,着重讲解了初学者容易误解的点并对参数进行了说明。作为一本可以自己尝试上手操作的指南性书籍,本书值得推荐给想强化动手实操、构建执行环境并在实践中学习的读者。
本书使用的操作系统有Windows、MacOS和Ubuntu。另外,在硬件方面,除了PC以外,还介绍了在最近流行的Raspberry Pi、Arduino环境下使用的情况。
本书包含很多在OS和硬件上构建深度强化学习环境的方法、程序示例、执行结果示例、硬件的结构图。此外,书中介绍的示例程序全部都可以从OHM公司的网页上下载。

图书目录

译者序
前言
第1章 引言 1
1.1 深度强化学习可以做什么 1
1.2 本书的结构 4
1.3 框架:Chainer和ChainerRL 6
1.4 Python的运行检查 6
1.5 Chainer的安装 9
1.6 ChainerRL的安装 12
1.7 模拟器:OpenAI Gym 14
第2章 深度学习 17
2.1 什么是深度学习 17
2.2 神经网络 18
2.3 基于Chainer的神经网络 21
2.3.1 Chainer与神经网络的对应 24
2.3.2 Chainer程序 25
2.3.3 参数设置 26
2.3.4 创建数据 27
2.3.5 定义神经网络 27
2.3.6 各种声明 28
2.3.7 显示训练状态 28
2.3.8 保存训练状态 31
2.3.9 执行训练 32
2.4 与其他神经网络的对应 32
2.4.1 感知器 32
2.4.2 5层神经网络(深度学习) 33
2.4.3 计算输入中的1的数量 34
2.5 基于深度神经网络的手写数字识别 35
2.5.1 手写数字的输入格式 36
2.5.2 深度神经网络的结构 39
2.5.3 8×8的手写数字数据 41
2.6 基于卷积神经网络的手写数字识别 43
2.6.1 卷积 45
2.6.2 激活函数 49
2.6.3 池化 49
2.6.4 执行 50
2.7 一些技巧 53
2.7.1 读取文件数据 54
2.7.2 使用训练模型 55
2.7.3 重启训练 56
2.7.4 检查权重 56
2.7.5 从文件中读取手写数字 57
第3章 强化学习 59
3.1 什么是强化学习 59
3.1.1 有监督学习 60
3.1.2 无监督学习 60
3.1.3 半监督学习 60
3.2 强化学习原理 61
3.3 通过简单的示例来学习 61
3.4 应用到Q学习问题中 63
3.4.1 状态 63
3.4.2 行动 63
3.4.3 奖励 63
3.4.4 Q值 64
3.5 使用Python进行训练 67
3.5.1 运行程序 67
3.5.2 说明程序 69
3.6 基于OpenAI Gym的倒立摆 73
3.6.1 运行程序 73
3.6.2 说明程序 74
3.7 如何保存和加载Q值 79
第4章 深度强化学习 81
4.1 什么是深度强化学习 81
4.2 对于老鼠学习问题的应用 83
4.2.1 运行程序 83
4.2.2 说明程序 85
4.2.3 如何保存和读取智能体模型 91
4.3 基于OpenAI Gym的倒立摆 91
4.3.1 运行程序 91
4.3.2 说明程序 92
4.4 基于OpenAI Gym的太空侵略者 97
4.5 基于OpenAI Gym的颠球 99
4.5.1 运行程序 101
4.5.2 说明程序 102
4.6 对战游戏 109
4.6.1 黑白棋 109
4.6.2 训练方法 111
4.6.3 变更盘面 121
4.6.4 黑白棋实体 121
4.6.5 如何与人类对战 123
4.6.6 卷积神经网络的应用 127
4.7 使用物理引擎进行模拟 128
4.7.1 物理引擎 129
4.7.2 运行程序 130
4.7.3 说明程序 131
4.8 物理引擎在颠球问题中的应用 132
4.9 物理引擎在倒立摆问题中的应用 140
4.10 物理引擎在机械臂问题中的应用 144
4.11 使用其他深度强化学习方法 151
4.11.1 深度强化学习的类型 151
4.11.2 将训练方法更改为DDQN 153
4.11.3 将训练方法更改为PER-DQN 153
4.11.4 将训练方法更改为DDPG 153
4.11.5 将训练方法更改为A3C 155
第5章 实际环境中的应用 157
5.1 使用摄像机观察环境(MNIST) 157
5.1.1 摄像机设置 158
5.1.2 通过卷积神经网络对摄像机图像进行分类 160
5.1.3 使用图像大小为28×28的手写数字进行训练 163
5.2 实际环境中的老鼠学习问题 164
5.3 使用Raspberry Pi处理老鼠学习问题 168
5.3.1 环境构建 169
5.3.2 以输入输出为重点的简化 169
5.3.3 使用摄像机测量环境 176
5.4 使用Arduino + PC处理老鼠学习问题 181
5.4.1 环境构建 182
5.4.2 以输入输出为重点的简化 185
5.4.3 使用摄像机测量环境 193
5.5 使用Raspberry Pi + Arduino处理老鼠学习问题 197
5.6 结语 201
附录 202

教学资源推荐
作者: Mario Hewardt Daniel Pravat
作者: 刘振安 刘燕君 唐军 编著
作者: [美]约翰·R. 莱文(John R. Levine) 著
作者: [美]罗伯特·哈珀(Robert Harper) 著
参考读物推荐
作者: (美)Ian F. Darwin 编
作者: (美)马丁 L. 阿伯特(Martin L. Abbott)  迈克尔 T. 费舍尔(Michael T. Fisher) 著
作者: (美)Jennifer Campbell; Paul Gries; Jason Montojo; Greg Wilson 著