跳到主要内容

自己定义问题 — 两个不是游戏的任务

这一章讲三件事: 一个不像游戏的任务,怎么被改写成强化学习能吃的形状; 改写时四件事(状态、动作、奖励、终止)各自会撞上什么; 以及奖励函数为什么往往要改三版。

它在全书链条里的位置:从「算法」到「项目」的那一步。 前十七章都默认那四件事是给定的 —— 因为它们讲的全是游戏(游戏自带这四样)。 这一章的两个任务都不是游戏,于是这四样全得你自己定。 而这正是第 20 章那份工程清单里最贵的几条的来源。

顶层全景:同一个抓取动作,三版奖励算出三个数

这一章的主走查是书里那个机器人抓取项目的奖励函数三级演进。

任务:一条 Sawyer 机械臂,把桌上一个长方体抓起来。
★ 三版奖励的设定全部是书里给的;下面这些坐标是**为演示编的**。★

这一步的状况:夹具在 (0.30, 0.10, 0.95),物体中心在 (0.30, 0.10, 0.80)
—— 也就是★正悬在物体上方 15 厘米处,姿势基本对★。它还没抓到。

┌─ 第一版:稀疏 ────────────────────────────────────────────┐
│ 抓到给 **+10**,物体掉下桌子给 **−10**,其余全是 0[^1] │
│ → 这一步的奖励 = **0** │
│ → 下一步还是 **0**,再下一步还是 **0** …… │
│ ★ 书里的判词:稀疏奖励下「探索和学习抓取物体几乎是不可能的」★ │ §5
└────────────────────────────────────────────────────────┘
┌─ 第二版:密集 ────────────────────────────────────────────┐
│ 再减去「夹具到物体中心的平方距离」,并惩罚夹具撞桌子[^2] │
│ → 平方距离 = (0.95 − 0.80)² = 0.0225 │
│ → 这一步的奖励 = **−0.0225** ★ 终于有一个非零的数了 ★ │
│ ★ 但这一项把夹具往物体正中吸 —— 而正中在物体内部, │ §6
│ 夹具只能贴着往下压,抓取姿势全错。★ │
└────────────────────────────────────────────────────────┘
┌─ 第三版:增强密集 ─────────────────────────────────────────┐
│ ① 把零惩罚点从物体中心★上移 0.08 米★[^3] │
│ → 目标点变成 (0.30, 0.10, 0.88) │
│ → 平方距离 = (0.95 − 0.88)² = **0.0049** │
│ ★ 同一个位置,惩罚从 0.0225 掉到 0.0049 —— 因为它本来就对 ★ │
│ ② 加一项旋转惩罚,系数 **0.02**[^4] │
│ → 设这一步的姿态偏差合计 0.5,惩罚项 = 0.02 × (−0.5) = −0.01 │
│ → 这一步的奖励 = −0.0049 − 0.01 = **−0.0149** │ §7
└────────────────────────────────────────────────────────┘

★ 同一个动作、同一个位置,三版给出 0、−0.0225、−0.0149 三个数。★
★ 而它们优化出来的策略,是三种完全不同的东西。★

图说:这就是本章的主走查。§5 到 §7 逐版推出来。
另起的一处走查在 §8:修图任务,四件事各自怎么定。

1. 前十七章藏起来的那一步

这一节回答:为什么把任务写成四件事本身就是最花力气的活。

先看现象

打游戏的时候,那四件事是白送的:

游戏里★ 真任务里 ★
状态屏幕上那张图★ 你得决定喂什么进去 ★
动作手柄上那几个键★ 你得设计出一套动作 ★
奖励分数★ 你得编一个函数 ★
终止游戏结束★ 谁来喊停都是个问题 ★

★ 前十七章讲的全是游戏,所以这一栏从来没出现过。★ 这一章的两个任务 —— 修图和机器人抓取 —— 一个都不自带。

这一章的两个任务

书里给的两个项目:

  • 修图:把一张偏暗、有噪点的照片,自动调成专业修图师会调出来的样子;
  • 机器人抓取:一条机械臂在模拟环境里,把桌上一个长方体抓起来。

★ 一个动作是离散的(13 个预设操作),一个是连续的(关节速度)——正好对照。★

2. 状态:直接喂原始输入是学不动的

这一节走另起那处走查的第一步。

先看现象

修图任务里,最自然的状态就是「这张图现在长什么样」——也就是所有像素。

★ 而书里没这么做,理由写得很实在:「从零开始训练一个卷积神经网络需要大量的原始-修复图像对」★1

而这类数据恰恰最缺 —— 书里说:与图像分类不同, 图像增强的训练数据「依赖于人类专家」,因此「并没有大规模的公共图像增强数据集」2

★ 一句话:没有那么多标注数据,所以不能从像素从头学。★

做法:借一个别处训好的网络当眼睛

书里的做法:拿一个在大型图像分类数据集上预训练好的网络, 取它最后一层卷积层的激活值当输入的一部分1

书里给的理由:这样的深层特征「可以提升许多其他视觉识别任务的效果」1

★ 也就是说:那个网络已经学会了「看图」这件事,直接借过来用。★

但光有这个还不够,还要拼上颜色的统计

书里还加了一样:直方图3

