上海交通大学ACM班又出新品,人邮“动手学”又一力作《动手学强化学习》来了!
作者 | Ailleurs
编辑 | 陈彩娴
在过去十多年的发展中,基于机器学习的智能检测和智能预测类的人工智能技术快速发展。例如,在门禁系统中应用的人脸活体检测、在个性化信息流推荐中应用的用 户兴趣预测已成为人们日常生活中不可或缺的技术。如今,在这些成熟的人工智能技术基础上, 服务于决策智能的技术变得越来越重要,这背后对应机器学习领域下的一个分支——强化学习。
目前强化学习技术已经在机器人控制、游戏智能、智慧城市、推荐系统、能源优化等领域得到广泛应用,发展前景广阔,业界对强化学习人才的需求量也与日俱增。
但是,强化学习的普及教育较为滞后,不少高校仍未开设强化学习课程,学生迫切需要一条系统学习强化学习技术的专业路径。
近日,上海交大ACM班的俞勇团队结合多年研究与教学,推出了一本强化学习入门书——《动手学强化学习》,号称理论能讲透、代码能跑通、实验可复现,立即在社区内引起了广泛关注。
针对该杰作,AI科技评论也特地联系了该书的作者之一、上海交大副教授、青橙奖和吴文俊优青获得者张伟楠,向他了解了此书背后的故事(见文末)。
如果你想“入坑”强化学习,那这本书绝对不可错过~
1
作者简介
张伟楠,上海交通大学副教授,博士生导师,ACM班机器学习、强化学习课程授课老师,吴文俊人工智能优秀青年奖、达摩院青橙奖得主,获得中国科协“青年人才托举工程”支持。他的科研领域包括强化学习、数据挖掘、知识图谱、深度学习以及这些技术在推荐系统、搜索引擎、文本分析等场景中的应用。他在国际一流会议和期刊上发表了100余篇相关领域的学术论文,于2016年在英国伦敦大学学院(UCL)计算机系获得博士学位。
沈键,上海交通大学APEX实验室博士生,师从俞勇教授,研究方向为深度学习、强化学习和教育数据挖掘。在攻读博士期间,他以第一作者身份发表机器学习国际顶级会议NeurIPS、AAAI论文,参与发表多篇机器学习和数据挖掘国际顶级会议(包括ICML、IJCAI、SIGIR、KDD、AISTATS等)论文,并担任多个国际顶级会议和SCI学术期刊的审稿人。
俞勇,享受国务院特殊津贴专家,国家级教学名师,上海交通大学特聘教授,APEX实验室主任,上海交通大学ACM班创始人。俞勇教授曾获得首批“国家高层次人才特殊支持计划”教学名师、“上海市教学名师奖”“全国师德标兵”“上海交通大学校长奖”和“最受学生欢迎教师”等荣誉。他于2018年创办了伯禹人工智能学院,在上海交通大学ACM班人工智能专业课程体系的基础上,对AI课程体系进行创新,致力于培养卓越的AI算法工程师和研究员。
2
内容介绍
本书系统地介绍了强化学习的原理和实现,理论扎实且落地性强。对于初探强化学习的读者来说,本书不仅能够帮助你理解强化学习的算法原理,提高代码实践能力,更能让你了解自己是否喜欢决策智能这个方向,从而更好地决策未来是否从事人工智能方面的研究和实践工作。
这本书的内容一共包括3个部分:
- 第一部分为强化学习基础,讲解强化学习的基础概念和表格型强化学习方法;
- 第二部分为强化学习进阶,讨论深度强化学习的思维方式、深度价值函数和深度策略学习方法;
- 第三部分为强化学习前沿,介绍学术界在深度强化学习领域的主要关注方向和前沿算法。
同时,本书理论与实践并重,在介绍强化学习理论的同时,还提供了配套的线上代码实践平台,展示源码的编写和运行过程,能够让读者进一步掌握强化学习算法的运行机制。
本书适合各类对强化学习感兴趣的人群。如果你是学生,你可以通过这本书中提供的一条自学捷径,成功入门强化学习领域。如果你是高校教师,你也可以将这本书作为教材,开设强化学习课程。如果你是程序员,那么你可以通过这本书中的理论和实战,落地强化学习。
本书目录如下:
那么这本书的主要亮点有哪些呢?
第一,这本书注重理论基础,兼顾公式推导。做好公式推导,才能熟练编写代码和理解算法,本书提供了超清晰的公式推导过程,让新手不用再经历“公式不知道用在哪里,公式不知道怎么推导出”的抓狂体验。
第二,这本书中注释清晰,代码实战的落地性极强,“动手学”的思维很清晰。书中提供的代码都是基于 Python 3 编写的,而且代码在涉及自动求导时皆使用目前比较受欢迎的 PyTorch 框架实现。每一章的内容都提供了Jupyter Notebook链接,可以在线直接运行。
第三,本书配套资源丰富。作者团队为这本书录制了在线视频,使得学员可以兼顾教材和网课来进行系统地学习,课后练习和在线答疑也可以帮助同学巩固所学知识,提高学习效率。
这样一本强化学习入门佳作也获得了图灵奖得主John Hopcroft、李沐、俞扬、张志华、汪军、李航等多位业内大咖的强烈推荐:
3 对话张伟楠
AI科技评论就本书的编写缘由、编写过程、内容亮点、学习建议等方面,对本书的编者之一张伟楠副教授进行了采访,整理如下。
AI科技评论:你们最初是怎么有编写这本书的想法的?从开始编写到完稿花了多长时间?
张伟楠:我本人长期做强化学习方面的研究,也在上海交通大学讲授强化学习课程。本书三位作者所在的上海交通大学APEX数据和知识管理实验室(简称APEX实验室)有一个30人的强化学习研究组。强化学习的研究其实门槛比较高,一方面它对数理统计基础要求高,另一方面它的实验总是比较难做成功,很多时候需要付出很多努力才能复现论文实验结果或者做出新的实验突破。因此我也经常开玩笑说:要做好强化学习研究,你需要数学好,编程好,还要品格好。最后的“品格好”是指需要具备实事求是的态度和持之以恒的韧性,在强化学习实验调不出来时还能细心检查bug,在实验跑了一周还没起色时,愿意再坚持几天,在最终意识到自己方法确实不work时,能坦然面对,重新设计算法。
强化学习组的师生们相互帮助,促进研究效率提升,也为带刚刚进组的新同学“避坑”,就慢慢沉淀出了一份强化学习算法的代码。而真正想到把强化学习代码整理公布出来,是有一位外校的研究生跟我讨论时说,他们实验室只有2位同学做强化学习的研究课题,问我如何才能做好强化学习的研究和实验。我当时想了想,觉得他的情况可能确实比较难一点,因为没有足够的同学一起研究强化学习,很多强化学习的理论可能会理解不够深入,很多实验方面的“坑”没有被趟过,于是就比较难以入门,进入研究深水区。因此,如果能有一本材料,能把强化学习的理论讲透,并且把相关的实现代码就穿插在理论算法讲解中,那么学习起来可能就会更加容易体会强化学习的原理。更重要的是,这些代码要能够直接跑通,实验结果可以复现,这样就能体会到强化学习算法是如何work的。
当时正好ACM班学长李沐的《动手学深度学习》刚刚出版,每一个章节对应的Jupyter Notebook很适合边学理论边跑代码,受到了业界广泛的好评,我也就决定尝试整理APEX实验室的强化学习代码和相关的讲解材料,写出这本《动手学强化学习》。
第一稿完成花了接近一年的时间,但是仍然比较粗糙。部分内容对于初学者还是比较困难。我将部分章节的Jupyter Notebook作为教辅内容以及代码小作业发放给我讲授的强化学习课程的学生们,并请他们反馈相关的改善建议,进一步迭代代码和文字材料。在迭代了2020和2021两年的强化学习课之后,我们认为现在的版本差不多可以出版了。当然本书可能还是会有不少可以改进的点,还请各位读者多多反馈修改意见,我们十分感激!
AI科技评论:你之前曾在RLChina夏令营和上海交大讲授强化学习课程,从你的经验看,不同类型的学生们会比较关注哪些内容?你们如何为初学者设计一个渐进式的学术和项目的学习路线,又如何根据反馈来完善这本教材的?
张伟楠:我在上海交通大学给致远学院ACM班和电院AI试点班的同学讲授强化学习,由于学生的专业和本课程内容很贴合,因此学生对强化学习的原理部分关注较多。在夏令营中获得学生的反馈更多来自如何在各种各样的领域用好强化学习技术,当然也有不少本专业的学生对强化学习本身的研究十分了解。对于来我们APEX实验室的强化学习初学者,我建议的学习路线是:
1. 先学习UCL David Silver的强化学习课程:https://www.davidsilver.uk/teaching/
这是强化学习的基础知识,不太包含深度强化学习的部分,但对后续深入理解深度强化学习十分重要。
2. 然后学习UC Berkeley的深度强化学习课程:http://rail.eecs.berkeley.edu/deeprlcourse/
3. 最后可以可以挑着看OpenAI 的夏令营内容:https://sites.google.com/view/deep-rl-bootcamp/lectures
当然,如果希望学习中文的课程,我推荐的是:
1. 我本人在上海交通大学的强化学习课程: https://www.boyuai.com/rl
2. 周博磊老师的强化学习课程:https://www.bilibili.com/video/BV1LE411G7Xj
AI科技评论:你们认为,初学者学习强化学习的难点在哪里?本书希望帮助学生解决学习强化学习的过程中遇到的哪些难点,这些思考是否与你自己之前的强化学习经历有关?
张伟楠:传统课堂讲授的内容比较深奥,与动手实践的差距会比较大。课后自己做一个强化学习代码实验,可能不知如何下手,并且实验过程中需要注意的细节较多。这也是《动手学强化学习》这本书希望弥补的gap。读者在看完一个知识点的一段文字和公式讲解后,马上就可以看到对应代码块——代码中的变量名和前面公式中的符号一致,函数名也和前面文字中提到的方法名一致;代码块可以直接在Jupyter Notebook上运行,跑出书里的结果——这样就加速读者通过代码学习对强化学习原理的更加深入的理解。
我自己学习强化学习的经历主要是2013年在UCL读博期间上了David Silver老师的强化学习课程,后续又在微软剑桥研究院师从Thore Graepel做强化学习的研究实习生(后来这些老师和实习生几乎都去了DeepMind)。实话说,当时学习强化学习我是觉得比机器学习要吃力的,主要就是上面讲到的那样,原理讲解和代码实践差距较大,学习了课程和论文后,以为自己理解原理了,但写代码时就总会碰到各种问题。
AI科技评论:在写这本书的过程中,你是否对学习强化学习的窍门、前景等有了新的认知?
张伟楠:通过APEX实验室和强化学习课堂的学生们的反馈来看,这种Jupyter Notebook的学习材料是可以有效帮助提升对强化学习原理和代码理解效率的形式。希望这本书能够帮助更多人入门强化学习。
AI科技评论:这本书中,你认为最精彩/最有特色的是哪一部分?
张伟楠:我比较注重强化学习基础篇的讲解,相信读者在充分掌握了基础篇后,后面的进阶篇和前沿篇就会学得更加容易。因此本书的基础篇其实是我最满意的部分。例如在马尔可夫决策过程(MDP)的章节中,我们在介绍了MDP的基础知识后,引入了占用度量(Occupancy Measure)概念的讲解,通过概念、原理和代码实验的讲解,让读者深入理解一个策略和一个MDP交互行程的数据分布是什么样子,以及体会为什么一个策略一旦改变了,那么占用度量就会跟着改变。这样就讲清楚了为什么强化学习比有监督学习难度更大的原因——智能体学习过程中,随着策略不算更新,它面临的数据分布(也即是占用度量)会随之改变。
AI科技评论:本书的封面是有什么具体的意思吗?
张伟楠:本书的封面描绘的是一个机器人站在悬崖边,准备决定之后该如何行走。这其实对应本书中用到的一个典型强化学习案例Cliff Walking(悬崖漫步),不同的强化学习算法会让机器人走出风险和收益不同的路线。
《动手学强化学习》封面图
AI科技评论:这本书采取了类似ACM班以在线 Jupyter Notebook 的形式为学生提供课程辅助材料和代码小作业的方式,在学习者规模扩大的同时你们采取了哪些措施来加强学习体验?
张伟楠:我鼓励学员们加入我们在伯禹学习平台的强化学习课程中( https://www.boyuai.com/rl),本课程是全免费的。上面除了有我在上海交通大学强化学习课的视频,还有在线可以完成的课后习题,以及学员们就本节知识点做出的思维导图和问答讨论。这样可以帮助学员们在教师资源相对少的情况下,仍然具备较高的学习效率。
AI科技评论:这本书的定位是什么,可以推荐其他可以与这本书互补的配套学习书籍吗?
张伟楠:本书可以作为强化学习课程的教材,也可以作为偏代码学习和练习的教辅材料。适合配套的原理讲解的书籍如下:
1. Richard S. Sutton and Andrew G. Barto. "Reinforcement Learning: An Introduction (Second Edition) ." MIT Press, 2018.
2. 俞凯[译].《强化学习(第2版)》.电子工业出版社,2019.
3. 王琦、杨毅远、江季.《Easy RL 强化学习教程》. 人民邮电出版社,2022.
AI科技评论:俞勇老师在本书的编写中给与了哪方面的指导?团队目前是否还有其他类似的教材和课程的推进项目?
张伟楠:俞勇教授在ACM班的培养方案中对动手实践能力的培养力度比较大,学生从大一到大三,每个学期都会有编程类的大作业。充分锻炼计算机人才独当一面的动手能力,这成就了ACM班学生在毕业后编写出了MXNet、XGBoost、TVM、PS、DGL、Hotstuff等具有重要影响力的项目。在作者团队构思和编写《动手学强化学习》这本书的过程中,俞勇教师关注最多的就是通过这种新型学习材料呈现形式,读者是否能真正更好地掌握强化学习的原理和提升动手实践能力。可以说,本书的具体形式就是俞勇教授塑造的。
此外在这里卖一个关子 :) 俞勇教授已经规划了一个大的动手学系列书目,希望提炼和践行一种新的更高效的计算机科学和人工智能专业知识的学习形式。欢迎大家多关注我们接下来的行动。