跳到主要内容

没有标准答案的问题长什么样 — 智能体、观测、奖励、片段

这一章讲三件事: 有一类问题为什么没法用「喂标好答案的数据」那一套; 把它拆开之后有哪几个零件;以及这些零件凑在一起,立刻逼出的第一个真问题是什么。

它在全书链条里的位置:第一环。 后面十九章全部建立在这一章的四个零件上 —— 局面、动作、分数、什么时候算结束。这一章一个公式都没有,也不需要任何基础。

顶层全景:一球乒乓,从一帧画面走到一个 ±1

这一章从头到尾只用一个例子:雅达利的乒乓球游戏(Pong)。 屏幕上一个球、两块板,你控制一块板去接球,球从对手那边漏过去你得分,从你这边漏过去你丢分。

这是原书 2.1 节自己用的例子,它的设定很干净:你只有两个动作,向上移动和向下移动; 球穿过对手防线你得 +1 分,穿过你的防线你得 −1 分1

一整球(比如 300 帧)

第 1 帧画面 ──→ [你的程序] ──→ 按「上」──→ 环境把画面推进一帧 ──→ 这一步的分数:0
第 2 帧画面 ──→ [你的程序] ──→ 按「下」──→ …… ──→ 这一步的分数:0
⋮ ⋮ (中间 298 步全是 0)
第 300 帧 ──→ [你的程序] ──→ 按「上」──→ 球飞过对手的板 ──→ 这一步的分数:+1

整整一球,唯一一次非零的分数在这里 ┘

图说:这就是这一章的主走查。下面每一节都回到这条线上的某一步 ——
第 1 节问「那 298 个 0 意味着什么」,第 2 节划出方括号里外的分界,
第 3 节问「第 1 帧画面到底够不够用」,第 6 节问「第 2 帧那个『下』是怎么定的」。
(300 帧是**为演示编的**;两个动作与 ±1 的分数是书里的设定。)

1. 先看现象:这一帧该按哪个键,没有正确答案

教机器认猫是这样的: 你手上有一百万张图,每张都标好了「猫 / 不是猫」。 机器猜错了,当场就知道错在哪 —— 正确答案就在旁边。 这套办法叫监督学习(有人事先把答案标好,机器照着改)。

打乒乓不是这样。 上面那张图里的第 1 帧画面出现的时候,没有任何人能告诉你「正确的按键是上还是下」。 不是数据没标 —— 是这个答案压根不存在。 上和下都可能通向赢,也都可能通向输, 要等这一球打完才知道。

而且分数来得很晚。 走查里那 300 步,只有最后一步拿到 +1,中间 298 步的分数全是 0。 绝大多数时候都是 0、非零的极少 —— 这种奖励就叫稀疏奖励。 它稀疏到什么程度,以及为什么这会要命,第 11 章会拿真数字讲。

于是三件事同时成立,监督学习那套形状对不上:

认猫(监督学习)打乒乓
每一步有没有正确答案,标在旁边没有
反馈什么时候来立刻可能几百步之后才来一次
这一步做的事影响后面吗不影响,图和图之间无关影响:板现在的位置决定了下一帧你在哪儿

第三行才是最狠的一条。 认猫的一百万张图彼此独立,打乱顺序照样学; 而打乒乓的第 5 帧长什么样,取决于你在第 4 帧按了什么。你自己的动作在生产你的下一批数据。

2. 划一条线:能被你改的叫智能体,改不了的叫环境

这一节只做一件事:把上面那张图里的方括号划清楚。

书里的划法很干脆:世界分成两半,环境和智能体。 智能体就是那个会做决定的程序 —— 也就是走查图里方括号内的东西,你能改的只有它; 环境是它交互的对象,在这里就是那台跑着乒乓球游戏的机器2

两边之间只有两条线来往:

动作(你只有两个:上 / 下)
┌──────────────────────────────────────┐
│ ▼
[智能体] [环境]
▲ │
└──────────────────────────────────────┘
观测(一帧画面) + 这一步的分数

图说:这两条线就是全部接口。**凡是你改不动的,一律算环境** ——
包括游戏规则、球的物理、对手的板怎么动。

