分层 RL:子目标与 options
长 horizon 任务拆高层选子目标、低层执行;options 或 goal-conditioned 分层缓解 credit assignment,层次设计错了比 flat 更糟。

1. 2000 步 pick-place,flat policy 传不动 credit
Flat policy 直接输出 motor command,2000 步后才知道 grasp 成败——reward 信号稀释到几乎无效,credit assignment 是 flat RL 在长 horizon 上的结构性难题。Hierarchical RL 拆两层:high-level 每 K 步选 subgoal (或 option),low-level 执行到达成或超时。Options framework 把 option 定义为 (init set, policy, termination),在 semi-MDP 上抽象时间尺度,让 high-level 在更粗的时间粒度上做决策。
但层次设计错了比 flat 更糟:high-level 每步改 goal,low-level 永远追不上;subgoal 不可达仍被采样,两层同时学崩。Hierarchical 不是长任务的默认解,是 flat 失败后的结构化尝试。维护两套 policy、两套 hyperparam、两套 checkpoint,工程成本是 flat 的数倍——若没有 measurable gain,就是负 ROI。
2. 机制:HIRO 与 goal-conditioned low-level
HIRO / HAC:subgoal 空间是 state 子空间(相对坐标),low-level 用 HER 训 reach 到任意 ,high-level 在 abstract space 选 。Low-level 技能可复用——同一个 reach policy 服务不同 high-level 任务,有时比 end-to-end 分层 end-to-end 训更稳。HER 让 sparse reward 的 reach 任务可学,是 goal-conditioned low-level 的标准配套。
Option 终止:option 执行直到 termination 或 timeout;high-level 每 K 步选一次,K 太大 credit assignment 仍难,太小则接近 flat。Semi-MDP discount 语义与 flat 不同—— 作用于 subgoal 间隔,设计 reward 时 high/low 时间尺度必须对齐,否则两层 optimize 不同目标。
action = pi_low(obs, subgoal) # π(a|s,g)
if step % K == 0:
subgoal = pi_high(obs, task_context)3. 何时值得分层
Horizon > 几百步、且有自然 subgoal(到达 waypoint、打开抽屉)时考虑。任务本身 50 步能做完,flat PPO 更简单——分层必须 beat flat 同 compute 才值得维护两套 policy。Flat PPO 10M step 仍失败再考虑 hierarchical,而非默认上分层。Pick-place 若 200 步内可完成且 flat 已 80% success,分层带来的 marginal gain 往往不值得双倍维护成本。
Pretrain schedule:先 pretrain low-level reach random subgoal,random subgoal reach rate >70% 再训 high-level;或 freeze low-level 训 high-level,最后 joint fine-tune。固定 high-level 随机 goal,先验证 low-level reach 能力——random subgoal reach 不过关,high-level 学的是噪声,success rate 长期贴地。
Document subgoal space bounds 与 low-level action bounds 关系;subgoal 超出 reach 则 hierarchical 必 fail。
4. 失败模式
High-level 频繁改 goal → low-level 永远追不上。Subgoal 不可达仍采样 → low-level 学噪声。High/low reward 不对齐 → 两层 optimize 不同目标。Error propagation:两层都错时 debug 比 flat 难一个数量级。High-level 和 low-level 时间尺度、reward 对齐失败是常见根因——分层项目要有 flat baseline 并行对比,不能只有 hierarchical 一条线。
5. Pretrain 与 flat baseline
Hierarchical 项目先 deliver flat baseline 同 compute——分层必须 beat flat 才值得维护两套 policy,否则是纯工程成本。先 pretrain low-level reach random subgoal,再 freeze low-level 训 high-level,最后 joint fine-tune 有时比 end-to-end 稳。Goal-conditioned low-level: 用 HER 训 reach 到任意 g,high-level 只选 g。
6. 验收
- 固定 random high-level goal,验证 low-level reach rate >70%。
- 对比 flat PPO 同 task wall-clock 和 success rate。
- Ablate K(subgoal 间隔):K=1 接近 flat,K 过大 credit 仍难。
- Subgoal space bounds 与 low-level reach 范围文档化。
- Hierarchical beat flat 同 compute 才上线。
7. 案例:high-level 每步改 goal 导致 low-level 学不动
某 long-horizon navigation 项目 high-level 每步输出新 subgoal,low-level reach policy 永远追不上移动目标——success rate 长期低于 5%。修复:high-level 每 K=20 步才更新 subgoal,low-level 有充足时间 reach;random subgoal reach rate 从 20% 升到 78% 后再训 high-level,整体 success 才超过 flat PPO baseline。
8. Subgoal 空间设计
Subgoal 太大学不动——high-level 在巨大空间随机采样,low-level 大部分 goal 不可达。Subgoal 太小没意义——等价于 flat,只是多了层 indirection。实用做法:subgoal 设为相对 end-effector 的位移(如 ±0.2m),维数 3,low-level 用 HER 训 reach。Bounds 和 low-level workspace 交集必须非空,否则 hierarchical 架构性不可行。
Semi-MDP 的 discount 语义:high-level 每 K 步决策一次,等价于 discount 作用于 subgoal 间隔——reward 设计时 high-level 的 sparse reward 和 low-level 的 dense reward 尺度要对齐,否则 low-level 为 high-level 的噪声打工。
9. 与 options 的关系
Option 比 subgoal 多 termination 条件——执行直到谓词成立或超时,适合「打开抽屉直到开度>90%」这类有明确终止的任务。Subgoal 更适合「到达某坐标」类 reach 任务。选型看任务是否有自然 termination;有则用 option,无则用 subgoal + timeout。无论哪种,low-level 能力必须先 standalone 验证,再接入 high-level。Hierarchical 项目文档应含 subgoal bounds、K 值、reach rate 阈值——缺文档则下一任维护者无法判断该继续训还是回退 flat。Beat flat 同 compute 是上线门槛,不是 nice-to-have。Flat baseline 和 hierarchical 应共享同一 env、wrapper、seed 集,否则对比无效。Reach rate >70% 是 high-level 开训的硬门槛。Hierarchical beat flat 同 compute 才值得双倍维护成本。
分层是长 horizon 的 credit assignment 工具,不是默认架构。Low-level reach 能力先验验证,beat flat 才上线——否则维护两套 policy 是纯成本,debug 难度还翻倍。
相关
也可以看看
- ·16 分钟阅读
约束 MDP 的代价估计偏差:安全层看起来在工作
区分期望约束、条件风险与硬屏蔽,解释代价 critic 偏差如何让可行集虚胖;用约束违反轨迹占比、拉格朗日乘子轨迹和安全层旁路注入验收。
- ·17 分钟阅读
离线强化学习的支持集外动作:为什么 Q 值会自我抬高
从 Bellman backup 的分布外 maximization 解释外推误差;比较行为约束、保守价值与策略正则,并用覆盖率切片与 FQE 交叉验证部署边界。
- ·10 分钟阅读
离策略评估:部署前别只看行为数据上的平均回报
从重要性采样的支持集与方差出发,比较 self-normalized、per-decision、DR 和 FQE,并建立部署前的统计验收。
johan's blog