描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111689331丛书名: 智能科学与技术丛书
编辑推荐
阐述深度强化机器学习理论和优化算法。围绕深度强化学习的体系特征进行深入浅出地讲解探讨,特点鲜明。本书采用端到端的方式引入深度强化学习,即从感性认识开始,而后解释理论和算法,*后提供代码实现和实用性技巧。
内容简介
本书介绍了深度强化学习理论和实现的独特结合。它从入门开始,然后详细地解释了深度强化学习算法的理论,也讨论了它的配套软件库SLM实验室的实现,并以使深度强化学习工作的实际细节结束。
目 录
赞誉
译者序
序言
前言
致谢
第1章 强化学习简介1
1.1 强化学习1
1.2 强化学习中的MDP4
1.3 强化学习中的学习函数7
1.4 深度强化学习算法9
1.4.1 基于策略的算法9
1.4.2 基于值的算法10
1.4.3 基于模型的算法10
1.4.4 组合方法11
1.4.5 本书中的算法12
1.4.6 同策略和异策略算法12
1.4.7 小结12
1.5 强化学习中的深度学习13
1.6 强化学习与监督学习14
1.6.1 缺乏先知14
1.6.2 反馈稀疏性15
1.6.3 数据生成15
1.7 总结16
部分 基于策略的算法和基于值的算法
第2章 REINFORCE18
2.1 策略18
2.2 目标函数19
2.3 策略梯度19
2.3.1 策略梯度推导20
2.4 蒙特卡罗采样22
2.5 REINFORCE算法23
2.5.1 改进的REINFORCE算法23
2.6 实现REINFORCE24
2.6.1 一种小化REINFORCE的实现24
2.6.2 用PyTorch构建策略26
2.6.3 采样动作28
2.6.4 计算策略损失29
2.6.5 REINFORCE训练循环30
2.6.6 同策略内存回放31
2.7 训练REINFORCE智能体33
2.8 实验结果36
2.8.1 实验:评估折扣因子γ的影响36
2.8.2 实验:评估基准线的影响37
2.9 总结39
2.10 扩展阅读39
2.11 历史回顾39
第3章 SARSA40
3.1 Q函数和V函数40
3.2 时序差分学习42
3.2.1 时间差分学习示例44
3.3 SARSA中的动作选择48
3.3.1 探索和利用49
3.4 SARSA算法50
3.4.1 同策略算法51
3.5 实现SARSA52
3.5.1 动作函数:ε-贪婪52
3.5.2 计算Q损失52
3.5.3 SARSA训练循环54
3.5.4 同策略批处理内存回放55
3.6 训练SARSA智能体56
3.7 实验结果58
3.7.1 实验:评估学习率的影响58
3.8 总结60
3.9 扩展阅读60
3.10 历史回顾60
第4章 深度Q网络62
4.1 学习DQN中的Q函数62
4.2 DQN中的动作选择64
4.2.1 Boltzmann策略65
4.3 经验回放67
4.4 DQN算法68
4.5 实现DQN69
4.5.1 计算Q损失70
4.5.2 DQN训练循环70
4.5.3 内存回放71
4.6 训练DQN智能体74
4.7 实验结果77
4.7.1 实验:评估网络架构的影响77
4.8 总结78
4.9 扩展阅读79
4.10 历史回顾79
第5章 改进的深度Q网络80
5.1 目标网络80
5.2 双重DQN算法82
5.3 优先级经验回放85
5.3.1 重要性抽样86
5.4 实现改进的DQN88
5.4.1 网络初始化88
5.4.2 计算Q损失89
5.4.3 更新目标网络90
5.4.4 包含目标网络的DQN91
5.4.5 双重DQN91
5.4.6 优先级经验回放91
5.5 训练DQN智能体玩Atari游戏96
5.6 实验结果101
5.6.1 实验:评估双重DQN与PER的影响101
5.7 总结104
5.8 扩展阅读104
第二部分 组合方法
第6章 优势演员-评论家算法106
6.1 演员106
6.2 评论家107
6.2.1 优势函数107
6.2.2 学习优势函数110
6.3 A2C算法111
6.4 实现A2C113
6.4.1 优势估计113
6.4.2 计算值损失和策略损失115
6.4.3 演员-评论家训练循环116
6.5 网络架构117
6.6 训练A2C智能体118
6.6.1 在Pong上使用n步回报的A2C算法118
6.6.2 在Pong上使用GAE的A2C算法121
6.6.3 在BipedalWalker上使用n步回报的A2C算法122
6.7 实验结果124
6.7.1 实验:评估n步回报的影响124
6.7.2 实验:评估GAE中λ的影响126
6.8 总结127
6.9 扩展阅读128
6.10 历史回顾128
第7章 近端策略优化算法130
7.1 替代目标函数130
7.1.1 性能突然下降130
7.1.2 修改目标函数132
7.2 近端策略优化136
7.3 PPO算法139
7.4 实现PPO141
7.4.1 计算PPO的策略损失141
7.4.2 PPO训练循环142
7.5 训练PPO智能体143
7.5.1 在Pong上使用PPO算法143
7.5.2 在BipedalWalker上使用PPO算法146
7.6 实验结果149
7.6.1 实验:评估GAE中λ的影响149
7.6.2 实验:评估裁剪变量ε的影响150
7.7 总结152
7.8 扩展阅读152
第8章 并行方法153
8.1 同步并行153
8.2 异步并行154
8.2.1 Hogwild!算法155
8.3 训练A3C智能体157
8.4 总结160
8.5 扩展阅读160
第9章 算法总结161
第三部分 实践细节
第10章 深度强化学习工程实践164
10.1 软件工程实践164
10.1.1 单元测试164
10.1.2 代码质量169
10.1.3 Git工作流170
10.2 调试技巧171
10.2.1 生命迹象172
10.2.2 策略梯度诊断172
10.2.3 数据诊断173
10.2.4 预处理器174
10.2.5 内存174
10.2.6 算法函数174
10.2.7 神经网络175
10.2.8 算法简化177
10.2.9 问题简化177
10.2.10 超参数178
10.2.11 实验室工作流178
10.3 Atari技巧179
10.4 深度强化学习小结181
10.4.1 超参数表181
10.4.2 算法性能比较184
10.5 总结186
第11章 SLM Lab187
11.1 SLM Lab算法实现187
11.2 spec文件188
11.2.1 搜索spec语法190
11.3 运行SLM Lab192
11.3.1 SLM Lab指令193
11.4 分析实验结果193
11.4.1 实验数据概述193
11.5 总结195
第12章 神经网络架构196
12.1 神经网络的类型196
12.1.1 多层感知机196
12.1.2 卷积神经网络198
12.1.3 循环神经网络199
12.2 选择网络族的指导方法199
12.2.1 MDP与POMDP200
12.2.2 根据环境选择网络202
12.3 网络API204
12.3.1 输入层和输出层形状推断205
12.3.2 自动构建网络207
12.3.3 训练步骤209
12.3.4 基础方法的使用210
12.4 总结211
12.5 扩展阅读212
第13章 硬件213
13.1 计算机213
13.2 数据类型217
13.3 在强化学习中优化数据类型219
13.4 选择硬件222
13.5 总结223
第四部分 环境设计
第14章 状态226
14.1 状态示例226
14.2 状态完整性231
14.3 状态复杂性231
14.4 状态信息损失235
14.4.1 图像灰度235
14.4.2 离散化235
14.4.3 散列冲突236
14.4.4 元信息损失236
14.5 预处理238
14.5.1 标准化239
14.5.2 图像预处理240
14.5.3 时间预处理241
14.6 总结244
第15章 动作245
15.1 动作示例245
15.2 动作完整性247
15.3 动作复杂性248
15.4 总结251
15.5 扩展阅读:日常事务中的动作设计252
第16章 奖励255
16.1 奖励的作用255
16.2 奖励设计准则256
16.3 总结259
第17章 转换函数260
17.1 可行性检测260
17.2 真实性检测262
17.3 总结263后记264
附录A 深度强化学习时间线267
附录B 示例环境269
参考文献274
译者序
序言
前言
致谢
第1章 强化学习简介1
1.1 强化学习1
1.2 强化学习中的MDP4
1.3 强化学习中的学习函数7
1.4 深度强化学习算法9
1.4.1 基于策略的算法9
1.4.2 基于值的算法10
1.4.3 基于模型的算法10
1.4.4 组合方法11
1.4.5 本书中的算法12
1.4.6 同策略和异策略算法12
1.4.7 小结12
1.5 强化学习中的深度学习13
1.6 强化学习与监督学习14
1.6.1 缺乏先知14
1.6.2 反馈稀疏性15
1.6.3 数据生成15
1.7 总结16
部分 基于策略的算法和基于值的算法
第2章 REINFORCE18
2.1 策略18
2.2 目标函数19
2.3 策略梯度19
2.3.1 策略梯度推导20
2.4 蒙特卡罗采样22
2.5 REINFORCE算法23
2.5.1 改进的REINFORCE算法23
2.6 实现REINFORCE24
2.6.1 一种小化REINFORCE的实现24
2.6.2 用PyTorch构建策略26
2.6.3 采样动作28
2.6.4 计算策略损失29
2.6.5 REINFORCE训练循环30
2.6.6 同策略内存回放31
2.7 训练REINFORCE智能体33
2.8 实验结果36
2.8.1 实验:评估折扣因子γ的影响36
2.8.2 实验:评估基准线的影响37
2.9 总结39
2.10 扩展阅读39
2.11 历史回顾39
第3章 SARSA40
3.1 Q函数和V函数40
3.2 时序差分学习42
3.2.1 时间差分学习示例44
3.3 SARSA中的动作选择48
3.3.1 探索和利用49
3.4 SARSA算法50
3.4.1 同策略算法51
3.5 实现SARSA52
3.5.1 动作函数:ε-贪婪52
3.5.2 计算Q损失52
3.5.3 SARSA训练循环54
3.5.4 同策略批处理内存回放55
3.6 训练SARSA智能体56
3.7 实验结果58
3.7.1 实验:评估学习率的影响58
3.8 总结60
3.9 扩展阅读60
3.10 历史回顾60
第4章 深度Q网络62
4.1 学习DQN中的Q函数62
4.2 DQN中的动作选择64
4.2.1 Boltzmann策略65
4.3 经验回放67
4.4 DQN算法68
4.5 实现DQN69
4.5.1 计算Q损失70
4.5.2 DQN训练循环70
4.5.3 内存回放71
4.6 训练DQN智能体74
4.7 实验结果77
4.7.1 实验:评估网络架构的影响77
4.8 总结78
4.9 扩展阅读79
4.10 历史回顾79
第5章 改进的深度Q网络80
5.1 目标网络80
5.2 双重DQN算法82
5.3 优先级经验回放85
5.3.1 重要性抽样86
5.4 实现改进的DQN88
5.4.1 网络初始化88
5.4.2 计算Q损失89
5.4.3 更新目标网络90
5.4.4 包含目标网络的DQN91
5.4.5 双重DQN91
5.4.6 优先级经验回放91
5.5 训练DQN智能体玩Atari游戏96
5.6 实验结果101
5.6.1 实验:评估双重DQN与PER的影响101
5.7 总结104
5.8 扩展阅读104
第二部分 组合方法
第6章 优势演员-评论家算法106
6.1 演员106
6.2 评论家107
6.2.1 优势函数107
6.2.2 学习优势函数110
6.3 A2C算法111
6.4 实现A2C113
6.4.1 优势估计113
6.4.2 计算值损失和策略损失115
6.4.3 演员-评论家训练循环116
6.5 网络架构117
6.6 训练A2C智能体118
6.6.1 在Pong上使用n步回报的A2C算法118
6.6.2 在Pong上使用GAE的A2C算法121
6.6.3 在BipedalWalker上使用n步回报的A2C算法122
6.7 实验结果124
6.7.1 实验:评估n步回报的影响124
6.7.2 实验:评估GAE中λ的影响126
6.8 总结127
6.9 扩展阅读128
6.10 历史回顾128
第7章 近端策略优化算法130
7.1 替代目标函数130
7.1.1 性能突然下降130
7.1.2 修改目标函数132
7.2 近端策略优化136
7.3 PPO算法139
7.4 实现PPO141
7.4.1 计算PPO的策略损失141
7.4.2 PPO训练循环142
7.5 训练PPO智能体143
7.5.1 在Pong上使用PPO算法143
7.5.2 在BipedalWalker上使用PPO算法146
7.6 实验结果149
7.6.1 实验:评估GAE中λ的影响149
7.6.2 实验:评估裁剪变量ε的影响150
7.7 总结152
7.8 扩展阅读152
第8章 并行方法153
8.1 同步并行153
8.2 异步并行154
8.2.1 Hogwild!算法155
8.3 训练A3C智能体157
8.4 总结160
8.5 扩展阅读160
第9章 算法总结161
第三部分 实践细节
第10章 深度强化学习工程实践164
10.1 软件工程实践164
10.1.1 单元测试164
10.1.2 代码质量169
10.1.3 Git工作流170
10.2 调试技巧171
10.2.1 生命迹象172
10.2.2 策略梯度诊断172
10.2.3 数据诊断173
10.2.4 预处理器174
10.2.5 内存174
10.2.6 算法函数174
10.2.7 神经网络175
10.2.8 算法简化177
10.2.9 问题简化177
10.2.10 超参数178
10.2.11 实验室工作流178
10.3 Atari技巧179
10.4 深度强化学习小结181
10.4.1 超参数表181
10.4.2 算法性能比较184
10.5 总结186
第11章 SLM Lab187
11.1 SLM Lab算法实现187
11.2 spec文件188
11.2.1 搜索spec语法190
11.3 运行SLM Lab192
11.3.1 SLM Lab指令193
11.4 分析实验结果193
11.4.1 实验数据概述193
11.5 总结195
第12章 神经网络架构196
12.1 神经网络的类型196
12.1.1 多层感知机196
12.1.2 卷积神经网络198
12.1.3 循环神经网络199
12.2 选择网络族的指导方法199
12.2.1 MDP与POMDP200
12.2.2 根据环境选择网络202
12.3 网络API204
12.3.1 输入层和输出层形状推断205
12.3.2 自动构建网络207
12.3.3 训练步骤209
12.3.4 基础方法的使用210
12.4 总结211
12.5 扩展阅读212
第13章 硬件213
13.1 计算机213
13.2 数据类型217
13.3 在强化学习中优化数据类型219
13.4 选择硬件222
13.5 总结223
第四部分 环境设计
第14章 状态226
14.1 状态示例226
14.2 状态完整性231
14.3 状态复杂性231
14.4 状态信息损失235
14.4.1 图像灰度235
14.4.2 离散化235
14.4.3 散列冲突236
14.4.4 元信息损失236
14.5 预处理238
14.5.1 标准化239
14.5.2 图像预处理240
14.5.3 时间预处理241
14.6 总结244
第15章 动作245
15.1 动作示例245
15.2 动作完整性247
15.3 动作复杂性248
15.4 总结251
15.5 扩展阅读:日常事务中的动作设计252
第16章 奖励255
16.1 奖励的作用255
16.2 奖励设计准则256
16.3 总结259
第17章 转换函数260
17.1 可行性检测260
17.2 真实性检测262
17.3 总结263后记264
附录A 深度强化学习时间线267
附录B 示例环境269
参考文献274
前 言
当DeepMind在Atari街机游戏中取得突破性进展时,我们次发现了深度强化学习(Deep RL)。人工智能体在只使用图像而不使用先验知识的情况下,首次达到了人类的水平。
人工智能体在没有监督的情况下,通过反复试验自学的想法激发了我们的想象力,这是一种新的、令人兴奋的机器学习方法,它与我们熟悉的监督学习领域有很大的不同。
我们决定一起学习这个主题,我们阅读书籍和论文,学习在线课程,学习代码,并尝试实现核心算法。我们意识到,深度强化学习不仅在概念上具有挑战性,在实现过程中也需要像大型软件工程项目一样经过艰辛的努力。
随着我们的进步,我们了解了更多关于深度强化学习的知识——算法如何相互关联以及它们的不同特征是什么。形成这种心理模型是一个挑战,因为深度强化学习是一个新的研究领域,尚无全面的理论书籍,我们必须直接从研究论文和在线讲座中学习。
另一个挑战是理论与实现之间的巨大差距。通常,深度强化学习算法有许多组件和可调的超参数,这使其变得敏感且脆弱。为了成功运行,所有组件都需要正确地协同工作,并使用适当的超参数值。从理论上讲,实现这一目标所需的细节并不是很清楚,但同样重要。在我们的学习过程中,那些理论和实现相结合的资源是非常宝贵的。
我们觉得从理论到实现的过程应该比我们发现的更简单,我们希望通过自己的努力使深度强化学习更易于学习。这本书是我们的尝试,书中采用端到端的方法来引入深度强化学习——从直觉开始,然后解释理论和算法,后是实现和实践技巧。这也是为什么这本书附带了一个软件库SLM Lab,其中包含了所有算法的实现。简而言之,这是我们在开始学习这一主题时希望拥有的书。
深度强化学习属于强化学习中一个较大的领域。强化学习的核心是函数逼近,在深度强化学习中,函数是用深度神经网络学习的。强化学习与有监督和无监督学习一起构成了机器学习的三种核心技术,每种技术在问题的表达方式和算法的数据学习方式上都有所不同。
在这本书中,我们专注于深度强化学习,因为我们所经历的挑战是针对强化学习这一子领域的。这从两个方面限制了本书的范围。首先,它排除了在强化学习中可以用来学习函数的所有其他技术。其次,虽然强化学习从20世纪50年代就已经存在,但本书强调的是2013年到2019年的发展。近的许多发展都是建立在较早的研究基础上的,因此我们认为有必要追溯主要思想的发展。然而,我们并不打算给出这一领域的全面历史介绍。
这本书是针对计算机科学专业的学生和软件工程师的,旨在介绍深度强化学习,无须事先了解相关主题。但是,我们假设读者对机器学习和深度学习有基本的了解,并且有中级Python编程水平。一些使用PyTorch的经验也是有用的,但不是必需的。
这本书的结构如下。
第1章介绍深度强化学习问题的不同方面,并对深度强化学习算法进行综述。
部分是基于策略的算法和基于值的算法。第2章介绍种策略梯度方法(REINFORCE算法)。第3章介绍种基于值的方法(SARSA)。第4章讨论深度Q网络(DQN)算法。第5章重点讨论改进的深度Q网络——目标网络、双重DQN算法和优先级经验回放技术。
第二部分重点研究基于策略和基于值的组合方法。第6章介绍对REINFORCE算法进行扩展的演员-评论家算法。第7章介绍对演员-评论家算法进行扩展的近端策略优化(PPO)算法。第8章讨论同步和异步并行方法,适用于本书中的任何算法。后,第9章总结所有的算法。
每个算法章节的结构都是相同的。首先,介绍该章的主要概念,并通过相关的数学公式进行研究。然后,描述算法并讨论在Python中的实现。后,提供一个可在SLM Lab中运行的可调超参数配置算法,并用图表说明该算法的主要特点。
第三部分重点介绍实现深度强化学习算法的实践细节。第10章介绍工程和调试实现,包括关于超参数和实验结果的小结。第11章为配套的SLM Lab提供使用参考。第12章介绍神经网络架构。第13章讨论硬件。
本书的后一部分(第四部分)是关于环境设计的,由第14~17章组成,分别讨论状态、动作、奖励和转换函数的设计。
我们推荐从第1章开始顺序阅读到第10章。这些章节介绍了本书中的所有算法,并提供了实现算法的实用技巧。接下来的三章(第11~13章)集中在更专业的主题上,可以按任何顺序阅读。对于不想深入研究的读者来说,第1、2、3、4、6和10章是本书的一个连贯子集,重点关注了一些算法。后,第四部分包含了一组独立的章节,供对更深入地理解环境或构建自己的环境有特殊兴趣的读者阅读。
SLM Lab[67]是本书的配套软件库,是一个使用PyTorch[114]构建的模块化深度强化学习框架。SLM是Strange Loop Machine的缩写,向侯世达的名著《哥德尔、艾舍尔、巴赫:集异璧之大成》[53]致敬。SLM Lab的具体例子包括使用PyTorch的语法和特性来训练神经网络。然而,实现深度强化学习算法的基本原理也适用于其他的深度学习框架,比如TensorFlow[1]。
SLM Lab的设计旨在帮助初学者通过将其组成部分组织成概念清晰的片段来学习深度强化学习。这些组成部分与学
人工智能体在没有监督的情况下,通过反复试验自学的想法激发了我们的想象力,这是一种新的、令人兴奋的机器学习方法,它与我们熟悉的监督学习领域有很大的不同。
我们决定一起学习这个主题,我们阅读书籍和论文,学习在线课程,学习代码,并尝试实现核心算法。我们意识到,深度强化学习不仅在概念上具有挑战性,在实现过程中也需要像大型软件工程项目一样经过艰辛的努力。
随着我们的进步,我们了解了更多关于深度强化学习的知识——算法如何相互关联以及它们的不同特征是什么。形成这种心理模型是一个挑战,因为深度强化学习是一个新的研究领域,尚无全面的理论书籍,我们必须直接从研究论文和在线讲座中学习。
另一个挑战是理论与实现之间的巨大差距。通常,深度强化学习算法有许多组件和可调的超参数,这使其变得敏感且脆弱。为了成功运行,所有组件都需要正确地协同工作,并使用适当的超参数值。从理论上讲,实现这一目标所需的细节并不是很清楚,但同样重要。在我们的学习过程中,那些理论和实现相结合的资源是非常宝贵的。
我们觉得从理论到实现的过程应该比我们发现的更简单,我们希望通过自己的努力使深度强化学习更易于学习。这本书是我们的尝试,书中采用端到端的方法来引入深度强化学习——从直觉开始,然后解释理论和算法,后是实现和实践技巧。这也是为什么这本书附带了一个软件库SLM Lab,其中包含了所有算法的实现。简而言之,这是我们在开始学习这一主题时希望拥有的书。
深度强化学习属于强化学习中一个较大的领域。强化学习的核心是函数逼近,在深度强化学习中,函数是用深度神经网络学习的。强化学习与有监督和无监督学习一起构成了机器学习的三种核心技术,每种技术在问题的表达方式和算法的数据学习方式上都有所不同。
在这本书中,我们专注于深度强化学习,因为我们所经历的挑战是针对强化学习这一子领域的。这从两个方面限制了本书的范围。首先,它排除了在强化学习中可以用来学习函数的所有其他技术。其次,虽然强化学习从20世纪50年代就已经存在,但本书强调的是2013年到2019年的发展。近的许多发展都是建立在较早的研究基础上的,因此我们认为有必要追溯主要思想的发展。然而,我们并不打算给出这一领域的全面历史介绍。
这本书是针对计算机科学专业的学生和软件工程师的,旨在介绍深度强化学习,无须事先了解相关主题。但是,我们假设读者对机器学习和深度学习有基本的了解,并且有中级Python编程水平。一些使用PyTorch的经验也是有用的,但不是必需的。
这本书的结构如下。
第1章介绍深度强化学习问题的不同方面,并对深度强化学习算法进行综述。
部分是基于策略的算法和基于值的算法。第2章介绍种策略梯度方法(REINFORCE算法)。第3章介绍种基于值的方法(SARSA)。第4章讨论深度Q网络(DQN)算法。第5章重点讨论改进的深度Q网络——目标网络、双重DQN算法和优先级经验回放技术。
第二部分重点研究基于策略和基于值的组合方法。第6章介绍对REINFORCE算法进行扩展的演员-评论家算法。第7章介绍对演员-评论家算法进行扩展的近端策略优化(PPO)算法。第8章讨论同步和异步并行方法,适用于本书中的任何算法。后,第9章总结所有的算法。
每个算法章节的结构都是相同的。首先,介绍该章的主要概念,并通过相关的数学公式进行研究。然后,描述算法并讨论在Python中的实现。后,提供一个可在SLM Lab中运行的可调超参数配置算法,并用图表说明该算法的主要特点。
第三部分重点介绍实现深度强化学习算法的实践细节。第10章介绍工程和调试实现,包括关于超参数和实验结果的小结。第11章为配套的SLM Lab提供使用参考。第12章介绍神经网络架构。第13章讨论硬件。
本书的后一部分(第四部分)是关于环境设计的,由第14~17章组成,分别讨论状态、动作、奖励和转换函数的设计。
我们推荐从第1章开始顺序阅读到第10章。这些章节介绍了本书中的所有算法,并提供了实现算法的实用技巧。接下来的三章(第11~13章)集中在更专业的主题上,可以按任何顺序阅读。对于不想深入研究的读者来说,第1、2、3、4、6和10章是本书的一个连贯子集,重点关注了一些算法。后,第四部分包含了一组独立的章节,供对更深入地理解环境或构建自己的环境有特殊兴趣的读者阅读。
SLM Lab[67]是本书的配套软件库,是一个使用PyTorch[114]构建的模块化深度强化学习框架。SLM是Strange Loop Machine的缩写,向侯世达的名著《哥德尔、艾舍尔、巴赫:集异璧之大成》[53]致敬。SLM Lab的具体例子包括使用PyTorch的语法和特性来训练神经网络。然而,实现深度强化学习算法的基本原理也适用于其他的深度学习框架,比如TensorFlow[1]。
SLM Lab的设计旨在帮助初学者通过将其组成部分组织成概念清晰的片段来学习深度强化学习。这些组成部分与学
评论
还没有评论。