前言
一、为什么要写本书
强化学习日渐流行,作为当今社会最热门的研究课题之一,其关注度正与日俱增。强化学习是机器学习的一个分支,通过与环境的交互进行学习,目前广泛应用于游戏领域,如ATARI游戏、西洋双陆棋、AlphaZero等。由于它具有自学习的特性,因此在机器人、工业自动化、自然语言处理、医疗保健及在线股票交易等领域受到了广泛重视,并取得了众多成果。
强化学习是一门实践性很强的学科,同时也具有坚实的理论基础。但目前市面上关于强化学习的书籍过于偏重理论推导和分析,很少以应用为导向来介绍与该算法相关的工程实践及相关代码实现,难以引起读者(特别是初学者)的兴趣,从而无法使其对强化学习算法进行深入的了解和学习。
本书紧扣读者需求,采用循序渐进的叙述方式,深入浅出地论述了强化学习的背景、算法原理、应用案例等;此外,本书针对每一章节的算法均提供了对应的案例和程序源代码,并附有详细的注释,有助于读者加深对强化学习相关知识的理解。
通过本书,读者可以从零起步了解并掌握强化学习算法,并且能够快速选择合适的算法去解决实际问题。更进一步,通过学习本书,读者能够丰富对人类自身的认识,并启发对人机智能之争更深一层的思考与探索。
二、内容特色
与同类书籍相比,本书有如下特色。
1.由浅入深,循序渐进
本书以具备机器学习基础知识的本科生或研究生为对象,先介绍强化学习的基本概念及分类,接着以强化学习拟解决的问题为着眼点,将强化学习要解决的问题转化为求解马尔可夫模型。然后由浅入深地给出了求解此模型的基础求解方法和联合求解方法,其中,基础求解法均为查表型算法,适用于状态空间、行为空间有限的场景;对于状态行为空间连续的情况,需要联合求解方法,该方法结合了神经网络来逼近价值函数或者策略函数,也称为深度强化学习。最后是一个博弈案例,向读者展示了强化学习在博弈领域的应用。这种循序渐进的叙述方式,可以将读者的注意力逐渐从背景知识引向重点,由浅入深地展开一个又一个算法。
2.原理透彻,注重应用
将理论和实践有机地结合是进行算法研究和应用成功的关键。本书对强化学习的相关理论分门别类、层层递进地进行了详细的叙述和透彻的分析,既体现了各知识点之间的联系,又兼顾了其渐进性。本书在介绍每个系列的算法时,不仅给出了算法的运行流程,还给出了该类算法的应用案例;这些实例不仅可以加深读者对所学知识的理解,而且也展现了强化学习技术的研究热点。本书真正体现了理论联系实际的理念,使读者能够体会到“学以致用”的乐趣。
3.例程丰富,解释翔实
本书根据笔者多年从事人工智能学习、科研的经验,列举了近20个关于强化学习算法的Python源代码实例,并针对代码的运行步骤,结合理论和代码进行了详细的描述,重点解释了理论和代码之间的转换。本书采用“算法详情”“核心代码”“代码注释”三种方式对源代码进行解析,让读者对相关算法的核心思想有更直观、更深刻的理解,可以有效地提高读者在强化学习方面的编程能力。本书所提供的程序的编写思想、经验技巧,也可为读者采用其他计算机语言进行强化学习编程提供借鉴。
4.资源共享,超值服务
本书对强化学习的相关理论和技术进行了分析和探讨,读者可登录清华大学出版社官网下载课件、源代码、教学大纲等相关资源。此外,笔者还定期在“睿客堂”公众号上与读者进行在线互动交流,解答读者的疑问。
5.图文并茂,语言生动
为了更加生动地诠释知识要点,本书配备了大量新颖的图片,以提升读者的兴趣,加深读者对相关理论的理解。在文字叙述上,本书摒弃了枯燥的平铺直叙,采用案例与问题引导式。本书的“实例讲解”板块,彰显了本书学以致用的特点。
三、结构安排
本书主要介绍强化学习的相关知识,分为提出问题、基础求解方法、联合求解方法和博弈案例四大部分,共13章,内容如图0-1所示。
图0-1 章节安排
第一部分:提出问题
第1章:介绍强化学习的定义、发展历程及要解决的问题。
第2章:构建强化学习模型——马尔可夫决策模型,将解决强化学习问题转化为求解马尔可夫决策模型的最优解。
第二部分:基础求解方法
描述了三类基本的求解马尔可夫决策模型的方法。此方法仅限于小规模查表求解方式,若问题复杂则需要使用第三部分介绍的联合求解方法。
第3章:利用动态规划进行强化学习,可视为强化学习中的“规划”,在已知模型(即已知转移概率、奖励)的基础上,通过迭代的方法,求解策略的值函数,并在此基础上找到最优的策略。
第4章:在不清楚模型状态转移概率及奖励的情况下,利用蒙特卡罗方法进行强化学习,直接对完整轨迹中的回报取平均(即经验平均)得到值函数,求取最优策略。第5章:同样是不清楚模型状态转移及奖励的情况,如果学习的是不完整的轨迹,则需通过贝尔曼递推公式(自举的方法)求取值函数,并求取最优策略,这就是时序差分方法,该方法与蒙特卡罗方法的重要区别在于学习轨迹是否完整。
第三部分:联合求解方法
在解决规模较大、状态行为连续的实际问题时,通常集成多个基本算法,或者对值函数做函数近似,将行为空间和状态空间泛化,这是强化学习在落地应用中采取的最广泛的方法之一。
第6章:资格迹法也称多步时序差分法,是单步时序差分(TD)的扩展。扩展之后产生了一类方法,该方法连接了时序差分和蒙特卡罗。实际过程中一般对每步的值函数都赋予一个权重,将各步时序差分返回值加权平均,用以更新值函数求解最优策略。
第7章:对于状态行为是连续变量的情况,需利用值函数逼近代替查表法进行强化学习。通过引入线性或非线性函数对值函数进行近似,计算该函数的参数,实现在状态行为空间的泛化,该方法适用于包含连续变量或复杂意义的场景。
第8章:在值函数动作空间很大或动作为连续集的情况下,值函数逼近法不能很好地解决问题,而直接分析策略更方便。如使用策略梯度上升法可绕过值函数,直接求解最优策略。如果该策略是随机策略,则对应的方法为随机策略梯度法。所谓随机策略,是指给定状态下,行为是一个概率分布。
第9章:在求解最优策略时,如果同时使用了值函数逼近和策略梯度搜索,借助近似的值函数来指导策略参数更新,就是Actor-Critic(行动者-评论家)方法。Actor-Critic方法相当于行动者(策略参数逼近)在行动的同时有评论家(值函数参数逼近)指点,继而行动者做得越来越好。
第10章:在使用策略梯度算法解决大型动作空间或者连续动作空间的强化学习问题时,如果求解的策略是确定性策略a=uθ(s),则对应的方法就是确定性策略梯度法。所谓确定性策略,是指任意给定状态都会对应一个确定行为。
第11章:基于环境模型的方法(规划方法)和无模型的方法(学习方法),这两类方法的核心都是计算值函数。因此,可以从一个统一的视角将规划方法和学习方法进行集成,形成Dyna系列方法。该系列方法通过生成模型拟合数据的方式解决实际问题。
第12章:着眼于探索-利用困境,给出几类探索算法。通过引入后悔值,借助多臂赌博机这一与状态无关的示例,从理论和实践上论述了相关算法的有效性。
第四部分:博弈案例
第13章:将强化学习算法引入双人博弈领域,分别介绍了博弈树、极大极小搜索、Alpha-Beta搜索、蒙特卡罗树搜索等几种常见的树搜索算法。以近几年最热的AlphaGo、AlphaGo Zero、AlphaZero为对象,向读者展示了传统蒙特卡罗树搜索与自我对弈强化学习相结合后产生的巨大威力。
四、读者对象
· 有机器学习基础,并对强化学习技术感兴趣的读者;
· 人工智能、计算机、信息科学、数学、自动化、软件工程等相关专业的本科生、研究生;
· 相关工程技术人员。
五、学习建议
为了更好地阅读和理解本书,建议读者先学习Python并能进行简单的编程,且具备基础的机器学习知识。本书的章节安排是依据强化学习内容的难易程度,由浅入深、循序渐进建立的,建议初学者从前至后顺序阅读。
对于基础薄弱者,可以分如下几步阅读此书。
第一步,先简单浏览本书各章节安排,了解各章节都有哪些算法、哪些实践项目,以做到对基本概念有初步的理解,对本书有整体的认识。
第二步,从前至后细细阅读各章节算法的原理,并运行相应的实践项目。对照书中内容和相应的源代码内容,深入学习各个算法的细节。
第三步,可以参阅标记“*”的章节及相应的参考文献,进一步扩展学习此领域知识。
本书配套资源请扫描下方二维码获取:
配套资源
六、致谢
感谢两位鼻祖Richard S. Sutton和David Silver,感谢他们的课程、著作及研究材料;感谢清华大学出版社对本书的认可和支持;感谢北京信息科技大学的李航在本书的资料整理及校对过程中所付出的辛勤劳动。
限于笔者的水平和经验,加之时间比较仓促,疏漏之处在所难免,敬请读者批评指正。有兴趣的朋友可发送邮件到workemail6@163.com,或者在“睿客堂”微信公众号后台留言,与笔者交流。
邹 伟
2019年12月