「你只能改智能体」这句话不是废话,它是后面很多决定的根据。 比如第 16 章会遇到「对手也在学」的情况 —— 那时对手仍然算环境, 但这个环境自己会变,于是「最优」这个词当场失效。

书里还给了一个名字:动作集合,就是「所有可能的动作」列成一张表1。 乒乓球里它只有两项;而方向盘该打多少度,这张表就有无穷多项 —— 这个区别到第 08 章会变成换一整条技术路线的理由。

回到主走查:第 1 步

第 1 帧画面 ──→ [智能体] ──→ 从动作集合 {上, 下} 里挑一个,挑了「上」
──→ 这个「上」穿过分界线,交给环境

3. 「看到的」和「真实局面」是两件事

这一节回答走查里一个很实在的问题:第 1 帧画面,够用吗?

先看现象

给你一张乒乓球游戏的截图。球在屏幕正中间。问:球是在往你这边飞,还是在往对面飞?

看不出来。 一张静止的画面里没有速度,也没有方向 —— 而这两样恰恰决定了你该往哪儿移动。

书里把这件事说得很明确:如果观测只是单帧画面,小球的速度和运动方向并不能从单帧画面中获得3

于是要分开两个词

意思在乒乓球里
状态环境此刻真正的全部情况球的位置加上速度和方向、两块板的位置
观测你实际拿到手的那一份一帧画面 —— 只有位置,没有速度

观测不一定等于状态。 只拿到局部的,这个环境叫部分可观测; 拿到全部的,叫完全可观测4

书里给的对照极干净:围棋是完全可观测的 —— 棋盘上所有子的位置就是全部信息,没有任何东西藏着5; 只看单帧画面的乒乓球是部分可观测的

为什么这件事必须现在讲

因为它决定了你怎么给「局面」下定义,而这个定义会决定后面一切算法跑不跑得动。

最土也最有效的补救办法是:把最近 4 帧叠在一起当成一个局面。 四帧里球移动过了,速度和方向就出来了。第 07 章那个能玩雅达利的算法用的就是这一招; 到第 20 章你会看到这件事的完整版 —— 「不是马尔可夫」和「部分可观测」其实是两种不同的病, 而这个区分决定了你该堆帧还是该换一种网络。

回到主走查:第 1 步的修订

第 1 帧画面(只有位置,看不出球在飞向谁) ← 这是**观测**,不是状态
第 1~4 帧叠在一起(能看出球正以某个方向飞) ← 这才勉强算一个可用的**状态**

4. 分数:唯一的学习信号,而且它可能骗你

这一节讲那 298 个 0 和最后那个 +1。

环境每走一步都会给智能体一个数,书里叫立即奖励;产生它的那套规则叫奖励函数6。 在乒乓球里,这套规则简单到一句话:球过了对手防线给 +1,过了自己防线给 −1,其余时候给 0

要紧的是:这是整套方法里唯一的学习信号。 没有标准答案、没有人纠正、没有示范 —— 只有这个数。 智能体要从「这一整串动作最后拿到 +1」这一件事里,反推出「刚才那 300 步里哪几步做对了」。

奖励函数不一定只看当前局面。 书里指出它可以取决于当前状态、也可以取决于状态和动作, 甚至要看之前一整串状态和动作 —— 比如任务是「模仿另一个智能体的连续动作」时, 只看单步的奖励函数根本没有足够的指导意义6

一句现在必须记住、第 20 章会变成最贵一课的话

奖励是你写的,而你想要的东西在你脑子里。这两个可能不是同一件事。

智能体会忠实地最大化你写下的那个数,而不是你心里想的那个目标。 你写「离目标越近分越高」,它可能学会贴着目标转圈而永远不去碰它。 这条到第 20 章会以「奖励函数与最终目标的分歧」的形式回来,并且带一个真实案例。

回到主走查:中间那 298 步

第 2 步 动作「下」 → 分数 0
第 3 步 动作「下」 → 分数 0
⋮ ⋮
第 299 步 动作「上」 → 分数 0
第 300 步 动作「上」 → 分数 **+1** ← 唯一一次非零

