前言
本书的目标
近年来,我们常常听到强化学习和深度强化学习等词语。但是,实际上真正实现强化学习的并不多。目前正处于第三次人工智能热潮中,深度学习方面已经出版了大量书籍。然而,大多数关于强化学习和深度强化学习的书籍都是相关研究人员的学术成果。学术性书籍强调理论,倾向于公式和证明,实现代码往往很少。对于非研究人员来说,通过阅读这类书籍来理解强化学习和深度强化学习存在着较大的障碍。
因此,本书面向的不是研究者而是普通大众,旨在让读者在实践中理解强化学习和深度强化学习。本书强调算法的具体实现,通过给出大量代码并对其进行解释和说明,来帮助读者更好地学习。书中所有的代码都可以下载。在阅读本书时请实现相关程序,通过完成实际代码来学习。
强化学习和深度强化学习主要用于两个目的——机器人等控制规则的构建以及围棋、将棋等对战游戏的策略构建。本书涉及控制规则的构建,但没有实现围棋等对战游戏。然而,本书所讲述的基本内容对那些想要为对战游戏制定策略的人也是有用的。
读者所需的先验知识
本书以对强化学习和深度强化学习感兴趣,但不了解其细节和实现方法的读者为对象。阅读本书需要以下三方面的知识:
1)能够理解if语句、for语句。
2)能够自己定义方法(函数)。
3)会执行向量和矩阵的乘法运算。
换句话说,本书试图以更容易理解的方式进行讲解,读者具备一些基本的编程经验和基本的线性代数知识即可顺利学习。本书使用Python作为编程语言来实现相关程序,即使对Python不熟悉的读者也能轻松理解本书内容。但是,由于篇幅的限制,本书没有解释Python的所有基本细节,如果你是Python初学者,请参考网上的信息和Python的入门书籍。
本书的实现代码和运行环境
可以从作者的GitHub或Mynavi出版社的出版支持页面下载本书的实现代码。
本书的运行环境如下所示。我们使用PyTorch作为深度学习的框架,采用的是在2018年4月底发布的0.4.0版本。第7章使用亚马逊的云服务,通过GPU服务器来进行计算。计算所需时间大约3小时,费用为500日元或更少,所以尝试运行所需的费用并不高。
●运行环境——第1~6章(本地PC)
操作系统:Windows 10
GPU:无;Python:3.6.5;Anaconda:5.1;PyTorch:0.4.0
●运行环境——第7章(AWS)
●操作系统:Ubuntu 16.04|64位;实例:p2.xlarge
GPU:NVIDIA K80;Python:3.6.5;conda:4.5.2;PyTorch:0.4.0
各章概述
第1章介绍三部分内容。首先,分别介绍机器学习及其三个分类(监督学习、非监督学习和强化学习)。然后,介绍强化学习近年来引起人们关注的原因,以及强化学习发展的历史。最后,介绍学者在强化学习和深度强化学习领域正在做什么样的工作,以及它在未来如何对社会产生价值。
第2章逐步介绍强化学习的算法和实现方法,一步步实现简单的强化学习代码,采用走迷宫作为目标任务,通过强化学习训练使智能体以最短的路线到达目的地。该章在学习强化学习的概念和术语的同时,实现了三种不同的算法——策略梯度法、Sarsa和Q学习。实现环境可以为Web浏览器上的Try Jupyter,这是一项能实现和执行Python的服务。
第3章的目的是将第2章中介绍的强化学习的基础知识应用于更复杂的任务。该章使用倒立摆作为目标任务,倒立摆形似在手掌上立起的扫帚,放一根棍子使其站在小车上,要求一点一点地移动小车以防止小棍掉落,这一控制规则是通过强化学习技术来学习并实现的。与走迷宫任务的不同之处在于状态空间的复杂性。倒立摆的状态由诸如位置和速度等多个连续变量表示,我们将在通过实现强化学习来执行此复杂任务时进行解释。该章还介绍如何使用Anaconda设置本地PC作为示例的实现环境。
第4章的目的是帮助读者了解深度学习的内容以及如何使用PyTorch实现简单任务。PyTorch是一个深度学习库,TensorFlow、Keras、Chainer等也是用于实现深度学习的有名的库,但在本书中我们使用PyTorch。首先,我们将介绍神经网络和深度学习的发展历史。然后,介绍实现深度学习时重要的学习阶段和推理阶段,解释各阶段的目的和要完成的任务。最后,通过使用PyTorch实现对MNIST手写数字的分类向读者解释深度学习。
第5章的目的是理解强化学习与深度学习相结合的深度强化学习的原理,并能够实现一种称为DQN(深度Q网络)的算法。该章首先解释第3章中实现的传统强化学习的问题。之后,介绍深度强化学习的最基本算法DQN,并介绍在实现过程中重要的四个关键点。最后,采用DQN来完成与第3章中相同的倒立摆任务,并进行说明。
第6章的目的是解释继DQN之后提出的新的深度强化学习技术,并在此基础上给出其具体实现。该章首先将深度强化学习的进展以算法图的形式展示。然后,对于倒立摆任务,用DDQN、Dueling Network、优先经验回放和A2C等算法实现并说明,其中A2C是A3C(Asynchronous Advantage Actor-Critic)的变体。
第7章的目的是实现用于消砖块游戏的深度强化学习A2C。DeepMind公司是深度强化学习领域引人注目的公司,该章采用的A2C再现了DeepMind公司进行消砖块游戏的策略。该章将解释如何使用亚马逊的云服务AWS与GPU构建深度学习的执行环境。
致谢
本书在撰写过程中得到株式会社电通国际信息有限公司技术本部开发技术部中村年宏部长、涉谷谦吾、三澜谷嗣、佐佐木亮辅、清水琢也先生,以及开发技术部的各位同仁的支持,通过技术讨论,作者获得了很多指导。
本书由Mynavi出版社出版,正是由于山口正树的提案及大量建议和反馈,本书才得以出版。
感谢所有合作的人。