Python深度强化学习:基于Chainer和OpenAI Gym
上QQ阅读APP看书,第一时间看更新

前言

近年来,机器学习受到了人们的广泛关注。在机器学习中,主要通过向学习器提供受训目标(有标签信息)来进行有监督学习,例如,大多数图像识别和语音识别都是通过有监督学习来进行的。

另外,还存在一种称为半监督学习的方法,该方法不像有监督学习那样提供有标签信息,这种机器学习方法中典型的便是强化学习。强化学习是机器学习的一种,它根据特定环境(例如游戏的棋盘盘面等)中的当前情况来决定下一步要采取的行动。例如,让计算机学习下围棋时,思考在某种局面下,接下来应该在哪里放置棋子更好。

强化学习会对计算机考虑到的行动进行评估,并以奖励的形式进行反馈,评估行动的好坏(例如在围棋比赛中的赢或输),这样一来,计算机将自动采取在特定情况下会增加奖励的行动。深度强化学习将强化学习与深度学习融合在一起,取得了很好的成效。其中让我们记忆犹新的便是由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公司也无法担保一切责任,请事先谅解。