对应:Stanford CS234 Lecture 10–11(Offline RL / Batch RL, Off-Policy Evaluation) 配套代码:
code/lecture10/(只需 numpy) 预计阅读时间:4 小时
0. 本讲导航
0.1 本讲要回答的问题
不能与环境交互,只有一批历史数据。怎样评估一个新策略?怎样学出一个好策略?
前面几乎所有算法都要求智能体能反复尝试:不好就换,不确定就去试。但在很多最重要的应用中,试错是不可接受的:
- 医疗:不能拿病人试验一个未经验证的治疗方案。但医院有几十年的电子病历。
- 教育:不能拿一届学生去试一个可能很差的教学策略。但教育平台有数百万学生的学习记录。
- 推荐系统、广告:上线一个坏策略会直接损失用户和收入。但有海量的历史日志。
- 机器人:真实机器人试错又慢又会损坏设备。但可以复用以前收集的数据。
这就是离线强化学习(offline RL),也叫批量强化学习(batch RL)。它是 CS234 主讲人 Emma Brunskill 研究组的核心方向之一,也是 RL 走向真实世界最重要的桥梁。
它包含两个问题:
- 离策略评估(Off-Policy Evaluation, OPE):用行为策略 收集的数据,估计另一个策略 的价值。
- 离线策略学习(offline policy learning / offline control):用这批数据学出一个尽可能好的策略。
两者都要面对本课最后几讲反复出现的核心难题——分布偏移:数据来自 ,我们关心的却是 (或学到的新策略)会去的地方。
0.2 学完本讲,你应该能够
- 推导重要性采样估计量,证明它无偏,解释它的方差为什么随视界指数增长。
- 比较 IS、WIS、PDIS、WPDIS 的偏差与方差。
- 陈述覆盖假设,理解”数据中没有的信息,任何方法都变不出来”。
- 解释直接法(基于模型 / FQE)的优缺点;推导双重稳健估计并说明”双重”的含义。
- 解释为什么在历史数据上直接跑 Q-learning 会失败——外推误差。
- 理解悲观原则,说出 LCB、策略约束(BCQ)、价值正则(CQL)三类方法的思路。
- 根据数据的质量(专家 / 随机 / 混合)判断哪类方法更合适。
0.3 先修知识
| 知识点 | 用在哪里 | 最低要求 |
|---|---|---|
| 第 3 讲:MC 评估、确定性等价、偏差–方差 | 第 2、3 节 | 必须 |
| 第 4 讲:Q-learning、异策略、最大化偏差 | 第 4 节 | 必须 |
| 第 5 讲:致命三角 | 第 4 节 | 看过即可 |
| 第 6 讲:似然比技巧(转移概率消失) | 第 2 节 | 必须 |
| 期望的”换测度”: | 第 2 节 | 本讲会推导 |
0.4 本讲地图
第1节 问题设定:行为策略、评估策略、覆盖
│
├──► 离策略评估
│ 第2节 重要性采样:IS、WIS、PDIS;视界诅咒;覆盖假设
│ 第3节 直接法与双重稳健:DM、FQE、DR、WDR
│
└──► 离线控制
第4节 外推误差:为什么离线 Q-learning 会失败
第5节 悲观原则:LCB、策略约束、CQL
第6节 数据质量与方法选择
│
第7节 离线 RL 在真实世界
1. 问题设定
1.1 数据从哪里来?
我们有一个数据集 ,每条轨迹 由某个行为策略 与环境交互产生(比如”医院过去的治疗习惯”)。
- 可能已知(比如一个线上系统的随机推荐策略,每个动作的概率都有记录);
- 也可能未知(比如医生的决策,只能从数据中估计)。
我们不能再与环境交互。
1.2 两个问题
- 离策略评估(OPE):给定一个评估策略 (比如”新的治疗方案”),估计 。
- 离线控制:从 中学出一个策略 ,使 尽量大。
离线控制离不开离策略评估:即使学出了一个策略,上线之前也必须先评估它——而评估又只能用离线数据。
1.3 本讲的实验平台
治疗决策 MDP(代码 treatment_mdp.py):
- 病人的健康状况 0~4(0 = 危重,4 = 健康),从 2 出发,共 步;
- 保守治疗:好转 0.2、不变 0.5、恶化 0.3;积极治疗:好转 0.6、不变 0.2、恶化 0.2,但有 0.5 的副作用代价;
- 每一步奖励 = 健康状况 − 治疗代价(再加上均值为 0、标准差为 1 的噪声——病人的反馈本来就有随机性);
- 行为策略 (医院过去的做法):不管病情,70% 保守、30% 积极;
- 评估策略 (新方案):病情 ≤ 2 时 90% 积极治疗,否则 90% 保守治疗。
时,,。
2. 重要性采样
2.1 为什么不能直接平均?
用 1000 条历史数据直接计算平均回报,得到 20.33——这是 的价值,不是 的(23.75)。数据中的动作是按 选的,不是按 选的。
2.2 重要性采样估计量
换测度的技巧:对任意两个分布 、(只要 的地方 ):
用 的样本估计 下的期望,只需要给每个样本乘以权重 。
把 换成轨迹 , 换成 下的轨迹分布, 换成 下的轨迹分布。轨迹概率之比:
环境的转移概率在分子分母中完全相同,约掉了——和第 6 讲策略梯度中”转移概率消失”是同一个道理。所以不需要知道模型,只需要知道两个策略在数据中每一步的动作概率。
重要性采样(IS)估计量:
它是无偏的:。
2.3 问题:方差
权重 是 个比值的乘积。代码 01_importance_sampling.py 演示 1, 时 1000 条轨迹的权重:最小 ,中位数 0.002,最大 156.8;权重最大的 1% 的轨迹占了总权重的 67%。
绝大多数轨迹”不像” 会走出来的,权重接近 0;极少数碰巧很像的轨迹,权重巨大。IS 的估计几乎由这几条轨迹决定——方差极大。
2.4 三种改进
加权重要性采样(WIS,也叫自归一化 IS):
把权重归一化成”加权平均”——估计值一定落在观察到的回报的范围内,不会被一个巨大的权重拉到天上去。有偏(分母也是随机的),但一致(数据增多时偏差趋于 0),方差小得多。
逐决策重要性采样(PDIS):第 步的奖励只取决于前 步的动作,与之后的动作无关,所以 只需要乘以”到 为止”的比值乘积:
仍然无偏,方差更小。这和第 6 讲”利用因果性(未来的动作影响不了过去的奖励)“是同一个思想。
加权逐决策重要性采样(WPDIS):在每个时刻 分别做自归一化。
2.5 实验
,每次 200 条历史数据,重复 500 次(代码 01 演示 2,真实值 23.754):
| 估计量 | 偏差 | 标准差 | 均方根误差 |
|---|---|---|---|
| IS | +1.74 | 33.51 | 33.55 |
| WIS | +2.62 | 3.87 | 4.68 |
| PDIS | +0.25 | 10.29 | 10.29 |
| WPDIS | +1.34 | 2.61 | 2.93 |
IS 和 PDIS 近似无偏,但方差大;加权的版本有一点偏差,但方差小得多,综合误差最小。实践中常常首选 WPDIS / WIS。
2.6 视界诅咒
每次 200 条数据,重复 300 次,不同视界下的均方根误差(演示 3):
| 真实值 | IS | WIS | PDIS | WPDIS | |
|---|---|---|---|---|---|
| 2 | 3.67 | 0.55 | 0.29 | 0.48 | 0.28 |
| 5 | 10.76 | 3.86 | 1.53 | 2.07 | 1.03 |
| 10 | 23.75 | 56.75 | 4.45 | 7.93 | 2.88 |
| 20 | 50.73 | 124.54 | 10.14 | 32.85 | 6.13 |
| 40 | 105.04 | 312.34 | 21.18 | 97.49 | 13.13 |
IS 的误差随视界急剧增大:权重是 个比值的乘积,方差随 指数增长。这叫视界诅咒(curse of horizon)。加权的版本大大缓解了它,但长视界下所有重要性采样方法都会越来越困难。(近年有一类”边际化重要性采样”方法,直接估计状态分布之比而不是轨迹概率之比,从根本上避免了乘积,这里不展开。)
2.7 覆盖假设
重要性采样有一个硬性前提:只要 ,就必须有 。否则比值 无定义,更根本的是——数据中根本不会出现 想做的那些动作。
演示 4:假设历史上病情 ≤ 1 时从不积极治疗(而新方案恰恰想在这时积极治疗):
| 估计量 | 估计的平均值 | 偏差 |
|---|---|---|
| IS | 15.77 | −7.98 |
| WIS | 29.43 | +5.67 |
| PDIS | 18.62 | −5.13 |
| WPDIS | 28.42 | +4.66 |
所有估计量都有明显偏差,而且数据再多也消除不了。这不是估计方法的缺陷,而是数据本身信息不足:没有任何记录能告诉我们”危重病人积极治疗会怎样”。这叫覆盖假设(也叫支撑集假设、正性假设)。在因果推断中,这对应着”没有对照组的处理效应无法识别”。
3. 直接法与双重稳健估计
3.1 直接法(DM)
另一条思路:先用数据学一个模型,再在模型上精确评估 。
- 基于模型:数出经验模型 、(第 3 讲的确定性等价),然后用动态规划计算 的价值。
- 拟合 Q 评估(FQE):不显式建模,而是直接在数据上迭代拟合 :用 作为回归目标。在表格情况下与基于模型的方法等价;在大规模问题中用神经网络做回归。
优点:方差小——它把所有数据汇集到一个模型里(回忆第 3 讲:确定性等价是数据效率最高的方法)。 缺点:模型不准时有偏,而且如果模型类选错了(比如用线性函数去拟合非线性的动力学),偏差不会随数据增多而消失。
3.2 双重稳健估计(DR)
思路:用模型给出一个”基准估计”,再用重要性采样只修正模型的误差部分。
对每条轨迹从后往前递推(Jiang & Li, 2016):
估计值为所有轨迹 的平均。其中 、 是在模型上算出的 的价值。
逐项理解:
- :模型给出的基准估计;
- :实际观察到的结果与模型预测之差——模型的误差;
- 乘以 :用重要性采样把这个误差从 的分布”搬到” 的分布上。
为什么叫”双重稳健”? 两个条件只要满足一个,DR 就无偏:
- 重要性比正确( 已知):对 求期望,,而后一项恰好等于 ,与前面的 抵消——模型的影响在期望中完全消掉了,无论模型多差。
- 模型正确():括号里的误差期望为 0,无论重要性比是否准确。
方差:模型越准,要修正的误差越小,乘上一个大权重也不会带来太大方差。
加权双重稳健(WDR,Thomas & Brunskill, 2016):把 DR 中的重要性权重换成自归一化的权重(就像 WIS 之于 IS),有一点偏差,但方差通常小得多。它是实践中最常用的 OPE 方法之一。
3.3 实验
,每次 200 条数据,重复 300 次(代码 02_doubly_robust.py 演示 1)。“错误模型”把两种治疗的效果对调了,而且把奖励整体高估了 1:
| 估计量 | 偏差 | 标准差 | 均方根误差 |
|---|---|---|---|
| WPDIS | +1.50 | 2.43 | 2.86 |
| DM(学到的模型) | +0.01 | 0.76 | 0.76 |
| DM(错误模型) | +3.57 | 0.00 | 3.57 |
| DR(学到的模型) | −0.04 | 3.61 | 3.62 |
| DR(错误模型) | +0.18 | 4.62 | 4.62 |
| WDR(学到的模型) | −0.03 | 2.35 | 2.35 |
| WDR(错误模型) | −0.90 | 3.22 | 3.35 |
| DR(真实模型) | −0.03 | 3.60 | 3.60 |
这张表需要仔细读:
- DM(学到的模型)误差最小。这个问题只有 5 个状态、2 个动作,200 条轨迹足以把模型估计得很准;直接法把所有轨迹的信息汇集到一个模型里。而重要性采样类方法只能通过每条轨迹的权重来利用数据,还会被权重放大奖励的噪声——即使用真实模型,DR 的标准差仍有 3.6:模型只能预测”期望”奖励,每一步奖励的随机噪声仍然乘着重要性权重。WDR 的自归一化大大缓解了这一点。
- DM(错误模型)严重有偏(+3.57),而且它根本没用数据——数据再多也纠正不了。
- DR(错误模型)几乎无偏(+0.18)!重要性采样的修正项把模型的错误纠正了回来。WDR(错误模型)有一点自归一化带来的偏差(−0.90),但远小于 DM。
数据量的影响(演示 2,均方根误差):
| 数据条数 | WPDIS | DM(学到) | DM(错误) | DR(错误) | WDR(学到) | WDR(错误) |
|---|---|---|---|---|---|---|
| 20 | 4.75 | 2.44 | 3.57 | 13.51 | 4.38 | 6.87 |
| 50 | 4.06 | 1.57 | 3.57 | 6.69 | 3.54 | 4.97 |
| 200 | 2.99 | 0.79 | 3.57 | 4.66 | 2.27 | 2.95 |
| 1000 | 1.86 | 0.33 | 3.57 | 2.36 | 1.39 | 1.80 |
错误模型的 DM 停在一个固定的偏差上;DR / WDR 即使用错误的模型,误差也在持续下降。
怎么选? 在小问题中,模型容易学准,直接法往往最好。在大规模问题中(连续状态、神经网络函数逼近),模型一定有误差,直接法的偏差可能很大、而且很难察觉——这时双重稳健方法提供的”保险”就非常值得。
3.4 覆盖不足时
演示 3(病情 ≤ 1 时历史上从不积极治疗):WPDIS、DM(学到)、DR(学到)、WDR(学到)的偏差分别为 +4.56、−4.44、−4.57、−4.57——所有从数据中学习的方法都失败了。DM 在没见过的 (状态, 动作) 上只能用任意的默认假设;重要性采样的修正也触及不到它们。只有用”真实模型”的 DR 是无偏的(−0.07)——模型本身补上了数据缺失的部分(双重稳健中”模型正确”的那一半)。但真实模型恰恰是我们没有的。
数据中没有的信息,任何估计方法都变不出来。 这是离线 RL 最根本的限制。
3.5 置信区间
在医疗等高风险场景中,仅有一个”点估计”是不够的——我们需要知道”新策略至少有多好”。高置信度离策略评估(Thomas, Theocharous & Ghavamzadeh, 2015)利用集中不等式,给出 的置信下界:只有当下界超过当前策略的价值时,才部署新策略。这个”保守部署”的思想和下面的悲观原则一脉相承。
4. 离线控制:外推误差
4.1 为什么不直接跑 Q-learning?
Q-learning 是异策略的(第 4 讲):它可以用任何策略收集的数据学习最优 。那么在历史数据上反复跑 Q-learning,不就能学出最优策略了吗?
问题出在 Q-learning 目标中的 :
会考虑 的所有动作,包括数据中从来没出现过的动作。这些动作的 值从来没有被数据更新过,只是一个任意的初始值(在深度 RL 中,就是神经网络在没见过的输入上随意外推出来的值)。如果这个值碰巧偏高:
- 选中它;
- 虚假的高估值通过自举传播给所有前驱状态;
- 最终的贪心策略也会选这些没见过的动作;
- 离线学习无法通过尝试来发现并纠正这个错误。
这叫外推误差(extrapolation error),或分布外动作(out-of-distribution actions)问题。在线 RL 中,高估的动作会被尝试、然后被纠正;离线 RL 失去了这个纠错机制。它也可以看作第 4 讲最大化偏差的极端形式,以及第 5 讲致命三角的另一个面貌(函数逼近 + 自举 + 极端的异策略)。
4.2 实验:岩浆网格
. . . . G G:终点 +10 L:岩浆 -10 每步 -1
. L L L . 10% 概率随机滑动,γ = 0.95
. . . L .
L L . L . 最优路线:沿最下面一行向右,再沿最右一列向上
S . . . . 最优价值:-2.50
用”接近专家”的行为策略(最优策略 + 10% 随机动作)收集 20 个回合,共 177 条转移,只覆盖了 100 个 (状态, 动作) 对中的 27 个。
朴素离线 Q 学习(在经验模型上做价值迭代,没见过的 保持初始值 0):
- 起点处估计的价值:0.00
- 其贪心策略的真实价值:−10.58
学到的贪心策略(? = 选了数据中从没出现过的动作):
? ? ? ? G
? L L L ↑
? ? ? L ↑
L L ? L ↑
? ? → → ↑
严重高估。原因非常具体:每一步奖励都是 −1,见过的动作的 值大多是负的;没见过的动作的 值停在 0——看起来反而是最好的!于是策略里满是问号:它专门挑数据里没有的动作去做,其中一些把它带进岩浆,或让它原地打转。
5. 悲观原则
5.1 核心思想
解决外推误差的核心思想是悲观(pessimism):对数据中很少出现或没有出现的动作,不要轻信它们的价值。
这与第 11 讲将要讲的”面对不确定性时保持乐观”(UCB)恰好相反:
| 在线学习(探索) | 离线学习 | |
|---|---|---|
| 能不能尝试? | 能 | 不能 |
| 对不确定的动作 | 乐观:去试一试,错了可以纠正 | 悲观:不去碰,因为错了无法纠正 |
| 目的 | 发现更好的动作 | 避免灾难性的错误 |
理论研究表明(Jin, Yang & Wang, 2021;Rashidinejad et al., 2021),悲观的离线 RL 算法只要求数据覆盖了某个好策略会走的路线(“单策略集中性”),就能学出接近那个策略的结果;而不悲观的算法则要求数据覆盖所有策略会去的地方——这在实践中几乎不可能满足。
5.2 三类方法
方法 1:置信下界(LCB)/ 不确定性惩罚。对每个 减去一个与数据量有关的惩罚:
时, 设为可能的最低值。数据越少,惩罚越大。基于模型的离线 RL 方法(MOPO、MOReL)用模型的不确定性做类似的惩罚。
方法 2:策略约束。干脆不考虑数据里没有的动作:目标中的 只在”数据中出现过的动作”里取,最终策略也只从这些动作中选。BCQ(Fujimoto et al., 2019)用一个生成模型估计”数据中可能出现的动作”,只在其中选择;TD3+BC 在策略优化的目标中加一个行为克隆项,让策略不要离数据太远。
方法 3:价值正则化——保守 Q 学习(CQL,Kumar et al., 2020)。在普通的 TD 损失之外加一个正则项:
log-sum-exp 是 的”软最大值”,最小化它会压低 处所有动作的 ;减去数据中动作的 又把数据中出现的动作往上拉。净效果:没见过的动作被压低。可以证明,CQL 学到的 是真实 的一个(大致的)下界。
还有一类”隐式”方法,比如 IQL(Kostrikov et al., 2022),它完全避免在目标中对没见过的动作求 ,而是用”在数据中出现过的动作”的价值分布的高分位数来近似最优价值。
5.3 实验:同一批接近专家的数据
| 方法 | 起点处估计的价值 | 真实价值 |
|---|---|---|
| 朴素离线 Q 学习 | 0.00 | −10.58 |
| 悲观:LCB 惩罚 | −11.45 | −2.50 |
| 悲观:支撑集约束 | −2.11 | −2.50 |
| 悲观:CQL | −2.24 | −2.50 |
三种悲观方法都学到了最优策略。它们在数据覆盖的路线上不再选没见过的动作,估计的价值也不再虚高(LCB 甚至明显低估——这是有意为之的保守)。
5.4 悲观过了头
悲观也有代价。演示 4:只有 20 个完全随机的回合,数据很少、很零散。LCB 学到的策略在起点选择了”向上”——起点正上方就是岩浆,真实价值 −10.54。
数据太少时,通往终点的每一步都只有一两个样本,不确定性惩罚层层累积,“走一条长路去终点”的悲观估计比”立刻结束”还要差——一个确定的坏结果,胜过一个不确定的好结果。悲观的强度需要根据数据量仔细权衡。
6. 数据质量与方法选择
三种数据(10 次独立收集的平均;表中为贪心策略的真实价值,最优为 −2.50,从起点直接走进岩浆约为 −10.5):
| 数据 | 行为克隆 | 朴素离线 Q 学习 | LCB | 支撑集约束 | CQL |
|---|---|---|---|---|---|
| 接近专家(20 回合) | −2.58 | −12.14 | −2.58 | −5.92 | −2.58 |
| 完全随机(200 回合,随机起点) | −14.56 | −2.50 | −3.28 | −2.50 | −4.10 |
| 一半一半(50 回合) | −2.57 | −7.86 | −2.50 | −3.58 | −2.50 |
解读:
- 接近专家的数据:行为克隆就很好——照着专家做就行。朴素 Q 学习被外推误差毁了。LCB、CQL 与行为克隆一样好。支撑集约束稍差:它只要求”见过至少一次”,专家偶然做过一次的随机动作也被当作可选项。
- 完全随机的数据:行为克隆很差——模仿的是一个随机策略。朴素 Q 学习反而达到了最优——数据覆盖了几乎所有 ,外推误差不再是问题。LCB、CQL 略差:悲观会低估那些数据较少的好动作。
- 混合数据:LCB 和 CQL 最好。
没有一种方法在所有数据上都最好,但悲观方法(尤其 LCB、CQL)是最稳健的——在不知道数据质量的情况下,它们很少犯大错。这与离线 RL 基准测试(如 D4RL)上的普遍发现一致:数据越接近专家,模仿学习越有竞争力;数据越多样,RL 的优势越明显;而悲观的 RL 方法在各种数据上都表现稳定。
7. 离线 RL 在真实世界
7.1 应用与挑战
- 医疗:从重症监护的电子病历中学习治疗策略(如脓毒症的补液与升压药决策)。这类研究非常有前景,但也充满争议:历史数据中的混杂因素(医生根据病人未被记录的状况做决策)会让所有 OPE 方法产生偏差;覆盖假设常常不成立;而且 OPE 的结果很难验证。
- 教育:用历史学习数据评估和改进教学策略(Brunskill 研究组的大量工作)。
- 推荐系统:用日志数据评估新的推荐策略,是工业界最成熟的 OPE 应用。
- 机器人与自动驾驶:复用大规模已有数据,减少昂贵且危险的在线试错。
7.2 从离线到在线
实践中常常先离线学习一个”足够安全”的策略,再小心地部署到线上,一边使用一边收集新数据、持续改进(离线到在线)。悲观的离线学习 + 谨慎的在线探索,是把 RL 用到高风险场景的主流路线。
7.3 与前几讲的联系
| 讲次 | 数据来源 | 分布偏移的表现 | 应对 |
|---|---|---|---|
| 第 8 讲 模仿学习 | 专家示范 | 学习者到了专家没去过的状态 | DAgger、噪声注入 |
| 第 9 讲 RLHF | 参考模型的回答 + 人类比较 | 奖励模型在分布外不可信 | KL 惩罚、奖励模型集成 |
| 第 10 讲 离线 RL | 行为策略的历史数据 | 价值估计在分布外不可信 | 悲观原则、覆盖分析 |
三者本质上是同一个问题的不同侧面:我们只能信任数据覆盖到的地方。
8. 本讲总结
8.1 核心概念清单
- 离线 RL:不能交互,只有历史数据;两个问题:离策略评估(OPE)与离线控制。
- 重要性采样:,转移概率约掉;无偏,但方差随视界指数增长(视界诅咒)。
- WIS / PDIS / WPDIS:自归一化减小方差(有偏但一致);逐决策利用因果性。
- 覆盖假设:;违反时任何方法都有偏。
- 直接法:模型 / FQE;方差小、数据效率高,但模型错时有偏。
- 双重稳健:模型基准 + 重要性采样修正误差;模型对或重要性比对,满足其一即无偏;WDR 进一步降低方差。
- 外推误差:Q-learning 的 max 选中没见过的动作,其价值是任意的,离线无法纠正。
- 悲观原则:LCB 惩罚、策略约束(BCQ)、价值正则(CQL)、隐式方法(IQL);离线要悲观,在线要乐观。
- 悲观的代价:低估数据少的好动作;过度悲观可能选择”确定的坏结果”。
- 数据质量决定方法:专家数据 → 模仿学习;多样数据 → RL;未知质量 → 悲观 RL 最稳健。
8.2 公式速查表
| 名称 | 公式 |
|---|---|
| 重要性比 | |
| 轨迹权重 | |
| IS | |
| WIS | |
| PDIS | |
| DR | , |
| 覆盖假设 | |
| LCB 更新 | |
| CQL 正则项 |
8.3 中英术语对照表
| 中文 | 英文 | 中文 | 英文 |
|---|---|---|---|
| 离线强化学习 | Offline RL | 批量强化学习 | Batch RL |
| 离策略评估 | Off-policy evaluation (OPE) | 行为策略 | Behavior policy |
| 评估策略 | Evaluation / target policy | 重要性采样 | Importance sampling (IS) |
| 加权重要性采样 | Weighted IS (WIS) | 逐决策重要性采样 | Per-decision IS (PDIS) |
| 自归一化 | Self-normalized | 视界诅咒 | Curse of horizon |
| 覆盖假设 | Coverage assumption | 支撑集 | Support |
| 直接法 | Direct method (DM) | 拟合 Q 评估 | Fitted Q Evaluation (FQE) |
| 双重稳健 | Doubly robust (DR) | 加权双重稳健 | Weighted doubly robust (WDR) |
| 高置信度离策略评估 | High-confidence OPE | 混杂因素 | Confounder |
| 外推误差 | Extrapolation error | 分布外动作 | Out-of-distribution (OOD) actions |
| 悲观原则 | Pessimism | 置信下界 | Lower confidence bound (LCB) |
| 策略约束 | Policy constraint | 保守 Q 学习 | Conservative Q-Learning (CQL) |
| 单策略集中性 | Single-policy concentrability | 离线到在线 | Offline-to-online |
9. 练习题
练习 1(重要性采样):单步问题,两个动作。,。数据中有 4 个样本:动作 0 奖励 1、动作 0 奖励 1、动作 0 奖励 1、动作 1 奖励 5。分别计算 IS 和 WIS 估计。真实的 大约是多少(假设观察到的奖励就是期望奖励)?
参考答案
权重:动作 0 为 ,动作 1 为 。 IS:。 WIS:。 真实值:。WIS 更接近。IS 在这个样本中高估,因为动作 1 在 4 个样本中出现了 1 次(25%),而它在 下的概率是 20%,大权重放大了这个随机偏差。
练习 2(无偏性):证明 IS 估计量是无偏的:。需要什么条件?
参考答案
。条件:对所有 的轨迹,,即覆盖假设。否则那些轨迹在求和中被漏掉了。
练习 3(视界诅咒):假设每一步的比值 独立同分布,,。那么 步的权重 的方差是多少? 和 时分别约为多少?
参考答案
,,所以 。:约 56.7;:约 。方差随视界指数增长。
练习 4(双重稳健):在 DR 的递推中,如果模型给出 (一个”什么都不知道”的模型),DR 退化成什么估计量?
参考答案
。展开得 ——就是 PDIS。所以 DR 可以看作”用模型改进过的 PDIS”,模型越好,改进越大。
练习 5(外推误差):在 4.2 节的岩浆网格中,如果把朴素离线 Q 学习的初始值从 0 改成 −30(远低于任何真实价值),会发生什么?这是否”解决”了外推误差?
参考答案
没见过的动作的 值停在 −30,低于所有见过的动作, 不会再选它们,策略只在数据中的动作里选——效果与支撑集约束相同。实测(10 次平均的真实价值):接近专家的数据从 −12.14 提升到 −5.92,一半一半的数据从 −7.86 提升到 −3.58,与支撑集约束的结果完全一致。在表格情况下这确实能”解决”外推误差(相当于一种极端的悲观初始化)。但在深度 RL 中,没见过的输入上的 值由神经网络的外推决定,无法通过”初始化”来控制——这就是为什么需要 CQL 这类显式的正则化。可以修改 03_offline_control.py 中的 q_init 验证。
练习 6(乐观 vs 悲观):为什么在线学习中对不确定的动作保持”乐观”是好的,而离线学习中应当”悲观”?用一句话概括两者的根本区别。
参考答案
在线学习中,乐观会驱使智能体去尝试不确定的动作,如果它其实不好,尝试之后估计会被纠正,代价有限;离线学习中无法尝试,乐观的错误永远不会被纠正,会直接体现在部署的策略里。根本区别:能否通过收集新数据来纠正错误。
练习 7(动手)★:在 03_offline_control.py 中调整 LCB 的惩罚系数 c(0.5、2、5、20),分别在”接近专家(20 回合)“和”完全随机(200 回合)“数据上测试。最佳的 c 是否相同?这说明了什么?
参考答案
实测结果(10 次平均的真实价值,最优为 −2.50):
| 数据 | c = 0.5 | c = 2 | c = 5 | c = 20 |
|---|---|---|---|---|
| 接近专家(20 回合) | −3.64 | −3.64 | −2.58 | −3.36 |
| 完全随机(200 回合) | −2.50 | −2.50 | −3.28 | −10.54 |
| 一半一半(50 回合) | −3.58 | −2.50 | −2.50 | −4.12 |
专家数据覆盖窄,惩罚太小时仍会选到专家偶然做过一两次的随机动作,需要足够的悲观;随机数据覆盖广,惩罚太大会低估数据较少的好动作,c = 20 时甚至退化到”直接走进岩浆”。最佳的 c 在不同数据上不同——悲观的强度应当与数据的覆盖情况匹配。而在真实问题中我们往往不知道数据的质量,这使得离线 RL 的超参数选择本身就很困难(而选择超参数又需要 OPE……)。
练习 8(思考题):在医疗数据中,医生往往根据病历上没有记录的信息(比如病人的面色、主诉的语气)来决定治疗。这对离策略评估意味着什么?重要性采样还能用吗?
参考答案
这是未观测混杂:影响医生决策的因素同时影响病人的结局,却不在数据中。此时行为策略 在”可观测的状态 “上的估计并不是医生真正使用的策略,重要性比是错的,所有 OPE 方法都可能有偏,而且偏差无法从数据中检测出来。这是把离线 RL 用于医疗的最大挑战之一,需要借助因果推断中的敏感性分析等工具。
10. 延伸阅读
- CS234 Spring 2024 Lecture 10–11 录像与课件。
- Precup, Sutton & Singh (2000),Eligibility Traces for Off-Policy Policy Evaluation:逐决策重要性采样。
- Jiang & Li (2016),Doubly Robust Off-Policy Value Evaluation for Reinforcement Learning。
- Thomas & Brunskill (2016),Data-Efficient Off-Policy Policy Evaluation for Reinforcement Learning:加权双重稳健(WDR)等。
- Thomas, Theocharous & Ghavamzadeh (2015),High Confidence Off-Policy Evaluation。
- Levine, Kumar, Tucker & Fu (2020),Offline Reinforcement Learning: Tutorial, Review, and Perspectives on Open Problems:离线 RL 的综述。
- Fujimoto, Meger & Precup (2019),Off-Policy Deep Reinforcement Learning without Exploration(BCQ):外推误差的提出。
- Kumar et al. (2020),Conservative Q-Learning for Offline Reinforcement Learning(CQL)。
- Jin, Yang & Wang (2021),Is Pessimism Provably Efficient for Offline RL?;Rashidinejad et al. (2021),Bridging Offline Reinforcement Learning and Imitation Learning: A Tale of Pessimism。
11. 下一讲预告
本讲的核心是”不能探索时怎么办”。接下来三讲转向另一面:能探索时,怎样探索最高效?
第 1 讲 04 代码和第 4 讲中,我们用 -贪心做探索——它简单,但很”笨”:随机地试,不管哪些动作更值得试。下一讲从最简单的探索问题——多臂老虎机——开始:
- 怎样衡量一个探索策略的好坏?——遗憾(regret);
- 为什么贪心和 -贪心的遗憾随时间线性增长;
- 面对不确定性时保持乐观:UCB 算法,以及它的对数遗憾;
- 遗憾的理论下界:任何算法都不可能做得比这更好。
你会看到,本讲的”悲观”与下一讲的”乐观”,恰好是同一枚硬币的两面。
下一讲之前,建议你:跑通 code/lecture10/ 下的 3 个脚本,完成练习 1、3、4,并尝试练习 5、7。