书名:深度强化学习实践 第三版
副标题:一个实用且容易跟得上的强化学习指南,从(Q-learning和DQNs)到(PPO和RLHF)
作者:Maxim Lapan
1.书中目录
模块一:强化学习初探
- 章1: 什么是强化学习.包含RL思想和主要形式模型的介绍。
- 章2:OpenAI Gym API 和 Gymnasium.介绍了RL的实践方面,在使用开源库Gym及其新一代Gymnasium库的情况下。
- 章3:使用Pytorch进行深度学习.为您提供PyTorch库的快速概述。
- 章4:交叉熵方法.介绍了RL中最简单的方法之一,让你对RL方法和其问题有个初步印象。
模块二:基于价值的方法
- 章5:表格学习与贝尔曼方程.本章开启了模块二,致力于介绍基于价值的方法族群。
- 章6:深度Q网络.描述了DQNs,是对基于价值方法的扩展,能让我们解决复杂的环境问题。
- 章7:更高级的强化学习库.描述了PTAN库,我们将会用它来简化RL方法的实现。
- 章8:DQN扩展.详细介绍了对DQN方法的现代扩展,以提高其在复杂环境中的稳定性和收敛性
- 章9:加速强化学习的方法.提供了快速执行RL代码的方法。
- 章10:使用强化学习进行股票交易.是第一个实际可行的项目,重点是将DQN方法应用于股票交易
模块三:基于策略的方法
- 章11:策略梯度.打开了本书的模块三,并介绍了另一类基于直接策略优化的RL方法。
- 章12:Actor-Critic方法:A2C和A3C.描述了RL中最广泛使用的基于策略的方法之一
- 章13:TextWorld环境.涵盖了RL方法在互动小说游戏中的应用。
- 章14:网页导航.是另一个漫长项目,将RL应用于网页导航中,使用MiniWoB++环境。
模块四:高级强化学习
- 章15:连续动作空间.打开了本书的高级RL部分,并描述了使用连续动作空间和各种方法(广泛用于机器人技术)的环境的细节。
- 章16:信任域方法.是另一个关于连续动作空间的章节,描述了PPO、TRPO、ACKTR和SAC方法集。
- 章17:强化学习里的黑盒优化.揭示了另一种不使用显式形式的梯度方法。
- 章18:高级探索.涵盖了可以用于更好地探索环境的不同方法------RL的一个非常重要的方面。
- 章19:带有人类反馈的强化学习.介绍并实现最近的方法来指导学习过程,如通过给予人类反馈。这种方法被广泛应用于大型语言模型(llm)的训练中。在本章中,我们将从头开始实现RLHF管道,并检查其效率。
- 章20:AlphaGo Zero 和 MuZero.描述了AlphaGo Zero方法及其演变为MuZero,并将这两种方法应用到游戏Connect 4中。
- 章21:离散优化中的强化学习.描述了RL方法在离散优化领域的应用,使用魔方作为一个环境。
- 章22:多智能体强化学习.对于多智能体的情况下,介绍了RL一个相对新的方向。
2.前言
这本书是关于强化学习(RL),RL是机器学习(ML)的一个子领域;RL专注于在通用的且具备挑战性问题上最优行为的学习 ,这种问题往往是在复杂环境中。这种学习过程仅仅由奖励值 和从环境中获取的观察结果 所驱动。这个模型是非常通用,并且能够应用于许多实际场景中,从玩游戏到优化复杂制造工艺上。那么本书主要关注深度强化学习(DRL),一种利用深度学习方法的强化学习。
由于其灵活性和通用性,强化学习领域发展非常迅速,吸引了大量关注,既有试图改进现有方法或者创建新方法的学者,也包括有兴趣于以最有效率方式来解决他们所遇到问题的实践者。
为什么要写这本书
全球范围内,强化学习(RL)领域正在进行大量的研究活动。新的研究论文几乎每天都在发表,并且有大量深度学习(DL)会议,例如NIPS或者ICLR,都专注于RL方法。同时,也有几个大型研究小组专注于将 RL 方法应用于机器人、医学、多智能体系统等领域。
然而,尽管最近的研究信息广泛可用,但它过于专业化和抽象以至于不易于理解。更糟糕的是,在强化学习(RL)的实际应用方面的层面,因为从研究论文中数学描述的抽象方法如何过渡到解决实际问题的具体实现,并不总是简单容易的。
这就让一些对于该领域感兴趣的人们难以理解论文和会议演讲背后的方法和思想。
也有一些关于强化学习各个方面的非常好的博客文章,用工作示例进行了说明,但博客文章的有限格式允许作者只描述一两种方法,而不需要构建一个完整的结构化图片,也不需要系统地展示不同方法之间的相互关系。本书写作目的是尝试填补这种明显空白--关于RL方法和途径上实践与结构化信息之间的空白。
本书使用方法
本书一个重要层面是面向实践。每个方法都针对各种环境进行了实现,从非常简单的到相当复杂的。本书试图使示例简洁,这些示例是通过PyTorch的强大功能来实现。另一方面,示例的复杂性与使用要求也可以让RL爱好者们不需要使用到非常大的计算资源诸如GPUs的集群或者强大的工作站。
我相信,这将使RL领域的受众范围越来越大,而不仅仅只在研究团队或大型人工智能公司。另一方面,这仍然是属于深度强化学习,我还是强烈建议使用GPU,因为计算速度的加快将使实验更加方便(等待几个星期才能完成一次优化并不是很好玩)。书中大约一半的例子在GPU上运行将会是很好的体验。
除了RL中使用的传统中等规模环境示例,如Atari游戏或连续控制问题之外,本书还包含几个章节(10、13、14、19、20和21) 包含较大的项目,说明RL方法如何应用于更复杂的环境和任务。这些示例仍然不是完整的、且不是现实的项目(现实的项目就可以占据一整本书来描述),但也说明RL范式如何在更大的问题上超越公认基准的领域。
关于本书第1、2和3模块中的示例,还有一点需要注意的是,我试图使它们自成一体,并且完整地显示了源代码。有时这会导致重复代码片段(例如,大多数方法中的训练循环非常相似),但我相信让你自由直接进入你想学习的方法才是更重要,这样能避免一些重复部分。书中的所有示例都可以在GitHub上找到,欢迎你fork它们,做实验,还有贡献。
除了源代码之外,还有几个章节(第15、16、19和22章)配有训练模型的视频记录。所有这些记录都可以在以下YouTube播放列表中找到。
本书适合给谁看
本书适合机器学习工程师、软件工程师和数据科学家,他们希望在实践中学习和应用深度RL。它假定读者熟悉Python、微积分和ML概念。通过实际案例和高级概述,它也适合有经验的专业人士,他们希望加深对高级深度RL方法的理解并在各个行业应用,比如游戏和金融。
如何充分利用这本书
如果你使用的机器至少有32G内存,这本书肯定很合适你。虽然GPU并不是必须,但还是强烈建议使用Nvidia GPU。这个代码已经在Linux和MacOS上进行了测试。有关硬件和软件需求的更多细节,请参见第2章。
在这本书中,描述RL方法的所有章节都有相同的结构:在一开始,我们讨论了该方法的动机,它的理论基础,以及它背后的思想。然后,我们将该方法应用于不同环境的几个示例。
你可以用不同的方式使用本书
- 想要快速熟悉一个特定的方法,您只能阅读相关章节的介绍性部分。
- 想要更深入地理解该方法的实现方式,您可以阅读该代码及其附带的解释。
- 想要更深入地熟悉该方法(我相信这是最好的学习方法),您可以尝试使用所提供的源代码作为参考点来重新实现该方法并使其工作。
无论你选择什么方法,我都希望这本书会对你有用!
第三版变化
与本书第二版(2020年出版)相比,本书的内容有几个重大变化:
- 代码示例的所有依赖关系都已更新到最新版本,或者被更好的替代方案替换。例如,OpenAI Gym不再被维护了,但我们有Farama Foundation Gymnasium 可以fork。另一个情况是MiniWoB++库,它已经取代了MiniWoB和Universe环境。
- 关于RLHF的新一章,MuZero方法被添加到AlphaGo Zero的一章中。
- 有很多小的修复和改进------大多数的数据都被重新绘制,以使它们更清晰、更容易理解。