这一球的总分 = 0×299 + 1 = 1
而智能体要回答的是:这 1 分,该记在哪几步头上?

这个「该记在哪几步头上」的问题,就是后面三章的全部内容。

5. 把一串决策打包:轨迹与片段

这一节给走查里那条线起个名字。

从头到尾把「局面、动作、分数」按时间排成一串,书里叫轨迹7:

τ = 第1个局面 → 第1个动作 → 第1个分数 → 第2个局面 → 第2个动作 → 第2个分数 → ……

起点不是固定的。 书里说初始局面是从一个分布(哪些结果各有多大机会,列成一张清单,就叫一个分布)里随机取的 —— 乒乓球的开局总是球在画面正中间,而围棋的开局可以是棋子在棋盘上的任意位置8

一条从开局走到结束的完整轨迹,书里叫片段(也叫回合)。 比如打完一整盘游戏就是一个片段,赢了或输了就到了终止状态9

这里有一处很容易混的地方,书里专门点了:片段和「一球」不一定是一回事 —— 在乒乓球里,一个片段可以包含好几球9。到第 07 章你会看到工程上还有第三种切法: 把「掉一条命」当成一个片段的结束,理由纯粹是这样学得更快。

为什么要有「片段」这个单位? 因为它是唯一一个能被整体评价的单位 —— 单看一步没有意义(分数是 0),看一整个片段才有一个总账。

顺带一个后面会用到的区分:下一步是定死的还是随机的

书里把「从这个局面做这个动作会去哪」分成两种10。 下一个局面唯一、一点随机都没有,这种转移就叫确定性转移;下一个局面要从几种可能里抽,叫随机性转移:

意思例子
确定性转移下一个局面是唯一确定的围棋落子:落在哪儿就是哪儿
随机性转移下一个局面是从一堆可能里抽出来的掷骰子决定走几格

记住这个词是「转移」的性质。 第 10 章会出现另一个「确定性」—— 那时说的是策略是不是确定的(同一个局面永远出同一个动作)。 两件事同名,不是一回事,那一章会当场再说一遍。

6. 第一个真问题:守着已知的,还是去试没试过的

这一节回答走查第 2 步那个被跳过去的问题:「下」是怎么选出来的?

先看现象:淘金者的两难

书里用了一个例子,而且用得很准 ——

一个淘金者找到了一座每天能出两克黄金的矿。他同时知道,最大的矿每天能出五克。 可是去找更大的矿,就得停下手里的活;找不到的话,这段时间颗粒无收11

他最后选择继续挖已知的那座。书里说,这种「一直照当前已知的信息挑最好的、不做任何冒险」的做法, 叫贪心策略11

两个词,一个矛盾

做什么代价
利用(也叫守成)照当前已知信息,挑眼下最好的可能一辈子守着两克,不知道五克的存在
探索花代价去获取更多信息这段时间的收益可能白扔

书里把这个矛盾正式称为探索-利用的权衡,并说它是强化学习非常重要的问题11

为什么这个矛盾在这里就必须提出来

因为它不是一个可以绕开的工程细节,它是这类问题的结构性质。

回头看第 1 节那张表的第三行:你自己的动作在生产你的下一批数据。 认猫的时候,数据集是给定的,你学不学得好不影响你能看到什么; 而在这里,你不去试的动作,你永远不会有关于它的数据。

一个只会利用的智能体,会被自己第一次的运气锁死。

回到主走查:第 2 步终于说得清了

第 2 帧画面 → 智能体手上有一份粗糙的估计:「上」大概值 0.3,「下」大概值 0.5
├─ 只利用:选「下」(0.5 更高)
└─ 留一点探索:有一小部分机会硬选「上」,因为「上」只试过 2 次,
而「下」试过 40 次 —— 0.3 这个数本身不可信

(这几个数是**为演示编的**,不是书里的真实数值。)

「试得少,所以这个数不可信」这句话怎么变成一个能算的量 —— 那就是下一章的全部内容。 这一章只把矛盾摆出来,不给公式

7. 「深度」加在哪一处

