
Vision-Language-Action —— VLA具身智能
系统讲解具身智能中视觉-语言-动作模型(VLA)的核心技术:从RT-2的“动作即文本”范式出发,剖析动作Token化与Co-Fine-Tuning联合微调策略的数学原理;深入解读动作分块如何通过一次性预测未来K步动作解决时序不一致性问题;推导扩散策略中条件去噪扩散过程的噪声预测损失及其与动作分块的天作之合;并通过三维对比揭示各自优势与融合趋势。
阅读文章ZHY's Blog
A UNIVERSE OF IDEAS · BY ZHANG HAOYI
让好奇心 点亮知识宇宙
在代码、模型与思想之间自由漫游。这里持续记录人工智能、机器学习、软件工程与成长实践,让每次阅读都成为一次新的发现。
ARTICLE NOTE
在前几篇文章中,我们讨论了多模态模型如何理解图像和文本、如何用扩散模型生成图像、如何让机器人“动手”。现在,是时候把视野再拓宽一些了。
视频,是图像的时间延伸——一帧帧图像按时间排列,构成了一个包含丰富动态信息的数据形态。音频,是时间的信号——声波在时间轴上的变化承载了语言、情绪和环境信息。当AI同时掌握了“看视频”和“听声音”的能力,它才真正开始接近人类感知世界的方式。
本文将对视频理解与生成、音频处理这两个领域做一个基础性的梳理。我们将从视频的时空维度出发,介绍3D卷积和时空注意力如何建模动态信息;然后看看VideoMAE如何通过掩码自监督学习视频表征;接着走进Sora的世界,理解视频扩散模型的最基础概念;最后简要介绍Whisper的音频编码方案和VALL-E的语音合成方法。
一张图像是二维的——有高度和宽度。一段视频是三维的——除了高度和宽度,还有时间维度。
把视频简单地理解为“一堆图像的集合”是不够的。视频的核心价值在于动态:物体在移动、场景在变化、事件在展开。要理解视频,模型必须同时建模两个层面的信息:
这就是视频理解中常说的时空建模(Spatio-Temporal Modeling)。
处理图像时,我们使用2D卷积——卷积核在高度和宽度两个维度上滑动。处理视频时,一个自然的扩展是3D卷积——卷积核在高度、宽度、时间三个维度上滑动。
3D卷积核的维度可以表示为 Kh×Kw×Kt,其中 Kh 和 Kw 是空间尺寸,Kt 是时间深度(即一次覆盖多少帧)。
对于输入视频张量 X∈RT×H×W×C(T帧,每帧H×W,C个通道),3D卷积的计算为:
Yt,h,w=∑i=0Kt−1∑j=0Kh−1∑k=0Kw−1Wi,j,k⋅Xt+i,h+j,w+k+b
与2D卷积的区别在于:3D卷积的输出特征图仍然保留了时间维度,因此可以继续在时间维度上进行更深层的特征提取。
1import torch2import torch.nn as nn3
4class Simple3DCNN(nn.Module):5 """6 一个简单的3D卷积层示例7 用于提取视频的时空特征8 """9 def __init__(self, in_channels, out_channels, kernel_size=(3, 3, 3)):10 super().__init__()11 # kernel_size: (时间深度, 高度, 宽度)12 self.conv3d = nn.Conv3d(13 in_channels, out_channels,14 kernel_size=kernel_size,15 padding=116 )17 self.relu = nn.ReLU()18 self.bn = nn.BatchNorm3d(out_channels)19
20 def forward(self, x):21 # x: [B, C, T, H, W]22 # B: batch size, C: 通道数, T: 帧数, H: 高度, W: 宽度23 x = self.conv3d(x)24 x = self.bn(x)25 x = self.relu(x)26 return x27
28# 示例:输入16帧224x224的视频29model = Simple3DCNN(in_channels=3, out_channels=64)30video = torch.randn(4, 3, 16, 224, 224) # [B, C, T, H, W]31output = model(video)32print(f"输出形状: {output.shape}") # [4, 64, 16, 224, 224]3D卷积的代表性工作包括I3D(Inflated 3D ConvNet)——将2D卷积核“膨胀”为3D,以及C3D等。这些模型在视频动作识别任务上取得了显著成功。
随着Transformer在视觉领域的成功,研究者自然想到将其扩展到视频领域。时空注意力(Spatio-Temporal Attention)是其中的核心机制。
与图像ViT类似,视频Transformer将视频切分为时空块(Spatio-Temporal Patches)——每个块覆盖一个小的空间区域和几帧的时间窗口。这些块被展平后输入Transformer。
时空注意力的核心思想是:让每个时空块能够“关注”到所有其他时空块,无论是同一帧中不同位置的块(空间注意力),还是不同帧中同一位置的块(时间注意力)。
一个高效的实现方式是分解式时空注意力:
这种分解方式将 O((T×N)2) 的复杂度降低到 O(T×N2+N×T2),其中 T 是帧数,N 是每帧的块数。
UniFormer(Unified Transformer)是一个典型代表,它无缝集成了3D卷积和时空自注意力的优势,在计算效率和准确率之间取得了良好的平衡。
MAE(Masked Autoencoder)是图像自监督学习的一次突破——随机掩码掉图像的大部分patch,让模型从可见patch中重建被掩码的部分。
VideoMAE将这个思想扩展到视频领域。VideoMAE的核心洞察是:视频具有更高的时间冗余性,因此可以采用比图像更高的掩码比例。
对于图像,MAE的掩码比例约为75%。对于视频,VideoMAE采用了90%-95% 的极高掩码比例。视频内容在时间维度上存在大量重复信息(相邻帧之间变化很小),这使得即使掩码掉绝大多数内容,模型仍然有足够的线索进行重建。
VideoMAE提出了一种名为 Video Tube Masking 的掩码策略。
与图像MAE随机掩码单个patch不同,Video Tube Masking在时间维度上也进行掩码——如果一个patch在某一帧被掩码,它在相邻帧的对应位置也被掩码,形成一个“时空管状”的掩码区域。
这种设计迫使模型利用时间上下文来理解视频内容——它不能简单地通过参考相邻帧来“作弊”重建被掩码的patch,而必须真正理解视频的时空结构。
1import torch2import numpy as np3
4def video_tube_masking(video_tokens, mask_ratio=0.9, tube_size=4):5 """6 视频Tube掩码的简化实现7
8 Args:9 video_tokens: [T, N, D] T帧,每帧N个patch10 mask_ratio: 掩码比例(VideoMAE使用90-95%)11 tube_size: 时间管道的长度(掩码连续几帧)12 """13 T, N, D = video_tokens.shape14
15 # 1. 随机选择要掩码的空间位置(在单帧上采样)16 num_mask = int(N * mask_ratio)17 mask_indices = np.random.choice(N, num_mask, replace=False)18
19 # 2. 在时间维度上扩展为tube20 # 对每个被选中的空间位置,掩码连续tube_size帧21 mask = torch.zeros(T, N, dtype=torch.bool)22 for idx in mask_indices:23 # 随机选择起始帧24 start_t = np.random.randint(0, T - tube_size + 1)25 mask[start_t:start_t + tube_size, idx] = True26
27 # 3. 应用掩码(被掩码的位置用可学习的掩码token替代)28 masked_tokens = video_tokens.clone()29 masked_tokens[mask] = 0 # 实际应用中用特殊的[MASK] token30
31 return masked_tokens, maskVideoMAE的研究有三个重要发现:
超高掩码比例有效:90%-95%的掩码比例仍然能取得优秀的性能,这得益于视频的时间冗余性
小数据集上同样有效:VideoMAE在仅有3000-4000个视频的小数据集上也能取得令人印象深刻的结果——这在传统监督学习中几乎是不可能的
数据质量重于数量:预训练数据与目标数据集之间的领域偏移(Domain Shift)是一个重要因素
在性能上,VideoMAE使用标准的ViT骨干网络,在Kinetics-400上达到了87.4% 的准确率,在Something-Something V2上达到75.4%。
我们在第四篇中详细讨论了扩散模型(DDPM)的原理:通过逐步向数据添加噪声、再学习逆向去噪的过程,从纯噪声中生成图像。
视频扩散模型将这一思想从2D扩展到3D——生成的对象从单张图像变成了一帧帧连续的图像序列。核心挑战在于:不仅要保证每一帧的图像质量,还要保证帧与帧之间的时间一致性——物体不能突然消失、运动要平滑自然。
Sora的核心技术之一是 Patchify——将视频分割为时空块(Spacetime Patches)。
具体来说:
这种设计的精妙之处在于:Patchify让模型能够处理任意分辨率、任意时长、任意宽高比的视频。在推理时,只需在指定大小的网格中随机初始化这些Patches,就可以控制生成视频的尺寸。
1class SpacetimePatchEmbed(nn.Module):2 """3 时空Patch嵌入(简化版)4 将视频切分为时空块并线性投影5 """6 def __init__(self, patch_size_t=4, patch_size_h=16, patch_size_w=16,7 in_channels=3, embed_dim=768):8 super().__init__()9 self.patch_size_t = patch_size_t10 self.patch_size_h = patch_size_h11 self.patch_size_w = patch_size_w12
13 # 使用3D卷积实现时空Patch嵌入14 self.proj = nn.Conv3d(15 in_channels, embed_dim,16 kernel_size=(patch_size_t, patch_size_h, patch_size_w),17 stride=(patch_size_t, patch_size_h, patch_size_w)18 )19
20 def forward(self, x):21 # x: [B, C, T, H, W]22 x = self.proj(x) # [B, embed_dim, T', H', W']23 x = x.flatten(2).transpose(1, 2) # [B, num_patches, embed_dim]24 return x25
26# 示例:输入8帧256x256的视频27patch_embed = SpacetimePatchEmbed(patch_size_t=2, patch_size_h=16, patch_size_w=16)28video = torch.randn(2, 3, 8, 256, 256)29tokens = patch_embed(video)30print(f"Token序列: {tokens.shape}") # [2, (8/2)*(256/16)*(256/16)=1024, 768]Sora的另一个核心技术是 DiT(Diffusion Transformer) ——用Transformer架构替代传统扩散模型中的U-Net作为去噪网络的主干。
传统扩散模型(如Stable Diffusion)使用U-Net进行噪声预测。DiT的创新在于:将扩散模型的去噪过程建模为Transformer的序列预测任务。
DiT的工作流程可以概括为:
DiT的优势在于可扩展性——Transformer架构可以轻松扩展到数十亿参数,性能随模型规模和数据规模同步提升。
Sora就是建立在DiT之上的视频生成模型,它结合了扩散模型(生成能力)、Transformer(可扩展性)和时空Patch(灵活性)三者的优势。
音频数据是一维时间序列——声波在时间轴上的振幅变化。要让神经网络理解音频,首先需要将其转换为更合适的表示形式。
最常用的转换是频谱图(Spectrogram):通过短时傅里叶变换(STFT),将一维的时间信号转换为二维的时频表示——横轴是时间,纵轴是频率,颜色表示能量强度。
梅尔频谱图(Mel Spectrogram)是频谱图的一种变体,它使用梅尔滤波器组模拟人耳对频率的非线性感知。人耳对低频信号更敏感、对高频信号相对迟钝,梅尔尺度正是对这种感知特性的数学建模。
Whisper采用80维梅尔频谱图作为音频特征表示。具体参数为:
1import torch2import torchaudio3
4def extract_mel_spectrogram(waveform, sample_rate=16000, n_mels=80):5 """6 从原始音频提取梅尔频谱图(Whisper风格)7
8 Args:9 waveform: [B, T] 原始音频波形10 sample_rate: 采样率(Whisper使用16kHz)11 n_mels: 梅尔滤波器数量(Whisper使用80)12 """13 # 1. 短时傅里叶变换14 spec = torchaudio.transforms.Spectrogram(15 n_fft=400, # 25ms @ 16kHz16 hop_length=160, # 10ms @ 16kHz17 )(waveform) # [B, freq_bins, time_steps]18
19 # 2. 转换为梅尔尺度20 mel_spec = torchaudio.transforms.MelSpectrogram(21 sample_rate=sample_rate,22 n_fft=400,23 hop_length=160,24 n_mels=n_mels,25 )(waveform) # [B, n_mels, time_steps]26
27 # 3. 取对数(Log-Mel)28 log_mel_spec = torch.log(mel_spec + 1e-10)29
30 return log_mel_spec # [B, 80, T]31
32# 示例33waveform = torch.randn(2, 16000 * 10) # 2个样本,各10秒34mel = extract_mel_spectrogram(waveform)35print(f"梅尔频谱图形状: {mel.shape}") # [2, 80, 约1000个时间步]Whisper是OpenAI开源的通用语音识别模型,其架构设计清晰地展示了现代音频编码的标准方案。
Whisper采用编码器-解码器的Transformer架构:
编码器:
解码器:
Whisper的一个独特设计是:在输入层保留了原始音频的静音段信息,这使其能更好地处理口语中的停顿、呼吸声等非语言元素。
Whisper的训练数据规模达到68万小时的多语言音频,覆盖了多种语言、口音和录音环境,使其在零样本场景下也表现出色。
传统的文本到语音合成(TTS)系统通常采用级联架构:先通过声学模型将文本转换为梅尔频谱图,再通过声码器(Vocoder)将频谱图转换为音频波形。这种方法需要精心设计的中间表示,且对训练数据的质量和数量要求很高。
VALL-E提出了一种全新的思路:将语音合成建模为条件语言模型任务。
VALL-E的核心思想可以概括为:
VALL-E的训练数据达到了6万小时的英语语音,是当时现有TTS系统的数百倍。这种规模的数据让VALL-E展现出了上下文学习能力——它能从提示中提取说话人的音色、情绪和声学环境。
VALL-E 2在VALL-E的基础上引入了两项关键改进:
重复感知采样(Repetition Aware Sampling):改进原始的nucleus采样过程,考虑解码历史中的token重复情况,不仅稳定了解码过程,还避免了无限循环问题
分组编码建模(Grouped Code Modeling):将编解码编码组织成组,有效缩短序列长度,提升推理速度并解决长序列建模的挑战
VALL-E 2首次在零样本TTS任务上达到了人类水平(Human Parity)。
本文对视频理解、视频生成和音频处理三个领域做了基础性的梳理。它们看似独立,实则正在走向深度融合:
| 领域 | 核心任务 | 关键架构 | 代表工作 |
|---|---|---|---|
| 视频理解 | 理解视频内容 | 3D卷积、时空注意力 | VideoMAE, UniFormer |
| 视频生成 | 从文本/噪声生成视频 | DiT、时空Patch | Sora |
| 音频编码 | 将音频转为特征 | 梅尔频谱图、Transformer | Whisper |
| 语音合成 | 从文本生成语音 | 编解码语言模型 | VALL-E, VALL-E 2 |
这些技术正在汇聚成更强大的多模态系统——能够看懂视频、听懂声音、生成视听内容的通用模型。正如VideoMAE展示了视频自监督学习的潜力,Sora展示了视频生成的革命性突破,VALL-E展示了语音合成的新范式,它们共同描绘了多模态AI的未来图景:一个能够像人类一样同时处理视觉、听觉和语言的智能系统。
按顺序完成这组文章,循序渐进地掌握主题
发现错误、内容过时或有改进想法?欢迎告诉我
根据本文分类与标签,为你推荐可能感兴趣的内容

