第2章 在走迷宫任务中实现强化学习
2.1 Try Jupyter的使用方法
2.1.1 强化学习的实现和执行环境
在本章中,我们将介绍强化学习的基本方法,并在逐步实现代码的同时进行解读。使用走迷宫作为强化学习的目标任务,让智能体学会在迷宫中以最短的路线前往目标。
本书使用Python编程语言实现强化学习。使用Python有两个主要原因。一个原因是机器学习和深度学习所需的包(由他人创建的类和方法库)比其他语言更完整。第二个原因是世界上许多人在Python中实现强化学习和深度强化学习,因此很容易在Web上找到有用的代码和解释。
如前言所述,读者在理解本书的Python实现代码之前需要以下三方面的知识和技术。
1)能够理解if语句、for语句。
2)能够自己定义方法(函数)。
3)会执行向量和矩阵的乘法运算。
换句话说,本书尝试使具备一些基本的编程经验和基本线性代数知识的读者能够理解。但是,由于篇幅限制,很难解释Python语言的所有基础知识,所以请参考其他关于Python的入门教程[1]。
在学习本章强化学习的基本内容时,使用了一个免费服务作为实现和执行的环境,读者可以在Web浏览器的Try Jupyter[2]上实现和执行Python。这很方便,因为可以在Web浏览器上编写Python程序而无须安装它。本章的内容也可以使用Google Colaboratory[3]完成,这是一个类似于Try Jupyter的免费网络服务。
Try Jupyter是用于编写Python程序的免费服务Jupyter Notebook的官方云版本。Jupyter Notebook也是一项免费服务,读者可以交互式地用Python或R等语言编写代码。交互式意味着编写的代码可以逐块(单元格)执行并按顺序编码。最初Jupyter Notebook是一种名为IPython(交互式Python)的服务,但除了Python之外,Jupyter Notebook已扩展了对R等语言的支持。
在学习Python或强化学习时,通常在自己的PC上安装Python环境,或使用Anaconda的Python和机器学习相关软件包。但是,安装它们需要一些时间。在开始学习时希望能立即体验强化学习,因此在第2章中使用Try Jupyter(或Google Colaboratoy)。第3章将介绍如何设置自己的Python实现和执行环境。
2.1.2 Try Jupyter的介绍
本节介绍如何使用Try Jupyter。首先,访问Try Jupyter的网站(https://jupyter.org/try)。这将打开如图2.1所示的页面。
图2.1 Try Jupyter的首页
当单击图2.1中用圆圈圈起的“Try Jupyter with Python”时,将进入Jupyter Notebook的界面。
现在来创建一个新程序。单击Jupyter Notebook屏幕左上角的File按钮,从下拉菜单中依次单击New Notebook→Python 3(见图2.2)。
图2.2 用Try Jupyter创建一个新程序
这将转换到如图2.3所示的编码页面。编码页面上由线条围绕的一个方形区域称为单元格(cell),这是用于执行程序的单元。
图2.3 Jupyter Notebook创建新程序的页面
然后在顶部单元格中输入以下代码。
完成后,按下Alt+Enter组合键。然后,如图2.4所示,执行当前单元格并在底部生成一个新单元格。另外,如果只想执行单元格并且不想生成下面的单元格,只须按Shift+Enter组合键。如果要在中间的单元格之间添加新单元格,单击上方菜单中的“Insert”(左数第四个选项),然后单击“Insert Cell Above”(在现有单元格上方添加新单元格),或者单击下面的“Insert Cell Below”(在当前单元格下方添加新单元格)。
图2.4 在Jupyter Notebook中运行第一个单元格
执行第一个单元格时,值存储在x和y中。为了显示x和y值,可在第二个单元格中输入以下代码,这是在Python中输出文字和变量值的指令。
输入后,按Alt+Enter组合键执行,就输出了x和y的值,如图2.5所示。
图2.5 运行Jupyter Notebook的第二个单元格
接下来,说明如何保存到目前为止创建的代码并重新加载它。保存之前,请参阅图2.6,单击屏幕顶部显示的文件名“Untitled”,然后更改文件名。单击“Untitled”时,会显示一个用于更改文件名的页面,这里将文件名改为tryJupyter_saveloadtest。之后,单击该页面右下角的“Rename”按钮以完成文件名的更改。
图2.6 重命名Jupyter Notebook文件
下载此文件,从左上角的“File”菜单中选择“Download as”,然后单击“Notebook(.ipynb)”,下载并保存文件“tryJupyter_saveloadtest.ipynb”。将下载的文件放置到方便的位置(见图2.7)。
图2.7 下载并保存Jupyter Notebook文件
以下是加载所保存文件的方法。如果当前在编码页面中,单击屏幕左上角的jupyter图标(见图2.8)。
图2.8 切换到Jupyter Notebook的首页
单击顶部屏幕右上角的“Upload”时,将显示文件选择窗口,选择要上传的文件(见图2.9)。所选文件将显示在页面顶部,旁边将显示“Upload”按钮。单击此按钮可上传所选文件。
图2.9 上传Jupyter Notebook文件
上传完成后,文件会变成可供选择的状态,如图2.10所示。单击文件名后,会转换到该文件的代码页面,可以再次编辑和执行。
图2.10 加载Try Jupyter文件
不用担心“如果将文件上传到云服务,其他人可以看到吗?”其他人是看不到的。浏览器将关闭此文件的上传操作。因此,如果在另一个浏览器中打开Try Jupyter首页,则之前上传的文件不存在。由于Try Jupyter无法在不上传的情况下重新编辑,因此不适合用于需要若干天才能创建的程序,但强烈建议在建立简单Python程序时使用Jupyter。
Try Jupyter的介绍到此结束。接下来将实现使用强化学习来完成迷宫任务。