B-spline Policy
https://arxiv.org/pdf/2607.09648
传统方法使用 discrete action chunk 来做动作预测,但是这个一不连续,二像reach之类的问题其实根本不需要多少步就能表示但是精细操作就不一样. 文章提出用 B-spline 来表示动作,即网络只负责预测 B-spline 的 Knot 和 control point 集合,就能得出一条连续的曲线作为动作的预测,就可以自由表达疏密度.
一个 \(p\) 次 B-spline 在给定 knot 集合 \(U\) 以及控制点集合 \(C\) 就可以自动计算出一条曲线 \(a(x)=\sum_{i\in [|C|]} N_{i,p}(x)C_i\). 这是一条天然平滑的曲线.
这种动作表示有一些需要解决的事情:
训练数据?对于原本的一个数据样本,我们需要拟合出一条疏密度不同的 B-spline.
- 论文提出的方法是:迭代优化 b-spline 的节点集合,从一个初始的 \(T=\{t_0,t_n\}\),每次拟合出一条最优 b-spline 后找到误差最大的点,把它加入 \(T\),直到误差 \(<\epsilon\) 或者点数足够多.
网络输出?直接输出后面固定数量个 knot & control point 即刻.
Temporal Rescaling:由于得出的是一个连续的曲线,所以我们可以直接取 \(a_{exet}(t)=a(nt)\) 来进行 \(n\) 倍速的播放.
Segment Alignment:由于我们预测了[t,t']的spline S,但是此时已经按照旧的预测跑了delta个时间步了,所以如果直接还是把S拼接到t+delta后(即直接执行S)就会不大好。所以我们首先旧的预测直接丢掉,然后对于新的预测,从曲线上找到开头范围内一个 t^*^ 满足 S[t^*^] 和当前动作最匹配,然后相当于把 S[t^*^,t']接到t+delta后(即直接执行S[t^*^,t']).
实验:
- 经典的加速同时有可能表现上升.
- 实际上 \(n=4\) 的时候可能加速大概在 2x,因为有很多包括推理之类的限制因素.
优点大概在与确实比较 plug-and-play,并且其实我觉得在理论上其实比较有道理. 喜欢这个,漂亮又有效.
(bad) INN Adapter for one-step flow matching
https://arxiv.org/pdf/2606.19194
首先一分钟解释一下 Invertible Neural Network:
- 对于网络的每一层的 input \(x\in R^D\),我们切成 \(x_a\in R^{d}\) 和 \(x_b\in R^{D-d}\). 然后我们网络用一个 \(f:R^d\to R^{D-d}\),变换用 \(g(x_a,x_b)=(x_a,x_b+f(x_a))\).
- 这样逆向变换 \(g^{-1}(y_a,y_b)=(y_a,y_b-f(y_a))\) 就行了. 容易发现这样的变换的 Jacobian 的行列式为 \(1\),所以训练是 stable 的.
基于此,论文提出了 Latent-space normalization:
对于 flow matching 的一个 trajectory \([x_0;x_1]\)(\(x_t=(1-t)x_0+tx_1\)),由于在最优情况下,trajectory 上的任何 \(x_t\) 最后都应该跑到 \(x_1\).
但是比如对于单步 flow-matching 预测,我们得到的 \(\hat x=x_t+(1-t)\hat v\) 因为各种误差的原因是不一样的.
于是文章考虑加一个 INN Adaptor \(g\),将预测得到的 \(\hat x\) 投影进 latent space \(\hat y=g(\hat x)\),然后 normalize(即只保留方向)得到 \(\hat y'\),然后再反向回来得到 \(\hat x'=g^{-1}(\hat y')\).
在训练中,文章布置了两个 loss:
- 一个是平凡的 action behaviour cloning loss \(||\hat x'-x_1||^2\)
- 一个是 latent-space 的监督 \(||g(x_1)-\hat y'||^2\)
实验证明这样的 adapter 可以有效只用 1-step flow matching 就能和多步有相当的表现.
但是这篇文章写的有点,烂. 也没有尝试去探究原理到底是什么. 写的什么玩意儿啊,ablation study 都没有,参数都不写. 除了 novelty 一无是处感觉.
(boring) FlowWAM
https://arxiv.org/pdf/2607.13017
文章认为视频的光流是一个天然的连接 RGB 视频和控制运动的媒介.
首先,对光流的处理:
- 对于原本的二维光流 \((u,v)\),文章把它重新变换成一个 RGB 图像(通过 HSV 编码,\(H\) 表示方向,\(S\) 表示长度,\(V=1\))
- 对于 Robotwin 中文章选择把背景去了然后加一个静态背景(唉,作弊来的,并且 wrist camera 也不行)
文章的核心在于把原 RGB 图像和新的 flow 图像放一起训,共享同一个 pretrained DiT,并且在每一层 self-attention 中交换信息(真是公公又式式啊),然后每一个 stream 独享自己的一个 RoPE,以及加入自己的 stream embedding.
并且用上述的结构支持两种 inference mode,其中 policy mode 的时候从 noise 初始化然后联合 denoise;wm mode 的时候给出 flow encoding 然后重建 RGB.
然后最后搭一个 action expert. 好无聊.
然后一些比较好的细节:
- flow loss 由于大部分地方都是 id 所以直接训不好,所以根据 reference frame 的变化量,对 motion rich region 的 loss 加权(\(1+\alpha \frac{<z-z_{ref}>}{\max <z-z_{ref}>}\))
- 然后分两阶段训练,先通过 egodex 训 video loss,然后再接入机器人数据来同时训 action&video.
实验就是在 robotwin 和 worldarena 上超过 baseline,可喜可贺可喜可贺.
Ablation 证明了 raw \((u,v)\) flow 确实不如换算成 RGB 然后放视频模型. 好耶好耶.
好无聊的文章.