自己造环境 — 模型、规划与树搜索
这一章讲三件事: 为什么「自己造一个环境」是省样本的另一条路; 造出来之后,真实经验和模拟经验怎么配着用; 以及在这个造出来的环境里往前搜的三种办法,各自差在哪一步。
它在全书链条里的位置:第 11 章那八个障碍的第二味药。 第 12、13 章拿人的示范省样本,这一章拿学出来的环境省样本 —— 两条药方的分界线只有一条:★ 样本从谁那里来。★ 一边是人给的,一边是自己造的。 另外,这一章那棵搜索树是第 19 章 AlphaZero 的 通用版本。
顶层全景:一个 4×4 的迷宫,一次真实走步换来两格的价值传播
这一章从头到尾用同一个迷宫。
4×4 的格子。左上角 (0,0) 是起点,右下角 (3,3) 是终点。
走到终点给 +1,其余每一步都是 0。折扣 0.9。
(这个迷宫和下面所有数值都是**为演示编的**,不是书里的;
Dyna-Q 的七个步骤与三种搜索的做法是书里的。)
┌─────┬─────┬─────┬─────┐
│(0,0)│ │ │(0,3)│ ★ 起点在左上 ★
├─────┼─────┼─────┼─────┤
│ │ │ │(1,3)│
├─────┼─────┼─────┼─────┤
│ │ │ │(2,3)│ ← 这一格「往下」一步就到终点
├─────┼─────┼─────┼─────┤
│ │ │ │(3,3)│ ★ 终点,+1 ★
└─────┴─────┴─────┴─────┘
这一轮发生了什么(取学习率 1,让数好算):
① 真实走一步: 从 (0,0) 往右走到 (0,1),奖励 0
→ 更新 Q((0,0), 右):还是 **0**(周围什么都还没学到)
② 记进模型: 「在 (0,0) 往右 → 奖励 0,到 (0,1)」 ★ 这一步是这一章新加的 ★
③ 规划 5 次(从历史里随机抽一条已经走过的组合,问模型,做一次一模一样的更新):
第 1 次 抽到 ((2,3), 下) → 模型说「奖励 +1,到终点」
→ Q((2,3), 下) 从 0 跳到 **1.0** ★ 一次真环境交互都没花 ★
第 2 次 抽到 ((1,3), 下) → 模型说「奖励 0,到 (2,3)」
→ Q((1,3), 下) = 0.9 × 1.0 = **0.9** ★ 价值又往回传了一格 ★
第 3 次 抽到 ((0,0), 右) → 还是 0(它离终点还远)
第 4、5 次 抽到前面那两条 → 数已经稳了,不再变
★ 这一轮只在真环境里走了一步,而价值从终点往回传了两格。★
★ 省下的那些交互,就是这一章的全部收益。★
图说:这就是本章的主走查。第 2 节讲 ② 那个模型是什么、怎么学,
第 4、5 节讲 ③ 那五次重放为什么值钱,第 6 到 8 节把 ③ 换成三种更聪明的搜索。
1. 省样本的第二条路
这一节回答:第 12、13 章已经在省样本了,为什么还要另起一章。
先看现象:交互贵在哪,书里说得比第 11 章还具体
第 11 章给的是账单(7 台真机、800 小时)。这一章给的是三条具体的原因1:
| 为什么贵 | 书里的说法 |
|---|---|
| 危险 | 工业应用里,「一些状态可以指代系统崩溃或者设备爆炸」,而探索过程要去试这些状态 |
| ★ 慢,而且没法并行 ★ | 「在实际环境中只能顺序演算,不能并行计算」 —— 这一条最要命 |
| 磨损 | 机器人每试一次都在磨自己(第 11 章那条) |
★ 第二条值得停一下:真实世界只有一个,你没法开一百个副本同时跑。★ 这不是钱的问题,是物理的问题 。
于是这一章的思路
书里的话:在一些场景下,「我们希望能够使用模拟环境来取代实际环境进行探索和经验积累」2。
第 12、13 章: 样本来自 ★ 人 ★ —— 找个专家做一遍给你看
★ 这一章: 样本来自 ★ 你自己造的一个环境 ★ —— 而这个环境是学出来的
★ 两条药方治同一个病,分界线只有一条:样本从谁那里来。★
2. 「模型」这个词,以及一字之差的两个动作
这一节把两个最容易混的词钉死。
「模型」在这一行专指什么
第 06 章第 5 节挂过一次牌:在强化学习里,「模型」不是「神经网络」的意思, 它专指环境的动力学 —— 做了这个动作会到哪、给多少奖励。
这一章把它拆成两个具体的东西3:
| 名字 | 它回答什么 | 输入 → 输出 |
|---|---|---|
| 转移模型:做了这个动作会到哪一个局面 | 环境接下来长什么样 | (局面, 动作) → 下一个局面 |
| 奖励模型:做了这个动作给多少分 | 这一步值多少 | (局面, 动作) → 一个数 |
主走查里 ② 那一步记的就是这两样:「在 (0,0) 往右 → 奖励 0(奖励模型),到 (0,1)(转移模型)」。
书里还提到一种更麻烦的情况:局面不能被观察信息完整表示时(第 01 章第 3 节那个「看到的不等于当前状态」), 还要另外设两个模型 —— 观察模型:给定局面,会看到什么; 以及表示模型:根据上一个局面、这次的动作和这次看到的东西,推断现在真正处在哪个局面。
但为了集中讨论,书里假设局面是完全可观测的3 —— 我们这一章也照这个假设走。
一字之差:演算与规划
★ 这是这一章最要紧的一个区分,而它只差一个字。★
书里给的两个说法2:
★ 在真实环境里展开一条轨迹 → 书里叫「演算」★
★ 在学出来的模型里展开一条轨迹 → 书里叫「规划」★
书里的原话:「在模拟环境中的演算被称为规划」,
而它「可通过并行计算高效地为策略学习产生大量模拟经验」。[^2]
★ 这一章所有 算法省下的钱,全在这一个字上。★
同一个动作(往前展开几步),在真环境里做要付真钱,在模型里做几乎不要钱。
模型怎么学:它就是监督学习
书里一句话说完:模型学习是一个监督式的拟合学习过程, 目标是建立一个虚拟的环境,「其中的转移关系和奖励关系和真实环境保持一致」4。
★ 也就是说:这里没有奖励、没有价值、没有贝尔曼方程 —— 只是拿「(局面, 动作)」当输入、拿「下一个局面和奖励」当答案,去拟合。★ 这和第 12 章第 2 节那个行为克隆是同一种活,只是拟合的对象不同。
书里给了两种时机5:
| 时机 | 什么情况下用 |
|---|---|
| 直接学 | 已经有一批历史交互数据了 —— 先把模型学好,再拿它当模拟环境练策略 |
| ★ 迭代学 ★ | 一开始没有足够数据 —— 学一点模型、练一点策略、拿新策略再去真环境采一点、再学模型…… |