GCBC

输入输出

输入

输出

流程

  1. 采样一条专家轨迹。
  2. 选取当前状态 $s_t$。
  3. 向后看,选取未来状态 $s_{t+k}$ 作为目标 $g$。
  4. 喂入网络 $\pi_\theta(s_t, g)$。
  5. 监督网络输出的动作,使其尽可能接近专家在该时刻的真实动作 $a_t$。

优缺点

优点:

局限:

GCIQL

结合了 目标条件强化学习 (GCRL) 与 隐式 Q 学习 (IQL) 的离线强化学习算法。
核心逻辑在于:在不访问环境、不进行采样的情况下,通过对现有数据集进行“期望分位数回归 (Expectile Regression)”,拟合出该数据集在通往特定目标时的最优价值上限

重点

重点一:IQL的解决方案?

离线学习的困境: 在离线场景下,我们无法计算 maxaQ(s,a),因为如果某个动作 a 不在数据集里,模型对它的 Q 估计可能是虚高的(过估计),直接取 max 会导致训练崩溃。

IQL 的解决方案: 我们不去寻找那个可能不存在的“最大值”,而是去看数据集里已有的动作。如果一个状态下有 100 个历史动作,我们不取这 100 个动作的平均分,而是取前 10% 的高分作为 V 的估计。这种“偏向高分”的估计就是所谓的乐观估计。

重点二:目标重采样 (Goal Relabeling)

虽然代码中没有直接展示采样逻辑,但 get_config 中的 value_p_trajgoal 等参数揭示了关键:

重点三:Expectile ($\tau$) 的权重

代码中的 expectile_loss 函数实现了这一逻辑:

$$L_V(V) = \mathbb{E}_{(s, a) \sim \mathcal{D}}[f_\tau(Q(s, a) - V(s))]$$

其中损失函数 $f_\tau(\delta)$ 的定义为:

$$f_\tau(\delta) = |\tau - \mathbb{I}(\delta < 0)|\delta^2$$

通过设置参数 expectile(即 $\tau$,代码中通常为 0.7 或 0.9),损失函数会对正负误差施加不对等的惩罚:

GCIVL

GCIVL 的核心逻辑分为两步:隐式价值学习(学习环境有多好)和优势加权行为克隆(学习如何达到目标)

HIQL

训练逻辑:如何从离线数据里学习?

HIQL 依然遵循 IQL 的“择优录取”思想,但分两步走:

A. 价值函数 $V(s, g)$:评估大局

它首先学习在当前数据集下,从 $s$ 到 $g$ 到底有多难。

B. 底层训练 (Low Actor):学习“怎么走”

C. 高层训练 (High Actor):学习“定什么目标”


推理流程:实战中怎么跑?

想象机器人要从房间 A 去房间 C,中间经过房间 B。

  1. 高层决策:经理看了一眼 A(当前)和 C(终点),输出一个向量 $\phi_B$(代表“往房间 B 走”的抽象信号)。
  2. 底层执行:员工拿到 $\phi_B$,开始疯狂输出动作(左转、前进、避障)。
  3. 循环:员工跑了 25 步后,经理再次抬头看路,发现已经到房间 B 了,于是输出下一个信号 $\phi_C$。