这一节回答一个书名里就有、但很少被讲清的问题:「深度强化学习」的「深度」到底加在哪儿?

三个圈的关系

书里开篇用一张韦恩图交代了几个词的关系12:

人工智能 ⊃ 机器学习 ⊃ 深度学习
⊃ 强化学习 ← 和深度学习并列的另一支

深度强化学习 = 深度学习 ∩ 强化学习 ← 两个圈的交集

图说:强化学习是机器学习的一个分支,和深度学习是并列的两支;
「深度强化学习」是它们重叠的那一块。

「深度学习」这个词在这里的意思是:用一大堆按层排开的、可以调的数,去逼近一个函数。

它最要紧的一条性质是:不需要人先手工挑出「该看画面里的哪几个量」 —— 人挑出来的这些量,就叫特征(比如「球的横坐标」「板的高度」)。

原始输入直接进去、答案直接出来,书里管这个性质叫端到端13

「深」加在哪一处

加在一个具体的位置上,而且只有那一处:

原来要用一张大表来记「每个局面值多少分」,现在改成用一个可以学的函数来算它。 那个函数就是「深」的所在。

为什么非换不可、那个函数长什么样、凭什么调得动它 —— 第 05 章讲。 在这一章你只需要记住一件事:「深」不是在强化学习上面又加了一套新道理, 它替换的是一个零件。 强化学习自己那条论证链条,第 03、04 章讲的那一套,一个字都没变。

两个时间坐标

书里给了这条路线的两个节点,值得记住:

时间发生了什么为什么重要
2013 年DeepMind 发论文,直接拿游戏的原始画面当输入学了 7 种雅达利游戏,其中 6 个优于之前的方法,1 个赢了人类14之前的做法要人先手工设计「该看画面里的什么」;这次不用了
2017 年AlphaGo 在中国打败世界第一围棋大师柯洁15从「玩得比以前的程序好」跨到「比最强的人好」

注意 2013 年那个成绩的形状:7 个游戏里只有 1 个赢了人类。 它当年之所以是转折点,不是因为分数高,而是因为同一套代码、不改一行,能玩 7 个不同的游戏。

作者的判断与证据

书里给了证据的:

  • 单帧画面不足以确定球的速度和方向。 这不是推测,是这个游戏的事实,书里当场说明3;
  • 2013 年那 7 个游戏、6 个超越、1 个赢人类是论文里的结果14;
  • 围棋是完全可观测的、单帧乒乓球是部分可观测的,书里把两者并列做对照5

作者的判断(不是证据):

  • 作者认为强化学习是通向通用人工智能(指什么活都能干的智能,而不是只会下棋、只会认猫的那种)的一条有潜力的路。 原书紧接着说「但是还有很多的挑战需要我们解决」15 —— 这是一个立场,不是一个结果。 值得注意的是,这本书自己的第 7 章(我们的第 11 章) 就是在系统地论证这些挑战有多硬 —— 作者并不回避。

判断(我们的,不是书里的): 这一章最该带走的不是那几个名词, 而是第 1 节那张表的第三行:你自己的动作在生产你的下一批数据。 后面所有让人意外的困难 —— 样本不独立、目标一直在动、误差(算出来的数和真值之间差的那一点)会沿轨迹放大、 换个随机种子曲线就不重合 —— 根子全在这一行上。 如果错,会错在: 如果某种做法能让数据的产生完全脱离当前策略 (比如只用一堆固定的旧数据学、根本不再交互),这一行的推论就不再适用。 那正是这本书没有覆盖的「离线强化学习」那一支。

边界与局限

  • 这一章的例子几乎全是游戏。 游戏有个奢侈的性质:可以无限重来、失败没有代价。 真实世界里两者都不成立 —— 这个落差就是第 11 章「样本效率」和「模拟到现实」两节的全部内容;
  • 书里没有交代「智能体 / 环境」这条线该划在哪。 它当成显然的事: 可实际项目里这是个设计决定(机械臂的控制器算智能体还是算环境?), 书里到第 18 章才用具体案例间接回答;
  • 「奖励是唯一的学习信号」这句话,在这本书出版之后已经被部分绕开了。 从人的偏好里学出一个专门给回答打分的小模型(这个东西就叫打分器)、再拿它的分当奖励,是今天大语言模型上的主流做法 —— 那是另一本书的内容。