「直方图」是什么:把图片里所有像素按颜色分格计数 —— 「有多少个像素落在这个红色区间、多少个落在那个」。 ★ 它丢掉了「哪个像素在哪儿」,只留下「整张图的颜色分布」。★

★ 最终的状态是三样东西拼起来的(全部是书里的数):★[^7][^8]

① 预训练网络最后一层卷积的激活值 → **2048** 个数
② RGB 颜色空间的直方图,三个通道各 (0, 255) → **1000** 个数
③ CIELAB 颜色空间的直方图,范围 (0,100)、(−60,60)、(−60,60) → **1000** 个数

★ 合计 2048 + 2000 = 4048 个数。★ 书里的说法是「连成 2048 + 2000 维的观测信息」。

★ 为什么要两套颜色空间:RGB 是屏幕怎么显示的,
CIELAB 是设计成「数值上的距离贴近人眼感觉到的差别」的那一套。★
修图的目标是「人看着更好」,所以后者才是对的尺子 —— 而 §4 那个奖励函数用的正是它。
(两套颜色空间的区别这一句是我们补的;三样东西的维度都是书里的。)

★ 这一节的可带走判断:状态不是「环境给你什么」,是「你决定喂什么进去」。★ 同一个任务,喂原始像素学不动,喂这 4048 个数就能学 —— 而这一步在算法里一个字都没写。

3. 动作:它可以是设计出来的

这一节走另起那处走查的第二步。

修图的动作不是「把这个像素调成这个值」——那样动作空间是天文数字。

书里的做法:预先定死 13 个操作4:

索引操作索引操作
0★ 无操作 ★7 / 8红绿色调 ×0.95 / ×1.05
1 / 2对比度 ×0.95 / ×1.059 / 10蓝绿色调 ×0.95 / ×1.05
3 / 4饱和度 ×0.95 / ×1.0511 / 12红蓝色调 ×0.95 / ×1.05
5 / 6亮度 ×0.95 / ×1.05

★ 拆开看只有两条设计:★ ① 挑六样能调的东西(对比度、饱和度、亮度、三组颜色偏移),每样给一个加一个减; ② 幅度定死在 5%(乘 0.95 或 1.05)—— 一次只动一点,靠多走几步来调到位。

★ 而第 0 号那个「无操作」不是凑数的,它是下一节的主角。★

对照:机器人那边的动作

书里给了两种控制方式,而它们的动作空间完全不同5:

控制方式动作是什么几个数
正向运动学每个关节的速度7 个(第 7 个关节顺带管末端旋转)
反向运动学末端要去的位置 + 夹具的旋转4 个(3 维位置 + 1 维旋转)

★ 同一台机械臂,同一个任务,动作可以是 7 维也可以是 4 维 —— 取决于你让智能体控制哪一层。★

4. 终止:游戏会自己结束,修图不会

这一节走另起那处走查的第三步,而这是这一章最漂亮的一处设计。

先看现象

书里把这件事点得很清楚:

★「在游戏的强化学习应用中,终结状态可以由环境决定。 而与此不同的是,在图像增强中的智能体需要由自己决定退出时机。」★6

★ 修图没有输赢,也没有「死了」。你什么时候停手,是一个设计问题。★

前人的做法,以及它的毛病

书里说前人用的是一个基于 DQN 的智能体:「它在所有动作预测的 Q 值都为负数时会退出」6

★ 而书里当场指出这么做的毛病:★

「Q-Learning 中由函数近似引起的过估计问题,可能会导致推理过程的鲁棒性降低。」6

「过估计」就是第 07 章第 5 节那个词 —— 对一堆带噪的估计取最大,结果会系统性偏高。

★ 而这里的后果非常具体:★ 退出条件是「所有 Q 都为负」,而过估计让每个 Q 都偏高 —— 于是它总觉得「再调一下还有分」,该停的时候不停。 (这段因果是我们的解释;那个毛病和退出条件都是书里的。)

书里的做法:给它一个退出键

书里的解法一句话:训练一个显式的策略,并「增加一个用于退出选择的『无操作』动作」6

★ 对照一下这两种做法的差别:★

前人: 退出条件是从 Q 值 ★推断★ 出来的 → 依赖那些 Q 估得准不准
书里: ★ 退出是一个动作,和「调亮度」平起平坐 ★ → 策略直接学「什么时候该按它」

★ 而这一步顺带绕开了第 07 章那个过估计问题 —— 因为根本不用取最大。★
(「顺带绕开」这句是我们点的;两种做法都是书里的。)

★ 这是这一章最值得带走的一个设计思路:把一个「什么时候停」的判断,变成动作集里的一个选项。★

5. 奖励第一版:只在抓到时给分

这一节走主走查的第一版。

做法

回到机器人抓取。第一版最直白:

书里的说法:成功抓取物体的奖励是一个正数,而物体掉落桌面的惩罚是一个同样数值大小的负数7; 而书里的实验图里,稀疏奖励那条曲线上的 −10 正是掉落桌面的惩罚造成的8

抓到 → **+10**
掉下桌子 → **−10**
其余每一步 → **0**

★ 主走查这一步:夹具悬在物体上方 15 厘米,姿势基本对 —— 奖励 **0**。★
★ 而如果它歪着悬在旁边、姿势完全不对 —— 奖励也是 **0**。★
★ 两种截然不同的状况,拿到一模一样的分。★

