前言

随着人工智能技术日渐普及,人们对人工智能的期待也越来越高,希望其完成的任务也多种多样。在过去 10 年的发展中,基于机器学习的智能检测、预测类的人工智能技术快速发展,例如在疫情绿码应用中的人脸活体检测、个性化信息流推荐中的用户兴趣预测等,现已成为人们日常生活中不可或缺的基础设施。基于这些成熟的人工智能技术,服务决策智能的技术开始变得越来越重要,这背后对应着机器学习科目下的一个分支,即强化学习。目前强化学习技术已经在机器人控制、游戏智能、智慧城市、推荐系统、能源优化等领域广泛应用,具有巨大的发展前景,业界对强化学习人才的需求量也与日俱增。然而,强化学习的普及教育仍然较为滞后,不少高校仍未开设强化学习课程,不少高校学生想系统性学习强化学习技术但缺乏专业的渠道。

本书作者在上海交通大学致远学院和电子信息与电气工程学院为大三本科生开设强化学习课程。目前两个学院的强化学习课程在其培养方案中皆为 2 学分,包含了所有授课和实验的学时。在授课和批改学生的课程作业的过程中,我们发现强化学习对于学生和老师来说都是一个较难科目。对于学生,强化学习的理论部分属于机器学习大科目中进阶部分内容,涉及到的数学内容比一般有监督学习更加复杂,而对这些内容的真正理解离不开编程实验,没有第一手的编程实现和调试经验,很多强化学习的原理就无法真切体会。例如在 Q 学习算法中,如果直接看 Q 价值函数更新公式,一般很难看出其中可能会出现过高价值估计的情况,更难以理解为何这种过高估计在深度强化学习任务下总是导致学习失败;只有通过第一手的实验对比经验,学生才能真切体会双 Q 函数给这种过高估计带来的减缓效益。对于老师,要做好强化学习的教学工作,需要将强化学习的理论原理和实践经验在 2 学分的课程中讲透,实属不易。部分学生反映强化学习的理论部分偏难,授课节奏较快;部分学生反馈理论授课内容和课程大作业差距太大,无法轻松衔接。总得来说,对强化学习技术的扎实掌握离不开动手实践,而市面上目前尚未有较为权威的集强化学习原理和动手实践于一体的书籍。

在 2021 年春季致远学院的强化学习课程中,我们试点了以在线 python notebook 的形式为学生提供课程辅助材料和代码小作业。对于一个强化学习主题单元,我们将原理讲解部分(包括配图和公式)与对应的代码耦合在一起,这样能使学生在学习完一个原理知识点后立即以代码的形式学习其实现方式。更重要的是,这样的代码块可以在线直接运行和修改,以致于我们可以在一个 notebook 里完成对一个强化学习主题单元的原理学习和实验。从学生的反馈看来,这样的学习方式能帮助学生更好地对应上理论知识点和实践能力点,也能帮助老师更高效地授课、布置和批改作业。随后在 2021 年秋季电子信息与电气工程学院 AI 专业的强化学习课程中,我们将以在线平台的方式向学生完全公开学习材料,并以动手学强化学习为主要的课后学习形式,进一步收集学生们的反馈。

基于在强化学习研究和教学中的浅薄经验,我们推出这本《动手学强化学习》,旨在探索一种更好的强化学习的教学方式,为中国强化学习的人才培养贡献一份力量。书中难免有错谬之处,还望广大读者不吝指正,我们感激不尽。