DYING4EVER

NOTES

π0--A-Vision-Language-Action-Flow--9C6Y3H3P

                                                                                      π0: A Vision-Language-Action Flow Model for General Robot Control

作者: Kevin Black; Noah Brown; Danny Driess; Adnan Esmail; Michael Equi; Chelsea Finn; Niccolo Fusai; Lachy Groom; Karol Hausman; Brian Ichter; et al.
期刊: ,
期刊分区:
本地链接: Black 等 - π0 A Vision-Language-Action Flow Model for General Robot Control.pdf
URL:
摘要:
标签:
笔记日期: 2026/3/22 19:42:44

📜 研究核心


Tips: 做了什么,解决了什么问题,创新点与不足?

提出三大挑战

  • 海量数据需求:为了实现广泛适应性,模型需要在多任务、多机器人类型的大规模数据集上进行训练。
  • 合适的网络架构:设计能够对齐多模态数据(图像、文本和动作)的架构,充分挖掘预训练与微调的潜力。
  • 精确的训练策略:精心设计的训练流程,合理分配预训练和微调的数据,以确保模型具备泛化能力,并能够高效执行任务。三大挑战:大规模数据、架构、训练策略/方法→提出pi0模型:一种基于 预训练视觉语言模型(VLM) 和 流匹配模型(Flow Mathing 的新型架构。

1、整合多样的数据源:

首先利用一个预训练的视觉-语言模型(VLM)来导入互联网规模的经验。基于VLM构建他们的模型,使其继承了语言模型和视觉-语言模型的通用知识、语义推理和问题解决能力。其次,进一步训练模型以整合机器人动作,使其成为一个视觉-语言-动作(VLA)模型。

为了能够利用多种不同的机器人数据源,作者采用跨体态训练,即将多种类型机器人的数据合并到同一个模型中。
这些不同类型的机器人具有不同的构型空间和动作表示,包括单臂和双臂系统,以及移动操作机器人。

2、在模型的架构上

为了能够执行高度灵巧和复杂的物理任务,作者使用带有流匹配的动作分块架构(即动作分块算法ACT)来表示复杂的连续动作分布

相当于通过流匹配微调VLM以生成动作(且是多时间步的动作块)

那为何要这么做呢?原因很简单,VLM 可以有效地从网络上传输语义知识,但它们经过训练能输出离散语言token。灵巧的机器人操作需要π0以高频率(比如高达每秒 50 次)输出运动命令。为了提供这种级别的灵活性,他们通过流匹配为预训练的 VLM 提供连续动作输出

且为了将流匹配与VLM结合,他们使用了一种新颖的动作专家,它通过流式输出(flow-based outputs)增强了标准VLM

3、在训练策略/方法上:

预训练+微调 模式 的概念:首先在高度多样化的机器人数据上进行预训练,然后再针对所需任务进行微调或prompt会更加有效

⚙️ 内容

一、模型架构:

![[π0--A-Vision-Language-Action-Flow--9C6Y3H3P.assets/XJGNXH7J.png|1599]]

1.预训练数据集:

  • 包括团队自有的灵巧操作数据集(第V-C节)与OXEOpen X-Embodiment)数据集的加权组合组成,该数据集涵盖7种不同的机器人配置,涉及68项不同任务,而OXE数据集包含包含22种机器人的数据

补充:

1.预训练阶段还使用了多样化的语言标签结合了任务名称和片段标注(对子轨迹的细粒度标签,通常长度约为2秒)
预训练阶段的目的是训练一个基础模型,使其具备广泛的能力和泛化能力,但不必针对任何单一任务达到高性能。该基础模型能够根据语言指令执行多种任务,具备初步的熟练度

2.对于复杂且需要灵巧操作的任务,随后采用后训练流程,利用高质量的精心策划数据将模型适配到特定的下游任务

3.他们研究了数据量较小至中等的高效后训练,以及针对如折叠衣物和移动操作等复杂任务,采用较大规模数据集的高质量后训练——即微调

2.输入:

  • 图像 → ViT → image tokens
  • 语言 → text tokens
  • 状态 q_t → state embedding

3.pi0模型**(改造 PaliGemma——增加额外的输入输出、引入流匹配时间步、加上动作专家权重)**:

做了以下三点改造:

  1. 为机器人特定的token增加了额外的输入和输出投影,包括状态向量qt和动作向量At

  2. 增加了一个用于 “融合流匹配时间步” 的MLP信息

  3. 以及动作专家(比如gemma_300m)的一组较小的权重

设计类似于专家混合模型,其中有两大模块:

  1. 第一大模块用于图像和文本(比如人类指令)输入
  2. 第二大模块用于机器人特定的输入(比如机器人的状态)和输出(比如预测的机器人动作),该第二组权重称为动作专家
  • VLM Backbone:π0模型主要由一个语言模型transformer骨干组成。

![[π0--A-Vision-Language-Action-Flow--9C6Y3H3P.assets/7GGDIK2H.png|3898]]

图像编码器 将机器人的 图像观测数据 嵌入到 与 语言标记 相同的嵌入空 间:[image tokens + language tokens]

