《深度强化学习实践(原书第2版)》([俄]马克西姆·拉潘(Maxim Lapan))-图书推荐
编辑推荐语
本书包括新的强化学习工具和技术,介绍了强化学习的基础知识,以及如何动手编写智能体以执行一系列实际任务。 本书较上一版新增6章,专门介绍了强化学习的新发展,包括离散优化(解决魔方问题)、多智能体方法、Microsoft的TextWorld环境、**探索技术等。学完本书,你将对这个新兴领域的前沿技术有深刻的理解。 此外,你将获得对深度Q-network、策略梯度方法、连续控制问题以及高度可扩展的非梯度方法等领域的可行洞见,还将学会如何构建一个经过强化学习训练、价格低廉的真实硬件机器人,并通过逐步代码优化在短短30分钟的训练后解决Pong环境问题。 简而言之,本书将帮助你探索强化学习中令人兴奋的复杂主题,让你通过实例获得经验和知识。
内容提要
本书理论与实践相结合,系统阐述强化学习的基础知识,以及如何动手编写智能体以执行一系列实际任务。通过阅读本书,读者将获得深层Q网络、策略梯度方法、连续控制问题以及高度可扩展的非梯度方法等主题领域的可行洞见,还将学会如何构建一个经过强化学习训练、价格低廉的真实硬件机器人,并通过一步步代码优化在短短30分钟的训练后解决Pong环境。此外,本书还专门介绍了强化学习的新发展,包括离散优化(解决魔方问题)、多智能体方法、Microsoft的TextWorld环境、高级探索技术等。
目录
译者序
前言
作者简介
审校者简介
第1章什么是强化学习1
1.1机器学习分类2
1.1.1监督学习2
1.1.2非监督学习2
1.1.3强化学习2
1.2强化学习的复杂性4
1.3强化学习的形式4
1.3.1奖励5
1.3.2智能体6
1.3.3环境6
1.3.4动作7
1.3.5观察7
1.4强化学习的理论基础9
1.4.1马尔可夫决策过程9
1.4.2策略17
1.5总结18
第2章OpenAI Gym19
2.1剖析智能体19
2.2硬件和软件要求21
2.3OpenAI Gym API23
2.3.1动作空间23
2.3.2观察空间23
2.3.3环境25
2.3.4创建环境26
2.3.5车摆系统28
2.4随机CartPole智能体30
2.5Gym的额外功能:包装器和监控器30
2.5.1包装器31
2.5.2监控器33
2.6总结35
第3章使用PyTorch进行深度学习36
3.1张量36
3.1.1创建张量37
3.1.2零维张量39
3.1.3张量操作39
3.1.4GPU张量40
3.2梯度41
3.3NN构建块44
3.4自定义层45
3.5*终黏合剂:损失函数和优化器47
3.5.1损失函数48
3.5.2优化器48
3.6使用TensorBoard进行监控50
3.6.1TensorBoard 10150
3.6.2绘图52
3.7示例:将GAN应用于Atari图像53
3.8PyTorch Ignite57
3.9总结61
第4章交叉熵方法62
4.1RL方法的分类62
4.2交叉熵方法的实践63
4.3交叉熵方法在CartPole中的应用65
4.4交叉熵方法在FrozenLake中的应用72
4.5交叉熵方法的理论背景78
4.6总结79
第5章表格学习和Bellman方程80
5.1价值、状态和*优性80
5.2*佳Bellman方程82
5.3动作的价值84
5.4价值迭代法86
5.5价值迭代实践87
5.6Q-learning在FrozenLake中的应用92
5.7总结94
第6章深度Q-network95
6.1现实的价值迭代95
6.2表格Q-learning96
6.3深度Q-learning100
6.3.1与环境交互102
6.3.2SGD优化102
6.3.3步骤之间的相关性103
6.3.4马尔可夫性质103
6.3.5DQN训练的*终形式103
6.4DQN应用于Pong游戏104
6.4.1包装器105
6.4.2DQN模型109
6.4.3训练110
6.4.4运行和性能118
6.4.5模型实战120
6.5可以尝试的事情122
6.6总结123
第7章**强化学习库124
7.1为什么使用强化学习库124
7.2PTAN库125
7.2.1动作选择器126
7.2.2智能体127
7.2.3经验源131
7.2.4经验回放缓冲区136
7.2.5TargetNet类137
7.2.6Ignite帮助类139
7.3PTAN版本的CartPole解决方案139
7.4其他强化学习库141
7.5总结141
第8章DQN扩展142
8.1基础DQN143
8.1.1通用库143
8.1.2实现147
8.1.3结果148
8.2N步DQN150
8.2.1实现152
8.2.2结果152
8.3Double DQN153
8.3.1实现154
8.3.2结果155
8.4噪声网络156
8.4.1实现157
8.4.2结果159
8.5带优先级的回放缓冲区160
8.5.1实现161
8.5.2结果164
8.6Dueling DQN165
8.6.1实现166
8.6.2结果167
8.7Categorical DQN168
8.7.1实现171
8.7.2结果175
8.8组合所有方法178
8.9总结180
8.10参考文献180
第9章加速强化学习训练的方法182
9.1为什么速度很重要182
9.2基线184
9.3PyTorch中的计算图186
9.4多个环境188
9.5在不同进程中分别交互和训练190
9.6调整包装器194
9.7基准测试总结198
9.8硬核CuLE199
9.9总结199
9.10参考文献199
**0章使用强化学习进行股票交易200
10.1交易200
10.2数据201
10.3问题陈述和关键决策202
10.4交易环境203
10.5模型210
10.6训练代码211
10.7结果211
10.7.1前馈模型212
10.7.2卷积模型217
10.8可以尝试的事情218
10.9总结219
**1章策略梯度:一种替代方法220
11.1价值与策略220
11.1.1为什么需要策略221
11.1.2策略表示221
11.1.3策略梯度222
11.2REINFORCE方法222
11.2.1CartPole示例223
11.2.2结果227
11.2.3基于策略的方法与基于价值的方法228
11.3REINFORCE的问题229
11.3.1需要完整片段229
11.3.2高梯度方差229
11.3.3探索230
11.3.4样本相关性230
11.4用于CartPole的策略梯度方法230
11.4.1实现231
11.4.2结果233
11.5用于Pong的策略梯度方法237
11.5.1实现238
11.5.2结果239
11.6总结240
**2章actor-critic方法241
12.1减小方差241
12.2CartPole的方差243
12.3actor-critic246
12.4在Pong中使用A2C247
12.5在Pong中使用A2C的结果252
12.6超参调优255
12.6.1学习率255
12.6.2熵的beta值256
12.6.3环境数256
12.6.4批大小257
12.7总结257
**3章A3C258
13.1相关性和采样效率258
13.2向A2C添加另一个A259
13.3Python中的多重处理功能261
13.4数据并行化的A3C262
13.4.1实现262
13.4.2结果267
13.5梯度并行化的A3C269
13.5.1实现269
13.5.2结果273
13.6总结274
**4章使用强化学习训练聊天机器人275
14.1聊天机器人概述275
14.2训练聊天机器人276
14.3深度NLP基础277
14.3.1RNN277
14.3.2词嵌入278
14.3.3编码器–解码器架构279
14.4seq2seq训练280
14.4.1对数似然训练280
14.4.2双语替换评测分数282
14.4.3seq2seq中的强化学习282
14.4.4自评序列训练283
14.5聊天机器人示例284
14.5.1示例的结构285
14.5.2模块:cornell.py和data.py285
14.5.3BLEU分数和utils.py286
14.5.4模型287
14.6数据集探索292
14.7训练:交叉熵294
14.7.1实现294
14.7.2结果298
14.8训练:SCST300
14.8.1实现300
14.8.2结果306
14.9经过数据测试的模型309
14.10Telegram机器人311
14.11总结314
**5章TextWorld环境315
15.1文字冒险游戏315
15.2环境318
15.2.1安装318
15.2.2游戏生成318
15.2.3观察和动作空间320
15.2.4额外的游戏信息322
15.3基线DQN325
15.3.1观察预处理326
15.3.2embedding和编码器331
15.3.3DQN模型和智能体333
15.3.4训练代码335
15.3.5训练结果335
15.4命令生成模型340
15.4.1实现341
15.4.2预训练结果345
15.4.3DQN训练代码346
15.4.4DQN训练结果347
15.5总结349
**6章Web导航350
16.1Web导航简介350
16.1.1浏览器自动化和RL351
16.1.2MiniWoB基准352
16.2OpenAI Universe353
16.2.1安装354
16.2.2动作与观察354
16.2.3创建环境355
16.2.4MiniWoB的稳定性357
16.3简单的单击方法357
16.3.1网格动作358
16.3.2示例概览359
16.3.3模型359
16.3.4训练代码360
16.3.5启动容器364
16.3.6训练过程366
16.3.7检查学到的策略368
16.3.8简单单击的问题369
16.4人类演示371
16.4.1录制人类演示371
16.4.2录制的格式373
16.4.3使用演示进行训练375
16.4.4结果376
16.4.5井字游戏问题380
16.5添加文字描述383
16.5.1实现383
16.5.2结果387
16.6可以尝试的事情390
16.7总结391
**7章连续动作空间392
17.1为什么会有连续的空间392
17.1.1动作空间393
17.1.2环境393
17.2A2C方法395
17.2.1实现396
17.2.2结果399
17.2.3使用模型并录制视频401
17.3确定性策略梯度401
17.3.1探索402
17.3.2实现403
17.3.3结果407
17.3.4视频录制409
17.4分布的策略梯度409
17.4.1架构410
17.4.2实现410
17.4.3结果414
17.4.4视频录制415
17.5可以尝试的事情415
17.6总结416
**8章机器人技术中的强化学习417
18.1机器人与机器人学417
18.1.1机器人的复杂性419
18.1.2硬件概述420
18.1.3平台421
18.1.4传感器422
18.1.5执行器423
18.1.6框架424
18.2**个训练目标427
18.3模拟器和模型428
18.3.1模型定义文件429
18.3.2机器人类432
18.4DDPG训练和结果437
18.5控制硬件440
18.5.1MicroPython440
18.5.2处理传感器443
18.5.3驱动伺服器454
18.5.4将模型转移至硬件上458
18.5.5组合一切464
18.6策略实验466
18.7总结467
**9章置信域:PPO、TRPO、ACKTR及SAC468
19.1Roboschool469
19.2A2C基线469
19.2.1实现469
19.2.2结果471
19.2.3视频录制475
19.3PPO475
19.3.1实现476
19.3.2结果479
19.4TRPO480
19.4.1实现481
19.4.2结果482
19.5ACKTR484
19.5.1实现484
19.5.2结果484
19.6SAC485
19.6.1实现486
19.6.2结果488
19.7总结490
第20章强化学习中的黑盒优化491
20.1黑盒方法491
20.2进化策略492
20.2.1将ES用在CartPole上493
20.2.2将ES用在HalfCheetah上498
20.3遗传算法503
20.3.1将GA用在CartPole上504
20.3.2GA优化506
20.3.3将GA用在HalfCheetah上507
20.4总结510
20.5参考文献511
第21章**探索512
21.1为什么探索很重要512
21.2ε-greedy怎么了513
21.3其他探索方式516
21.3.1噪声网络516
21.3.2基于计数的方法516
21.3.3基于预测的方法517
21.4MountainCar实验517
21.4.1使用ε-greedy的DQN方法519
21.4.2使用噪声网络的DQN方法520
21.4.3使用状态计数的DQN方法522
21.4.4近端策略优化方法525
21.4.5使用噪声网络的PPO方法527
21.4.6使用基于计数的探索的PPO方法529
21.4.7使用网络蒸馏的PPO方法531
21.5Atari实验533
21.5.1使用ε -greedy的DQN方法534
21.5.2经典的PPO方法535
21.5.3使用网络蒸馏的PPO方法536
21.5.4使用噪声网络的PPO方法537
21.6总结538
21.7参考文献539
第22章**无模型方法:想象力540
22.1基于模型的方法540
22.1.1基于模型与无模型540
22.1.2基于模型的缺陷541
22.2想象力增强型智能体542
22.2.1EM543
22.2.2展开策略544
22.2.3展开编码器544
22.2.4论文的结果544
22.3将I2A用在Atari Breakout上545
22.3.1基线A2C智能体545
22.3.2EM训练546
22.3.3想象力智能体548
22.4实验结果553
22.4.1基线智能体553
22.4.2训练EM的权重555
22.4.3训练I2A模型557
22.5总结559
22.6参考文献559
第23章AlphaGo Zero560
23.1棋盘游戏560
23.2AlphaGo Zero方法561
23.2.1总览561
23.2.2MCTS562
23.2.3自我对抗564
23.2.4训练与评估564
23.3四子连横棋机器人564
23.3.1游戏模型565
23.3.2实现MCTS567
23.3.3模型571
23.3.4训练573
23.3.5测试与比较573
23.4四子连横棋的结果574
23.5总结576
23.6参考文献576
第24章离散优化中的强化学习577
24.1强化学习的名声577
24.2魔方和组合优化578
24.3*佳性与上帝的数字579
24.4魔方求解的方法579
24.4.1数据表示580
24.4.2动作580
24.4.3状态581
24.5训练过程584
24.5.1NN架构584
24.5.2训练585
24.6模型应用586
24.7论文结果588
24.8代码概览588
24.8.1魔方环境589
24.8.2训练593
24.8.3搜索过程594
24.9实验结果594
24.9.12×2魔方596
24.9.23×3魔方598
24.10进一步改进和实验599
24.11总结600
第25章多智能体强化学习601
25.1多智能体RL的说明601
25.1.1通信形式602
25.1.2强化学习方法602
25.2MAgent环境602
25.2.1安装602
25.2.2概述603
25.2.3随机环境603
25.3老虎的深度Q-network608
25.4老虎的合作612
25.5同时训练老虎和鹿615
25.6相同actor之间的战斗617
25.7总结617