可带走的

全章那条走查,一行写完: 第 1 帧画面(只是观测,看不出球速)→ 从 {上, 下} 里挑一个 → 环境推进一帧,给分 0 → 中间 298 步全是 0 → 第 300 步给 +1 → 这一整串叫一个轨迹,跑到结束叫一个片段 → 而那 1 分要摊回前面 300 步。 (300 帧是为演示编的;两个动作与 ±1 是书里的设定。)

  1. 有一类问题每一步都没有正确答案,只有事后的一个分数 —— 监督学习那套形状对不上;
  2. 世界只分两半:你能改的叫智能体,改不了的一律算环境,中间只有动作和「观测 + 分数」两条线;
  3. 「看到的」不等于「真实局面」。 单帧画面看不出球速 —— 这叫部分可观测, 最土的补救是把最近几帧叠起来当一个局面;
  4. 分数是唯一的学习信号,而且可能一整局只出现一次(稀疏),还可能来得很晚;
  5. 奖励是你写的,你想要的东西在你脑子里,这两个可能不是同一件事 —— 这是全书最贵的一课,第 20 章收;
  6. 片段是唯一能被整体评价的单位;一个片段未必等于「一球」,工程上还可能按「掉一条命」来切;
  7. 「转移是确定的」和「策略是确定的」是两件事,别混;
  8. 一个只会利用的智能体会被自己第一次的运气锁死 —— 因为你不去试的动作,你永远拿不到关于它的数据;
  9. 「深度」只替换了一个零件:把「记每个局面值多少分的大表」换成一个可以学的函数。 强化学习本身那条论证链条一个字没变;
  10. 2013 年那件事的意义不在分数,在于同一套代码不改一行能玩 7 个不同的游戏。

原文地图

主题原书章原文位置
智能体、环境、动作集合、Pong 的 ±1第2章 强化学习入门text/06-ch02.txt:29(搜「向上移动」) · text/06-ch02.txt:31(搜「智能体则获得奖励」)
智能体与环境的划分前导知识text/02-fm.txt:101(搜「把世界分为两个部分」) · text/02-fm.txt:104(搜「以尽可能获得更大的奖励」)
观测与状态、部分可观测第2章 强化学习入门text/06-ch02.txt:47(搜「部分可观测的」) · text/06-ch02.txt:57(搜「速度和运动方向并不能从单帧画面中获得」)
围棋是完全可观测的第2章 强化学习入门text/06-ch02.txt:55(搜「所有的棋子的位置」)
奖励函数、立即奖励第2章 强化学习入门text/06-ch02.txt:63(搜「立即奖励」) · text/06-ch02.txt:70(搜「都无法」)
轨迹的定义与起始分布第2章 强化学习入门text/06-ch02.txt:72(搜「一系列的状态、动作和奖励」) · text/06-ch02.txt:78(搜「小球在画面的正中间」)
确定性转移与随机性转移第2章 强化学习入门text/06-ch02.txt:80(搜「随机性转移过程」)
片段、终止状态、一个片段含多球第2章 强化学习入门text/06-ch02.txt:90(搜「片段」) · text/06-ch02.txt:94(搜「一个片段可以包含多个回合」)
探索、利用、淘金者、贪心第2章 强化学习入门text/06-ch02.txt:100(搜「淘金者」) · text/06-ch02.txt:105(搜「贪心」) · text/06-ch02.txt:112(搜「探索-利用的权衡问题」)
韦恩图:四个词的关系前导知识text/02-fm.txt:16(搜「韦恩图」)
端到端、不用手工设计特征前导知识text/02-fm.txt:76(搜「端到端」) · text/02-fm.txt:113(搜「不需要手工设计特征提取算法」)
深度强化学习的定义前导知识text/02-fm.txt:108(搜「可以用神经网络来近」)
2013 年七个雅达利游戏前导知识text/02-fm.txt:112(搜「学习了 7 种游戏」) · text/02-fm.txt:113(搜「在 6 个游戏中优于之前的方法」)
2017 年赢柯洁前导知识text/02-fm.txt:115(搜「打败了世界第一围棋大师」)