再进一步通过机器人专用输入输出——即**本体感觉 状态(proprioceptive state机器人动作(robot actions)**来对主干进行增强

  • Action Expert、Flow Matching:

action expert 根据文本指令去噪生成具体的连续的动作——而无需像RT-2那样对其进行离散化或token化(discretize or tokenize)。

π0使用条件流匹配[28,32]来建模动作的连续分布。流匹配为他们的模型提供了高精度和多模态建模能力,使其特别适合高频率的灵巧操作任务;

该架构灵感来自Transfusion [59],该方法通过多目标训练单一transformer,其token对应的连续输出(比如机器人的动作)通过流匹配(扩散风格)损失进行监督,离散输出的token通过交叉熵损失进行监督(在Transfusion的基础上,他们还发现,为机器人特定的(动作和状态)token使用一套单独的权重能够提升性能

  • 数学建模     $p(A_t|o_t)$

1、未来动作序列$A_t$ (作者在任务中使用H=50,即一次性预测未来的50个连续动作块)

$$ A_t = [a_t, a_{t+1}, ..., a_{t+H−1}] $$

对于动作块 $A_t$ 中的每个动作 $a_t$,都有一个相应的动作token,将其输入动作专家action expert(转化而来)

$ A_t$ 表示的是输出的预测动作——相当于是不带有噪声的动作

$A_t^τ$ 表示的是输入噪声动作——相当于是带有噪声的动作

动作输入用的绿色字体动作输出用的红色字体 

$$ A^τ_t = τA_t + (1 −τ)ϵ $$

其中下标t表述机器人时间步,上标τ∈[0,1]表述流匹配时间步,而ε代表纯噪声  

2、观测值$ o_t$

多张RGB图像、一个语言指令机器人的本体状态组成,即

$$ o_t[I_{1t},... ,I{nt},l_t ,q_t] $$

图像 $ I_t$ 和关节角向$ q_t$ 通过各自的编码器进行编码,然后通过线性投影层:投影到与语言token相同的嵌入空间中。

在训练过程中,使用条件流匹配损失Conditional Flow Matching[28,32],来监督这些动作token

![[π0--A-Vision-Language-Action-Flow--9C6Y3H3P.assets/RF57NLGF.png|444]]

![[π0--A-Vision-Language-Action-Flow--9C6Y3H3P.assets/VZDXPKEV.png|957]]

整体含义: 训练阶段的目的,是用均方误差MSE去迫使神经网络预测的“速度方向”,无限逼近那个绝对正确的“真实速度方向”

  • 具体训练流程

第一步构建中间状态(加噪操作)

网络通过随机采样符合正太分布的噪声τ,进行训练,计算“带噪声的动作”:

$$ A^τ_t = τA_t + (1 −τ)ϵ $$

噪声 $ϵ ∈N(0,1)$

原始流匹配的论文 时间变量 $τ ∈ u(0,1)$

在此,作者设计了一个强调低时间步(高噪声水平)的时间步采样分布![[π0--A-Vision-Language-Action-Flow--9C6Y3H3P.assets/ZHK9FRWF.png|204]]

第二步训练

训练网络输出 $v_θ(A^τ_t,o_t)$ 去匹配 去噪向量场$u(A^τ_t,A_t)$

$v_θ$ 代表预测的向量场,或预测的速度 (预测的是中间状态(下一步以什么样的速度往哪走))

$u$ 代表从纯噪声直接指向干净动作的真实向量场,或真实速度(是终点向量 - 起点向量)

$u(A^τ_t|A_t)=A_t-ϵ$

![[π0--A-Vision-Language-Action-Flow--9C6Y3H3P.assets/CK4EUJU9.png|235]]

即:目标速度向量 = 终点向量(干净动作) - 起点向量(纯噪声)

做loss:

![[π0--A-Vision-Language-Action-Flow--9C6Y3H3P.assets/PPI3EGCH.png|444]]

![[π0--A-Vision-Language-Action-Flow--9C6Y3H3P.assets/64DGCD7L.png|963]]

  • 动作专家使用完全双向注意力掩码,使得所有动作token都能够相互关注
  • 关于注意力掩码

![[π0--A-Vision-Language-Action-Flow--9C6Y3H3P.assets/XEETZV3C.png|1296]]

4.输出:

  • 动作序列:连续值、高频

二、代码:

![[π0--A-Vision-Language-Action-Flow--9C6Y3H3P.assets/LDT66W2Q.png|1764]]

💡 创新点

1.多样数据集(机械臂多样);

2.多样训练策略(复杂场景,机械臂预训练)。

3.加强了 预训练+微调 模式 的概念:首先在高度多样化的机器人数据上进行预训练,然后再针对所需任务进行微调或prompt会更加有效(可以解决数据稀缺的问题,因为通用模型可以利用更多的数据来源——包括其他任务、其他机器人,甚至非机器人领域的数据

4.模型架构:VLM+action expert(transformer, flow-matching)

openvla问题:低赫兹频率运动,

diffusion policy:看未来很多步,一种生成方法,最初被用在图像生成领域。图像生成技术,如stable diffusion和midjourney。思想核心:逐步地对图像进行调整和改善,从而生成高质量图像

流匹配的工作方式和扩散模型有些类似,核心思想都是通过逐步添加噪声来简化数据分布,然后逐步去噪得到隐私数据「Google deepmind团队专门有一篇文章阐述流匹配其实与扩散模型是等价的,详见:diffusionflow.github.io/

具体而言

  • 训练时,随机对动作施加高斯噪声,并训练模型输出去噪向量场
    推理时,从高斯噪声开始,通过数值积分向量场生成动作序列

  • 不同之处在于
    流匹配直接对数据和噪声分布之间的映射场(vector field)进行建模,训练目标是匹配这一映射场

🧩 不足

🔁 研究内容


💧 数据

👩🏻‍💻 方法

🔬 实验

📜 结论

🤔 个人总结


Tips: 你对哪些内容产生了疑问,你认为可以如何改进?

openvla:图片 先经 视觉模型 处理,在融合语言指令到语义大模型;

pi0:图片和语言指令 组合 到 VLM(多模态大模型)

🙋‍♀️ 重点记录

📌 待解决

💭 思考启发