结果

书里的判词:这构成了一种稀疏奖励机制,「而可能对智能体来说很难学习」7; 而实验之后的结论更狠:对于稀疏奖励来说,「探索和学习抓取物体几乎是不可能的」9

★ 这正是第 11 章第 3 节讲过的:稀疏奖励下梯度是 0,不是学得慢,是根本没有信号。★

6. 奖励第二版:能学了,但姿势全错

这一节走主走查的第二版,而它是本章的核心。

做法

书里加了一项:「距离上的惩罚项来辅助学习」——这个惩罚项的值是末端执行器到目标物体的距离; 同时也惩罚夹具与桌面的碰撞,以免夹具损坏10

★ 主走查这一步:★
夹具 (0.30, 0.10, 0.95),物体中心 (0.30, 0.10, 0.80)
平方距离 = 0² + 0² + 0.15² = **0.0225**
这一步的奖励 = **−0.0225**(没撞桌子,碰撞项是 0)

★ 现在两种状况终于分得出来了:★
悬在正上方 15 厘米 → −0.0225
歪在旁边 40 厘米 → −0.16 ★ 差了七倍多 ★
(0.16 是我们按同样的式子算的。)

★ 于是有了梯度:往物体靠近就是加分,远离就是扣分。它能学了。★

但代价来了

书里没有回避,而且把因果写得非常清楚:

★「我们要知道,密集奖励函数可能跟最终的任务目标有出入,而我们的目标是让机器人抓取目标物体。 由于距离惩罚项正比于夹具和物体中心的距离,它会促使夹具尽可能地接近物体中心, 而这可能导致不合适的抓取姿态。」★11

★ 把这个因果走一遍:★

奖励说的是: 「离物体中心越近越好」
你想要的是: 「把物体抓起来」

→ 而物体中心在★物体内部★,夹具永远到不了
→ 于是策略学到的是:贴着物体表面往下压,把距离压到最小
→ ★ 它拿到了很高的分,但没有抓起来任何东西。★

★ 这就是「奖励不等于目标」的一个具体样本 ——
而书里在这里明确指路:更多讨论「可以参考第 18 章」(也就是我们的第 20 章)。★[^14]

★ 记住这个形状:你写下的那个函数,和你心里想的那件事,在某个方向上分了家。★ 而策略会沿着那个方向一路走远,因为它只认那个函数。

7. 奖励第三版:两处修正,姿势才对

这一节走主走查的第三版。

修正一:把靶心挪出物体

病根是「靶心在物体内部,够不到」。那就把靶心挪到够得到的地方。

书里的做法:「设定一个位于目标物体上方的位置偏移量(虚拟目标点)来取代目标物体的中心」12; 具体的偏移量是 0.08 米13

★ 主走查这一步:★
靶心从 (0.30, 0.10, 0.80) 挪到 (0.30, 0.10, 0.88)
平方距离 = (0.95 − 0.88)² = **0.0049**
距离项 = **−0.0049**

★ 对照第二版的 −0.0225 —— 同一个位置,惩罚小了四倍多。★
★ 为什么该小:夹具本来就该悬在物体上方,这个位置是对的。★
★ 而它现在够得到靶心了 —— 悬到 0.88 那个高度,惩罚就是 0。★
(0.08 米这个偏移是书里的;坐标是为演示编的。)

修正二:管姿势

光靠近还不够 —— 夹具怎么转也得对。

书里的做法:加一项旋转惩罚,而它的目标姿态写得很具体 —— 「夹具与目标物体方向相垂直」并且「朝下」; 惩罚是当前姿态与这个目标姿态各角度之差的绝对值之和,再取负,乘上系数 0.0214

★ 为什么要垂直:物体是个长方体,长边比夹具的开合宽度还长。★
→ 顺着长边夹,夹不住;垂直于长边夹,才夹得住。
(这一句因果是我们补的;「垂直且朝下」是书里的。)

★ 主走查这一步:设姿态偏差合计 0.5 ★
旋转惩罚项 = 0.02 × (−0.5) = **−0.01**

这一步总奖励 = −0.0049 − 0.01 = **−0.0149**

★ 注意那个系数 0.02 的量级:0.02 × 0.5 = 0.01,和距离项的 0.0049 是同一量级。★
★ 系数太大,它会为了摆姿势而不去够物体;太小,姿势项等于没写。★
(这一句权衡是我们的判断;0.02 这个值是书里的。)

结果

书里给的结论:通过这两处修正,「学习效果相比于原始的密集或稀疏奖励的情况得到进一步提升」15; 而在最终的对照里,增强后的奖励「对比原始密集奖励函数体现了显著的加速学习的效果」9

★ 三版走完,记住这条路径:能不能学(稀疏→密集)→ 学出来的对不对(密集→增强密集)。★

作者的坦白

★ 这是这一章最诚实的一段,不要跳过:★

「奖励函数工程是实践中一种有效结合人类先验知识来辅助学习的方式, 尽管这可能与科学研究本身的诉求相斥 —— 因为从科研的角度讲, 人们往往更加专注于减少奖励函数工程的工作量…… 其实,在实践中解决一个任务,类似以上的一些人为辅助设计可能会很有帮助。」16

