PREFACE
前言
强化学习(RL)是用于创建自学习自主智能体的人工智能方法。本书采用实用的方法来研究强化学习,并使用受现实世界中商业和行业问题启发的实际示例来教授先进的强化学习知识。
首先,简要介绍强化学习元素,你将掌握马尔可夫链和马尔可夫决策过程,它们构成了对强化学习问题建模的数学基础。然后,你将了解用于解决强化学习问题的蒙特卡罗(Monte Carlo)方法和时间差分(Temporal Difference, TD)学习方法。接下来,你将了解深度Q-学习(或Q学习)、策略梯度算法、行动器-评论器(actor-critic)[1]方法、基于模型的方法以及多智能体强化学习。随着学习的深入,你将使用现代Python库深入研究许多具有高级实现的新颖算法,还将了解如何实现强化学习来解决诸如自主系统、供应链管理、游戏、金融、智慧城市和网络安全等领域所面临的现实挑战。最后,你将清楚地了解使用哪种方法及何时使用,如何避免常见的陷阱,以及如何应对实现强化学习时所面临的挑战。
读完本书,你将掌握如何训练和部署自己的强化学习智能体来解决强化学习问题。
目标读者
本书适用于希望在实际项目中实现高级强化学习概念的专业机器学习从业者和深度学习研究人员。本书也适合那些希望通过自学习智能体解决复杂的序贯决策问题的强化学习专家。阅读本书需要读者具备Python编程、机器学习和强化学习方面的知识和使用经验。
本书涵盖的内容
第1章介绍强化学习,首先着眼于强化学习在行业中的应用给出一些激励示例和成功案例,然后给出基本定义,让你对强化学习概念有新的认识,最后介绍强化学习环境的软件和硬件设置。
第2章介绍一个相当简单的强化学习设置,即没有上下文的多臂老虎机问题,它作为传统A/B测试的替代方案,在业界应用广泛。该章还介绍了一个非常基本的强化学习概念:探索-利用。我们还用4种不同的方法解决了一个在线广告案例原型问题。
第3章通过在决策过程中添加上下文并让深度神经网络参与决策,更深入地讨论多臂老虎机(Multi-Armed Bandit, MAB)问题,并将来自美国人口普查的真实数据集用于在线广告问题。最后介绍多臂老虎机问题在工业和商业中的应用。
第4章讨论建模强化学习问题的数学理论。首先介绍马尔可夫链,包括状态类型、可遍历性、转移和稳态行为。然后介绍马尔可夫奖励过程和决策过程,涵盖回报、折扣、策略、值函数和贝尔曼最优性等强化学习理论中的关键概念。最后讨论部分可观测的马尔可夫决策过程。我们使用一个网格世界的例子贯穿本章来说明这些概念。
第5章介绍动态规划方法,这是理解如何解决马尔可夫决策过程(MDP)的基础。该章还会阐释策略评估、策略迭代和值迭代等关键概念。我们使用一个示例贯穿本章来解决库存补充问题。最后讨论在实践中使用动态规划方法求解强化学习存在的问题。
第6章介绍深度强化学习,并涵盖端到端规模化的深度Q-学习。我们首先讨论为什么需要深度强化学习。然后介绍RLlib(一个流行且可扩展的强化学习库)。我们构建了从拟合Q-迭代到DQN(Deep Q-Network)再到Rainbow的深度Q-学习方法。最后深入探讨分布式DQN(Ape-X)等更高级的主题,并讨论要调整的重要超参数。对于经典DQN,我们将用TensorFlow实现;对于Rainbow,我们将使用RLlib实现。
第7章介绍另一种重要的强化学习方法:基于策略的方法。你将首先了解它们有何不同以及为什么需要它们。然后,我们将详细介绍几种最先进的策略梯度和信任域方法。最后介绍Actor-Critic算法。我们主要介绍这些算法的RLlib实现,这里并不是给出冗长的实现细节,而是关注如何以及何时使用它们。
第8章展示基于模型的方法做出了哪些假设,以及它们与其他方法相比有哪些优势。然后讨论著名的AlphaGo Zero背后的模型。最后给出一个使用基于模型的算法的练习。该章混合使用了手动实现和RLlib实现。
第9章介绍一个建模多智能体强化学习问题的框架。
第10章讨论将复杂问题分解成更小部分并使其可解决的机器教学方法。这种方法对于解决许多现实生活中的问题是必要的,你将学习关于如何设计强化学习模型的实用技巧和窍门,并超越算法选择来解决强化学习问题。
第11章介绍为什么部分可观测性和sim2real差距是一个问题,以及如何使用类LSTM(长短期记忆)的模型泛化和域随机化来解决这些问题。
第12章介绍允许我们将单个模型用于多个任务的方法。样本效率是元强化学习中的一个主要问题,该章将向你展示元强化学习中一个非常重要的未来方向。
第13章介绍前沿的强化学习研究。到目前为止讨论的许多方法都有某些假设和限制,该章讨论的主题就解决这些限制给出了相关建议。在该章结束时,你将了解当遇到前几章中介绍的算法的限制时应该使用哪些方法。
第14章介绍强化学习在创建现实自主系统方面的潜力。该章涵盖自主机器人和自动驾驶汽车的成功案例。
第15章介绍库存计划和车辆路径优化问题的实践经验。我们将它们建模为强化学习问题并给出解决案例。
第16章涵盖强化学习在营销、广告、推荐系统和金融中的应用。该章让你广泛了解如何在业务中使用强化学习,以及机会和限制是什么。在该章中,我们还将讨论上下文多臂老虎机问题的示例。
第17章涵盖智慧城市和网络安全领域的问题,例如,交通控制、服务提供监管和入侵检测。我们还会讨论如何在这些应用程序中使用多智能体方法。
第18章详细介绍强化学习领域的挑战是什么以及克服这些挑战的前沿研究建议和未来方向。该章教你如何评估强化学习方法对给定问题的可行性。
下载示例代码文件
本书的代码包托管在GitHub上,地址为https://github.com/PacktPublishing/Mastering-Reinforcement-Learning-with-Python。如果代码有更新,我们将在现有的GitHub代码库中更新。
下载彩色图像
我们还提供了一个PDF文件,其中包含本书中使用的屏幕截图/图表的彩色图像,可以从https://static.packt-cdn.com/downloads/9781838644147_ColorImages.pdf下载。
本书约定
本书中使用了以下约定。
文本中的代码:表示文本中的代码字、数据库表名称、文件夹名称、文件名、文件扩展名、路径名、虚拟URL、用户输入等。示例如下:“安装NVIDIA Modprobe,例如,对于Ubuntu,使用sudo apt-get install nvidia-modprobe。”
一段代码如下所示:
当我们希望你注意代码块的特定部分时,相关的行或项目以粗体显示:
提示或重要说明
以文本框形式出现。
[1]本书译作“行动器-评论器”,也可译为“行动器-评判器”“行动者-评论家”等。———编辑注