系统讲解具身智能中视觉-语言-动作模型(VLA)的核心技术:从RT-2的“动作即文本”范式出发,剖析动作Token化与Co-Fine-Tuning联合微调策略的数学原理;深入解读动作分块如何通过一次性预测未来K步动作解决时序不一致性问题;推导扩散策略中条件去噪扩散过程的噪声预测损失及其与动作分块的天作之合;并通过三维对比揭示各自优势与融合趋势。
阅读文章
系统讲解多模态文档检索的前沿技术ColPali:从传统OCR流水线的脆弱性出发,剖析ColPali如何通过PaliGemma视觉语言模型直接编码文档页面图像,跳过OCR与布局解析环节;深入解读延迟交互机制中MaxSim评分函数的数学原理及其相比单向量余弦相似度的精度优势;分析多粒度索引策略与跨模态查询重写技术。
阅读文章
系统讲解扩散模型(DDPM)的数学原理与条件生成技术:从马尔可夫链的前向扩散与反向去噪出发,推导ELBO如何简化为噪声预测MSE损失;深入剖析潜空间扩散如何通过VAE压缩实现约50倍计算量降低;追溯去噪网络从U-Net到DiT的架构演进及其在Sora中的应用;解析CFG的线性外推公式及引导强度的权衡.
阅读文章请使用微信扫描二维码分享
当前文章会保持在原页面