判断(我们的,不是书里的): 这段坦白和第 11 章末尾引的那篇《苦涩的教训》 正好指向相反的方向 —— 那边说「不该把人的知识嵌进去」,这边说「不嵌进去这个任务根本做不成」。 ★ 我们的读法是:两者说的是不同的时间尺度。★ 短期要交付,就得嵌;长期看谁会赢,是另一回事。 而这一章那三版奖励恰好是这个张力最具体的样本:每改一版,嵌进去的人类判断就多一层。 如果错,会错在: 也可能这个任务用别的办法(比如第 12、13 章那些模仿学习) 本来就不需要这么多奖励工程 —— 书里自己在同一段里也提了这条路16判据是:同一个抓取任务,给几条人的示范,能不能省掉这两处奖励修正。

8. 另起的一处走查:修图这一边的四件事

这一节把 §2 到 §4 那三个设计串成一条完整的走查(本章共两处走查)。

★ 一张偏暗、有噪点的照片,走完整个片段。★
(奖励的形式是书里的;下面这些距离值是**为演示编的**。)

第 0 步 一张原图进来
→ 状态 = 预训练网络的 2048 个数 + 两套颜色直方图各 1000 个数 = **4048 个数** §2
→ 这时它离「专家修出来的那一版」在颜色空间上的平方距离是 **480**

第 1 步 策略选了动作 6:★ 亮度 ×1.05 ★ §3
→ 调完之后,离专家版的平方距离变成 **455**
→ ★ 这一步的奖励 = 480 − 455 = **+25** ★
★ 书里的奖励就是这个形式:调之前的差距 减去 调之后的差距 ★[^18]
★ 也就是说:奖励衡量的是「这一步让它靠近了多少」,不是「现在有多好」。★

第 2 步 又选亮度 ×1.05 → 距离 455 → 450 → 奖励 **+5** ← 还在靠近,但没那么多了

第 3 步 再选亮度 ×1.05 → 距离 450 → **452** ← ★ 过头了 ★
→ 奖励 = 450 − 452 = **−2**

第 4 步 策略选了动作 0:★ 无操作 ★ → 片段结束 §4
★ 这就是那个退出键。它不是「没得选了」,是策略主动按下的。★

上限:书里把片段最长设成 20 步。[^19]

★ 这条走查上,四件事各出现一次:★
状态在第 0 步(4048 个数)、动作在第 1 步(13 选 1)、
奖励在每一步(距离的减少量)、终止在第 4 步(那个退出键)。

★ 顺带留意一处很关键的性质:书里说这个任务里「当前状态和选择动作完全决定了状态转移」—— 也就是「环境没有不确定性」★17

★ 这一条让这个任务比游戏简单一档:同样的图、同样的操作,结果永远一样,不掷骰子。★

9. 模拟器与域随机化:模拟得真,不等于搬得过去

这一节讲这一章通往真实世界的最后一步,并兑现第 11 章第 9 节那个词。

一句必须记住的话

书里在开头就把话说死了:

★「一个『真实的』模拟环境可以通过不同的具体形式实现, 而其中只有一种形式可以与实际的现实世界相匹配。」★18

书里给的例子非常具体:不同光照条件在物体上产生的阴影可能看起来都很「真实」, 但只有一种和现实相同;而「由于深度神经网络的敏感性, 这些外观上的细微差异可能导致现实中做出截然不同的动作」18

★ 一句话:模拟做得越逼真,你越容易以为自己已经对上了 —— 而你可能对上的是另一个真实。★

模拟器不是一类东西

书里给了几个模拟器的分工19:

哪一类长处
一个常用的简单机器人环境库相对简单,可以快速验证提出的方法
本章用的那个、以及一个游戏引擎基于物理模拟器,渲染效果相对较好
★ MuJoCo ★★ 有较为现实和准确的物理引擎,可以用于模拟到现实迁移 ★
一个 2019 年发布的新软件对深度学习支持强,加上照片级的渲染

★ 三种长处对应三种不同的任务:验证算法要快、基于视觉的控制要渲染、要搬上真机要物理准。★ (这句归纳是我们的;各自的长处是书里的。)

补充(不在书里): 书里把 MuJoCo 当成一个需要授权的商业物理引擎来写。 它现在是免费开源的 —— 仓库在 google-deepmind/mujoco,采用 Apache 2.0 许可, 由 Google DeepMind 维护,仓库里的版权声明署的是 2021 年 DeepMind。20 ★ 所以这本书里凡是提到它「要花钱」的语境,今天都不成立了。★ (我们只核到了「现在开源、由 DeepMind 维护」这一层,没有核到具体的收购日期。)

域随机化:兑现第 11 章那个词

第 11 章第 9 节挂过牌:域随机化 = 把源环境和目标环境的差异,建模成源环境里的随机性。 这一章给出它在这个任务上具体随机哪几样21:

随机什么具体是哪些(书里给的)
★ 动力学随机化 ★物体的质量、机械臂上关节的摩擦力、物体和桌面之间的摩擦力
视觉随机化物体颜色、光照条件、物体材质

书里还给了两条实践口径:

  • 多久重设一次:「可以在整个训练过程中对每个片段或者几十个片段进行一次参数重设置」21;
  • ★ 范围怎么定 ★:书里说这一条「重要」—— 随机化的范围「要能够覆盖现实中真实的动力学过程」21
★ 第二条是这一节唯一的硬判据,值得单独记:★

