
1. Q 还在升,video 里行为已经崩
离策略算法(DQN、SAC、TD3)用 replay buffer 里的旧 transition 更新当前策略。Buffer 里百分之九十数据来自训练初期的高随机策略,当前 policy 已很 deterministic——distribution shift 严重:Q 在 OOD action 上外推,往往过高。Q 值持续上升,eval return 反而降(overestimation collapse)。监控上我看 Q 和 eval return 是否背离——背离即 distribution shift 典型症状,不是「再训一会就好」。
2. 机制:行为策略与目标策略的 gap
Importance sampling 理论上可校正,高维连续空间方差爆炸,工程少用。Practical fixes:limit 更新幅度(PPO clip、TRPO)、Double Q、Polyak target、较小 LR、定期 fresh data 比例。PPO 丢弃 rollout,样本效率低但分布一致。SAC off-policy 省样本,但 buffer 太大加训练太久,旧数据拖累。On-policy 不是「过时」,是 distribution 一致性的代价。Pure off-policy 无限训在 non-stationary policy 下没有免费午餐。
3. 何时该退回 on-policy
若 replay 里旧数据占比过高,off-policy 更新像在旧分布外推。我会缩短 buffer、提高 fresh rollout 比例,或干脆换 PPO 求稳。Fine-tune from checkpoint 时 reset_num_timesteps=False 但考虑 reset buffer——旧 buffer 加新 policy 是 silent off-policy killer。Major hyperparam 变更(LR ×10)后清空 replay 或跑 200k fresh-only phase,再 mix old data。Behavior cloning 预训练后接 SAC,前几万 step 别用 huge replay 全 BC data,mixed fresh rollout 更稳。
4. SAC 的 canary 与工程取舍
SAC 的 auto α 在 distribution shift 大时会飙,log α 曲线是 canary。Retrace、COPPEL 等 corrected return 理论上可减轻 off-policy 偏差,实现复杂,主流库少用。工程上更常见:减小 LR、Polyak τ 更小(target 更慢)、更频繁采新数据。PER 过度优先少数 transition,过拟合。Buffer 年龄 histogram:百分之九十 transition age 大于一百万步时考虑 fresh ratio。
5. 案例:fine-tune 旧 buffer
某 manipulation 任务从 checkpoint fine-tune,未 reset buffer,Q 还在升、video 里行为已经崩。Reset buffer 后 mixed fresh rollout,eval 才恢复。On-policy 换 PPO 求稳时,distribution 一致性比 sample 效率优先。SAC 比 DQN 稍好,因为 policy 平滑和 twin Q 还在,但不是万能。Behavior cloning 加 RL 混用时不重置 buffer 是常见坑。
6. 与 on-policy 和 Retrace
PPO 丢弃 rollout,样本效率低但分布一致。On-policy 换 PPO 求稳时,distribution 一致性比 sample 效率优先。理论上 Retrace 可减轻 off-policy 偏差,实现复杂,主流库少用。Offline batch 全是旧 policy 时,即使 online fine-tune,也要么小 LR 要么 reset buffer 定期灌新 data。
On-policy 换 PPO 求稳时,distribution 一致性比 sample 效率优先。Behavior cloning 加 RL 混用时不重置 buffer 是常见坑。Retrace、COPPEL 等 corrected return 理论上可减轻 off-policy 偏差,实现复杂,主流库少用。监控上我看 Q 和 eval return 是否背离:Q 还在升,video 里行为已经崩。Buffer 年龄 histogram:百分之九十 transition age 大于一百万步时考虑 fresh ratio。
7. 分布偏移的工程分诊
价值均值还在升、录制视频里行为已经崩——这是分布偏移的典型症状,不是「再训一会就好」。从检查点微调时旧缓冲区加新策略是静默杀手:时间步重置为假但缓冲区不重置,离策略更新在旧分布外推。行为克隆预训练后接软 actor-critic,前几万步别用全示范数据的巨大缓冲区,混合新鲜 rollout 更稳。超参大变(学习率乘十)后清空回放或先跑仅新鲜数据阶段。同策略不是「过时」,是分布一致性的代价;纯离策略无限训在非平稳策略下没有免费午餐。
8. 验收
- Log Q mean vs eval return 是否背离。
- 缩短 buffer 或增加 env steps 比例做 ablation。
- SAC/TD3 看 critic_loss 是否突然 spike。
- Fine-tune 时 reset buffer 或 mixed fresh rollout。
- Major hyperparam 变更后清空 replay 或 fresh-only phase。
Distribution shift 的症状是 Q 与 eval 背离。旧数据不是越多越好——要看行为策略与当前策略的距离。Fine-tune 时 reset buffer 或 mixed fresh rollout,是 distribution 一致性比 sample 效率优先时的务实选择。Major hyperparam 变更后清空 replay 或先跑仅新鲜数据阶段,可避免 silent off-policy killer。SAC 的 log α 曲线在分布偏移大时会飙,是早期预警。On-policy 换 PPO 求稳时,distribution 一致性比 sample 效率优先。Buffer 缩短或提高 fresh rollout 比例是常见 ablation。PER 过度优先少数 transition 也会加剧分布偏移。旧 buffer 加新 policy 是 silent killer。
相关
也可以看看
- ·4 分钟阅读
Q-learning 与 deadly triad
表格 Q-learning 收敛有保证;加函数近似和 off-policy 后,max 与 bootstrap 叠加可能不稳定。
- ·16 分钟阅读
约束 MDP 的代价估计偏差:安全层看起来在工作
区分期望约束、条件风险与硬屏蔽,解释代价 critic 偏差如何让可行集虚胖;用约束违反轨迹占比、拉格朗日乘子轨迹和安全层旁路注入验收。
- ·17 分钟阅读
离线强化学习的支持集外动作:为什么 Q 值会自我抬高
从 Bellman backup 的分布外 maximization 解释外推误差;比较行为约束、保守价值与策略正则,并用覆盖率切片与 FQE 交叉验证部署边界。
johan's blog