《强化学习:原理与Python实现 》
智能系统与技术丛书
强化学习:原理与Python实现
肖智清 著
PREFACE
前 言
强化学习正在改变人类社会的方方面面:基于强化学习的游戏AI已经在围棋、星际争霸等游戏上战胜人类顶尖选手,基于强化学习的控制算法已经运用于机器人、无人机等设备,基于强化学习的交易算法已经部署在金融平台上并取得超额收益。由于同一套强化学习代码在使用同一套参数的情况下能解决多个看起来毫无关联的问题,所以强化学习常被认为是迈向通用人工智能的重要途径。在此诚邀相关专业人士研究强化学习,以立于人工智能的时代之巅。
内容梗概
本书介绍强化学习理论及其Python实现,全书分为三个部分。
第1章:介绍强化学习的基础知识与环境库Gym的使用,并给出一个完整的编程实例。
第2~9章:介绍强化学习的理论和算法。采用严谨的数学语言,推导强化学习的基本理论,进而在理论的基础上讲解算法,并为算法提供配套的Python实现。算法的讲解和Python实现逐一对应,覆盖了所有主流的强化学习算法。
第10~12章:介绍多个综合案例,包括电动游戏、棋盘游戏和自动驾驶。环境部分涵盖Gym库的完整安装和自定义扩展,也包括Gym库以外的环境。算法部分涵盖了《自然》 《科学》等权威期刊发表的多个深度强化学习明星算法。
本书特色
本书完整地介绍了主流的强化学习理论。
全书采用完整的数学体系,各章内容循序渐进,严谨地讲授强化学习的理论基础,主要定理均给出证明过程。基于理论讲解强化学习算法,覆盖了所有主流强化学习算法,包括资格迹等经典算法和深度确定性梯度策略等深度强化学习算法。
全书采用一致的数学符号,并且与权威强化学习教程(如R. Sutton等的《Reinforce-ment Learning: An Introduction(第2版)》和D. Silver的视频课程)完美兼容。
本书各章均提供Python代码,实战性强。
全书代码统一规范,基于最新的Python 3.7(兼容Python 3.6)、Gym 0.12和TensorFlow 2(兼容TensorFlow 1)实现强化学习算法。所有代码在Windows、macOS和Linux三大操作系统上均可运行,书中给出了环境的安装和配置方法。
涉及环境全面。第1~9章提供算法的配套实现,强化学习环境只依赖于Gym的最小安装,使理论学习免受环境安装困扰;第10~12章的综合案例既涵盖Gym库的完整安装和自定义扩展,还包括Gym库以外的环境,让读者体验更加复杂的强化学习任务。
全书实现对硬件配置要求低。第1~9章代码在没有GPU的计算机上也可运行;第10~12章代码在配置普通GPU的计算机上即可运行。
代码下载和技术支持
本书代码下载地址为:http://github.com/zhiqingxiao/rl-book。笔者会不定期更新代码,以适应软件版本的升级。
在此推荐你加入本书学习交流QQ群:935702193。如果有任何意见、建议或经过网络搜索仍不能解决的问题,可以在QQ群里提问。笔者的邮箱是:xzq.xiaozhiqing@gmail.com。
致谢
在此感谢为本书出版做出贡献的所有工作人员。其中,机械工业出版社的高婧雅女士是本书的责任编辑,她对本书的写作提出了很多建设性意见。同时,还要感谢机械工业出版社的其他编辑为提升本书质量所做的大量工作,与他们合作是一个愉快的过程。我要特别感谢我的父亲肖林进和母亲许丽平,他们也参与了本书的编写。同时,还要感谢我的上级、同事和其他亲友,他们在本书写作期间给予我极大的支持。
感谢你选择本书。祝你学习快乐!
CONTENTS
目 录
前言
第4章 回合更新价值迭代 54
4.1 同策回合更新 54
4.1.1 同策回合更新策略评估 54
4.1.2 带起始探索的同策回合更新 58
4.1.3 基于柔性策略的同策回合更新 60
4.2 异策回合更新 62
4.2.1 重要性采样 62
4.2.2 异策回合更新策略评估 64
4.2.3 异策回合更新最优策略求解 65
4.3 案例:21点游戏 66
4.3.1 实验环境使用 66
4.3.2 同策策略评估 67
4.3.3 同策最优策略求解 70
4.3.4 异策策略评估 72
4.3.5 异策最优策略求解 73
4.4 本章小结 74
第5章 时序差分价值迭代 76
5.1 同策时序差分更新 76
5.1.1 时序差分更新策略评估 78
5.1.2 SARSA算法 81
5.1.3 期望SARSA算法 83
5.2 异策时序差分更新 85
5.2.1 基于重要性采样的异策算法 85
5.2.2 Q学习 86
5.2.3 双重Q学习 87
5.3 资格迹 89
5.3.1 λ回报 89
5.3.2 TD(λ) 90
5.4 案例:出租车调度 92
5.4.1 实验环境使用 93
5.4.2 同策时序差分学习调度 94
5.4.3 异策时序差分学习调度 97
5.4.4 资格迹学习调度 99
5.5 本章小结 100
第6章 函数近似方法 101
6.1 函数近似原理 101
6.1.1 随机梯度下降 101
6.1.2 半梯度下降 103
6.1.3 带资格迹的半梯度下降 105
6.2 线性近似 107
6.2.1 精确查找表与线性近似的关系 107
6.2.2 线性最小二乘策略评估 107
6.2.3 线性最小二乘最优策略求解 109
6.3 函数近似的收敛性 109
6.4 深度Q学习 110
6.4.1 经验回放 111
6.4.2 带目标网络的深度Q学习 112
6.4.3 双重深度Q网络 114
6.4.4 对偶深度Q网络 114
6.5 案例:小车上山 115
6.5.1 实验环境使用 116
6.5.2 用线性近似求解最优策略 117
6.5.3 用深度Q学习求解最优策略 120
6.6 本章小结 123
第7章 回合更新策略梯度方法 125
7.1 策略梯度算法的原理 125
7.1.1 函数近似与动作偏好 125
7.1.2 策略梯度定理 126
7.2 同策回合更新策略梯度算法 128
7.2.1 简单的策略梯度算法 128
7.2.2 带基线的简单策略梯度算法 129
7.3 异策回合更新策略梯度算法 131
7.4 策略梯度更新和极大似然估计的关系 132
7.5 案例:车杆平衡 132
7.5.1 同策策略梯度算法求解最优策略 133
7.5.2 异策策略梯度算法求解最优策略 135
7.6 本章小结 137
第8章 执行者/评论者方法 139
8.1 同策执行者/评论者算法 139
8.1.1 动作价值执行者/评论者算法 140
8.1.2 优势执行者/评论者算法 141
8.1.3 带资格迹的执行者/评论者算法 143
8.2 基于代理优势的同策算法 143
8.2.1 代理优势 144
8.2.2 邻近策略优化 145
8.3 信任域算法 146
8.3.1 KL散度 146
8.3.2 信任域 147
8.3.3 自然策略梯度算法 148
8.3.4 信任域策略优化 151
8.3.5 Kronecker因子信任域执行者/评论者算法 152
8.4 重要性采样异策执行者/评论者算法 153
8.4.1 基本的异策算法 154
8.4.2 带经验回放的异策算法 154
8.5 柔性执行者/评论者算法 157
8.5.1 熵 157
8.5.2 奖励工程和带熵的奖励 158
8.5.3 柔性执行者/评论者的网络设计 159
8.6 案例:双节倒立摆 161
8.6.1 同策执行者/评论者算法求解最优策略 162
8.6.2 异策执行者/评论者算法求解最优策略 168
8.7 本章小结 170
第9章 连续动作空间的确定性策略 172
9.1 同策确定性算法 172
9.1.1 策略梯度定理的确定性版本 172
9.1.2 基本的同策确定性执行者/评论者算法 174
9.2 异策确定性算法 176
9.2.1 基本的异策确定性执行者/评论者算法 177
9.2.2 深度确定性策略梯度算法 177
9.2.3 双重延迟深度确定性策略梯度算法 178
9.3 案例:倒立摆的控制 180
9.3.1 用深度确定性策略梯度算法求解 181
9.3.2 用双重延迟深度确定性算法求解 184
9.4 本章小结 187
第10章 综合案例:电动游戏 188
10.1 Atari游戏环境 188
10.1.1 Gym库的完整安装 188
10.1.2 游戏环境使用 190
10.2 基于深度Q学习的游戏AI 191
10.2.1 算法设计 192
10.2.2 智能体的实现 193
10.2.3 智能体的训练和测试 197
10.3 本章小结 198
第11章 综合案例:棋盘游戏 200
11.1 双人确定性棋盘游戏 200
11.1.1 五子棋和井字棋 200
11.1.2 黑白棋 201
11.1.3 围棋 202
11.2 AlphaZero算法 203
11.2.1 回合更新树搜索 203
11.2.2 深度残差网络 206
11.2.3 自我对弈 208
11.2.4 算法流程 210
11.3 棋盘游戏环境boardgame2 210
11.3.1 为Gym库扩展自定义环境 211
11.3.2 boardgame2设计 211
11.3.3 Gym环境接口的实现 214
11.3.4 树搜索接口的实现 216
11.4 AlphaZero算法实现 218
11.4.1 智能体类的实现 218
11.4.2 自我对弈的实现 223
11.4.3 训练智能体 224
11.5 本章小结 225
第12章 综合案例:自动驾驶 226
12.1 AirSim开发环境使用 226
12.1.1 安装和运行AirSim 226
12.1.2 用Python访问AirSim 228
12.2 基于强化学习的自动驾驶 229
12.2.1 为自动驾驶设计强化学习环境 230
12.2.2 智能体设计和实现 235
12.2.3 智能体的训练和测试 237
12.3 本章小结 239
- 点赞
- 收藏
- 关注作者
评论(0)