随机的范围 ⊃ 真实世界那一段 → 真机上遇到的情况在训练里见过 → 能迁移
随机的范围 ⊄ 真实世界那一段 → ★ 白练 ★

举例:模拟里把摩擦系数在 0.3 到 0.5 之间随机,而真桌面是 0.7
→ 那 0.7 这个情况它一次都没见过,再怎么随机也没用。
(这个例子是我们编的;那条口径是书里的。)

作者的判断与证据

书里给了具体设计与数值的:

  • 修图的状态构成(2048 + 1000 + 1000)、13 个动作、退出键346;
  • ★ 抓取的奖励三版,以及第三版那两个具体的数(0.02 与 0.08 米)★7101314;
  • 抓取的状态是 17 个数(7 个关节位置 + 7 个关节速度 + 3 维目标位置)、 两种控制方式各自的动作维度225;
  • 域随机化具体随机哪几样21

作者的判断与实验说法:

  • ★「稀疏奖励下探索和学习抓取物体几乎是不可能的」★9 —— 有实验图但没有给数字;
  • 「增强的奖励函数对比原始密集奖励函数体现了显著的加速学习的效果」9 —— 同样是定性的;
  • 「一个真实的模拟只有一种形式与现实相同」18 —— 一句论断,不是实验;
  • 前人那个「所有 Q 为负就退出」的做法会削弱鲁棒性6 —— 一句机理判断,书里没有做对照实验。

★ 书里的两处坦白,都很值钱:★

  • 奖励函数工程「与科学研究本身的诉求相斥」16;
  • 抓取的结果:「尽管抓取的姿势不是很完美且成功率还不是很高」; 而且整个训练「没有任何的示范或预训练」23

书里没有给的:

  • ★ 三版奖励的具体成功率、各跑了多少个片段,一个数都没有。★ 只有一张对照图和定性描述;
  • 那两个关键数值(0.02 和 0.08)怎么定出来的,书里没说 —— 大概率是试出来的;
  • 修图那边完全没有能用数字比较的评估 —— 没有和经典方法或者卷积网络方法做对照。

边界与局限

  • ★ 这一章讲的是「怎么定义问题」,而它给的是两个样本,不是方法。★ 换一个任务,这四件事该怎么定,书里没有给通用的程序 (通用的那部分在第 20 章);
  • 修图那边的诚实之处:书里在图注里写着,当图片右上角天空这类局部区域需要增强时, ★「全局亮度会增加」★24 —— 这是那 13 个全局操作的固有缺陷,局部问题它治不了;
  • 抓取那边的诚实之处:姿势不完美、成功率不高23;
  • 书里有一处很实在的工程警告:碰撞检测不总是准确的 —— 「对于连续碰撞帧,可能只有开始的 4~5 帧碰撞可以被检测到」25, 而抓取的判定就依赖它;
  • 域随机化在这一章只有做法,没有效果 —— 书里没有给「随机化之后搬上真机成功率多少」的数据;
  • ★ 全章都在模拟环境里。★ 书里明说了不能指望深度强化学习完全取代传统控制, 它和反向运动学、PID 这类方法是互补关系26

可带走的

全章那条走查,一行写完: 同一个抓取动作(夹具悬在物体正上方 15 厘米,姿势基本对)—— 第一版稀疏:奖励 0,而歪在旁边也是 0,两种状况分不出来,「几乎不可能学会」第二版密集:减去平方距离 0.0225 → 能学了,但这一项把夹具往物体正中吸,而正中在物体内部, 于是它学会贴着往下压、拿高分却抓不起来第三版:靶心上移 0.08 米(同一位置的惩罚从 0.0225 掉到 0.0049)+ 旋转惩罚(系数 0.02), 这一步的奖励 −0.0149 —— 姿势才对。 (0.02 与 0.08 米是书里的;坐标与姿态偏差是为演示编的。)

  1. ★ 前十七章都默认「状态、动作、奖励、终止」是给定的 —— 因为它们讲的全是游戏。★ 真任务里这四件全得你自己定,而这是最花力气的一步;
  2. 状态不是「环境给你什么」,是「你决定喂什么进去」 —— 修图任务喂原始像素学不动(没那么多标注数据),喂「预训练网络的特征 + 两套颜色直方图」就能学;
  3. ★ 动作可以是设计出来的:13 个操作 = 六样能调的东西各配一加一减,幅度定死在 5%。★
  4. 同一台机械臂,动作可以是 7 维(关节速度)也可以是 4 维(末端位置 + 旋转)—— 取决于你让智能体控制哪一层;
  5. ★ 游戏会自己结束,修图不会 —— 什么时候停手是个设计问题。★
  6. ★ 最漂亮的一招:把「什么时候停」变成动作集里的一个选项(那个「无操作」)。★ 前人靠「所有 Q 都为负」来推断,而过估计会让它该停时不停;
  7. 奖励第一版(稀疏):抓到 +10、掉桌 −10、其余全是 0 —— 悬在正上方和歪在旁边拿一样的分,所以「几乎不可能学会」;
  8. 奖励第二版(密集):减去到物体中心的距离,能学了;
  9. ★ 但它把夹具往物体正中吸,而正中在物体内部够不到 —— 于是策略学会贴着往下压:分很高,东西没抓起来。这就是「奖励不等于目标」的具体样本。★
  10. 奖励第三版两处修正:把靶心上移 8 厘米(挪到够得到的地方),加一项旋转惩罚(系数 0.02);
  11. ★ 记住这条路径:能不能学(稀疏→密集)→ 学出来的对不对(密集→增强密集)。★
  12. ★ 作者的坦白:奖励函数工程「与科学研究本身的诉求相斥」—— 但实践中它很有帮助。★
  13. ★「一个『真实的』模拟可以有很多种实现,而其中只有一种与现实相同」★ —— 模拟做得越逼真,越容易以为自己已经对上了;
  14. 模拟器分三种长处:验证快、渲染好、物理准。要搬上真机就选物理准的那种;
  15. 域随机化具体随机什么:物体质量、关节摩擦力、物体与桌面的摩擦力;颜色、光照、材质;
  16. ★ 而它唯一的硬判据是:随机的范围必须覆盖现实中真实的那一段 —— 覆盖不到就是白练。★

