强化学习基础
强化学习
Sarton/Barto经典教材
第一版的前言,该部分主要讲述了强化学习研究的由来:
- 1979年末,两位作者在UMass工作的时候参与了一个早期项目,该项目主要内容是去尝试唤起这样一种观点:由类神经网络的自适应单元组成的网络可能为实现人工自适应智能提供一种有前途的途径。该项目研究了Klopf提出的异态系统理论(Heterostatic Theory of Adaptive Systems),并进行了批判性的探讨。
- 在之后的二十年里,Sutton一直都没有结束对该思想的研究;这个简单的思想长期以来被视为是理所当然的,却从未在计算角度受到重视,该思想的主要内容是:一个学习系统想要某样东西,他会调整自己的行为,来最大化从环境中获得的某个特殊信号。这就是所谓的Hedonistic(享乐主义)学习系统思想,也就是如今我们所说的强化学习系统。
- 一开始的时候,Sutton和Barto以为强化学习已经被充分探讨了,结果深入研究后发现根本就没怎么被研究过。大多数研究者只是浅浅地研究了强化学习,然后后来基本都转向了其他方向,比如Pattern Classification(模式分类)、Supervised Learning(监督学习)和Adaptive Control(自适应控制);或者他们干脆完全放弃了对学习问题地研究。因此,在两位作者刚开始研究的时候,发现如何从环境中获取有益东西的学习问题根本就没有受到足够的关注,这个情况直接导致强化学习这个分支尚未被充分探索,在计算角度也无真正进展。
- 作者认为,虽然截至第一版时“如何通过交互式学习实现目标”这一问题远未被彻底解决,但是他们对他的理解已经大为加深。TD时序差分学习、动态规划、函数逼近等已经可以整合进一个整体一致地视角中了。
- 写这本书的目的是提供一本清晰而简明地教材,系统性介绍强化学习地关键思想与算法。本书采用了人工智能和工程的视角进行讲解。
- 在第一版中也提到了,本书没有对强化学习进行严格的形式化处理,因为作者不追求最高层次的数学抽象,也不使用严格的定理-证明格式。在简洁性与理论普适性之间保持一定的平衡来兼顾不分散读者注意力和帮助数学更强的读者走向更深入的理解。
- 1998年第一版中,作者便说,为这本书他们已经努力了三十年。(读者注:这种探索科学的精神真的令人感动)
- 读者注:作者在1998年第一版的感谢的名单中,有一位叫做Wei Zhang的中国人,没有查到该人是谁。如今我们在学习已经火遍全球的强化学习的时候,很难想象在三十到五十年前,已经有很多先驱进行了充分的探索了。有时候我想在阿尔伯塔这样偏僻而远离喧嚣的地方能坐落着一个世界顶级的人工智能研究所,属实令人称奇。这些伟大的科学成就的起点竟然都是如此地“不起眼”,截至1998年Sutton的论文被引用次数也不过一千多次,但是他们却已经付出了三十年的深刻的思考与研究。前两天我看了几个Sutton的采访视频,他依然在深度思考人工智能和强化学习的未来。相比于某些功成名就后的炫技者,他更像一个哲学家:永远在思考“智能究竟是什么”这一根本问题。
读者总结了第二版前言部分的主要要点如下:
- 第一版出版于1998年,在出版后的二十年间人工智能取得了巨大的进步,这股浪潮由更强大的计算能力和新理论、新算法共同推动。
- 书中未给出强化学习的严格形式化定义,也没有将其推广到最一般的形式。整本书依然是导论性质的书,重点是Online Learning Algorithms。
- 第二版相比于第一版,需要更高程度的数学解释,书中放在灰色框中的数学内容对于那些非数学背景的读者而言是可以跳过的。
- 第二版对符号进行了优化,方便人们学习理解。Random Variables(随机变量)用大写字母表示,比如St, At, Rt代表时间步t的状态、动作和奖励;而其具体取值则用小写字母表示,比如上述变量对应的具体的值可能是s, a, r.
- 值函数用小写字母表示,如v pi;表格形估计用大写字母表示,如Qt(s, a)。近似值函数是确定性函数,因此参数也采用小写字母;大写粗体字母则用于矩阵。
- 第二版减少了上标和下标的过度使用,采用更加简便的p(s', r | s, a)这样的写法。
- 本书内容推荐用两个学期来学习完成;如果只学习一个学期的话,推荐覆盖前十章。(读者注:难怪我上RL课的时候感觉基本讲到第十章左右就进入期末项目了,原来出处是这里)
- Sutton(在本系列笔记中Sutton就代表Sutton和Barto,后面不再赘述)感谢了科学家A. Harry Klopf,并表示第二版献给他。Klopf教授提出了脑与人工智能的构想,让两位作者相识;在Klopf的引荐下,还在斯坦福读本科的Sutton加入了新创办的UMass Amherst项目的研究小组。Klopf是让项目获得资助的关键人物。
- Sutton感谢了阿尔伯塔大学的强化学习与人工智能实验室。
- Klopf是早期关注机器智能领域的重要人物,提出了一些对人工智能产生重大影响的理论。他认为最大化某种内部目标,无论是具体的还是抽象的,是智能系统的核心,而非单纯的维持系统稳定。换句话说,智能体的目标不仅是保持平衡,还应该能够主动探索环境,根据经验预测未来,并选择行动以最大化其长期回报或内部奖励。这种哲学观点直接启发了后来的强化学习理论:智能体不仅响应环境变化,也通过主动选择行为来优化长期目标;智能体不是模仿固定规则或者维持状态,而是通过试错学习最大化累积奖励。Sutton和Barto直言这种思想正是他们强化学习研究旅程的思想起点。
The Bitter Lesson
除了上述前言外,我还想分享一下Sutton在2019年写的一篇叫做《The Bitter Lesson》的文章,该文章并不长,但总结了他对于人工智能发展七十年的一些重要思考和看法,我收录了其中一些比较重要的点:
- 人工智能研究七十年来最大的教训就是:基于通用方法、依赖计算力的方法,最终是最有效的——而且是大幅度更有效。造成这一点的根本原因是摩尔定律,或者更广义地说,是每单位计算成本呈指数下降的长期趋势。然而,大多数人工智能研究都是在一个隐含前提下进行的:即,智能体可以使用的计算资源是恒定的。在这种假设下,融入人类知识似乎是提高性能的唯一途径。但现实是:只要时间略微延长,远超当前计算资源的能力就将出现。因此,虽然研究者们为了在短期内有所突破而倾向于使用自己对领域的知识,但从长远看,真正重要的事情只有一个:能否有效利用不断增长的计算能力。
- 靠人类知识和靠计算扩展在理论上并非必然对立,但是在实践中却往往如此。一方面,研究者的时间只能投入其一;另一方面,人们会在某种方法上形成心理依附。同时,人类知识路径往往导致算法变得更复杂,从而变得不适合与大规模通用计算方法相结合。
- 1997年击败世界冠军卡斯帕罗夫的,是一种基于大规模深度搜索的方法。当时的主流计算机棋类研究者们普遍感到沮丧,因为他们长期以来都在努力构建基于人类对棋局理解的系统,但最终胜出的却是一个相对“简单”、依赖特殊硬件和软件优化的搜索型系统。很多研究者们希望融合人类智慧的方法能赢,但是当现实相反时,他们对暴力搜索的大获全胜感到失望。
- 围棋中也出现了类似的事情。最初研究者们投入大量努力去避开搜索,转而利用人类知识或游戏本身的特殊性质,但这些努力最终都被证明是无关紧要甚至适得其反的。可以说,搜索和学习是现代人工智能中最重要的两大计算扩展技术。就像在国际象棋中一样,围棋研究起初也试图借助人类理解来减少搜索的需求,但直到最终才意识到真正的成功来自于接受并彻底利用搜索与学习。
- 1970年代,美国国防部组织过一次语音识别竞赛,最终使用更加统计化、计算化的模型战胜了依赖大量人类知识的方法。统计方法的胜出引发了整个自然语言处理领域的长期转变,在接下来的几十年里,统计与计算逐渐成为主导力量。而近年来的深度学习更进一步推动了语音识别的进步,而该方法更加依赖计算,几乎不依赖人类知识。
- 研究人员常常试图让系统像他们自己一样思考,将自己的知识硬编码进系统,这往往在最后都被证明是有害的。因为随着计算能力的指数级增长,那些依赖人类输入的系统显得低效而过时时,反而浪费了研究者的大量时间。
- 在计算机视觉领域,现代深度神经网络替代了人类手工设计的抽象表示。卷积和不变性的基本结构的性能远超早期模型。
- 我们如今仍在重复类似的错误。要识别并对抗这些错误,我们首先要理解他们的诱惑:在系统中构建我们以为“自己是如何思考的方式”看似自然,却在长期上是失败的捷径。(读者注:最近的采访中有人问他如何看待RLHF,他表示不看好,其具体原因没细说,但可以参考这里的这段话。)
- 痛苦的教训来自于历史观察,总结下来就是:AI研究者总是试图将知识硬编码到系统中,这在短期内确实有效,而且能给研究者带来心理满足;但是长期来看,这种方法会遇到瓶颈,甚至阻碍进步。真正突破性的进展最终总是来自于相反的方向:依赖搜索与学习,扩大计算规模,而非增加知识注入。
- 这种成功之所以“苦涩”,是因为他击败了人类倾注热情与信念的人本主义路径。
- 我们应该学到的第一点是:具有普适性的通用方法(可随计算力扩展)是强大的根本。
- 另一个教训则是:别再幻想“简单地理解大脑”。心智内容本身是极其、不可简化的复杂。我们不应再试图寻找简单的方法来描述心智的内容,比如空间是什么、对象是什么、对称性如何处理等——这些都是外部世界本身的任意复杂性的一部分。我们不应试图将这些复杂性预设为只是内建,而应该构建那些能够自己发现这些复杂性的元方法(Meta Methods)。这些方法的关键在于他们能找到良好的近似,但找到这些近似的过程应由系统自己完成,而不是由人类来提前构造。
- 我们想要的是:能像我们一样发现的智能体,而不是包含了我们已经“发现”过的知识的系统。因为,把我们发现的东西硬塞进去,反而会妨碍我们理解“发现”的过程是如何可能的。
读者注:前言部分让我大受震撼,可以说作者们把自己几十年的研究思考浓缩在这里了。本来只是想着这个夏天时间很多所以想认真精读一下这本经典教材,没想到上来就是一个大受震撼。最近我自己在开发一个注入了很多财务知识的AI Agent,看完后意识到这个方法并不可行。其实在开发的初期我就发现了很多不美观的地方,所以在机器学习课程最终的期末项目中,我新建了一个纯LLM的layer,然后在下一层才使用我自己构建的工具或者LangChain、OpenManus这种工具系统。我在项目报告中的反思章节提出了我对AI Agent的看法:我认为AI Agent在最终根本不需要任何人为构建的工具链或者PROMPT,所有的任务都可以直接通过LLM自身对任务的理解来完成,我称之为“Tool-Free AI Agent”。如果LLM拥有足够的上下文理解能力、编程能力和记忆能力,那么就不需要复杂的工具链,只需要让LLM自己来写代码然后动态调用接口就能够完成任务了。今天整理这篇文章的时候看了Sutton的The Bitter Lesson,确信了我之前的思考是正确的。AI Agent的未来一定也和之前所有的惨痛教训一样,RLHF、PROMPT ENGINEERING等最终都会被扫进历史的垃圾堆里。我很庆幸自己这次回到学校学习计算机科学,现在每天的学习都处在一种纯享与思考的过程中,不为找工作,不为考试,不为升学。这或许是作为一个成长于中国的应试教育环境,在工作几年后回到学校追求学习本身的纯粹所带来的极致快乐吧。
什么是强化学习?
我们在思考“学习的本质”的时候,最先会想到和环境互动来学习,比如婴儿玩耍、挥动手臂等。这种sensorimotor connection(感知-运动练习)能够产生大量关于cause and effect(因果关系)、consequences of actions(行为后果),以及为了达成目标应该采用什么行动的信息。
这种互动贯彻我们一生,是我们了解环境与自我认知的重要来源。本书探索的是一种计算式的从互动中学习的方法,是一种理想化的学习场景。本书不探讨人类和动物的学习方法,而是从人工智能和工程师的视角来设计。我们设计能够在科学或者经济目标上有效解决学习问题的机器,并通过数学分析或计算实验来评估这些设计的效果。我们所探索的这种方法被称为强化学习,相比于其他机器学习方法,该方法更专注于通过互动进行的目标导向学习。
(读者注:在The Bitter Lesson中Sutton再次强调了这个观点,即计算机科学家没必要过多关注人类经验,而是从计算本身出发,就可以通往智能;并且过于依赖人类经验是有害的。)
注意,本章节将从多个角度探讨强化学习的本质,并且作者在序言中已经提到,本书不会对强化学习给出一般形式的定义。
(1) 强化学习是关于“what to do”的学习
强化学习(Reinforcement Learning)是关于“学会做什么”(what to do)的学习,也就是将情境映射为动作,以最大化某个数值型的奖励信号(Reward Signal)。其关键点在于,学习者必须通过尝试来发现哪些动作能够带来最多的奖励,而不会被明确告知该采取哪些动作。在一些情形中,一个动作不仅会影响即时奖励,还会影响机械来的情境,从而影响后续所有的奖励,这两个特征:试错搜索(trial-and-error search)和延迟奖励(delayed reward)是强化学习最重要的两个区别性特征。
Reinforcement Learning和许多以ing结尾的主题一样,既是一种问题,也是一类可行的解决方法,同时也是研究这些问题与方法的一个学术领域。但是我们需要区分该术语在“问题本身”与“解决方法”之间的分别。
我们通过动态系统理论(Dynamical Systems Theory)中的思想,形式化(Formalize)地定义强化学习问题,即对不完全已知地马尔可夫决策过程(MDP)进行最优控制(Optimal Control)地问题。这部分在第三章详细展开,其基本思想就是,让agent(学习体)在一段时间内与环境互动以达成某个目标,那么agent必须能够在某种程度上感知环境状态,并且能够基于此采取影响状态的动作。从数学上来讲,就是agent必须有与环境状态相关的目标或目标函数。
MDP旨在以最简形式包含着三个方面:
- 感知 Sensation
- 动作 Action
- 目标 Goal
任何适合解决这类问题的方法,我们都可以认为是一种RL方法。
(2) 强化学习是第三种机器学习范式
RL不同于监督学习(Supervised Learning),后者是目前最广泛的一种机器学习方法。监督学习通过一组有标签的训练样本进行,这些样本由某位知识丰富的外部监督者提供。每个样本都代表了一个情境和其对应的标签,也可以理解为情境和其对应的动作。监督学习的目标是外推(Extrapolate)或泛化(Generalize)其响应,以便在训练集中未出现的情境中也能做出正确决策。
但是监督学习不能满足从互动中学习的需求,因为我们很难获得既正确又具代表性的目标行为样本,更难以涵盖agent必须应对的所有情境。
强化学习也不同于无监督学习(Unsupervised Learning),后者通常是指从未标注数据集中寻找隐藏结构的过程。虽然看起来监督学习和无监督学习好像包括了所有的“机器学习”,但其实并非如此。有人把强化学习看作是一种无监督学习,理由是它不依赖于样本,但这种看法是很片面的。强化学习的目标是最大化奖励信号,而不是寻找隐藏结构。虽然在agent的经验中发现结构可能对RL有所帮助,但这本身并不能解决最大化奖励信号这一核心问题。
因此,我们认为强化学习不同于上述两种机器学习范式(Paradigm),而认为强化学习代表着第三种机器学习范式。
(3) 强化学习面临探索与利用之间的权衡
强化学习中有一个其它类型的学习中没有的挑战,那就是探索与利用之间的权衡(Trade-off between Exploration and Exploitation)。
为了获得更多奖励,一个强化学习体(Reinforcement Learning Agent,后面提到的agent都是指这个)过去尝试过并且被证明有效的动作(Actions)。但是,仅仅利用是无法完成任务的,agent必须去尝试探索,并逐渐倾向于那些看起来效果更好的。在随机任务(Stochastic Task)中,每个动作都必须尝试多次,来获得对其期望奖励的可靠估计。
探索与利用的困境(Exploration-Exploitation Dilemma)长期以来都是数学家们密集研究的课题,至今仍未解决。这里之所以强调这个问题,是因为在监督/无监督学习的最纯粹形式中,根本就不存在该平衡问题。
(4)强化学习显示地探讨完整问题
强化学习与其他方法的显著不同还有一点,那就是强化学习显示地(explicitly)考虑了一个面向目标的agent在不确定环境中进行互动的完整问题(whole problem),而不仅仅是研究一个子问题。
比如说,监督学习不能说明其能力如何最终帮助实现目标;一些研究发展了规划(Planning)理论,但没有探讨实施决策中的角色或者预测模型从何而来。这些研究都是孤立于子问题的,这种局限性是显而易见的。
强化学习从一个完整、交互式、目标导向(complete, interactive, goal-seeking)的agent出发,所有的agent都有明确的目标,能够感知其环境,并能选择动作来影响环境。
当涉及规划时,它必须处理规划和实时动作选择之间的关系,以及环境模型是如何获取和改进的。
Agent不一定是一个完整的机器人,它可以作为更大系统的一部分,比如一个agent负责监控机器人的电池电量,在这种情况下它的环境就是机器人和机器人的环境。
(5) 回归简单通用原则(Simple General Principles)
强化学习是人工智能领域中回归简单通用原则(Simple General Principles)趋势的一部分。自1960年代后期开始,许多人工智能研究者认为智能并无统一原则,而是由大量特殊技巧和启发式方法(Heuristics)组成。人们曾认为,只要收集到足够的事实信息,例如百万、十亿条数据,就能制造出智能。那时,基于一般原则(如搜索或学习)的方法被称为弱方法(weak methods),而基于特定知识的方法被成为强方法(strong methods)。这种观点如今已经不常见了。在作者看来,以前对通用原则的研究投入过少,便草率否定了其存在。现代人工智能已重新关注通用原则,尤其是在学习、搜索和决策方面。虽然不清楚这种钟摆能够摆回多远,但强化学习研究显然已经成为推动人工智能回归更简单、更通用原则的重要力量。
引例
为了方便大家理解,作者在这里举了几个标志性的强化学习示例及应用场景,作为引例。
- 一位国际象棋大师落下一步棋。这一决策既受规划的影响,又基于对特定局面与走法的即时直觉判断。
- 一个自适应控制器在炼油厂的操作中适时调整参数,该控制基于指定的边际成本来权衡产量、成本和质量,而非严格遵循工程师原先设定的目标。
- 一只小羚羊出生后站起来都很艰难,但是半小时后已经可以以20英里每小时的速度奔跑。
- 一个移动机器人需要决定是否进入新房间以寻找更多垃圾,亦或是尝试返回电池充电站。它基于电池当前电量以及其过去找到充电器的难易程度做出决策。
- 一个人在准备早餐,这事看起来平常,但如果仔细观察,这一过程涉及一张条件行为与嵌套子目标网络(goal-subgoal relationships):走到橱柜、打开柜门、选取麦片盒、伸手拿下来……为了获取碗、勺子、牛奶,每一个行为序列都需要眼睛的信息输入、身体协调以及运动规划。在整个过程中,该人需要不断做出快速判断,例如是否需要把多个物品一起带到餐桌上或分批搬运,每个步骤都由目标引导,如抓勺子或打开冰箱;而这些目标又服务于更大的目标:将早餐准备妥当并摄取营养。当该人在行动时,他还会基于状态信息做出调整,比如是否已经吃饱、是否感到饥饿或偏好的口味。
这些例子都有一个共同特征:他们都涉及一个主动决策的agent与环境之间的交互(interaction),该agent试图在对环境存在不确定性的前提下达成某个目标(goal)。agent的动作可以影响环境未来的状态,例如下一步棋局状态、炼油厂的油位、机器人下一步的充电状态等,进而影响未来可以采取的动作及其结果。做出正确决策需要考虑动作的间接与延迟后果,有时甚至需要前瞻性(foresight)或规划(planning)。
同时,动作的效果无法被完全预测,因此agent必须频繁地感知环境并适时反应。比如,吃早餐的人需要观察牛奶是否太多了来防止溢出。这些例子中,目标是显示的(explicit):agent可以通过直接感知评估自己距离目标的进展程度,即棋手知道是否赢了,炼油厂控制器知道产量,小羚羊知道是否摔倒了,机器人知道电量是否低,吃早餐的人知道他是否喜欢自己的早餐。
在这些例子中,agent都能利用自己的经验逐渐改善自身的表现。agent一开始面对任务时储备的知识,可能来自以往在相关任务上的经验,也可能是通过设计预先内建的,或者是通过进化形成的。这些因素决定了哪些内容是容易或者有价值学习的,但真正使agent能够适应任务特定需求的,是它与环境的互动,这对于调整行为以发挥任务关键特性至关重要。
强化学习的组成要素
本节介绍一下强化学习的一般组成要素。在之前的讨论中,我们已经反复提到了下面这两个要素:
- agent 智能体
- environment 环境
除此之外,我们还可以将强化学习系统分解为四个主要子要素:
- 策略 policy
- 奖励信号 reward signal
- 价值函数 value function
- 环境模型 model of the environment
读者注:关于这些要素的具体职责和作用,在整本书中都会反复涉及,这里就不展开讲了。现在太强调其定义,反而会把思维框住。我觉得可以在整本书学完后,反过来再把这些内容进行总结或一般化叙述,而不是在学习之前就把他们的定义框死。现在只需要记住有这么几个东西,作为谜题出现,就可以了。
强化学习的范围和局限性
强化学习高度依赖于状态(state)这一概念:状态既作为策略(policy)与价值函数(value function)的输入,也作为模型的输入与输出。作者强调,本书中基本不会讨论如何构建、改变或学习状态信号,因为本书主要专注于决策问题本身,即本书不关注如何设计状态信号,而关注在已有状态信号的基础上agent应该采取什么动作。
本书中探讨的大多数强化学习方法,都是围绕估计价值函数(value function)展开的,但其实就解决强化学习问题本身而言,不一定非要用到估计价值函数。遗传算法(genetic algorithms)、遗传编程(genetic programming)、模拟退火(simulated annealing)和其他优化方法,从不估计值函数。这些方法通常采用多个静态策略,每个策略独立地与环境进行交互,持续多个周期,然后选择奖励最多的策略,并对其进行变异,生成下一代策略,不断重复这个过程。这些方法一般被称为进化方法(evolutionary methods),因为他们的运行方式类似于生物进化过程:对环境的适应主要通过代际变化来完成。
进化方法在策略空间较小、容易找到高质量策略的情况下可能非常有效。对于agent无法感知环境完整状态的任务,进化方法也有一定优势。但本书聚焦的是learn while interacting with the environment,而这是进化方法所不具备的特性。进化方法忽略个体与环境交互中的细节,也不关注个体一生中经历了哪些状态或选择了哪些动作。
进化方法中有很多类似于强化学习方法的东西,但是本书不做探讨。
井字棋游戏Tic-Tac-Toe
本节将介绍一种非常简化版本的强化学习策略:通过值函数更新解决井字棋游戏

在这个游戏中,我们都知道(如果不知道也很容易就能知道)最优策略:先手一定不会输。在博弈论中,极小极大解法(minimax)假设对手始终按照最优策略行事。如果按照极小极大,玩家永远不会进入一个可能导致失败的状态,所以为了让这个问题更像是现实问题,我们在这里假设对手是一个不完美玩家(imperfect player,就是策略有时会出错,让我们有机会取胜)。
现在,介绍一下强化学习方法的思想。我们用值函数的方法来解决该问题,首先需要建立一个数值表,每个数值对应游戏的某一状态,该数值的具体含义就是从该状态开始我们赢得比赛的概率的最新估计,这种估计称为该状态的值。整个表格就是学习得到的值函数。如果状态A的值高于状态B,那么就说状态A比状态B“好”。
例如:
- 如果我们是X玩家,那么三个X连在一起的状态下,值为1(已经赢了)
- 如果棋盘已经满了但是没有三连X,或者说有三连O出现,值为0(代表赢不了)
- 其他状态初始值为0.5,表示猜测我们有50%的胜率
然后我们和对手进行多次对局,每次落子前,我们都查看一下每个可行的动作对应的到达之后的状态值,并选择值最高的那个动作,也就是,预期胜率最高的走法。大多数时候我们都采用这样的greedy策略,即选择值最大的走。但是有些时候,我们也要随机选择其中一个动作,这种行为称为探索动作,目的是让我们接触到原本不会看到的状态(来有机会发现更高值的走法)。
在游戏中,我们需要不断更新状态的值,使他们更接近真是胜率,具体做法就是:每当一个贪婪动作执行后,我们就把当前状态的值往下一个状态的值靠近一点,如图所示:

这张图中,展示了井字棋游戏和一个强化学习思路的策略进行的游戏过程。图中的a到g这几个点分别代表不同的状态节点,黑线代表实际走子的动作路径(也可以认为是一种状态转移),虚线代表考虑但是没有执行的备选走法,红线则代表执行值更新的方向(这个等会儿具体说明)。
我们从黑点a开始,从a到b表示对手的步骤,然后b处散发出来的多条线代表多个可能,最终实线bc代表最终采取的行动,而其他虚线则表示考虑过但没有选择的其他可能动作。简单来说,先记住黑色实线代表着动作,虚线代表考虑但没有走的动作,*号代表着后面对应的那一条动作按照当前价值估计来看是最优的。
我接下来用具体的例子来详细说明一下:
(1)状态a
我们假设棋盘如下:
1 2 3 4 5 6 7 8 9
在游戏开始前,游戏棋盘上什么都没有,这就是状态a的情况,代表着一个空棋盘:
···
···
···
(2)状态a -> 状态b
对方先走了一步,也就是a->b的黑实线,将X落在格子5的中心位置:
· · ·
· X ·
· · ·
当对方的这个子落下来后,就形成了一个新的棋盘状态,这就是状态b。从状态的角度理解的话,就是这里发生了状态a到状态b的转移,在这个转移过程中,我们不学习,因为是对手走的子。
(3)状态b -> 状态c*
然后在状态b下,我们评估了所有可落子的情况,也就是除了位置5以外的所有情况。那么换句话说,每一种落子情况都对应了一个新的状态,假设现在有如下这么一个表:
| 落子位置 | 后继状态 | 估计价值 |
|---|---|---|
| 1 | c1 | 0.5 |
| 2 | c2 | 0.6 |
| 3 | c3 | 0.5 |
| 4 | c4 | 0.5 |
| 5 | 不能落子 | 无 |
| 6 | c6 | 0.5 |
| 7 | c7(c*) | 0.8 |
| 8 | c8 | 0.5 |
| 9 | c9 | 0.5 |
这张假设的表中,对应的价值就是新的状态下表中已经记录的价值。然后我们可以发现位置2对应的后继状态c2的估计价值最高,因此c7就是c*,然后我们这一步选择greedy策略,就按照价值最高的来,棋盘就变成了下面这样,然后我们的状态也就在转移到了c*:
· · ·
· X ·
O · ·
在这里,我们选择了最优策略,这里学习一个新的概念,就是agent在这里做了一次决策,并且选择了最优决策,我们暂且把这种并非对手出子、并且选择最优值函数而进行的greedy操作视为一次真正的决策。
在这次决策后,有一条从c指向a的红色箭头线,这个线代表着值更新。在刚才的过程中,我们经历了状态a到状态c的转移,而状态c是通过greedy策略到达的,我们在这里对a进行一次值的更新,让状态a的估值向状态c的估值靠拢:
这其实是一种TD更新,在后面TD的章节我们会展开来讲。在这里举这个例子是站是一种强化学习的思维方式,也就是通过状态c的新信息来更新状态a的价值估计,换句话说,通过和环境的交互,agent在这里“学到了”东西,这个“学”东西就是这里的值函数更新。
α是 学习率,决定了更新的幅度。放在数学公式中,就是决定了c和a的值的差值对原本的a的影响的幅度。
假设α是0.1,那么我们就可以根据刚才那张表来算出来新的V(a)。在这个过程中,c状态作为一个a状态后面的状态,对a产生了影响,因此这是一种值回传(back up)。
(4)状态c*到状态d
对手走了一步,假设对手走的如下:
X · ·
· X ·
O · ·
(5)状态d到状态e
根据图中所示,这是一步探索性的动作,因为没有选择最优值。
在本案例中,这种探索性的动作下不进行值的更新。这其实是一种on-policy(策略内)的学习策略,就是说agent只通过自身正在执行的策略来评估和改善值函数。同时,agent不需要预先知道对手策略或者状态转移概率模型,而是通过对局获得经验,从而不断更新值表,因此这又属于一种model-free(无模型)的策略。在后面的学习中,我们还会学习不同于此的策略或者范式,这里只是作为一种概念展示来说明强化学习的思维方式。
X · ·
· X ·
O · O
(6)状态e到状态f
X · X
· X ·
O · O
(7)状态f到状态g*
X · X
· X ·
O O O
至此,对局结束。由于这里选择了最优策略,所以对e进行值更新,我们在这里总结一下值更新的公式:
因为它基于两个连续时间点的估计值的差,所以叫做时序差分方法(temporal-difference learning),简称TD。如果步长参数α随着时间适当减少,那么根据这个公式可以看到最终会收敛,那个最终收敛的值就是面对该不完美对手时的最优走法。当我们得到一个最终收敛后的表后,根据表里的值来走,就是在与该对手对弈时的最优策略。
如果对手的策略在缓慢变化,那么就不要让α减小到0,这样agent就能不断适应对方。
我们可以想象,因为agent有一个明确的目标,那么最终agent将学习到一个具有预见性或计划性的策略,这种策略将蕴含着自己行动所带来的延迟效应。简而言之,你可以想象对手假如是一个短视的人,那么agent将学会设下多步陷阱,来对付对手。这也是强化学习的一个显明特征:即便没有使用对手的模型,也没有显示搜索未来状态和动作的可能序列,它仍然能实现计划和前瞻性思考的效果。
我们总结一下这次对局的一些关键特征:
- 在与环境交互的过程中学习,在该游戏中环境是一个对手玩家
- 有明确的目标:赢得比赛。
- 通过回传机制实现延迟回报,从而获得规划和前瞻性
- 探索vs利用:有时候要尝试不太确定的走法,来寻找更优策略
- 经验驱动学习,不需要对手的模型。(当然也可以利用模型,后面会讲到)
总之,通过这个例子,作者只是想展示一下强化学习的特点。这个井字棋游戏的状态比较少,所以可以轻松维护所有的状态对应的值。但实际上,强化学习如果和人工神经网络结合,那么对于极大状态的游戏也能很好学习。神经网络为程序提供了从经验中泛化的能力,因此它能在之前从未见过的新状态中选择合适的走法,因为这些新状态与过去网络中见过的类似。
附加讨论:进化算法
在上述的讨论中,作者简单提到了进化算法,并说明强化学习和进化算法是不同的。为了对比这两种算法,我让Claude写了一个Q-Learning VS Genetic Algorithm的对比,进行了1000万次对局,结果是进化算法获胜:

对于井字棋游戏,因为状态空间有限,并且是非复杂博弈,因此GA不需要泛化能力就可以快速找到获胜模式。而强化学习面对快速收敛的进化算法,被长期压制,导致RL无法应对。可见强化学习并非无敌,进化算法也并非无用。
值得注意的是,随着神经网络与强化学习的结合,强化学习已具备应对更复杂、高纬状态空间博弈(如五子棋、围棋、星际争霸等)的能力。而这些正是进化算法难以胜任的领域。因此,强化学习主要用来解决复杂的问题,而在简单的环境中,进化算法依然是一种高效且可解释性强的基准方法。
注意,本书主要介绍传统强化学习方法,对神经网络的部分并没有展开(特别是前半本书)讲,但是理解这些传统方法对后续学习深度强化学习(如DQN、PPO、AlphaZero等)至关重要。
Summary
强化学习的关键要点总结,因为第一句话翻译上总是找不到一个合适的简便翻译方法,所以我在这里保留英文,供读到这里的朋友自己体会吧:
- Reinforcement learning is a computational approach to understanding and automating goal-directed learning and decision making.
- RL和其他计算方法的不同处在于RL直接通过和环境交互进行学习,而无需示范性的监督或完整的环境模型。
- RL使用马尔可夫决策过程的形式框架来定义agent和环境的交互关系,这种交互以状态、动作和奖励的形式存在。
- 价值和价值函数是本书中所探讨的大多数强化学习方法的关键所在。作者认为,价值函数对于在策略空间中高校搜索是非常重要的。
- RL使用价值函数的方法区别于进化算法,后者在策略空间中直接搜索。
强化学习历史简述
强化学习的早期历史主要包括两条各自独立发展的重要线索,后来在现代强化学习中交互融合。下面的历史简述在原文的基础上进行了一些顺序变动和提炼。
(1) 线索一:最优控制问题
第一条线索关注最优控制问题,以及通过价值函数和动态规划对该问题进行求解。在很大程度上,这条线索并不涉及学习过程。“最优控制”(optimal control)这一术语出现在20世纪50年代末,用于描述这样一种问题:设计一个控制器,使得某个动态系统在一段时间内的行为被最小化或者最大化。该问题主要由贝尔曼(Richard Bellman)等人在50年代中期发展出来,利用动态系统的状态和价值函数或最优回报函数这两个核心概念,形成了贝尔曼方程(Bellman Equation),而该类问题如今被称为动态规划(Dynamic Programming)。贝尔曼还引入了最优控制问题的离散随即版本,即马尔科夫决策过程(Markov Decision Processes, MDPs)。罗纳德霍华德(Ronald Howard)在60年代提出了用于MDP的策略迭代方法——这些方法都是现代强化学习理论与算法的核心基础。
动态规划如今被认为是解决一般随机最优控制问题唯一可行的方法。其主要缺点是贝尔曼所说的维度的灾难(curse of dimensionality),即随着状态变量数量的增加,计算需求呈指数增长。尽管如此,DP还是比其他通用方法更高效、更广泛,因此自50年代依赖,DP得到了广泛发展,扩展到了partially observable MDPs, many applications, approximation methods, and asynchronous methods。
在1989年Chris Watkins的研究之前,DP一直都没有和学习过程联系在一起,造成这个的原因尚不明确,但Watkins提出的基于MDP的强化学习方法,如今已被广泛采用。自此,这种联系得到了广泛发展。
作者认为,动态规划这样的最优控制方法,也应视为强化学习方法的一部分,因为许多DP算法具有的渐进性和迭代性,都与学习方法类似:逐步通过逼近的方式趋近于正确答案。
(2) 线索二:试错学习
第二条线索起源于动物学系的心理学,主要通过试错来学习。该线索贯穿了人工智能早期的一些重要研究,并在80年代初推动了强化学习的复兴。
试错学习的思想可追溯至19世纪50年代Alexander Bain关于“摸索与实验”的描述,而第一个简洁表达这一思想的人是心理学家Edward Thorndike,他提出了“效果律”(Law of Effect):行为的后果会影响行为的再次发生。该看法描述了强化事件对行为选择的影响。
“强化”(Reinforcement)一词在动物学中的使用,最早出现于1927年巴甫洛夫关于条件反射的英文译本中。巴甫洛夫将强化描述为:由于动物在接受刺激(强化物)后表现出的行为模式被增强,这个刺激与另一个刺激或反应之间存在适当的时间关系。
一些心理学家将强化的概念进一步扩展:不仅包括行为的增强,还包括行为的削弱;不仅包括施加刺激,还可能包括撤除或终止刺激。只有当强化物消失后,行为的增强或削弱仍然持续,才能被认为是强化;如果仅能吸引注意,却不产生持久行为变化的刺激,则不能算作强化物。
1948年,艾伦图灵(Alan Turing)在一份报告中提出了一种“愉悦-痛苦系统”(pleasure-pain system),它本质上遵循了效果律,艾伦在日记中写的话总结起来就是:当系统面对未知情况不知道该怎么做时,它会先随机尝试一些行为;如果尝试后带来了痛苦(负面反馈),系统就会放弃这些尝试;如果带来了愉悦(正面反馈),系统就会记住这些尝试,下次继续使用。
很多巧妙的机电机器曾被制造出来,用来展示试错学习(trial-and-error learning),比如1933年Thomas Ross制造的走迷宫,1951年W.Grey Walter制造的机械乌龟,1952年Claude Shannon制造的能跑迷宫的老鼠机器“Theseus”等。
1954年,Farley和Clark描述了一个基于神经网络的数字仿真器,可以通过试错方式进行学习,不过他们的兴趣随后转向了泛化与模式识别。但这也开启了一种学习类型混淆的趋势,许多研究者以为自己在研究强化学习,其实他们研究的是监督学习。直到今天,一些教材仍然淡化甚至模糊了这两类学习方式之间的差异,比如有些教材会用“试错”来描述那些通过训练样本学习的人工神经网路。这种混淆虽然可以被理解,因为这些网络也使用误差信息来更新连接权重,但却忽略了试错学习的本质:根据评价性反馈来选择行动,而不是依赖明确的正确答案。
1960年代,Minsky的论文《Steps Twoard Artificial Intelligence》中讨论了多个与试错学习相关的重要问题,包括Prediction(预测)、Expectation(期望)以及他所称的Basic Credit-Assignment Problem(复杂强化学习系统中的基本归因分配问题)——该问题指的是如何在众多决策中分配成功的功劳。
尽管试错学习没多少人关注,但是还是有一些例外的局部进展。新西兰的研究者John Andreae开发了一个叫做STeLLA的系统,该系统通过与环境的互动进行试错学习,这个系统包含了一个世界的内部模型,后来又加入了一个内心独白机制,用来处理隐含状态的问题。Andreare后来更加强调从教师处学习,但依然保留了通过试错进行学习的特点。该研究的一个特色是通过所谓的“反向反馈”(leakback)来实现与本书中的回溯更新操作类似的信用分配机制。可惜的是,他的研究并没有被大多数人看到。
影响更广的是Donald Michie的工作,他开发了一个叫做MENACE的系统,用于学习如何玩井字棋游戏。他后来还和Chambers一起开发了一个叫做GLEE的系统,以及一个名为BOXES的控制器,用于训练一个通过铰链杆控制的平衡小车。这个平衡杆任务对后来的研究产生了深远影响。Michie坚持认为:试错和学习是人工智能的核心内容。
1970年代,Widrow、Gupta和Maitra提出了选择性自举适应,并展示了该方法如何应用于blackjack游戏。今天我们在强化学习中使用的术语“critic”就来源于他们的论文。
Learning automata(学习自动机)是简单、内存低的机器,用于在这类问题中提高获得奖励的概率。学习自动机起源于1960年代的苏联科学家M. L. Tsetlin和其同事的工作,并在工程领域被广泛深入发展,引出了随机学习自动机(stochastic learning automata)的研究。
随机学习自动机的思想可以追溯到心理学界William Estes提出的统计学习理论,后来又被经济学研究者采纳,催生出强化学习在经济学领域的一条研究路线。该方向的研究目标之一是研究更像人的人工智能体,而不是传统经济学中理想化的代理人模型。随后这种方法扩展到博弈论中。
1975年John Holland提出了基于选择原则的通用自适应系统理论,并在之后更为完善地提出了他的分类系统(classifier systems),这是真正的强化学习系统,包含联想和价值函数的概念。
紧接着,在人工智能领域重新唤起试错学习线索的人物,即是本书纪念的Harry Klopf。Klopf指出,随着研究者几乎完全专注于监督学习,适应性行为的关键方面正在被忽视。Klopf认为被遗漏的是行为中的享乐动因:即想要从环境中获得某种结果的驱动力,控制环境以达到想要的目标、避开不希望的结果。而这正是试错学习的核心思想。
Klopf的观点深刻影响了Sutton和Barto,也即本书的两位作者,让他们意识到了监督学习和强化学习的区别,并最终促使他们聚焦于强化学习。作者和其他同事早期的大量工作,正是聚焦于证明强化学习与监督学习在本质上确实不同,其他研究则展示了强化学习如何解决人工神经网络学习中的关键问题,尤其是多层神经网络的学习算法。
(3)线索三:时序差分学习
第三条线索就是在上文中讲井字棋游戏时所使用的方法,与时序差分方法有关。这个方法和上面的两条早期方法一同在80年代末汇合,形成了本书所介绍的现代强化学习领域。
时序差分学习方法的关键特征是:由同一量在不同时间点的预测误差所驱动。这一看似微小的要点的影响力不如上述两条线索那么大,但却在强化学习中扮演者重要的角色,部分原因是它独特且专属于强化学习。
Arthur Samuel(1959) 在其著名的跳棋程序中首次引入了包含时序差分思想的学习方法,尽管他没有引用 Minsky 或心理学理论,其灵感可能来自 Claude Shannon(1950) 关于使用评估函数进行自我优化的设想。
Klopf(1972) 是第一个明确将试错学习与时序差分思想结合的人。他提出“ 广义强化(generalized reinforcement) ”的概念,认为系统中每个单元都可以将其输入解读为奖励或惩罚,从而进行局部强化学习。
Sutton(1978) 在此基础上进一步发展了这一思想,提出了 由时间上连续预测变化驱动的学习规则 ,并与 Barto 一起提出了 基于时序差分的经典条件反射心理模型 (Sutton 和 Barto, 1981, 1982)。此后,越来越多的心理学模型、甚至部分神经科学模型也都被纳入了这一理论框架。
虽然时序差分学习的发展路径较为隐秘,但它的出现标志着强化学习方法的真正成熟,为之后的算法发展(如 TD(λ)、Q-learning 和 Actor-Critic 方法)奠定了基础。
在1980年代,时序差分学习与试错学习的结合催生了 Actor–Critic 架构 ,并被成功应用于如杆子平衡问题等强化学习任务。Sutton(1988) 提出 TD(λ) 算法,进一步推动了该方法的理论完善。
与此同时,Witten(1977) 的工作被发现是最早公开发表的包含 TD 思想的研究之一。他提出的 TD(0) 方法为后续在 MDP 中的控制提供了基础,横跨了试错学习与最优控制两个方向,成为 TD 学习早期发展的重要里程碑。
Watkins(1989) 提出的 Q-learning 方法,最终将时序差分学习与动态规划思想合流,彻底融合了强化学习的三大主线。这一发展极大推动了整个领域的技术进步。
1990年代,Tesauro 的 TD-Gammon 程序的成功更是将 TD 学习推向主流。
此后,强化学习与神经科学之间的联系日益紧密,研究发现大脑中多巴胺神经元的活动与 TD 学习算法中的预测误差高度吻合。这一发现激发了大量跨学科研究,使时序差分学习不仅成为人工智能的重要工具,也成为理解大脑学习机制的关键模型之一。
(4)拓展:现代发展(深度强化学习)
这部分由读者补充完成:
在上述三条线索的合力下,几个最为重要的强化学习算法在90年代被提出并被广泛传播开来:1992年的Q-learning,1996年的SARSA、1999年的REINFORCE。这三个算法都受到了Sutton和Barto早期对TD学习和Actor-Critic架构的研究。
进入21世纪,随着深度学习技术的迅猛发展,强化学习迎来了新的突破。近年来,几项具有里程碑意义的深度强化学习算法相继被提出,进一步拓展了强化学习的应用边界。代表性成果包括: 2013年的 Deep Q-Network(DQN) ,首次在高维感知输入下实现了端到端的策略学习; 2016年的 A3C(Asynchronous Advantage Actor-Critic) ,有效提升了训练效率与收敛速度; 2017年的 PPO(Proximal Policy Optimization) ,在策略优化中兼顾稳定性与计算效率;以及 2018年的 TD3 和 SAC ,分别针对连续动作空间中的估值偏差和探索性问题给出了改进方案。这些算法共同推动强化学习迈入深度智能时代。
在这一阶段,强化学习逐渐形成了 以策略评估与策略改进为核心的统一学习框架 ,并依据策略更新方式的不同,演化出三大主流方法: 基于值函数的方法(如 DQN) 、 基于策略的方法(如 REINFORCE、PPO),以及 Actor-Critic 架构的混合方法(如 A3C、DDPG、SAC)。同时,该阶段也确立了 on-policy 与 off-policy 学习机制的基本区分 ,以及 离散与连续动作空间的处理范式 ,为强化学习算法体系的系统化和可扩展性提供了理论与实践基础。
截至 2025 年,强化学习已广泛渗透至多个研究领域与工业应用场景,包括但不限于自动驾驶、智能制造、量化金融、游戏智能体、机器人控制等。同时,强化学习也与众多相关领域交叉融合,催生出一系列新兴研究方向,如元学习(Meta-RL)、多智能体强化学习(MARL)、迁移与持续学习、模仿学习、基于模型的强化学习(Model-based RL)、世界模型(World Models)、Sim-to-Real 策略迁移等。这些方向不断拓宽强化学习的能力边界,并引领其向更加通用、可解释、高效和安全的智能决策系统迈进。
机器人学习
什么是机器人学习?

机器人学习(Robot Learning)不用于机器人学(Robotics),是人工智能、机器学习与机器人学的一个交叉学科,目标是让机器人通过经验和交互来学习,而不是通过人工编程来实现动作。
如果我们要对机器人学习这个研究方向或者课程做一个定义,那么我们可以这么说:
机器人学习就是让机器人在物理世界中,学习如何做出一系列连续的决策。(Learning to make sequential decisions in the physical world)
在第二章,我会回顾一些经典的机器人控制方法。在很多高要求场景下,经典控制与优化依然是主流,并不一定需要机器学习。然而,传统的机器人学将感知和控制分离,这既困难又不符合生物智能的原理。比如说,传统机器人系统通常被设计为一个模块化的线性流程:

这个流程被人为地分成了两个独立的领域:
- 计算机视觉部分:负责将传感器数据转换为有意义的信息
- 机器人学部分:根据这些传感数据,做出决策并计算出高纬的控制指令(比如逆运动学)
我自己在2024年做的扫地机器人项目,就是一个经典的上述流程所描述的例子:
- 首先机器人通过SLAM构建地图
- 构建地图后通过一系列操作,将地图转换为一个扫地路径图
- 根据AMCL来定位机器人的位置,让机器人知道自己在哪里
- 接着机器人通过沿着扫地路径来扫地
- 如果有障碍物出现,传感器识别后会在扫地路径上进行障碍物标记,机器人避障绕行
然而,无论是认知科学,还是如今的人工智能发展,都在追求端到端的输入和输出。换句话说,感知和行动是紧密耦合、不可分割的。(Perception and Action are coupled)。
然而,感知处理本身就非常困难,控制也非常困难,将这两个困难、复杂、高维的空间连接起来实现端到端的高维输入和高维输出,更是难上加难。因而,机器人学习这个交叉领域便诞生了:

机器人学习的目标便是:
- 统一模块(Unify Modules):打破规划、感知、控制之间的壁垒,融合为一个整体的、端到端的系统。这个统一的过程正是通过算法、数据、算力和硬件的结合来实现的。
- 改进各模块:通过具身智能的方式,让机器人在物理世界的真实互动中学习,来显著提升每一个独立模块的性能。目前我们在这一点上取得的进展,要远比统一模块多得多。
一般来说,机器人学习的最终目标是:
建立通用的具身智能体(general-purpose embodied intelligence)。
这是一个被历史验证为正确的方向,但我们仍然面临非常多的困难和挑战。
在过去的十几年里,深度学习和大语言模型的发展,无疑是划时代的科技革命。深度学习的表现已经让所有专家系统黯然失色,因而整体方向上来看,机器人的发展在未来将更多依赖于自学习系统而非手工设计,从而不断提升机器人的通用能力、自我提升能力。在Sutton的《苦涩的教训》中,Sutton回顾了自己几十年的人工智能研究,并明确表示人类自以为是的干涉是错误的道路,而算力、算法才是正确的道路。
以LLMs为例,其性能已经是专家系统望尘莫及的存在,其工作原理主要包括:
- 架构 (Architecture): Transformer
- 数据 (Data): 海量的网络文本、书籍、维基百科等。
- 损失函数 (Loss): 预测下一个词元 (next token prediction)。
- 优化方法 (Optimization): 随机梯度下降 (SGD)。
- 生成方式 (Generation): 自回归 (autoregressive),即一个一个地生成词。
但是,LLMs的成功依赖于互联网上几乎无限的文本数据。机器人学习无法获得如此海量的、高质量的物理互动数据。此外,LLMs通过预测下一个词来学习语言的通用模式,机器人学习是否也能找到一个类似的、可以统一不同任务的“下一个动作”预测模型呢?这是一个开放且重要的研究方向。
值得高兴的是,当前的机器人学习已经在诸多领域表现出了超过“专家系统”的表现:
- 在特定领域的表现已经超越传统手工控制或规则系统,如机械臂抓取、送餐机器人、自动驾驶、手术机器人。
- 但是离通用还非常遥远,因为现在的机器人高度依赖人工设定任务、精心的数据收集、在仿真中训练后的迁移等,还无法和人一样在任意环境中灵活学习和迁移知识。
以深度强化学习在游戏中的表现为例,我们来看看机器人学习和深度强化学习的区别:
| 特性 | 游戏AI (如 AlphaGo) | 机器人学习 (Robot Learning) | 讲解 |
|---|---|---|---|
| 环境 | 已知 & 静态 (Known & static) | 未知 & 动态 (Unknown & dynamic) | 围棋的规则是固定的,环境是完全可预测的数字世界。而物理世界充满了不确定性,随时可能发生预料之外的变化。 |
| 任务 | 单一特定任务 (One specific task) | 多任务 (Many tasks) | AlphaGo只为下围地而生。而一个机器人可能需要完成开门、抓取、导航等多种完全不同的任务。 |
| 目标 | 明确的优化目标 (Clear optimization goals) | 目标不清晰 (Unclear goals) | 游戏的目标非常明确:赢。奖励(reward)也很容易定义。但在现实中,“把桌子擦干净”这样的目标很难用一个简单的数学公式来量化。 |
| 学习方式 | 离线学习足够 (Offline learning is enough) | 需要在线适应 (Require online adaptation) | AlphaGo可以和自己进行数百万次离线对战来学习。机器人必须在与真实世界互动的过程中实时调整和适应。 |
| 动作速度 | 慢动作 (Slow action) | 相对快速的实时动作 (Relatively fast real-time action) | 游戏中的决策可以有几秒甚至更长的思考时间。而自动驾驶汽车或机械臂需要以高频率(如50Hz)快速反应。 |
| 失败成本 | 允许失败 (Allow failures) | 物理定律不容忍失败 (Physics doesn't forgive!) | 游戏里输一盘可以重来,成本极低。但在物理世界,机器人一次失败可能导致自身损坏、环境破坏甚至对人造成伤害。 |
| 世界模型 | 离散的数字世界 (Discrete digital world) | 连续的物理世界 (Continuous physical world) | 游戏的状态和动作通常是离散的(比如棋盘上的位置)。而物理世界是连续的,一个动作有无限种可能的变化。 |
上面的难点并非是机器人在特定任务上所体现出来的,而是过去近百年的人工智能研究历史中无数教训所揭示的一个道理。
机器人学习的主题内容
当下机器人学习的主要主题包括:
- Imitation Learning
- Model-free RL
- Model-based RL
- Offline RL
- Preference-based Learning
- Online Adaptation
- Sim2Real, Real2Sim2Real
- ...
整体而言,机器人学习依然是一个开放学科。
在学习机器人学习之前,请先复习以下内容:
- Supervised Learning, Unsupervised Learning
- Generative Model
- Non-parametric Learning
- Architecture: MLP, ResNet, CNN, GNN, RNN, LSTM, Transformer
- Optimization: GD, SGD, etc
- Uncertainty Quantification
- Verification
※ 建议先完成下列内容,完成后再回到robot learning中:
- UCB CS285: DRL
- 机器学习基础和深度学习优化
※ 本笔记的第二章:机器人学基础的内容,包括正逆运动学等,整理机器人学(Robotics)中的一些重要内容,其本身并不是机器人学习(Robot Learning)的内容。
等上述DRL等学完后,我们再进入到robot learning的领域。(robot learning如今主要的内容都是科研和学界的,因此如果还没有掌握基本能力,那么将很难看懂现在最新的论文)
在开始学习Robot Learning之前,CMU教授插播了一个非常有趣的小故事:

上图展示了2008年Ilya在一次聚餐上试图说服同桌的每一个人去研究深度神经网络,但在当时几乎所有人都认为DNNs是行不通的。理论与实践之间常常存在着巨大的差距;今天行不通的东西,未来可能会很好用。 对于有潜力的技术,我们一定要保持开放和长远的眼光,即使他们在当下看起来并不可行或不成熟,因为未来的发展可能会完全改变局面。
比如说,过参数化(Overparameterization)曾经被认为是一个bad idea,但是在现实中,过参数化模型的表现正变得越来越好,这颠覆了经典的学习理论。
从DQN到类人机器
本小节内容主要基于一篇综述性论文:《Building Machines That Learn and Think Like People》中的很多关键信息整理,主要探讨关于像人类一样思考的机器。
现代认知科学认为,想要构建类人学习的机器,必须改变现有AI工程的学习方式,因而本文作者主张:
- 机器应当构建世界的因果模型(causal models of the world),以支持解释与理解,而不仅仅是模式识别(pattern recognition)。
- 学习(Learning)应当建立在直觉物理与直觉心理理论(intuitive theories of physics and psychology)的基础上。直觉理论探究人类大脑天生或早期自动形成的一种非正式科学理论,即儿童发展早期会通过主动构建理论的方式来理解世界,而不仅仅是通过感知来认知世界。
- 利用可组合性(compositionality)和学习如何学习(learning-to-learn)来快速地习得与泛化到新任务和新情境。
直觉理论中有一些观点很有启发性,比如:
- 婴儿会率先发展出直觉物理,建立一套认知世界物理规律的理论体系,包括物体、空间、运动、力等。
- 婴儿在六个月大的时候就表现出对物体永久性的理解
- 当看到一个球穿过墙壁时,婴儿会感到惊讶
- 儿童会认为更重的物体掉的更快
- 幼儿期(3-5岁)会发展出直觉心理,建立一套理解他人的心理规律。
我们以DQN的经典任务Atari游戏(Frosbite)为例:

可以看到,神经网络可以逼近人类在识别任务上的表现,但是需要远超人类所需的经验和学习时间。Frostbite这个游戏的内容是让玩家控制一个角色,然后目标是在限定时间内建造一个冰屋;冰屋通过跳到水面上的浮冰块逐步建成,每当角色跳到活跃状态的冰块上,冰屋就会增加一块。
由于玩家必须执行一系列正确动作后才能获得延迟奖励,因此DQN在这个游戏上的表现在49款Atari游戏中较差。优化版本的DQN可以达到人类水平,但类比于人类学习经验的话,人类玩家2小时的经验,需要DQN++训练924小时,并且在前100-200小时内表现极差。这种差异来源于人类和DQN在学习方式上的本质差异:
- 人类能快速形成人物模型(schema)
- 人类不依赖稀疏的分数反馈(可以推理出建造冰屋这一高层目标)
- 人类可以轻松应对不同目标,比如拖延时间、发现隐藏要素等
当然,人类也并非从零开始的,而是带着大量先验知识进入新任务,这些知识中包括直觉物理、直觉心理、任务结构推理能力等。而DQN则完全从随机像素和奖励开始学习。因此,如果想让机器和人一样学习与思考,我们可能会考虑这样一个问题:机器是否也能带着丰富的先验知识去应对新问题,而不是从零开始。
直觉物理认为,人类在脑中运行着一个近似的物理引擎进行概率性和近似性模拟,因此婴儿可以很快表现出对持久性、连续性、凝聚性、实体性等原则的期待,区分刚体、软体、液体,并逐步掌握惯性、支撑、容纳、碰撞等基本概念。
直觉心理认为,婴儿早期就能区分有生命的智能体与无生命物体,并期望智能体有目标、以效率为导向、具有社会性(帮助、伤害、亲疏等)。这类表征支持从演示中快速学习,比如看完高手的操作,无需亲历惩罚就能学会玩法。
传统的深度网络多把学习实现为权重的渐进调整,因而在大数据上解决模式识别很强,但与人类相比数据效率极差:人类能少样本甚至一次性学会新概念或游戏要领,完全无需海量样本。很显然,人类并不是用分类器模型去学习的,一种推测是,人类学到的是可用于分类、预测、行动、交流、想象、解释与组合的丰富模型。我们试图高度抽象这种丰富的模型,并将之抽象为三种要素:可组合性、因果性以及学会学习。
可组合性(Compositionality) 就是用有限的原语组合出无限的复杂表示,在人类的认知体系中这种可组合性无处不在,遍及物体、概念、语言等。比如说,在Frostbite游戏中,人类可以认知到场景由可复用的对象(鸟、鱼、浮冰、冰屋)组成,他们之间存在关系,这种认知可以轻松将经验泛化到不同的场景和关卡中。
因果模型(causal models) 能反映现实世界中数据产生机制的生成模型。因果关系本身就是很难分析的,但是人类大脑天生具备这样一种因果推断能力,即便推断的可能是错的。人类不断回忆过去的事情,反刍历史,并产生“如果我没有做什么或者如果我曾经做了什么,如今就会怎样怎样”,就是一种因果推断的练习。
学习如何学习(learning-to-learn) 是当今AI中的一个核心与深刻的概念。人类天生具备这种能力,比如学会英语语法的人,更容易学习西班牙语;学过滑板的人,更容易学会滑雪板;设计师一旦学会一些构图技巧,立马就能在不同的项目中复用。如今深度学习中的元学习(meta-learning),就是该领域的相关议题。
综上所述,当我们要去构建一个拥有学习能力的机器人的时候,也就是我们不需要让机器人预先掌握所有的技能,而是可以在不同的家庭适应不同的家务环境,我们就必须面对当下深度学习无法解决的上述问题。机器人所处在的是一个高度复杂、三维、真实、充满不确定性的物理世界,其环境复杂度非Atari游戏可比。机器人需要挑战的任务包括:
- 机器人要与世界进行物理交互,一个机器人如果仅仅学会了模式识别而没有理解世界的因果模型,那么机器人将无法在开放环境下完成任务。
- 机器人必须掌握直觉物理。机器人所有的动作——行走、导航、操纵物体——都受物理规律支配。因而,一个机器人天生就应该被赋予一套基础的物理先验知识(Priors),而不是从零开始、通过无数次失败(比如把自己摔坏无数次)来学习重力的存在。
- 拥有直觉物理的机器人可以进行心里模拟,在行动前预判物理后果,这对于直觉心理至关重要。未来的机器人要进入家庭、医院、学校,成为人类的助手和伙伴,那么机器人就必须理解人类的意图,这对于机器人完成任务和人机交互(Human-Robot Interaction)都是至关重要的。
- 机器人必须能够学习可复用的技能,从而掌握可组合性。比如说,通过做咖啡,机器人就应当能掌握找杯子、拿起杯子、走到咖啡机旁边、操作咖啡机等一系列可复用的子技能(primitives)。
- 机器人不可能在所有家庭、所有工厂环境中穷尽所有训练数据,他们必须具备快速适应新环境、新物体的能力。Learning-to-learn和meta-learning等技术必须发展到可以让机器人掌握通用的元技能(meta-skill)。
从人类智能中,我们可以得到以下重要的启发:
- 机器人必须拥有一个关于人类心理的简化模型来构建直觉心理,从而对齐人类的心智模型,这样才能让机器人融入人类社会
- 机器人必须掌握终身学习的元学习能力
- 数据效率和先验知识是关键
- 直觉物理或以神经符号结合(Neuro-symbolic AI)的方式与深度学习强大的感知能力结合起来,形成结构化与模型化的智能。
可以看到,当下深度学习、强化学习的局限性,在机器人这个领域中表现得最为突出。构建通用的智能机器人的核心任务必须囊括理解世界运作方式、能够推理行为后果、可以举一反三学会学习。
背景知识
本小节复习一些和机器人学习相关的背景知识,比如深度学习中的重要概念等,这些概念在机器人学习中非常重要。这些内容在机器学习、深度学习的笔记本中都有,这里再次高度总结概括一下,方便复习使用。
关于机器学习、深度学习等内容,参见深度学习笔记的机器学习基础和DNN这两个笔记内容。
习理论(Learning Theory)是机器学习和人工智能的理论基石,这个领域主要回答一些根本性问题,比如:
- Learnability: 可学习性,什么样的概念或问题是可以通过数据学到的?需要多少数据才能学好?
- Generalization: 为什么一个模型在看过的训练数据上表现好,也能在没见过的新数据上表现好?如何量化和保证模型的泛化能力?
- Complexity: 学习一个问题有多难?如何衡量一个学习算法的效率?
- Convergence: 一个学习算法需要多长时间才能找到最优解?
代表的理论包括:
- PAC学习(Probably Approximately Correct Learning),一个框架,用来分析一个算法在多大概率上能学到一个近似正确的模型
- VC理论(Vapnik-Chervonenkis Theory),定义了VC维来衡量模型的复杂性,并给出了泛化误差的上界
- Rademacher 复杂度:另一种衡量模型复杂度和泛化能力的方式
在心理学背景下,学习理论关注人类和动物是如何学习的,比如:
- 认知、行为、环境之间如何相互作用,从而产生知识和技能
- 知识是如何被大脑吸收、处理和记忆的?
- 不同的教学方法为什么会对学习效果产生影响?
- 动机、情感和环境在学习中扮演什么角色?
代表性理论:
- Behaviorism 行为主义:巴甫洛夫的狗,学习是外部刺激和反应之间的联结
- Cognitivism 认知主义:将学习看作是信息处理的过程,类似于计算机的输入、处理和输出
- Constructivism 建构主义:强调学习者是主动构建自己知识体系的,而不是被动接收信息
在神经科学中,学习理论试图从生物和化学层面解释学习的物理基础:
- 当学习发生时,大脑中的神经元连接(突触)是如何变化的?
- 记忆是如何在大脑中编码、存储和提取的?
- Hebbian Learning: cells that are fire together, wire together,是如何在分子水平上实现的?
这里只需要留一个概念就可以,不需要深入学习学习理论。