深入浅出强化学习:原理入门
基本信息
【插图】

编辑推荐
从零起步掌握强化学习技术精髓,称霸人工智能领域!
《深入浅出强化学习:原理入门》针对初学者的需求,直接分析原理,并辅以编程实践。从解决问题的思路,层层剖析,普及了传统的强化学习基本方法和当前炙手可热的深度强化学习方法,直接将读者带入强化学习的殿堂。读完本书,读者能在熟练掌握原理的基础上,直接上手编程实践。
本书的叙述方式简洁、直接、清晰,值得精读!
内容简介
计算机书籍
《深入浅出强化学习:原理入门》用通俗易懂的语言深入浅出地介绍了强化学习的基本原理,覆盖了传统的强化学习基本方法和当前炙手可热的深度强化学习方法。开篇从最基本的马尔科夫决策过程入手,将强化学习问题纳入到严谨的数学框架中,接着阐述了解决此类问题最基本的方法--动态规划方法,并从中总结出解决强化学习问题的基本思路:交互迭代策略评估和策略改善。基于这个思路,分别介绍了基于值函数的强化学习方法和基于直接策略搜索的强化学习方法。最后介绍了逆向强化学习方法和近年具有代表性、比较前沿的强化学习方法。
除了系统地介绍基本理论,书中还介绍了相应的数学基础和编程实例。因此,《深入浅出强化学习:原理入门》既适合零基础的人员入门学习、也适合相关科研人员作为研究参考。
目录
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
前言
本书是笔者在南开大学计算机与控制工程学院做博士后期间,每周在课题组内讲解强化学习知识的讲义合集。在学习强化学习基本理论的时候,我深深地感受到强化学习理论中的很多概念和公式都很难理解。经过大量资料和文献的查阅并终于理解一个全新的概念时,内心涌现的那种喜悦和兴奋,鼓动着我将这些知识分享给大家。为此,我在知乎开辟了《强化学习知识大讲堂》专栏,并基本保持了每周一次更新的速度。该专栏得到大家的关注,很多知友反映受益良多,本书的雏形正是来源于此。在成书时,考虑到书的逻辑性和完整性,又添加了很多数学基础和实例讲解。希望本书能帮助更多的人入门强化学习,开启自己的人工智能之旅。
在写作过程中,博士后合作导师方勇纯教授给了大量的建议,包括书的整体结构、每一章的讲述方式,甚至每个标题的选择。写作后,方老师细致地审阅了全文,给出了详细的批注,并多次当面指导书稿的修改。正是因为方老师的耐心指导与辛勤付出,本书才得以顺利完成。
同时,非常感谢组内的研究生丁杰、朱威和赵铭慧三位同学,通过与他们的交流,我学会了如何更明晰地讲解一个概念。本书的很多讲解方式都是在与他们的交流中产生的。
本书在写作过程中参考了很多文献资料,这些文献资料是无数科研工作者们日日夜夜奋斗的成果。本书对这些成果进行加工并形成了一套自成体系的原理入门教程。可以说没有这些科研工作者们的丰硕成果就没有今天蓬勃发展的人工智能,也就没有这本书,在此对这些科学工作者们表示由衷的敬意。
本书前六章的内容及组织思路很大部分参考了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)。这两个项目都和强化学习有关,本书也可看成是这两个项目的前期调研和积累。关于更多笔者个人的工作,留待以后再与大家分享。
由于个人水平有限,书稿中难免有错误,欢迎各位同行和读者批评指正。我的个人邮箱是guoxiansia@163.com,如有疑问,欢迎咨询。
最后,感谢我的家人,感谢我的爱人王凯女士,感谢她长时间对我的理解和支持,没有她的帮助,我一无所有,一事无成。这本书献给她。
郭宪
2017年11月
序言
强化学习是机器学习的一个重要分支,它试图解决决策优化的问题。所谓决策优化,是指面对特定状态(State,S),采取什么行动方案(Action,A),才能使收益最大(Reward,R)。很多问题都与决策优化有关,比如下棋、投资、课程安排、驾车,动作模仿等。
AlphaGo的核心算法,就是强化学习。AlphaGo不仅稳操胜券地战胜了当今世界所有人类高手,而且甚至不需要学习人类棋手的棋谱,完全靠自己摸索,就在短短几天内,发现并超越了一千多年来人类积累的全部围棋战略战术。
最简单的强化学习的数学模型,是马尔科夫决策过程(Markov Decision Process,MDP)。之所以说MDP是一个简单的模型,是因为它对问题做了很多限制。
1.面对的状态st,数量是有限的。
2.采取的行动方案at,数量也是有限的。
3.对应于特定状态st,当下的收益rt是明确的。
4.在某一个时刻t,采取了行动方案at,状态从当前的st转换成下一个状态st+1。下一个状态有多种可能,记为 , i = 1... n。
换句话说,面对局面st,采取行动at,下一个状态是 ,不是确定的,而是概率的,状态转换概率,记为P( | st, at )。但是状态转换只依赖于当前状态st,而与先前的状态st-1, st-2 ...无关。
解决马尔科夫决策过程问题的常用的算法,是动态规划(Dynamic Programming)。
对马尔科夫决策过程的各项限制,不断放松,研究相应的算法,是强化学习的目标。例如对状态st放松限制:
1.假如状态st的数量,虽然有限,但是数量巨大,如何降低动态规划算法的计算成本;
2.假如状态st的数量是无限的,现有动态规划算法失效,如何改进算法;
3.假如状态st的数量不仅是无限的,而且取值不是离散的,而是连续的,如何改进算法;
4.假如状态st不能被完全观察到,只能被部分观察到,剩余部分被遮挡或缺失,如何改进算法;
5.假如状态st完全不能被观察到,只能通过其他现象猜测潜在的状态,如何改进算法。
放松限制,就是提升问题难度。在很多情况下,强化学习的目标,不是寻找绝对的最优解,而是寻找相对满意的次优解。
强化学习的演进,有两个轴线:一个是不断挑战更难的问题,不断从次优解向最优解逼近;另一个是在不严重影响算法精度的前提下,不断降低算法的计算成本。
此书的叙述线索非常清晰,从最简单的解决马尔科夫决策过程的动态规划算法,一路讲解到最前沿的深度强化学习算法(Deep Q Network,DQN),单刀直入,全无枝枝蔓蔓之感。不仅解释数学原理,而且注重编程实践。同时,行文深入浅出,通俗易懂。
将本书与Richard Sutton和Andrew Barto合著的经典著作Reinforcement Learning: An Introduction, Second Edition相比,Sutton和Barto在内容上更注重全面,覆盖了强化学习各个分支的研究成果;而本书更强调实用,是值得精读的教材。