原文地图

主题原书章原文位置
为什么鲁棒性最重要第14章 鲁棒的图像增强text/20-ch14.txt:19(搜「即使 1% 的较差情况」)
没有大规模数据集第14章 鲁棒的图像增强text/20-ch14.txt:21(搜「图像增强的训练数据依赖于」)
经典法与卷积法各自的毛病第14章 鲁棒的图像增强text/20-ch14.txt:30(搜「但是缺乏对上下文信息的考虑」) · text/20-ch14.txt:35(搜「像素到像素的映射缺乏鲁棒性」)
环境没有不确定性第14章 鲁棒的图像增强text/20-ch14.txt:72(搜「当前状态和选择动作完」)
奖励用颜色空间的距离差第14章 鲁棒的图像增强text/20-ch14.txt:76(搜「L(h)」) · text/20-ch14.txt:78(搜「其中 h 是对应的高质量图像」)
终止得自己决定、退出键第14章 鲁棒的图像增强text/20-ch14.txt:80(搜「在图像增强中的智能体需要由自己决定退出时机」) · text/20-ch14.txt:81(搜「它在所有动作预测的 Q 值都为负数时会退出」) · text/20-ch14.txt:83(搜「明确的策略并增加一个用于退出选择的」) · text/20-ch14.txt:84(搜「索引为 0 的动作表示」)
状态怎么构造第14章 鲁棒的图像增强text/20-ch14.txt:85(搜「从零开始训练一个卷积神经网络需要大量的原始-修复图像对」) · text/20-ch14.txt:86(搜「而是考虑使用在 ILSVRC 分类数据集」) · text/20-ch14.txt:89(搜「我们在构造观测信息时进一步考虑使用直方图信息」) · text/20-ch14.txt:104(搜「这三个特征连成 2048 + 2000 维的观测信息」)
13 个动作第14章 鲁棒的图像增强text/20-ch14.txt:96(搜「无操作 7 红、绿色调整」)
片段最长 20 步第14章 鲁棒的图像增强text/20-ch14.txt:130(搜「max_episode_length」)
全局操作的固有缺陷第14章 鲁棒的图像增强text/20-ch14.txt:336(搜「全局亮度会增加」)
只有一种模拟与现实相同第16章 模拟环境中机器人学习text/22-ch16.txt:45(搜「一个真实的模拟不意味着」) · text/22-ch16.txt:49(搜「境可以通过不同的具体形式实现,而其中只有一种形式可以与实际的现实世界相匹配」) · text/22-ch16.txt:51(搜「这些外观上的细微差异可能导致」)
抓取的状态与两种动作第16章 模拟环境中机器人学习text/22-ch16.txt:284(搜「自由度的端点位置控制和 1 自由度的夹具旋转控制」) · text/22-ch16.txt:289(搜「自由度速度控制」) · text/22-ch16.txt:292(搜「个关节的标量位置和标量速度」)
碰撞检测不准第16章 模拟环境中机器人学习text/22-ch16.txt:330(搜「注意碰撞检测不总是准确的」)
奖励第一版与第二版第16章 模拟环境中机器人学习text/22-ch16.txt:482(搜「这构成了一种稀疏奖励」) · text/22-ch16.txt:483(搜「所以我们添加了距离上的惩罚项来辅助学习」)
奖励与目标的分歧第16章 模拟环境中机器人学习text/22-ch16.txt:485(搜「密集奖励函数可能跟最终的任务目标有出入」) · text/22-ch16.txt:487(搜「尽可能地接近物体中心,而这可能导致不合适的抓取姿态」) · text/22-ch16.txt:489(搜「设定一个位于目标物体上方的位置偏移量」)
第三版的两处修正第16章 模拟环境中机器人学习text/22-ch16.txt:580(搜「如果夹具与目标物体方向相垂直」) · text/22-ch16.txt:586(搜「rotation_norm」) · text/22-ch16.txt:594(搜「偏移量」) · text/22-ch16.txt:598(搜「学习效果相比于原始的密集或稀疏奖励的情况得到进一步提」)
三版的实验结论第16章 模拟环境中机器人学习text/22-ch16.txt:677(搜「增强的奖励函数对比原始密集奖励函数体现了显著的加速学习的效果」) · text/22-ch16.txt:678(搜「探索和学习抓取物体几乎是不可能的」)
奖励工程的坦白第16章 模拟环境中机器人学习text/22-ch16.txt:652(搜「奖励函数工程是实践中一种有效结合人类先验知识来辅助学习的方式」)
结果的局限第16章 模拟环境中机器人学习text/22-ch16.txt:695(搜「尽管抓取的姿势不是很完美且成功率还不是很高」) · text/22-ch16.txt:696(搜「没有任何的示范或预训练」)
域随机化随机什么第16章 模拟环境中机器人学习text/22-ch16.txt:705(搜「随机化物理参数叫作动力学随机化」) · text/22-ch16.txt:715(搜「证对模拟环境中动力学参数和其他特征进行随机化的范围要能够覆盖现实中真实的动力学过程」)
模拟器的分工第16章 模拟环境中机器人学习text/22-ch16.txt:755(搜「有较为现实和准确的物理引擎」)
与传统控制互补第16章 模拟环境中机器人学习text/22-ch16.txt:11(搜「反向运动学」)

