面对大千世界的各种模态的信号流,主张大一统模型的研究者强调的是把信号流切片token化,分别映射到模型内部的同一个“语义场”(多维向量空间)去做联合训练、统一建模。
常见的做法是把其他模态像文本一样元素化成token序列,以便一体化进行序列学习。序列学习是大语言模型(LLM)的成功秘诀。万象token就为“序列学习”向多模态的拓展夯实了基础。当文字、图像、音频、视频都被切分成可计算的 token 之后,还差最后一步:让它们在同一支乐队里合奏(训练与生成)。最朴素的做法,是给不同乐器发护照。进入模型之前,每段输入都带上自己的“标签”——几个特殊的起始符号,告诉总指挥接下来要演奏的是图像、还是音频、还是文字。比如在序列前插入特殊标记 <image> 或 <audio> 来提示模型接下来的是图像token或音频token。位置编码则像排座表,标明这几个 token 在句子里、在画面里、在时间里的相对关系。经过几轮训练,模型自然学会了这些标签的含义:该看图时看图,该听音时听音,叙述时再把它们粘合成连贯的一段话。
更高一层的融合,靠的是注意力。注意力像一间开着玻璃门的排练厅,文字能朝图像那边投去目光,图像也能回以点头;久而久之,某些注意力头专门处理“图对图”的联系,另一些头则擅长“图对文”的翻译。Flamingo 把这件事讲得明白:在语言模型的层间插入跨模态注意,让“正在写的那个词”随时能回望它要描述的那一块图像。读者在现实里看到的,是对一张图的循序追问与回答;模型内部发生的,是一串文字 token 一边向前写,一边把注意力投向最相关的视觉片段。
工程上常见一条折中路径:先让前端的“行家里手”各自把关,再汇入总谱。以谷歌在机器人方向的 PaLM-E 为例,图像先交给预训练视觉编码器(如 ViT)提炼成紧凑表征,经投影变成“感知 token”;文本照常token化嵌入;必要时再拼上机器人的状态向量。它们带着各自的“标签”一起进入同一主干的 Transformer,对话、推理、决策在一条大谱子上完成。前端好比拾音器, 负责对原始信号整理压缩。
具体而言,“拾音器”指各模态的专用编码器(图像的 ViT、语音的声学编码器等);“前端”是拾音器加一层小小的投影/适配,把特征变成主干能消化的语义 token;“主干”就是那台统一的 Transformer,总负责跨模态对齐、长程记忆与推理。这样一来,主干“拿到的是乐曲”,而不是“每个麦克风的原始电流”。主干 Transformer 就像“总指挥兼编曲”:它不直接处理像素和原始声波,而是接收各模态前端已经提炼好的“音轨式”表征,在同一张谱面上做对齐、记忆和推理。冗余的原始细节与噪声被前端挡下。在生成时像素级的细节由扩散或解码器按主干给出的计划“回填”出来。
例如,一张 224×224 的图片有十五万多个像素,如果把它们全丢给主干,注意力会在海量重复纹理里打转;ViT 这样的“拾音器”先把图像切块、编码、压成大约200个视觉 token,每个 token 像一小段旋律,里头保留了边缘、形状、关系这些对理解最有用的信号。音频也是同理:原始的 16k 采样会先变成几十上百帧的梅尔特征或潜向量,节奏与音色被提炼出来,底噪与冗余被过滤掉。主干处理的,正是这些“语义更浓”的 token(semantic token,指密度高、可供主干推理的表示),既轻了计算,又不丢关键信息。在端到端联合训练里,主干的梯度会回到前端,促使前端把“该保的细节”保住,“该省的冗余”省掉。
主干里那些“少而精”的语义 token,不背像素级细节——细节是靠另一条更宽的通道在生成阶段“回填”进来的。常见有三种做法,思路都很朴素:主干定纲领,渲染器出细活。
第一种像“作曲—配器”。前端不是只进不出,它和解码器是成对训练的:编码把画面压成紧凑表示(离散码字和潜向量),解码能把它还原回像素世界。到生成时,主干并不搬运像素,而是预测/规划那些可还原的表示——比如一串 token、或一帧的低维潜向量。解码器据此“配器”,把纹理、光影、材质逐步展开。咱们可以把主干理解成“决定用哪组和弦与节奏”,解码器则把它演成真实的声音与质感。图像/视频里的主流路线(自编码器/向量量化这一路,VQ-VAE、MAGVIT 等),都是靠“预测可解码的表示→解码还原”把细节接回来的。多级量化采用“先粗后细”的回填方式:主干先给上层码字(上层码本的token),渲染器先出个八成像的底,再按下层“残差”码字把细节一层层补齐。
第二种像“分镜—摄影”。主干只给出低清草图或结构计划:布局、光流、关键点、相机走位之类;然后把每一帧交给帧内扩散或潜空间渲染器去“冲洗”。扩散模型不需要主干携带所有细节,它从噪声出发,在条件的引导下把细节一层层显出来;主干提供的条件是朝向与约束(我是谁、往哪儿动、镜头怎么走),细节由渲染器在高分辨潜空间里补足。这就是我们前面说的“下一帧预测 + 帧内扩散”:时间连贯归主干,质感细节归扩散。
第三种像是“粗到细的制版流水线”。主干先把低分辨粗粒度的表示接出来;随后一层层超分(超分辨率/SR,super resoltion)、补残差,把分辨率与纹理往上叠。越往后,通道越“宽”,带宽主要花在渲染头上,而不是让主干背负长到爆炸的像素序列。很多系统会把这几级做成可选挡位:来不及就先到 720p,有时间再“加一档”到 1080p/4K。
这里还有个常被忽略的小细节:主干并不是一刀切地“丢掉细节”。一方面,前端/解码器常与主干联合训练,梯度会推动前端只“压掉冗余”,而把对下游生成最要紧的线索(边缘、材质、风格、节奏)保在可还原的潜空间里;另一方面,很多渲染器会在末端回看前端的多尺度特征(像 U-Net 的跳连、或解码时的跨注意力),需要时还能跨注意力去“查询”那批高带宽特征,而不必把它们全搬到主干里当行李。
具体说来,渲染时是否和如何查询前端的高分辨细节,要分两种情况:
如果是从零生成(文生图、文生视频),没有可参照的高分辨输入,渲染器就不会去“查前端”。它靠训练时学到的统计规律,把主干给的计划“脑补”成可信的纹理与光影;这时文本“前端”只是用来建潜向量的编码器,采样阶段并不参与。
可条件生成/编辑时(例如图生图、修复、上色、视频续帧、风格迁移等),渲染器确实会“回看前端”:把参考图像或上一帧先过一遍编码器,得到多尺度特征,再让解码/扩散网络在每一层通过跳连或跨注意力去取这些高分辨线索,精确对齐边缘、纹理、笔触。这样细节被“就地取材”,不需要搬入主干长期背着。
在主流自编码器/向量量化这一路上,编码和解码是一枚硬币的两面:编码器把图像/视频压进一个共同的潜空间,解码器把潜向量/码字还原回像素,它们围绕同一套内部潜表征协同训练,接口一致、职责相反;但它们不是同一组权重的逆运算,而是两套网络学会“翻译同一种潜语言”。到了生成时,是否用到编码器取决于任务:无条件生成只用到解码器,有参照的编辑/视频一致性才会把编码器也拉进来做“高分细节的供给”。
把这几条合在一起看,过程就清楚了:主干定纲领,专注于语义连贯与因果逻辑,细节不在主干里长途跋涉;渲染器出细活;有参照就“回看前端”,没参照就靠扩散显影,由解码/扩散/超分这些高带宽“后端”在本地重建。编码与解码共享同一内部潜表示,各司其职、同币异面。