前 言 深度强化学习能够构建超越计算机视觉或感知的智能体、产品和服务来执行操作。TensorFlow 2.x 是最流行的深度学习框架的最新版本,用于开发和训练深度神经网络(Deep Neural Network,DNN)。 本书首先介绍了深度强化学习的基础知识和TensorFlow 2.x的最新主要版本。接下来的内容涵盖了OpenAI Gym、基于模型的强化学习和无模型的强化学习,以及学习如何开发基本智能体。接着,读者将了解如何实现高级的深度强化学习算法,如行动者-评论家、深度确定性策略梯度、深度Q网络、近端策略优化、深度循环Q网络和软行动者-评论家等算法,以训练强化学习智能体。读者还将通过构建加密货币交易智能体、股票/股份交易智能体和用于自动完成任务的智能体来探索现实世界中的强化学习。最后,读者将了解如何将深度强化学习智能体部署到云端,以及如何使用TensorFlow 2.x为Web端、移动端和其他平台构建跨平台应用程序。 通过本书,可以使用TensorFlow 2.x从头开始进行简单易懂的实现,读者可以更深入理解深度强化学习算法。 本书的目标读者 本书是面向希望使用TensorFlow 2.x从零开始构建、训练和部署自己的强化学习系统的机器学习应用开发者、人工智能和应用人工智能研究人员、数据科学家、深度学习从业者和了解强化学习基础知识的学生。 本书涵盖的内容 第1章,使用TensorFlow 2.x开发深度强化学习的基本模块,提供了为具有离散和连续动作空间的强化学习应用构建强化学习环境、基于深度神经网络的强化学习智能体、进化神经智能体以及其他基本模块的初始教程。 第2章,基于价值、策略和行动者-评论家的深度强化学习算法实现,包含实现基于价值迭代的学习智能体的方法,并将强化学习中几个基础算法(如蒙特卡洛控制、SARSA和Q学习、行动者-评论家以及策略梯度算法)的实现分解为简单的步骤。 第3章,高级强化学习算法的实现,提供了使用深度Q网络(Deep Q-Network,DQN)、双重与竞争深度Q网络(Double and Dueling Deep Q-Network,DDDQN)、深度循环Q网络(Deep Recurrent Q-Network,DRQN)、异步优势行动者-评论家(Asynchronous Advantage Actor-Critic,A3C)、近端策略优化(Proximal Policy Optimization,PPO)以及深度确定性策略梯度(Deep Deterministic Policy Gradient,DDPG)算法实现完整智能体训练系统的简明方法。 第4章,现实世界中的强化学习——构建加密货币交易智能体,展示了如何使用来自Gemini等交易所的真实市场数据在自定义强化学习环境中实现和训练一个软行动者-评论家智能体,用于比特币和以太币交易,其中包括表格和视觉(图像)的状态/观测以及离散和连续的动作空间。 第5章,现实世界中的强化学习——构建股票/股份交易智能体,涵盖了如何在由真实的股票市场交易数据支撑的自定义强化学习环境中训练高级的强化学习智能体,使用可视化价格图表和/或表格票证数据等在股票市场上进行交易以获取利润。 第6章,现实世界中的强化学习——构建智能体来完成您的待办事项,提供了构建、训练和测试基于视觉的强化学习智能体来完成Web上的任务的方法,以帮助您自动完成任务,如单击网页上的弹出/确认对话框、登录各种网站、查找并预订最便宜的行程机票、整理您的电子邮件收件箱,以及在社交媒体网站上点赞/分享/转发帖子以与您的关注者互动。 第7章,在云端部署深度强化学习智能体,提供了工具和详细信息,帮助读者领先一步使用深度强化学习提前建立基于云的模拟即服务和智能体/机器人即服务程序。通过部署交易机器人即服务,学习如何使用在云端运行的远程模拟器来训练强化学习智能体,组装强化学习智能体的运行组件,以及将深度强化学习智能体部署到云端。 第8章,使用分布式训练加速深度强化学习智能体开发,包含了使用TensorFlow 2.x进行深度神经网络模型的分布式训练以加速深度强化学习智能体开发的方法。您将了解如何在单台机器和机器集群上利用多个CPU和GPU来纵向/横向扩展您的深度强化学习智能体训练,以及如何利用Ray、Tune和RLLib进行大规模加速训练。 第9章,深度强化学习智能体的多平台部署,提供了可自定义的模板,读者可以利用这些模板来为自己的用例构建和部署深度强化学习应用程序。读者将了解如何以各种实际使用的格式(如TensorFlow Lite、TensorFlow.js和ONNX)导出用于服务/部署的强化学习智能体模型,并了解如何利用NVIDIA Triton或构建您自己的解决方案来启动可实际使用的、基于强化学习的人工智能服务。读者还可以在手机和Web应用程序中部署强化学习智能体,并学习如何在Node.js应用程序中部署强化学习机器人。 书尽其用的建议 本书的代码已经在Ubuntu 18.04和Ubuntu 20.04 上进行了广泛的测试,而且可以在安装了Python 3.6+ 的Ubuntu后续版本中正常工作。在安装Python 3.6 的情况下,搭配每项内容开始时列出的必要Python 工具包,本书的代码也同样可以在Windows和macOS X上运行。 建议创建和使用一个名为tf2rl-cookbook的Python虚拟环境安装工具包以及运行本书的代码。推荐读者安装Miniconda或 Anaconda 管理Python虚拟环境。 建议对GitHub存储库加注星标并进行分叉,以便接收代码的更新和改进。此外,建议读者在GitHub本书讨论区分享自己的成果,并与其他读者和社区进行互动。 示例代码文件的下载 扫描下方二维码下载全书示例代码。 彩色图像的下载 本书提供了书中图像的PDF文件,包含本书中使用的屏幕截图/图表的彩色图像,可以扫描下方二维码下载。 使用的约定 本书中使用了许多文本约定。 Code in text:表示文本中使用的代码字。下面是一个示例:“我们将从实现Actor类中的save方法开始,以将Actor模型导出为TensorFlow的SavedModel格式。” 代码块的设置如下: def save(self, model_dir: str, version: int = 1): actor_model_save_dir = os.path.join(model_dir, "actor", str(version), "model.savedmodel") self.model.save(actor_model_save_dir, save_format="tf") print(f"Actor model saved at:{actor_model_save_dir}") 对于代码块的特定部分,相关行或项将以粗体显示: 译者注:此处原书也未体现粗体。 if args.agent != "SAC": print(f"Unsupported Agent: {args.agent}. Using SAC Agent") args.agent = "SAC" # Create an instance of the Soft Actor-Critic Agent agent = SAC(env.observation_space.shape, env.action_space) 任何命令行输入或输出都按如下方式给出: (tfrl-cookbook)praveen@desktop:~/tensorflow2-reinforcement-learning-cookbook/src/ch7-cloud-deploy-deep-rl-agents$ python 3_training_rl_agents_using_remote_sims.py 粗体(Bold):表示新术语、重要词或屏幕上看到的词。例如,菜单或对话框中的单词会像这样出现在文本中。例如,“单击打开现有项目(Open an Existing Project)选项,可以看到一个弹出窗口,询问选择文件系统上的目录。导航到第9章的内容,并选择9.2\_rl\_android\_app。” 提示或重要说明 像这样出现。