Skip to content

Offline强化学习

在标准的强化学习中,智能体需要不断与环境交互来收集经验并改进策略。但在很多现实场景中,与环境交互是极其昂贵、危险甚至不可能的。Offline RL(也叫Batch RL)提出了一个截然不同的问题设定:能否完全从一个预先收集好的静态数据集中学习出一个好的策略,而不需要任何额外的环境交互?

这个问题设定的吸引力是巨大的——医疗领域有大量的患者治疗记录,自动驾驶领域有海量的人类驾驶数据,机器人领域有大量的遥操作数据,推荐系统有亿级的用户交互日志。如果能直接从这些数据中学到好的决策策略,就不需要冒着患者生命危险、车辆碰撞风险去做trial-and-error。

问题形式化

Offline RL的输入是一个静态数据集 \(\mathcal{D}\),由某个(未知的)行为策略 \(\pi_\beta\) 与环境交互所收集:

\[ \mathcal{D} = \{(s_i, a_i, r_i, s_i')\}_{i=1}^{N} \]

其中 \(s_i\) 是状态,\(a_i\) 是行为策略选择的动作,\(r_i\) 是获得的奖励,\(s_i'\) 是转移到的下一个状态。行为策略 \(\pi_\beta\) 可以是人类专家、一个旧的RL策略、甚至是随机策略,也可以是多种策略的混合。

目标: 仅使用数据集 \(\mathcal{D}\),学习一个策略 \(\pi\),使得它在真实环境中执行时的期望回报尽可能高:

\[ \pi^* = \arg\max_\pi \mathbb{E}_\pi \left[ \sum_{t=0}^{T} \gamma^t r_t \right] \]

关键限制是:学习过程中不能与环境有任何交互。

整体方法论的框架可以用如下图示来理解:

+---------------------------------------------------+
|              Offline RL 方法分类                    |
+---------------------------------------------------+
|                                                     |
|  1. 保守估值方法 (Conservative Value Methods)        |
|     +--------+    +---------+    +----------+      |
|     |  CQL   |    |   IQL   |    |  TD3+BC  |      |
|     +--------+    +---------+    +----------+      |
|     惩罚OOD Q值    避免查询OOD    添加BC正则项       |
|                                                     |
|  2. 序列建模方法 (Sequence Modeling)                 |
|     +------------------------+                      |
|     |  Decision Transformer  |                      |
|     +------------------------+                      |
|     把RL当做序列预测问题                             |
|                                                     |
+---------------------------------------------------+

核心挑战:分布偏移 (Distribution Shift)

直觉上,你可能会想:"Offline RL有什么难的?直接拿一个off-policy算法(比如SAC、DQN)在数据集上训练不就行了?"

答案是:不行。 直接使用标准的off-policy算法在静态数据集上训练,几乎总会导致灾难性失败。这背后的根本原因是分布偏移(Distribution Shift),具体表现为以下几个层面。

分布外动作 (Out-of-Distribution Actions)

在标准的Q-learning更新中,我们需要计算目标值:

\[ y = r + \gamma \max_{a'} Q_\theta(s', a') \]

这个 \(\max_{a'} Q_\theta(s', a')\) 要求我们在所有可能的动作上取最大值。但在Offline RL中,数据集 \(\mathcal{D}\) 只包含行为策略 \(\pi_\beta\) 曾经执行过的动作。对于那些 \(\pi_\beta\) 从未选择过的动作(即OOD动作),\(Q_\theta\) 的值完全是由神经网络的外推(Extrapolation)得到的,没有任何数据支撑。

Q值过高估计 (Overestimation)

问题不仅仅是"不准确"那么简单。\(\max\) 操作会系统性地选择Q值被高估的动作——这是一种选择偏差(Selection Bias)。在online RL中,这个问题被自然缓解:当智能体选择了一个Q值被高估的动作并执行后,它会获得真实的(较低的)奖励,从而修正Q值的估计。但在Offline RL中,我们没有机会去执行这些动作,因此过高估计永远不会被修正。

外推误差累积 (Extrapolation Error Accumulation)

更糟糕的是,Q-learning是一个bootstrapping过程——当前的Q值基于下一个状态的Q值来更新。如果下一个状态的Q值因为OOD动作而被高估,这个高估会通过Bellman更新向前传播,最终整个Q函数都被"污染"。

用数学来描述这个过程:假设在某个状态-动作对 \((s', a')\) 上,Q函数的估计误差为 \(\epsilon(s', a')\),那么经过一步Bellman更新后:

\[ Q(s, a) \leftarrow r + \gamma \left[ Q^*(s', a') + \epsilon(s', a') \right] \]

经过 \(k\) 步传播,误差可以累积到 \(O(\gamma^k \cdot k \cdot \epsilon_{\max})\) 量级,其中 \(\epsilon_{\max}\) 是单步最大误差。在深度神经网络中,OOD区域的 \(\epsilon_{\max}\) 可以非常大,导致整个Q函数发散。

直觉类比

这就像一个学生只看了教科书中的例题(数据集),然后在考试中遇到了一道从未见过类型的题目(OOD动作)。他可能会"胡编"一个看起来很有信心的答案(Q值高估),而且无法从考试结果中获得反馈来纠正自己(无法与环境交互)。

保守方法:约束策略偏离

面对分布偏移问题,第一类方法的核心思想是:让学到的策略不要偏离数据集中行为策略太远。 具体的实现方式可以是约束Q函数、约束策略本身、或者在策略优化目标中添加正则项。

CQL (Conservative Q-Learning)

CQL由Kumar等人在2020年提出("Conservative Q-Learning for Offline Reinforcement Learning"),是Offline RL领域最重要的工作之一。它的核心思想极其优雅:与其费尽心思去准确估计Q值,不如学一个系统性偏低的Q值——即Q值的下界(Lower Bound)。

为什么下界是好的? 考虑一下:如果我们的Q估计是真实Q值的下界,那么在这个悲观Q函数下选择的最优动作,在真实环境中只可能表现得更好,不会更差。这就是悲观主义原则(Pessimism Principle)在Offline RL中的体现。

CQL损失函数

CQL在标准的TD损失之上,添加了一个保守正则项(Conservative Regularizer)

\[ L_{\text{CQL}}(\theta) = \underbrace{\alpha \left( \mathbb{E}_{s \sim \mathcal{D}, a \sim \mu(a|s)} [Q_\theta(s, a)] - \mathbb{E}_{s, a \sim \mathcal{D}} [Q_\theta(s, a)] \right)}_{\text{保守正则项}} + \underbrace{\frac{1}{2} \mathbb{E}_{(s,a,r,s') \sim \mathcal{D}} \left[ \left( Q_\theta(s,a) - \hat{\mathcal{B}}^\pi \hat{Q}^k(s,a) \right)^2 \right]}_{\text{标准TD损失}} \]

其中 \(\mu(a|s)\) 是一个用于采样OOD动作的分布(通常是均匀分布或当前策略),\(\hat{\mathcal{B}}^\pi\) 是Bellman算子,\(\alpha > 0\) 是控制保守程度的超参数。

直觉理解: 这个正则项做了两件事:

  1. 第一项 \(\mathbb{E}_{a \sim \mu}[Q_\theta(s, a)]\) 对于从分布 \(\mu\) 中采样的动作(可能包含大量OOD动作),惩罚它们的Q值,把它们压低。
  2. 第二项 \(\mathbb{E}_{a \sim \mathcal{D}}[Q_\theta(s, a)]\) 对于数据集中实际出现过的动作,提升它们的Q值,把它们抬高。

这一推一拉,就实现了"数据集内的动作Q值高,数据集外的动作Q值低"的效果。

Q(s, a)
  ^
  |     * (OOD动作: 被压低)
  |   *
  | *
  |           +------+
  |           | 数据集 |  <-- Q值被抬高
  |           | 内动作 |
  |           +------+
  +--*--*--*-----------*--*---> a
        OOD            OOD

CQL(H)变体

在实际中,用均匀分布来采样OOD动作效率很低——在高维动作空间中,均匀采样几乎不可能命中"危险"的OOD区域。CQL(H)使用当前策略 \(\pi_\theta\) 来采样,并添加一个熵正则项来鼓励策略的多样性:

\[ \min_Q \max_\mu \; \alpha \left( \mathbb{E}_{s \sim \mathcal{D}, a \sim \mu(a|s)} [Q(s,a)] - \mathbb{E}_{s, a \sim \mathcal{D}} [Q(s,a)] \right) + \frac{1}{2} L_{\text{TD}}(Q) + \text{entropy}(\mu) \]

通过对 \(\mu\) 取max,CQL(H)自动找到最"危险"的OOD动作(即Q值最高的那些),重点压制它们。这比盲目地压制所有非数据集动作更加高效。

CQL的理论保证

Kumar等人证明了,在一定条件下,CQL学到的Q函数满足:

\[ \hat{Q}^{\text{CQL}}(s, a) \leq Q^\pi(s, a), \quad \forall s, a \]

即CQL的Q值是真实Q值的下界。这意味着用CQL的Q值来做策略评估,得到的性能估计是保守的——实际执行不会比估计的差。

\(\alpha\) 的敏感性

CQL的一个实际问题是超参数 \(\alpha\) 的选择非常敏感:

  • \(\alpha\) 太大:Q值被过度压制,策略过于保守,几乎退化为行为克隆(Behavioral Cloning)
  • \(\alpha\) 太小:保守惩罚不够强,Q值仍然会过高估计,策略可能选择OOD动作
  • 最优的 \(\alpha\) 取决于数据集的质量和覆盖度,需要大量调参

IQL (Implicit Q-Learning)

IQL由Kostrikov等人在2022年提出("Offline Reinforcement Learning with Implicit Q-Learning"),采用了一个完全不同的思路来回避分布偏移问题。

CQL的思路是: 对OOD动作的Q值进行惩罚。 IQL的思路是: 从一开始就不去查询OOD动作的Q值。

这是一个根本性的转变。在标准的Q-learning中,计算目标值需要 \(\max_{a'} Q(s', a')\),这要求我们在所有动作上做最大化——正是这一步引入了OOD问题。IQL完全绕开了这个操作。

Expectile Regression(分位数回归)

IQL的关键技术是Expectile Regression,用一个独立的Value函数 \(V_\psi(s)\) 来近似 \(\max_a Q(s, a)\),但只使用数据集中出现的 \((s, a)\) 对。

Expectile Regression的损失函数为:

\[ L_\tau^V(\psi) = \mathbb{E}_{(s, a) \sim \mathcal{D}} \left[ L_\tau^2 \left( Q_{\hat{\theta}}(s, a) - V_\psi(s) \right) \right] \]

其中 asymmetric loss为:

\[ L_\tau^2(u) = |\tau - \mathbf{1}(u < 0)| \cdot u^2 \]

这里 \(\tau \in (0, 1)\) 是一个关键超参数。

直觉理解: 这个非对称的二次损失的效果是——当 \(\tau\) 接近 \(1\) 时,\(V_\psi(s)\) 被"拉向" \(Q(s, a)\)上分位数。想象一下,对于某个状态 \(s\),数据集中可能包含多个不同动作 \(a_1, a_2, \ldots\) 对应的Q值。普通的均方误差会让 \(V(s)\) 学到这些Q值的均值,而expectile regression会让 \(V(s)\) 学到接近最大值(但不是精确的max)。

         Q(s, a1) = 5.0
         Q(s, a2) = 3.0    普通MSE: V(s) ≈ 4.0 (均值)
         Q(s, a3) = 8.0    Expectile(τ=0.9): V(s) ≈ 7.5 (接近最大值)
         Q(s, a4) = 2.0    Expectile(τ=0.99): V(s) ≈ 7.9 (更接近最大值)

关键在于:这个"近似max"操作只在数据集中出现过的动作上进行,永远不会查询一个从未见过的OOD动作的Q值。

Q函数更新

有了 \(V_\psi(s)\),Q函数的更新就非常简单了:

\[ L^Q(\theta) = \mathbb{E}_{(s, a, r, s') \sim \mathcal{D}} \left[ \left( r + \gamma V_\psi(s') - Q_\theta(s, a) \right)^2 \right] \]

注意,这里用 \(V_\psi(s')\) 代替了 \(\max_{a'} Q(s', a')\)。由于 \(V_\psi\) 是通过expectile regression从数据集内动作学到的,不涉及任何OOD查询。

策略提取:AWR (Advantage Weighted Regression)

IQL学到了Q函数和V函数后,需要从中提取一个可执行的策略。它使用Advantage Weighted Regression(优势加权回归)

\[ L^\pi(\phi) = \mathbb{E}_{(s, a) \sim \mathcal{D}} \left[ \exp \left( \beta \cdot (Q_{\hat{\theta}}(s, a) - V_\psi(s)) \right) \cdot \log \pi_\phi(a|s) \right] \]

其中 \(\beta\) 是逆温度参数。这相当于一个加权的行为克隆(Weighted BC):对数据集中优势值高的 \((s, a)\) 对赋予更高的权重,让策略更多地模仿"好的"动作。

IQL vs CQL

维度 CQL IQL
处理OOD动作 显式惩罚OOD Q值 完全避免查询OOD
需要max操作 需要(在正则项中) 不需要
实现复杂度 较高 较低
超参敏感度 \(\alpha\) 很敏感 \(\tau\) 较稳定
理论保证 Q值下界 无严格下界保证
实际性能 强,但调参困难 强,且稳定

TD3+BC (TD3 with Behavioral Cloning)

TD3+BC由Fujimoto和Gu在2021年提出("A Minimalist Approach to Offline Reinforcement Learning"),它的设计哲学是:Offline RL不需要复杂的算法设计,只需要在一个好的online算法上加一个简单的行为克隆正则项。

算法设计

TD3+BC就是标准的TD3算法(Twin Delayed DDPG),唯一的改动是在Actor的策略优化目标中加了一个BC项:

\[ \pi = \arg\max_\pi \mathbb{E}_{(s, a) \sim \mathcal{D}} \left[ \lambda Q_\theta(s, \pi(s)) - (\pi(s) - a)^2 \right] \]

第一项是标准的Q值最大化,第二项是行为克隆——让策略的输出不要偏离数据集中的动作太远。

归一化技巧

直接把Q值和BC损失加在一起会有量级不匹配的问题。TD3+BC使用了一个简单但有效的归一化:

\[ \lambda = \frac{\alpha}{\frac{1}{N} \sum_{(s_i, a_i)} |Q(s_i, \pi(s_i))|} \]

即用batch中Q值绝对值的均值来归一化,使得Q项和BC项保持在相近的量级。\(\alpha\) 通常取 \(2.5\)

为什么TD3+BC有效

TD3+BC的成功揭示了Offline RL中一个重要的洞察:很多offline RL算法的复杂设计(如CQL的保守正则、IQL的expectile regression)本质上都在做同一件事——阻止策略偏离数据集太远。而最简单的方式就是直接加一个BC损失。

当然,TD3+BC也有局限性。它假设数据集中的动作分布是单模态的(因为用了均方误差作为BC损失),这在数据集包含多种不同行为策略时会出问题。

序列建模方法

Decision Transformer

Decision Transformer (DT) 由Chen等人在2021年提出("Decision Transformer: Reinforcement Learning via Sequence Modeling"),代表了一种范式转换(Paradigm Shift)——将强化学习问题完全重新定义为序列建模问题,抛弃了传统RL中Bellman方程、TD学习、Q函数等所有核心概念。

核心思想

传统RL的思路是:

\[ \text{学习价值函数/策略} \xrightarrow{\text{Bellman方程}} \text{最优决策} \]

Decision Transformer的思路是:

\[ \text{序列预测} \xrightarrow{\text{Transformer}} \text{条件生成决策} \]

DT把一条轨迹 \((s_0, a_0, r_0, s_1, a_1, r_1, \ldots)\) 看作一个"句子",用GPT风格的Transformer来学习这个序列的模式,然后通过条件生成来产生好的决策。

输入表示

DT的关键创新之一是输入的设计。它不直接使用奖励 \(r_t\),而是使用Return-to-go(剩余回报) \(\hat{R}_t\)

\[ \hat{R}_t = \sum_{t'=t}^{T} r_{t'} \]

输入序列被组织为三元组的序列:

\[ \tau = (\hat{R}_1, s_1, a_1, \hat{R}_2, s_2, a_2, \ldots, \hat{R}_T, s_T, a_T) \]

每个三元组中的三个元素分别用不同的线性层嵌入到同一维度,然后送入GPT架构。

输入序列 (每个时间步3个token):

+------+    +------+    +------+    +------+    +------+    +------+
| R̂_1  |    |  s_1 |    |  a_1 |    | R̂_2  |    |  s_2 |    |  a_2 |
+------+    +------+    +------+    +------+    +------+    +------+
   |            |            |          |            |            |
   v            v            v          v            v            v
+------+    +------+    +------+    +------+    +------+    +------+
| Embed|    | Embed|    | Embed|    | Embed|    | Embed|    | Embed|
+------+    +------+    +------+    +------+    +------+    +------+
   |            |            |          |            |            |
   +------+-----+------+-----+----+-----+------+-----+------+----+
                                  |
                          +-------v--------+
                          |   GPT (Causal  |
                          |  Transformer)  |
                          +-------+--------+
                                  |
                     +------+-----+-----+------+
                     |      |           |      |
                     v      v           v      v
                  (pred_a1)(...)     (pred_a2)(...)

推理(Test Time)

在测试时,DT的使用方式非常优雅:

  1. 设定一个期望的return-to-go \(\hat{R}_1\)(比如设为数据集中最高轨迹回报)
  2. 观测当前状态 \(s_1\)
  3. 用Transformer自回归地生成动作 \(a_1\)
  4. 执行 \(a_1\),获得奖励 \(r_1\),转移到 \(s_2\)
  5. 更新 \(\hat{R}_2 = \hat{R}_1 - r_1\)
  6. 重复

直觉理解: 这就像你告诉模型"我希望获得100分的总回报",然后模型会生成"如果要获得100分,在当前状态下应该执行什么动作"。本质上是一种条件生成(Conditional Generation)

DT的优势

  1. 简洁性: 不需要TD学习、不需要Q函数、不需要Bellman方程,只需要一个标准的Transformer和交叉熵/均方误差损失
  2. 长程信用分配: Transformer的self-attention机制天然能够建模长程依赖,不需要像TD学习那样通过bootstrapping逐步传播信息
  3. 条件控制: 通过改变return-to-go,可以灵活地控制策略的保守/激进程度

DT的局限性

1. 无法进行轨迹拼接(Trajectory Stitching)

这是DT最核心的局限。考虑一个简单的场景:数据集中有两条轨迹:

  • 轨迹A:从起点到中间点表现很好,到终点表现较差
  • 轨迹B:从起点到中间点表现较差,到终点表现很好

理想的策略应该能"拼接"两条轨迹的优势:从A中学习前半段,从B中学习后半段。传统的基于TD学习的方法(如CQL、IQL)可以做到这一点,因为Bellman方程天然支持跨轨迹的信息传播。但DT只是在模仿数据集中的轨迹,无法自动进行这种拼接。

2. 数据集质量依赖

DT本质上是行为克隆的高级版本。如果数据集中没有高回报的轨迹,即使设定很高的return-to-go,DT也无法生成好的动作。

3. Return-to-go的局限

在随机环境中,相同的动作序列可能导致不同的回报。用一个标量的return-to-go来条件化策略可能是不够的。

Offline RL方法对比

维度 CQL IQL TD3+BC Decision Transformer
核心思想 惩罚OOD动作的Q值 避免查询OOD动作 添加BC正则项 序列建模 + 条件生成
Q函数 保守Q(下界) 标准Q + expectile V 标准Twin Q 无Q函数
策略提取 从保守Q中max AWR加权克隆 直接优化Q+BC Transformer自回归
是否用Bellman
轨迹拼接 支持 支持 支持 不支持
超参敏感度 高(\(\alpha\) 中(\(\tau\) 低(\(\alpha\)固定2.5)
实现复杂度 中(需Transformer)
计算开销 高(大模型)
适用场景 通用 通用 数据质量较高时 长序列决策

选择建议:

  • 追求简单和baseline: TD3+BC
  • 追求稳定和通用性: IQL
  • 需要理论保证: CQL
  • 数据集包含长序列且质量较高: Decision Transformer

Offline-to-Online Fine-tuning

纯Offline RL学到的策略受限于数据集的质量和覆盖度。一个自然的问题是:能否先用Offline RL从数据集中学到一个不错的初始策略,然后再通过少量的online交互来进一步提升?

这就是Offline-to-Online(O2O)Fine-tuning的研究方向。

为什么纯Offline不够

  1. 数据集覆盖度有限: 行为策略可能没有访问过某些关键的状态-动作对,导致学到的策略在这些区域表现很差
  2. 保守估计过度: CQL等方法为了安全而过度保守,可能错过了更好的策略
  3. 无法适应环境变化: 如果部署环境和数据收集环境存在差异,纯offline策略可能失效

核心挑战

O2O fine-tuning面临的主要挑战是:在从offline切换到online时,策略性能可能会先大幅下降,然后才缓慢恢复。 这被称为"初始性能崩塌(Initial Performance Collapse)"。

原因在于:Offline RL训练得到的保守Q值会在online训练的最初几步被迅速"修正"(通常是向上调整),这种突然的Q值变化会导致策略的剧烈波动。

代表方法

Cal-QL (Calibrated CQL): 对CQL的Q值进行校准,使得offline阶段学到的Q值不会过度保守,从而减少online fine-tuning初期的性能崩塌。

IQL→Online: IQL天然适合O2O fine-tuning,因为它的训练过程不依赖于与当前策略的交互。在online阶段,只需要将新收集的数据不断加入replay buffer继续训练即可。

Balanced Replay: 在online阶段,混合使用offline数据和新收集的online数据进行训练,避免灾难性遗忘。

Offline-to-Online流程:

Phase 1: Offline Training                Phase 2: Online Fine-tuning
+----------------------------+          +----------------------------+
|                            |          |                            |
|  静态数据集 D              |          |  环境交互                  |
|       |                    |          |       |                    |
|       v                    |          |       v                    |
|  Offline RL算法            |  ------> |  Online RL算法             |
|  (CQL/IQL/TD3+BC)         |  初始化  |  + Replay Buffer           |
|       |                    |          |  (offline数据 + online数据)|
|       v                    |          |       |                    |
|  初始策略 π_0              |          |       v                    |
|                            |          |  改进策略 π*               |
+----------------------------+          +----------------------------+

总结与展望

Offline RL是强化学习走向实际应用的关键一步。它让我们能够利用已有的海量数据来学习决策策略,而不需要冒着巨大的代价去进行在线试错。

核心方法论的关键差异在于如何处理分布偏移:

  • 保守估值方法(CQL、IQL)通过约束Q函数来避免对OOD动作的过度乐观
  • 策略约束方法(TD3+BC)通过行为克隆正则项来限制策略偏离
  • 序列建模方法(Decision Transformer)通过完全抛弃Bellman框架来绕开问题

未来的趋势是将Offline RL与大规模预训练、foundation model相结合。正如语言模型可以从海量文本中学到通用的语言能力,决策模型也有望从海量的交互数据中学到通用的决策能力。Decision Transformer已经迈出了第一步,将RL问题转化为序列建模问题,使得Transformer的scaling law有望在决策领域重现。


评论 #