《深入浅出强化学习:原理入门》用通俗易懂的语言深入浅出地介绍了强化学习的基本原理,覆盖了传统的强化学习基本方法和当前炙手可热的深度强化学习方法。开篇从*基本的马尔科夫决策过程入手,将强化学习问题纳入到严谨的数学框架中,接着阐述了解决此类问题*基本的方法动态规划方法,并从中总结出解决强化学习问题的基本思路:交互迭代策略评估和策略改善。基于这个思路,分别介绍了基于值函数的强化学习方法和基于直接策略搜索的强化学习方法。*后介绍了逆向强化学习方法和近年具有代表性、比较前沿的强化学习方法。
除了系统地介绍基本理论,书中还介绍了相应的数学基础和编程实例。因此,《深入浅出强化学习:原理入门》既适合零基础的人员入门学习、也适合相关科研人员作为研究参考。
2017年5月,AlphaGo击败世界围棋冠军柯洁,标志着人工智能进入一个新的阶段。AlphaGo背后的核心算法深度强化学习成为继深度学习之后广泛受人关注的前沿热点。与深度学习相比,深度强化学习具有更宽泛的应用背景,可应用于机器人、游戏、自然语言处理、图像处理、视频处理等领域。深度强化学习算法被认为是最有可能实现通用人工智能计算的方法。不过,由于深度强化学习算法融合了深度学习、统计、信息学、运筹学、概率论、优化等多个学科的内容,因此强化学习的入门门槛比较高,并且,到目前为止,市面上没有一本零基础全面介绍强化学习算法的书籍。
本书是笔者在南开大学计算机与控制工程学院做博士后期间,每周在课题组内讲解强化学习知识的讲义合集。在学习强化学习基本理论的时候,我深深地感受到强化学习理论中的很多概念和公式都很难理解。经过大量资料和文献的查阅并终于理解一个全新的概念时,内心涌现的那种喜悦和兴奋,鼓动着我将这些知识分享给大家。为此,我在知乎开辟了《强化学习知识大讲堂》专栏,并基本保持了每周一次更新的速度。该专栏得到大家的关注,很多知友反映受益良多,本书的雏形正是来源于此。在成书时,考虑到书的逻辑性和完整性,又添加了很多数学基础和实例讲解。希望本书能帮助更多的人入门强化学习,开启自己的人工智能之旅。
在写作过程中,博士后合作导师方勇纯教授给了大量的建议,包括书的整体结构、每一章的讲述方式,甚至每个标题的选择。写作后,方老师细致地审阅了全文,给出了详细的批注,并多次当面指导书稿的修改。正是因为方老师的耐心指导与辛勤付出,本书才得以顺利完成。
同时,非常感谢组内的研究生丁杰、朱威和赵铭慧三位同学,通过与他们的交流,我学会了如何更明晰地讲解一个概念。本书的很多讲解方式都是在与他们的交流中产生的。
本书在写作过程中参考了很多文献资料,这些文献资料是无数科研工作者们日日夜夜奋斗的成果。本书对这些成果进行加工并形成了一套自成体系的原理入门教程。可以说没有这些科研工作者们的丰硕成果就没有今天蓬勃发展的人工智能,也就没有这本书,在此对这些科学工作者们表示由衷的敬意。
本书前六章的内容及组织思路很大部分参考了David Silver的网络课程,同时参考了强化学习鼻祖 Richard S. Sutton等人所著的Reinforcement
Learning: An Introduction,在此向Silver和Sutton致敬。
本书第8章介绍了置信域强化学习算法,主要参考了John
Shulman的博士论文,在此向John Shulman博士及其导师Pieter Abbeel致敬。第10章主要介绍了Sergey Levine博士的工作,在此对其表示感谢。在强化学习前沿部分,本书介绍了最近一年该领域很优秀的研究工作,如Donoghue的组合策略梯度和Qlearning方法,Tamar的值迭代网络,Deisenroth的PILCO方法和McAllister的PILCO扩展方法,在此对这些作者表示感谢。当然,本书还介绍了很多其他科研工作者的工作,在此对他们一并致谢。
本书阐述的主要是前人提出的强化学习算法的基本理论,并没有介绍笔者个人的工作,但在此仍然要感谢目前我负责的两项基金的支持:国家自然科学基金青年基金(61603200)和中国博士后基金面上项目(2016M601256)。这两个项目都和强化学习有关,本书也可看成是这两个项目的前期调研和积累。关于更多笔者个人的工作,留待以后再与大家分享。
由于个人水平有限,书稿中难免有错误,欢迎各位同行和读者批评指正。
感谢我的家人,感谢我的爱人王凯女士,感谢她长时间对我的理解和支持,没有她的帮助,我一无所有,一事无成。这本书献给她。
郭宪
2017年11月
郭宪,南开大学计算机与控制工程学院博士后。2009 年毕业于华中科技大学机械设计制造及自动化专业,同年保送到中国科学院沈阳自动化研究所硕博连读,主攻机器人动力学建模与控制,并于 2016 年 1 月获得工学博士学位;期间在国内外知名杂志和会议发表论文数 10 篇。2016 年以来,郭博士主攻方向为机器人智能感知和智能决策,目前主持两项国家级课题,内容涉及深度学习、深度强化学习等智能算法在机器人领域中的应用。
1 绪论 1
1.1 这是一本什么书 1
1.2 强化学习可以解决什么问题 2
1.3 强化学习如何解决问题 4
1.4 强化学习算法分类及发展趋势 5
1.5 强化学习仿真环境构建 7
1.5.1 gym安装及简单的demo示例 8
1.5.2 深入剖析gym环境构建 10
1.6 本书主要内容及安排 12
第一篇 强化学习基础 17
2 马尔科夫决策过程 18
2.1 马尔科夫决策过程理论讲解 18
2.2 MDP中的概率学基础讲解 26
2.3 基于gym的MDP实例讲解 29
2.4 习题 34
3 基于模型的动态规划方法 36
3.1 基于模型的动态规划方法理论 36
3.2 动态规划中的数学基础讲解 47
3.2.1 线性方程组的迭代解法 47
3.2.2 压缩映射证明策略评估的收敛性 49
3.3 基于gym的编程实例 52
3.4 最优控制与强化学习比较 54
3.5 习题 56
第二篇 基于值函数的强化学习方法 57
4 基于蒙特卡罗的强化学习方法 58
4.1 基于蒙特卡罗方法的理论 58
4.2 统计学基础知识 67
4.3 基于Python的编程实例 71
4.4 习题 74
5 基于时间差分的强化学习方法 75
5.1 基于时间差分强化学习算法理论讲解 75
5.2 基于Python和gym的编程实例 83
5.3 习题 87
6 基于值函数逼近的强化学习方法 88
6.1 基于值函数逼近的理论讲解 88
6.2 DQN及其变种 94
6.2.1 DQN方法 94
6.2.2 Double DQN 100
6.2.3 优先回放(Prioritized Replay) 102
6.2.4 Dueling DQN 104
6.3 函数逼近方法 105
6.3.1 基于非参数的函数逼近 105
6.3.2 基于参数的函数逼近 111
6.3.3 卷积神经网络 117
6.4 习题 123
第三篇 基于直接策略搜索的强化学习方法 125
7 基于策略梯度的强化学习方法 126
7.1 基于策略梯度的强化学习方法理论讲解 126
7.2 基于gym和TensorFlow的策略梯度算法实现 134
7.2.1 安装Tensorflow 135
7.2.2 策略梯度算法理论基础 135
7.2.3 Softmax策略及其损失函数 136
7.2.4 基于TensorFlow的策略梯度算法实现 138
7.2.5 基于策略梯度算法的小车倒立摆问题 141
7.3 习题 141
8 基于置信域策略优化的强化学习方法 142
8.1 理论基础 143
8.2 TRPO中的数学知识 153
8.2.1 信息论 153
8.2.2 优化方法 155
8.3 习题 164
9 基于确定性策略搜索的强化学习方法 165
9.1 理论基础 165
9.2 习题 170
10 基于引导策略搜索的强化学习方法 171
10.1 理论基础 171
10.2 GPS中涉及的数学基础 178
10.2.1 监督相LBFGS优化方法 178
10.2.2 ADMM算法 179
10.2.3 KL散度与变分推理 183
10.3 习题 184
第四篇 强化学习研究及前沿 185
11 逆向强化学习 186
11.1 概述 186
11.2 基于最大边际的逆向强化学习 187
11.3 基于最大熵的逆向强化学习 194
11.4 习题 201
12 组合策略梯度和值函数方法 202
13 值迭代网络 207
13.1 为什么要提出值迭代网络 207
13.2 值迭代网络 210
14 基于模型的强化学习方法:PILCO及其扩展 214
14.1 概述 214
14.2 PILCO 216
14.3 滤波PILCO和探索PILCO 226
14.3.1 滤波PILCO算法 227
14.3.2 有向探索PILCO算法 230
14.4 深度PILCO 232
后记 235
参考文献 237