Footnotes

  1. 出处:「第14章 鲁棒的图像增强」第 85 段(text/20-ch14.txt:85,搜「从零开始训练一个卷积神经网络需要大量的原始-修复图像对」)、第 86 段(text/20-ch14.txt:86,搜「而是考虑使用在 ILSVRC 分类数据集」)与第 87 段(text/20-ch14.txt:87,搜「它」)。原书用的是在一个大型图像分类数据集上预训练的 ResNet50,取最后一层卷积层的激活值。 2 3

  2. 出处:「第14章 鲁棒的图像增强」第 21 段(text/20-ch14.txt:21,搜「图像增强的训练数据依赖于」)。原文还对照了图像分类与分割 —— 那些任务有自己独特的真实值。

  3. 出处:「第14章 鲁棒的图像增强」第 89 段(text/20-ch14.txt:89,搜「我们在构造观测信息时进一步考虑使用直方图信息」)与第 90 段(text/20-ch14.txt:90,搜「我们计算了 RGB 颜色空间在」)。原文给了两套颜色空间的取值范围:RGB 三个通道各 (0, 255);CIELAB 分别是 (0, 100)、(−60, 60)、(−60, 60)。 2

  4. 出处:「第14章 鲁棒的图像增强」第 96 段(text/20-ch14.txt:96,搜「无操作 7 红、绿色调整」)。这是原书的表 14.1,一共 13 个动作,索引 0 是「无操作」。 2

  5. 出处:「第16章 模拟环境中机器人学习」第 284 段(text/22-ch16.txt:284,搜「自由度的端点位置控制和 1 自由度的夹具旋转控制」)与第 289 段(text/22-ch16.txt:289,搜「自由度速度控制」)。原书代码里这两种模式分别叫「末端位置」与「关节速度」。 2

  6. 出处:「第14章 鲁棒的图像增强」第 79 段(text/20-ch14.txt:79,搜「另一个重点是定义学习和评估时的终结状态」)、第 80 段(text/20-ch14.txt:80,搜「在图像增强中的智能体需要由自己决定退出时机」)、第 81 段(text/20-ch14.txt:81,搜「它在所有动作预测的 Q 值都为负数时会退出」)、第 83 段(text/20-ch14.txt:83,搜「明确的策略并增加一个用于退出选择的」)与第 84 段(text/20-ch14.txt:84,搜「索引为 0 的动作表示」)。 2 3 4 5 6

  7. 出处:「第16章 模拟环境中机器人学习」第 482 段(text/22-ch16.txt:482,搜「这构成了一种稀疏奖励」)。原文的说法是:成功抓取的奖励是一个正数,物体掉落桌面的惩罚是同样数值大小的负数;这构成稀疏奖励,「而可能对智能体来说很难学习」。那个具体数值 −10 见脚注 12。 2 3

  8. 出处:「第16章 模拟环境中机器人学习」第 673 段(text/22-ch16.txt:673,搜「稀疏奖励函数下的值」)。原文写明:图里稀疏奖励那条曲线上的 −10 是物体掉落桌面的惩罚造成的。

  9. 出处:「第16章 模拟环境中机器人学习」第 677 段(text/22-ch16.txt:677,搜「增强的奖励函数对比原始密集奖励函数体现了显著的加速学习的效果」)与第 678 段(text/22-ch16.txt:678,搜「探索和学习抓取物体几乎是不可能的」)。原文还提到,不同奖励函数给出的奖励值范围不同,直接比较曲线可能不公平,所以另外报了抓取成功率。 2 3 4

  10. 出处:「第16章 模拟环境中机器人学习」第 483 段(text/22-ch16.txt:483,搜「所以我们添加了距离上的惩罚项来辅助学习」)与第 484 段(text/22-ch16.txt:484,搜「同时我们也惩罚夹具与桌面的碰撞来避免夹具损坏」)。原书代码里算的是平方距离。 2

  11. 出处:「第16章 模拟环境中机器人学习」第 485 段(text/22-ch16.txt:485,搜「密集奖励函数可能跟最终的任务目标有出入」)、第 486 段(text/22-ch16.txt:486,搜「它会促使夹具」)、第 487 段(text/22-ch16.txt:487,搜「尽可能地接近物体中心,而这可能导致不合适的抓取姿态」)与第 488 段(text/22-ch16.txt:488,搜「务目标之间的分歧可以参考第 18 章中的讨论」)。原书在这里明确指路到它的第 18 章,也就是我们的第 20 章。

  12. 出处:「第16章 模拟环境中机器人学习」第 489 段(text/22-ch16.txt:489,搜「设定一个位于目标物体上方的位置偏移量」)与第 589 段(text/22-ch16.txt:589,搜「将夹具和物体之间距离的负数作为奖励函数的一部分可能会导致非最优的夹取」)。

  13. 出处:「第16章 模拟环境中机器人学习」第 594 段(text/22-ch16.txt:594,搜「偏移量」)。原书代码里这一行写的是 offset=0.08,并把平方距离里的目标高度换成了「物体高度加这个偏移」。 2

  14. 出处:「第16章 模拟环境中机器人学习」第 580 段(text/22-ch16.txt:580,搜「如果夹具与目标物体方向相垂直」)与第 586 段(text/22-ch16.txt:586,搜「rotation_norm」)。原书代码里这个系数写作 rotation_norm = 0.02,惩罚项是当前姿态与目标姿态各分量之差的绝对值之和取负。 2

  15. 出处:「第16章 模拟环境中机器人学习」第 598 段(text/22-ch16.txt:598,搜「学习效果相比于原始的密集或稀疏奖励的情况得到进一步提」)。

  16. 出处:「第16章 模拟环境中机器人学习」第 652 段(text/22-ch16.txt:652,搜「奖励函数工程是实践中一种有效结合人类先验知识来辅助学习的方式」)与第 655 段(text/22-ch16.txt:655,搜「从专家示范」)。原文在同一段里指出,除了奖励函数工程,从专家示范中学习也是实践中一种有效的办法(原书第 8 章,也就是我们的第 12、13 章)。 2 3

  17. 出处:「第14章 鲁棒的图像增强」第 72 段(text/20-ch14.txt:72,搜「当前状态和选择动作完」)。原文的完整说法是:当前状态和选择的动作完全决定了状态转移,也就是环境没有不确定性。

  18. 出处:「第16章 模拟环境中机器人学习」第 45 段(text/22-ch16.txt:45,搜「一个真实的模拟不意味着」)、第 49 段(text/22-ch16.txt:49,搜「境可以通过不同的具体形式实现,而其中只有一种形式可以与实际的现实世界相匹配」)与第 51 段(text/22-ch16.txt:51,搜「这些外观上的细微差异可能导致」)。 2 3

  19. 出处:「第16章 模拟环境中机器人学习」第 753 段(text/22-ch16.txt:753,搜「这些软件包或者平台对于不同的应用有不同的特征」)与第 755 段(text/22-ch16.txt:755,搜「有较为现实和准确的物理引擎」)。原书一共列了八个模拟器,我们只摘了它给出长处对照的那几个。注意转码文本里 MuJoCo 被写成了「MoJoCo」。

  20. 补充(不在书里):MuJoCo 现在是免费开源的 —— 仓库地址是 https://github.com/google-deepmind/mujoco ,采用 Apache License 2.0,README 里写明「This repository is maintained by Google DeepMind」,版权声明为「Copyright 2021 DeepMind Technologies Limited」。来源:该仓库首页(查阅于 2026-08-29)。我们没有核到具体的收购与开源日期,所以这里只陈述现状。

  21. 出处:「第16章 模拟环境中机器人学习」第 705 段(text/22-ch16.txt:705,搜「随机化物理参数叫作动力学随机化」)、第 707 段(text/22-ch16.txt:707,搜「物体颜色、光照条件和物体材质也可以被随机化」)、第 714 段(text/22-ch16.txt:714,搜「要保」)与第 715 段(text/22-ch16.txt:715,搜「证对模拟环境中动力学参数和其他特征进行随机化的范围要能够覆盖现实中真实的动力学过程」)。 2 3 4

  22. 出处:「第16章 模拟环境中机器人学习」第 292 段(text/22-ch16.txt:292,搜「个关节的标量位置和标量速度」)与第 321 段(text/22-ch16.txt:321,搜「维数为 7」)。原书代码里这个状态是 7 个关节位置、7 个关节速度、3 维目标位置拼起来的。

  23. 出处:「第16章 模拟环境中机器人学习」第 695 段(text/22-ch16.txt:695,搜「尽管抓取的姿势不是很完美且成功率还不是很高」)与第 696 段(text/22-ch16.txt:696,搜「没有任何的示范或预训练」)。原文说的是几千个片段之后,机器人已经能从一个固定的目标位置把物体抓起来。 2

  24. 出处:「第14章 鲁棒的图像增强」第 336 段(text/20-ch14.txt:336,搜「全局亮度会增加」)。这是原书图 14.2 的图注。

  25. 出处:「第16章 模拟环境中机器人学习」第 330 段(text/22-ch16.txt:330,搜「注意碰撞检测不总是准确的」)。这是原书代码里的一条注释,而「有没有抓到」这个判定正是靠夹具护垫上的碰撞检测加一个近距离传感器。

  26. 出处:「第16章 模拟环境中机器人学习」第 11 段(text/22-ch16.txt:11,搜「反向运动学」)。原书明说不能指望深度强化学习完全取代反向运动学或 PID 这类传统控制方法,两者是互补的。