Q-chunking复现及思考

ChainPray 发布于 4 小时前 9 次阅读 819 字 预计阅读时间: 4 分钟


背景

最近老板做横向,然后需要复现一下RLToken,我之前做了hilserl的真机RL,所以就想着改一下hilserl适配RLToken。一开始觉得很简单,无非是把observation从raw的拼接token换成RLToken,但是仔细看了pi0.6的技术报告发现他们RL部分的输出也是actionchunk而不是单步action,所以我就找了一篇25年7月的工作Q-chunking,这篇通讯是Sergey Levine就姑且信任这篇工作了

复现

因为我的工作主要聚焦于真机RL,follow罗剑岚的hilserl及后续工作,主要想优化RLPD使其适配ActionChunk,所以就对比了RLPD/RLPD-AC(使用了action chunk但没有BC约束)/QC三个算法在cube-triple-play-singletask-task2-v0仿真任务上的成功率/训练步数曲线。

下图是我的复现和原作者仓库给出的实验结果比较,整体曲线符合预期

然后我又跑了一下作者给的数据里没有,但是仓库配置里有的一个实验,即QC-RLPD,这个实验相较于RLPD-AC只是多了一个BC约束,让Actor的explore不要偏离offline data太远

哎嘿结果非常的Amazing啊,在1M的online training之后QC-RLPD还是没有提点,和RLPD-AC一样成功率还是0,然后我就跑了10M QC-RLPD看是不是训练时间不够,顺便跑了个10M的RLPD-AC作为对比,结果如下

哎嘿又是非常的Amazing啊,按照官方仓库配置跑的QC-RLPD在5M的online training中依然没有提点,而作为对比的RLPD-AC已经在5M左右达到了收敛。

由此见得,BC约束在RLPD-AC上是一个负优化,怪不得论文的图表没有放出QC-RLPD的结果

视频

下面是一些Rollout的视频

QC(1m offline+1m online)

RLPD(1m online)

RLPD-AC(10m online)

我们可以看

  • RLPD很抖,这是单步action RL的固有缺点,因为马尔科夫过程并不会考虑时间轴上游的动作
  • RLPD-AC的抖动相对好一点,因为使用了actionchunk优化
  • QC的动作最平滑,但是执行时间也是最长的,具体原因我会在下文额度思考章节详细说明

思考

我们来看一下QC的核心优化,首先是它的Critic和Actor的Loss定义

这也就说明了为什么QC的执行时间最长了,因为QC的Actor本质上是一个拟合offline data轨迹的IL(imitation learning)模型,explore依赖的是随机噪声导致的小范围扰动,而且这个扰动限定在了offline data的轨迹周围

所以从我的角度来说QC完全不算是Actor/Critic架构,反而更像是DQL那边的value base RL,其作为Actor的Flow model其实就是这两年大热的pi系列魔性中的action expert;从这个角度看的话QC其实是模仿学习路线的算法优化,引入了Critic打分和BFN随机采样

简单来说就是Actor随机采样n个ActionChunk,Critic给这些AC打分,取分最高的为最终决策;而Actor的Loss不包含Q,而是跟随offline data