Footnotes

  1. 出处:「第2章 强化学习入门」第 29 段(text/06-ch02.txt:29,搜「向上移动」)与第 31 段(text/06-ch02.txt:31,搜「智能体则获得奖励」)。原书在同一处给出了「动作集合」的定义:它描述了所有可能的动作;乒乓球里就是球拍的 {向上移动, 向下移动}。 2

  2. 出处:「前导知识」第 101 段(text/02-fm.txt:101,搜「把世界分为两个部分」)与第 104 段(text/02-fm.txt:104,搜「以尽可能获得更大的奖励」)。原文的措辞是:强化学习把世界分为环境与智能体两个部分,智能体通过执行动作与环境交互,环境的反馈以奖励的形式体现。

  3. 出处:「第2章 强化学习入门」第 57 段(text/06-ch02.txt:57,搜「速度和运动方向并不能从单帧画面中获得」)。 2

  4. 出处:「第2章 强化学习入门」第 47 段(text/06-ch02.txt:47,搜「部分可观测的」)。原书还补了一句很实在的话:实践中观测通常是真实状态的某种函数,有时很难辨别观测是否包含了状态的全部信息

  5. 出处:「第2章 强化学习入门」第 55 段(text/06-ch02.txt:55,搜「所有的棋子的位置」)。 2

  6. 出处:「第2章 强化学习入门」第 63 段(text/06-ch02.txt:63,搜「立即奖励」)与第 70 段(text/06-ch02.txt:70,搜「都无法」)。后一处是作者举的反例:要模仿另一个智能体的一整串连续动作时,只看当前状态、或只看当前状态与动作的奖励函数,都没有足够的指导意义。 2

  7. 出处:「第2章 强化学习入门」第 72 段(text/06-ch02.txt:72,搜「一系列的状态、动作和奖励」)。

  8. 出处:「第2章 强化学习入门」第 78 段(text/06-ch02.txt:78,搜「小球在画面的正中间」)。原文用「起始状态分布」这个词:初始状态是从这个分布里随机采样来的。

  9. 出处:「第2章 强化学习入门」第 90 段(text/06-ch02.txt:90,搜「片段」)与第 94 段(text/06-ch02.txt:94,搜「一个片段可以包含多个回合」)。 2

  10. 出处:「第2章 强化学习入门」第 80 段(text/06-ch02.txt:80,搜「随机性转移过程」)。原书给了两个式子:确定性转移写成一个函数,随机性转移写成一个条件概率分布,下一个局面从这个分布里抽出来。

  11. 出处:「第2章 强化学习入门」第 100 段(text/06-ch02.txt:100,搜「淘金者」)、第 105 段(text/06-ch02.txt:105,搜「贪心」)与第 112 段(text/06-ch02.txt:112,搜「探索-利用的权衡问题」)。原文明说这个问题「是强化学习研究非常重要的问题」,并紧接着用赌博机问题来讨论它 —— 那正是我们第 02 章的内容。 2 3

  12. 出处:「前导知识」第 16 段(text/02-fm.txt:16,搜「韦恩图」)。

  13. 出处:「前导知识」第 76 段(text/02-fm.txt:76,搜「端到端」)与第 113 段(text/02-fm.txt:113,搜「不需要手工设计特征提取算法」)。原书在第 76 段之后还留了一句坦白:很多人质疑深度学习是个黑盒。

  14. 出处:「前导知识」第 112 段(text/02-fm.txt:112,搜「学习了 7 种游戏」)与第 113 段(text/02-fm.txt:113,搜「在 6 个游戏中优于之前的方法」)。原书还点明这篇论文发在 AlexNet 之后仅一年。 2

  15. 出处:「前导知识」第 115 段(text/02-fm.txt:115,搜「打败了世界第一围棋大师」)。紧接着的第 117 段(text/02-fm.txt:117,搜「通用人工智能」)是作者的立场表述:深度强化学习具有实现通用人工智能的潜力,但还有很多挑战需要解决。 2