离线强化学习
离线强化学习(Offline RL,又称 Batch RL)只从预先收集好的静态数据集中学习策略,不与环境交互——这是 RL 落地真实世界(医疗、自动驾驶、工业控制)的关键技术。本页梳理分布偏移问题、CQL、BCQ、Decision Transformer、扩散策略等核心方法。前置阅读:强化学习概览、里程碑。
为什么需要离线 RL
Section titled “为什么需要离线 RL”在线 RL(online RL,指训练过程中智能体持续与环境交互、边采集数据边更新策略的范式)在棋类、游戏等模拟器中表现惊人,但真实世界落地时面临三重障碍:
- 试错成本高:医疗方案不能在患者身上随意试错,自动驾驶不能靠撞车来学习。
- 数据已存在但不可复现:医院积累了海量电子病历,车队积累了数十亿英里驾驶日志——这些都是宝贵的决策数据,但它们由各种不同策略(人类医生、不同版本的驾驶软件)混合产生。
- 在线微调风险大:即便部署后允许少量探索,安全约束也极严格。
离线 RL 的核心目标就是:从这些已有的、由多种行为策略(behavior policy,即收集数据时实际使用的策略)混合产生的静态数据集中,学出比数据中最好策略更优的策略,同时训练期间完全不与环境交互。
形式化定义:给定一个由未知行为策略 β(a|s) 收集的静态数据集 ,目标是学习一个策略 π(a|s),使得期望回报 最大化,且训练过程中不允许用 π 从环境中采集任何新数据。
在线 RL 就像学徒跟师傅边学边做——你可以随时尝试新做法、看到结果、纠正错误。离线 RL 则像考古学家从古籍中还原失传的技艺——你只能看着别人留下的操作记录(可能水平参差不齐),不能自己动手试,必须纯靠推理学到更好的策略:
- 核心矛盾:RL 需要通过”试错”来评估动作的好坏;但离线数据里只有”别人试过的动作”,对于数据中没出现过的动作,你完全不知道结果——这就是分布偏移(distribution shift)。
- Naive 方案的问题:直接拿离线数据训练 Q-learning(一种经典的离策略 TD 学习算法,用 更新动作价值函数),智能体会高估数据中没见过的动作的 Q 值(因为这些动作没有负样本可以纠正它),学出离谱的策略——这叫外推误差(extrapolation error)。
- CQL 的思路= “保守一点”——故意压低那些数据中没怎么见过的 (s,a) 的 Q 值,让策略不敢贸然选数据外的动作。
- BCQ 的思路= “只信专家”——用生成模型(如 VAE,变分自编码器)学习”什么样的动作在数据中出现过”,策略只能在”见过”的动作里挑。
- Decision Transformer 的思路= 把 RL 变成序列建模——直接用 Transformer 学”给定回报目标和历史状态,下一步该做什么”,彻底跳过 Bellman 方程(动态规划中递归分解累积回报的核心等式 )。
- Diffusion Policy 的思路(2022—2024 兴起)= 用扩散模型(Diffusion Model,通过逐步去噪从随机噪声中生成数据的生成模型)直接生成多步动作序列,天然处理多模态动作分布,避免单步决策的短视。
在线 RL vs 离线 RL
Section titled “在线 RL vs 离线 RL”关键区别在数据来源:在线 RL 边学边采集,离线 RL 只能用现成的静态数据集:
外推误差与保守修正
Section titled “外推误差与保守修正”普通 Q-learning 在离线数据上会高估未见动作的 Q 值;CQL 通过惩罚项把它压下来:
numpy 演示:外推误差与保守 Q 值
Section titled “numpy 演示:外推误差与保守 Q 值”一个简单的链式 MDP,展示标准 Q-learning 在离线数据上会高估未见动作,而保守修正可以缓解:
import numpy as np
# 简单设定:3 个状态 (0,1,2),2 个动作 (a0,a1)# 离线数据只包含状态 0 和 1 下选 a0 的记录Q = np.zeros((3, 2)) # Q 表# 模拟的离线转移:(状态, 动作, 奖励, 下一状态)offline_data = [(0, 0, 0.0, 1), (1, 0, 1.0, 2), (0, 0, 0.0, 1), (1, 0, 1.0, 2)]
alpha, gamma = 0.1, 0.9for _ in range(500): for s, a, r, s_next in offline_data: # 标准 Q-learning:用 max Q(s_next, *) 做更新 target = r + gamma * np.max(Q[s_next]) Q[s, a] += alpha * (target - Q[s, a])
print("标准 Q-learning 的 Q 表:")print(Q) # 动作 a1 的 Q 值始终是 0——从未被更新过,但 max 会选它print("问题:状态 2 的 a1 Q=0,可能被 max 误选为最优")
# CQL 的保守修正:对未见过的 (s,a) 施加额外惩罚conservatism = 1.0for s, a, r, s_next in offline_data: target = r + gamma * np.max(Q[s_next]) - conservatism * np.max(Q[s_next]) Q[s, a] += alpha * (target - Q[s, a])print("加 CQL 惩罚后 Q 值更保守,外推误差被抑制")- 离线数据的质量决定上限:数据集覆盖的动作分布越广、策略越多样,学到的策略越好;如果数据只来自一个次优策略,RL 很难大幅超越它。优先收集多样性行为数据。
- CQL 的保守强度要调:保守太强(Q 被压太低)策略不敢动,太弱仍有外推误差——通常用验证集调 conservatism 系数。
- Decision Transformer 适合大数据集:当数据量大(百万级转移)且含高回报轨迹时,DT 的序列建模效果接近甚至超过传统 RL;数据量小时不稳定。
- 评估是难点:离线 RL 不能直接在环境中跑策略评估(那就不是离线了),需要用 off-policy 评估(OPE)方法如 FQE、IS、DICE 从数据中估计策略表现。
- 不要在线微调:真正的离线场景(医疗、自动驾驶)微调成本极高或危险;如果允许在线微调,应使用 offline-to-online RL 方法逐步过渡。
- 数据归一化与奖励缩放:Decision Transformer 对奖励尺度敏感,输入回报目标要合理归一化,否则条件生成会失效。
- 医疗治疗方案优化:从电子病历中学习慢性病(糖尿病、脓毒症)的最优用药策略——不能让 RL 在患者身上在线试错,只能从历史治疗记录离线学习。MIT 临床 RL 团队在此方向有多项成果。
- 自动驾驶决策:Waymo、Cruise 从数百万英里真实驾驶日志中离线训练变道、路口通行策略,避免在线试错的巨大安全风险。
- 工业控制与能源调度:Google 数据中心冷却优化、电网调度等场景从历史运行日志离线学习控制策略,降低能耗。
- 推荐系统离线优化:从历史推荐日志(曝光-点击-转化)离线训练推荐策略,避免在线 A/B 实验的流量损失——与多臂老虎机形成对比。
- 机器人从示范数据学习:从人类遥操作记录的轨迹中离线学习操作策略,结合模仿学习方法。详见Sim-to-Real 迁移。
典型类库与工具
Section titled “典型类库与工具”| 类库 | 语言 | 说明 |
|---|---|---|
| d3rlpy | Python | 专注离线 RL 的开源库,实现 CQL、BCQ、AWAC、Decision Transformer 等,API 类似 scikit-learn |
| Minari | Python | Farama 基金会的离线 RL 数据集格式与管理库(Gymnasium 生态) |
| D4RL | Python/数据集 | 经典离线 RL benchmark 数据集(MuJoCo、AntMaze、Kitchen 等),广泛用于论文评估 |
| RLlib (Ray) | Python | 分布式 RL 库,部分支持离线训练模式 |
| COBS | Python | Comparing Offline Batch RL Solvers,离线 RL 算法对比工具 |
| 术语 | 英文 | 解释 |
|---|---|---|
| 离线强化学习 | Offline RL (Batch RL) | 只从静态数据集学习策略、训练时不与环境交互的 RL 范式 |
| 分布偏移 | Distribution Shift | 学习策略产生的数据分布与训练数据集分布不一致的问题 |
| 外推误差 | Extrapolation Error | 对训练数据中未出现的动作/状态,Q 值估计不准甚至被高估 |
| 保守 Q 学习 | Conservative Q-Learning (CQL) | 对数据中少见动作施加 Q 值惩罚,学出保守策略的离线 RL 算法 |
| Batch-Constrained Q-Learning | BCQ | 用生成模型约束动作空间,只在数据见过的动作中选择 |
| Decision Transformer | DT | 将 RL 重构为序列建模,用 Transformer 根据回报目标条件生成动作 |
| 离策略评估 | Off-Policy Evaluation (OPE) | 用另一个策略收集的数据评估目标策略性能的方法,离线 RL 的核心评估手段 |
| 行为策略 | Behavior Policy | 收集离线数据集时使用的策略 |
- Kumar et al.,「Conservative Q-Learning for Offline Reinforcement Learning」(NeurIPS 2020):CQL 原始论文,提出保守正则化抑制外推误差,成为离线 RL 最重要的基线之一。
- Fujimoto et al.,「Off-Policy Deep Reinforcement Learning without Exploration」(ICML 2019):BCQ 论文,首次系统指出离线 RL 中的外推误差问题,提出用生成模型约束动作。
- Chen et al.,「Decision Transformer: Reinforcement Learning via Sequence Modeling」(NeurIPS 2021):DT 论文,将 RL 转化为序列建模,颠覆传统 Bellman 框架,引发”RL as supervised learning”思潮。
- Levine et al.,「Offline Reinforcement Learning: Tutorial, Review, and Perspectives on Open Problems」(arXiv 2020):离线 RL 的权威综述,系统梳理方法分类、理论挑战与未来方向。
- Fu et al.,「D4RL: Datasets for Deep Data-Driven Reinforcement Learning」(arXiv 2020):离线 RL 标准 benchmark,提供多领域数据集与统一评估协议。
- Kumar et al.,「DR3: Value-Based Deep RL Should Not Be Solving Large LPs」(NeurIPS 2022):分析离线 RL 中的表示崩塌问题,揭示价值函数训练的根本难点。