Python深度强化学习:基于Chainer和OpenAI Gym
定 价:79 元
- 作者:[日]牧野 浩二(Koji Makino),[日]西崎 博光(Hiromitsu Nishizaki)
- 出版时间:2021/11/1
- ISBN:9787111692584
- 出 版 社:机械工业出版社
- 中图法分类:TP311.561
- 页码:
- 纸张:胶版纸
- 版次:
- 开本:16开
本书基于强化学的库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
大部分程序在Pyt
译者序
前言
第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