具身论文阅读

在工位实在是无聊,来水水博客园吧!

1 Diffusion Policy

在图像生成领域有一个算法是DDPM(扩散模型,Diffusion),是Diffusion Policy的前身。

在AI绘画领域有GAN(生成器和判别器对抗使图像接近真实,但需要花精力使它不要训歪)、VAE(编码器将样本映射到理想的概率分布,解码器将概率分布映射到样本,通过训练这个过程,最后使用解码器直接生成图像)、流模型(这个没学)、Diffusion。

\(Diffusion\):分为两个过程,前向过程(扩散)和逆向过程(复原/去噪),我们最终需要的是逆向过程来还原图片。
首先构造前向过程,从\(x_0\)(即原图)不断加噪声一直到\(x_T\)(接近\(\mathcal{N}(0,1)\)),在加噪过程中,使用如下公式\(x_t=\mathcal{N}(\sqrt{(1-\beta_t)}x_{t-1}+\sqrt{\beta_t}I)\)前向加噪声(马尔科夫过程),生成一系列噪声过程图。\(\beta_t\)从0.0001到0.02线性递增,使加噪的幅度相似。
逆向过程即为将噪声还原为图像的过程,理想状况下,去噪的过程应该完全是加噪声的逆,但是由于加噪声是随机采样得出的,理论上不可以求逆,所以我们用神经网络去拟合逆向过程,也就是模型学习的过程,由于\(\beta\)在很小的时候,有\(x_{t-1} \sim \mathcal{N}(\mu_t,\beta_t I)\),故可以找到对应的\(\mu\beta\),公式里只有采样出来的\(\epsilon\)未知,学习\(\epsilon\)的分布即可。

将这种去噪生成图片的办法应用到具身中,生成机械臂的动作。

\(x^{k}\)还原到\(x^0\)去噪的公式是\(x^{k-1} = \alpha (x^k - \gamma\epsilon_{\theta}(x^k, k)+\mathcal{N}(0, \sigma^2I))\),其中\(\epsilon_{\theta}\)即为使用神经网络学习的参数,每次去噪都加入一定的高斯噪声,\(\alpha\)为一个微微小于1的参数,用于提高稳定性。这个等式可以写为更简单的梯度形式,共迭代k次,每次更新\(x\)\(x'\),符合这个等式\(x'=x-\gamma\nabla E(x)\),神经网络学习的参数\(\epsilon_{\theta}\),即为每次更改的梯度。

训练过程中,每次采样一个动作,选取一个迭代步骤,随机采样一个\(\epsilon^k\),使用这个损失来优化网络 \(\mathcal{L}=MSE(\epsilon^k, \epsilon_{\theta})\)

论文中还有几个重要的优化:
1、闭环动作规划。取之前\(T_o\)的观测为输入,预测后面\(T_p\)长度的动作序列,直接执行\(T_a\)步。这样可以在保证动作连续性的同时,保持对外界条件变换的响应。
2、是观测作为模型预测的条件。之前的公式相当于是在预测\(p(A_t,O_t)\),即预测动作和观测的共同分布,论文将其改为预测\(p(A_t|O_t)\),修改的地方即为,将之前去噪的公式中预测的\(\epsilon_{\theta}(A_t^k,k)\)改为\(\epsilon_{\theta}(O_t,A_t^k,k)\),这样使观测加入条件中,可以使预测更加准确。

2 \(\pi_0\) model

模型结构:pretrained VLM + action expert
VLM负责图片和指令的输入和处理,action expert负责机器人专属特异输入输出。

使用开源数据集以及自己采集的专家数据集进行预训练和微调。

模型预测\(p(A_t,o_t)\)\(A_t=(a_t,a_{t+1},...,a_{t+H-1}\)\(H=50\),即预测接下来H步的动作,给action expert输入动作标记,通过conditional flow matching loss来计算损失\(\mathcal{L}^\tau(\theta) = \mathbb{E}_{p(A_t|o_t),q(A_t^\tau,A_t)}||\nu_\theta(A_t^\tau,o_t)-u(A_t^\tau|A_t)||^2\),通过损失拟合模型输出和去噪向量场,其中q为action expert模块的输入。设\(A_t\)为动作向量,\(A_t^\tau = \tau A_t + (1-\tau)\epsilon\),拟合每一个\(\tau \in [0,1]\)对应的向量场,去噪向量场\(u(A_t^\tau|A_t) = \epsilon - A_t\),最后通过\(A_t^{\tau+\delta}=A_t^\tau+\delta \nu_\theta(A_t^\tau,o_t)\)来还原\(A_t\),令\(\delta = 0.1\)
在学习过程中,使用掩码来使图像语言提示和q和动作模块分开。
\(\tau\)是从beta分布中采样得到的,倾向于采取较低的时间步(更多的噪声)。

3 \(\pi_{0.5}\) model

\(\pi_0\)的开放世界泛化能力并不强大,\(\pi_{0.5}\)即是\(\pi_0\)的改进版本,模型架构与\(\pi_0\)极度相似,都是VLM+action expert。

但是\(\pi_{0.5}\)的架构分区有所不同,它将VLM模型分为两部分,第一部分是视觉编码器,第二部分语言理解部分,用于理解任务需求。

训练分为两个阶段,第一个阶段是预训练,通过大规模的数据,训练它自回归下一个目标的能力,也就是将任务分解为小任务的能力,这里是离散任务,使用离散自回归标记,生成语义级别的动作序列;第二个阶段是后训练,则是在第一个训练的基础上,训练模型执行细微动作的能力,提高模型,同样是使用flow matching来表示动作。

训练完成后,\(\pi_{0.5}\)会首先理解高级任务,并将其分解为一系列子任务,然后进行动作规划,并接受反馈进行后续步骤。这使得\(\pi_0.5\)在处理长期复杂任务的能力有巨大提升。

其创新点在于组合了离散语义动作和连续动作的表示,协同训练了整个步骤,具体式子可以见论文。

4 Openvla

基于VLM模型,在后面加入一个动作解码器用于将VLM的结果转化为机器人的动作。为了将VLM的输出转化诶动作,将连续的动作映射到离散的tokens中,将每一个动作维度离散化为256个小区间,均等划分。如此一来,在训练过程中,就可以直接以预测下一个tokens 为目标进行训练了。

论文中更多讨论了,用什么模型来做骨架更优秀,图像处理如何做,微调如何进行,这些都不涉及到模型原理内容,故没有写在这里。

5 ACT(Action Chunking with Transformers)

Action Chunking 即分块预测动作,每次预测k步,执行完k步之后再进行下一次预测,这样减少预测的长度,可以使出现未见过的情况的概率减少,偏离更少。但是这样做会导致,每k步突然出现一个状态,导致机器人出现不稳定行为,所以加入temporal ensemble,每步都预测后面k步的行为,通过指数加权来做平均,例如\(w_i=exp(-m*i)\),m越小,动作融合的越快。

训练时设计一个CVAE,编码器和解码器,其中编码器只用于训练解码器,最终测试时只使用解码器。解码器使用transformer encoder,解码器使用一层resnet+transformer encoder+transformer decoder。训练过程中,基于模仿学习的loss,这里不再给出公式。

6 RDT

posted @ 2025-07-14 18:06  fengwu2005  阅读(99)  评论(3)    收藏  举报