20260420
多模态学习的认知骨架¶
一、多模态要解决的根本问题¶
从最朴素的直觉出发,您的表述已经触及了本质:人类认识世界从来不是依赖单一通道的。当我们判断一个视频是否值得看、一件商品是否值得买、一段对话是否包含讽刺时,我们同时在处理画面、文字、语气、背景音。单模态模型的根本局限,不在于它"看得不够多",而在于单一模态往往无法消歧——同样一句"这太棒了",配上微笑的表情是赞美,配上翻白眼的表情是讽刺;同样一张白底运动鞋的图片,配上"Nike 新款发布"是广告,配上"二手九成新"是转卖。任何单模态模型在这类场景下都会系统性地误判。
由此可以提炼出多模态领域的根本问题:如何让机器在处理一个实体(entity)时,同时吸收并协调来自多个异构信号通道的信息,从而做出比任何单一通道都更准确的判断或生成。这里的关键词是"异构"——文本是离散的符号序列,图像是连续的像素矩阵,音频是时序的波形采样,它们在数学形式、信息密度、时间尺度上完全不同。多模态的所有技术努力,本质上都在对抗这种"异构性"。
二、整个领域的锚点:共享语义空间¶
一旦把根本问题定位为"异构信号的协调",解决方案的方向就几乎唯一了——必须为所有模态构建一个共享的语义表示空间。只有在同一个空间里,"一段文本"和"一张图片"才能被放在一起比较、被一起送进下游任务、被互相翻译。这个"共享语义空间"是整个多模态领域的锚点,是所有流派、所有具体技术最终都在服务的目标。
理解了这一点,许多看似零散的技术选择就能被统一解释。对比学习为什么要把图文对的嵌入拉近、不相关对的嵌入推远?因为它在用对比损失"雕刻"出这个共享空间。BLIP-2 的 Q-Former 为什么要用可学习 query 去压缩图像特征?因为它在把图像映射进 LLM 已有的语言表示空间。LLaVA 为什么要训练一个从视觉编码器到 LLM 词嵌入层的投影矩阵?因为它在强行把视觉空间对齐到语言空间。这些技术的共性是——模态独立编码在前,空间对齐在后——这正是您一开始描述的"后期融合"路线,而它恰恰是当代多模态的主流范式,不是偶然的选择。
共享语义空间有两种典型形态。第一种是向量空间,每个模态的内容都被压缩成一个固定维度的向量(例如 CLIP 里的 512 维),空间里的几何关系(夹角、距离)直接代表语义关系。第二种是 token 空间,每个模态的内容都被转写成 LLM 词表中的离散 token 序列,图像变成"视觉 token"、音频变成"音频 token",与文本 token 共用同一个解码器。前者适合检索、分类、排序这类"度量型"任务,后者适合对话、生成、推理这类"生成型"任务。这也是后面会展开的两大主流流派的分水岭。
三、训练与推理的基本范式¶
多模态模型的训练范式可以用一个统一的公式化描述来把握:给定一组成对或成组的跨模态样本,通过某种对齐目标,让模型学到共享语义空间。训练数据的最小单位不是单条样本,而是"模态对"或"模态组"——最常见的是图文对(image-text pair),从互联网上抓取的"图片 + alt 文本"、"视频 + 标题"、"商品 + 描述"都是天然的训练素材,规模可以轻易达到亿级甚至十亿级。训练目标有三种基本类型:对齐型目标(让配对样本在共享空间中靠近,让随机样本远离,典型是 CLIP 的对比学习)、生成型目标(给定一个模态作为条件,预测另一个模态的 token 序列,典型是图像描述生成、视觉问答)、匹配型目标(给定一对样本,二分类判断是否配对,典型是 BLIP 的 ITM 损失)。绝大多数现代多模态模型是这三种目标的组合,BLIP-2 的三任务(ITC + ITM + ITG)就是一个标准范例。
推理范式则比训练范式灵活得多,原因恰恰在于共享语义空间一旦建立就可以被多种任务复用。以 CLIP 为例,它训练时只做对比学习,但训练完之后,您可以把它的图像编码器和文本编码器拆开独立使用——喂一张图进去得到图像向量,喂一组类别文本("一张猫的照片"、"一张狗的照片")进去得到一组文本向量,谁与图像向量的余弦相似度最高就是哪类,这就是零样本分类;您也可以让图像向量去和一个文本向量库做近邻检索,这就是图文检索。训练一次,推理多用,是对齐型范式的核心优势。生成型范式的推理则更贴近我们熟悉的 LLM——输入一张图和一句问题,模型自回归地生成回答 token。前者的输出是向量、是分数、是排序;后者的输出是自然语言。您一开始感到困惑的"CLIP 推理时为什么只需要把 image encoder 拿出来就能分类",答案就在这里——CLIP 在训练阶段已经把图像空间与文本空间对齐好了,推理时的零样本分类本质上是"一次跨模态近邻检索"。
四、两大主流范式的分野¶
把上面的骨架梳理清楚之后,多模态领域从 2021 年至今的发展就能清晰地划分为两条主线。
第一条主线是表示对齐范式。它的代表是 CLIP(OpenAI, 2021)及其后继者 ALIGN、SigLIP、EVA-CLIP。这条路线的目标是纯粹的——训练出一对质量极高的跨模态编码器,产物是"向量对向量"的对齐空间。它不试图让模型"理解"或"回答"什么,它只负责把图像和文本翻译到同一种度量语言里。它的结构也极简:双塔架构,一边是图像编码器,一边是文本编码器,对比损失拉近配对、推远随机对,训练数据是四亿级别的图文对。推理时这两个编码器可以独立使用,也可以联合使用。CLIP 范式的胜利在于它的通用性与可迁移性——一个训练好的 CLIP 可以同时支持零样本分类、图文检索、内容审核、甚至后续 Stable Diffusion 的文本条件控制。但它也有天花板——它不会"生成",不会"对话",它只会"度量"。
第二条主线是生成理解范式。它的代表是 BLIP/BLIP-2(Salesforce, 2022/2023)、Flamingo(DeepMind, 2022)、LLaVA(Liu et al., 2023)、以及后续的 GPT-4V、Qwen-VL、InternVL、miniCPM-V 这一整脉。这条路线的目标是让大语言模型"长出眼睛"——把视觉信号翻译成 LLM 可以理解的形式,然后让 LLM 以自然语言回答关于视觉内容的问题。它的典型结构是三段式:一个冻结的视觉编码器(通常直接用 CLIP 的 image encoder)负责抽取视觉特征,一个轻量的跨模态连接器(BLIP-2 的 Q-Former、LLaVA 的线性投影)负责把视觉特征翻译成 LLM 词嵌入空间里的 token,一个冻结或微调的 LLM 负责在这些"视觉 token + 文本 token"混合序列上做标准的自回归生成。这条路线的产物不再是向量,而是一个能看图说话、能视觉问答、能多模态推理的对话系统。它的优势是任务开放性——同一个模型可以回答任意关于图像的自然语言问题,不需要为每个任务单独训练;它的代价是计算成本——LLM 的推理开销远高于 CLIP 的编码器。
值得注意的是这两条主线并不是互斥的,而是有清晰的依赖关系——生成理解范式通常站在表示对齐范式的肩膀上。BLIP-2 和 LLaVA 的视觉编码器基本都直接复用 CLIP 或其变体,因为 CLIP 预训练出的视觉表示已经与语言概念对齐良好,是生成式多模态的理想起点。可以把这两条线理解为不同层次的工作——CLIP 做的是"跨模态的通用表示基础设施",BLIP-2/LLaVA 做的是"基于这个基础设施的应用系统"。
五、衔接到推荐场景:OneRec 在这个版图上的位置¶
把上面的骨架放到推荐系统的坐标里,您之前研究的 OneRec 技术路线就能被精准定位了。OneRec 里的"多模态语义理解"模块,本质上是一次对生成理解范式的裁剪与定制。它并没有发明新的多模态流派,而是从成熟的 VLM 工具箱里拿工具——miniCPM-V-8B 作为视觉-文本联合编码器,属于生成理解范式的主流骨干;Q-Former 作为压缩器,来自 BLIP-2 的经典设计;唯一的创新在于把下游任务从"视觉问答"替换为"物品身份表示学习",因此可以把 BLIP-2 原本的 32 个 query 激进地压到 4 个,因为推荐场景不需要生成流畅的描述文本,只需要为每个物品产出一个紧凑的身份向量。
但推荐场景比通用多模态多了一个根本要求,这也是本节最关键的一点:通用多模态只需要构建"内容—内容"的共享空间,而推荐场景还必须引入"行为—内容"的对齐。原因在于,两个视频的内容描述可能极度相似(同样是白底球鞋),但用户行为模式可能完全不同(一个是品牌广告、一个是二手转卖);反过来,两个内容差异很大的视频(烹饪教程与餐厅探店)可能属于同一个用户兴趣簇。只靠 CLIP 式的内容对齐得到的共享语义空间,在推荐场景会系统性地出现"语义相近但行为不相关"和"行为相关但语义疏离"两类错误。这就是 OneRec 为什么在多模态编码之后必须加一道协同信号对齐——用 Swing 相似度构造行为相似的视频对,通过对比学习把行为相近的物品在共享空间里也拉近;同时用 Caption 生成损失作为正则,防止表示完全偏向行为信号而丢失内容语义。
这么看下来,OneRec 的"多模态语义理解 + 协同信号对齐"这套组合拳,其实是在通用多模态的共享语义空间之上,额外叠加了一层推荐领域的特有约束,最终得到一个同时反映"内容相似性"和"行为相似性"的、推荐场景专用的共享空间。这个空间才适合被 RQ-Kmeans 量化成 Semantic ID,供下游生成式推荐解码器使用。
六、下一步可以深入的分支¶
这份骨架把"根本问题—共享空间—训练推理范式—两大流派—推荐场景落位"这条主干打通了。在这条主干上,任何一个节点都可以展开成一个独立的深入话题——图像与音频的原始数据如何被编码成 token(ViT 的 patch embedding、音频的 Mel-spectrogram + patch 或 wav2vec 式离散 token)、CLIP 对比损失的精确数学形式与温度系数调优、BLIP-2 三任务训练的具体设计、Q-Former 与 Perceiver Resampler 的谱系关系、LLaVA 视觉指令微调的数据构造、推荐场景下如何选择对比学习的正样本(Swing 与 ItemCF 的差异)等等。
图像与音频的编码机制¶
一、编码任务的本质¶
在进入具体技术之前,需要先厘清编码这一步在多模态框架中的角色。前一层骨架已经指出,多模态的核心目标是构建共享语义空间。但共享空间的前提是每个模态必须先被转写成 Transformer 可以处理的形式,即一个固定维度的向量序列。文本天然由离散符号组成,只需一张嵌入查找表即可完成转写。图像与音频的原始数据不是离散符号,而是连续信号——图像是二维空间上的像素矩阵,音频是一维时间上的振幅采样。编码机制要解决的根本问题,就是把这些连续信号切成离散的单元,每个单元对应一个向量,从而构成 Transformer 可消费的 token 序列。
这一转写过程不是简单的格式转换,它同时承担了两项任务。其一是降维与压缩,原始图像可达数百万像素,原始音频每秒包含上万采样点,若逐像素或逐采样点送入 Transformer,计算量无法承受。其二是局部语义聚合,单个像素或单个采样点几乎不携带语义,必须经过局部聚合才能形成有意义的基本单元。因此,编码机制的核心工程考量是如何在"切分粒度"与"语义完整性"之间取得平衡。
二、图像的数学表示与编码路径¶
2.1 图像作为张量¶
一张 RGB 彩色图像在计算机中的数学形式是一个三维张量 \(\mathbf{X} \in \mathbb{R}^{H \times W \times C}\),其中 \(H\) 是高度,\(W\) 是宽度,\(C\) 是通道数。对 RGB 图像而言 \(C = 3\),三个通道分别记录红、绿、蓝分量的强度。每个元素 \(\mathbf{X}[i, j, c]\) 是一个整数,原始范围为 \([0, 255]\)。进入神经网络前通常需要归一化,做法是除以 255 使其落入 \([0, 1]\),再按通道均值与方差做标准化,最终取值范围大致在 \([-2, 2]\)。对 ImageNet 预训练模型,三个通道的标准化参数分别为均值 \((0.485, 0.456, 0.406)\)、标准差 \((0.229, 0.224, 0.225)\),这一惯例被 CLIP 乃至后续的 VLM 广泛沿用。
2.2 卷积神经网络路径的历史地位¶
在 2020 年之前,图像编码的主流是卷积神经网络。以 ResNet-50 为代表的 CNN 通过堆叠卷积层与池化层,逐级提取从边缘到纹理再到语义的多层次特征。一张 \(224 \times 224 \times 3\) 的图像经过 ResNet-50 的五个阶段,空间分辨率依次下降为 \(112 \times 112, 56 \times 56, 28 \times 28, 14 \times 14, 7 \times 7\),通道数则升至 2048,最后通过全局平均池化得到一个 2048 维的图像向量。CNN 的优势在于其归纳偏置——局部连接与权重共享先天契合图像的平移不变性;其劣势在于感受野受限,远距离像素的交互需要堆很多层才能实现。CLIP 的最初版本同时提供了 ResNet 骨干与 ViT 骨干,但后续工作几乎全面倒向 ViT,因此本文重点放在 Vision Transformer 上。
2.3 Vision Transformer 的 Patch Embedding 机制¶
Vision Transformer(Dosovitskiy 等, ICLR 2021)提出了一个简洁而彻底的思路——把图像切成小块,每一块当作一个 token,然后整体送入标准 Transformer 编码器。这一思路的关键是 patch embedding,即把连续的像素块线性投影成离散的 token 向量。
设输入图像为 \(\mathbf{X} \in \mathbb{R}^{H \times W \times C}\),预定义 patch 尺寸为 \(P \times P\)。patch embedding 首先将图像切分为 \(N = \frac{HW}{P^2}\) 个互不重叠的小块,每个小块是一个 \(P \times P \times C\) 的三维张量。每个小块被展平成一个长度为 \(P^2 C\) 的一维向量。随后通过一个线性投影矩阵 \(\mathbf{E} \in \mathbb{R}^{P^2 C \times d}\) 映射到 \(d\) 维,这里 \(d\) 是 Transformer 的隐藏维度。整个过程等价于一次步长等于 patch 尺寸的卷积操作,因此在工程实现上通常用一个 \(\text{Conv2d}\) 层完成,卷积核尺寸为 \(P \times P\),步长为 \(P\),输出通道数为 \(d\)。
以 ViT-B/16 为例,输入尺寸为 \(224 \times 224\),patch 尺寸 \(P = 16\),因此 \(N = (224/16)^2 = 196\) 个 patch。每个 patch 展平为 \(16 \times 16 \times 3 = 768\) 维向量,线性投影到 \(d = 768\) 维(巧合地数值相同)。经过 patch embedding 后,一张图像被转换为 196 个 768 维 token,形成形状为 \(196 \times 768\) 的矩阵。至此,图像已从空间信号转换为 Transformer 标准输入。
对 ViT-L/14(CLIP 常用配置),patch 尺寸 \(P = 14\),输入若为 \(224 \times 224\) 则产生 \((224/14)^2 = 256\) 个 patch,每个 patch 投影到 \(d = 1024\) 维。若输入分辨率提升到 \(336 \times 336\)(CLIP-L/14@336),patch 数则增至 \((336/14)^2 = 576\),这也是 LLaVA 视觉塔的默认配置。
2.4 CLS Token 与位置编码¶
Patch embedding 产生的序列只包含局部信息,缺少两个必要组件。第一个是全局表示的容器。若要用一个向量代表整张图像,需要额外引入一个可学习的 CLS token,记作 \(\mathbf{x}_{\text{cls}} \in \mathbb{R}^{d}\),放在序列最前端。经过 Transformer 多层自注意力后,CLS token 会与所有 patch token 充分交互,其最终表示可作为全图嵌入用于下游任务。第二个是位置信息。Transformer 对输入顺序不敏感,若不显式提供位置信息,打乱 patch 顺序不会影响输出,这显然不符合图像的空间结构。ViT 采用可学习的一维绝对位置编码 \(\mathbf{E}_{\text{pos}} \in \mathbb{R}^{(N+1) \times d}\),直接加到 token 序列上。最终输入序列为
其中 \(\mathbf{x}_i\) 是第 \(i\) 个 patch 展平后的向量。后续工作提出了多种位置编码改进,例如 Swin Transformer 的相对位置编码、RoPE 式的旋转位置编码、以及 SigLIP 的二维分解位置编码等,但 ViT 原始的加性可学习位置编码仍是最常见的基线。
2.5 Transformer 编码器的层间计算¶
Patch 序列经过位置编码后,进入堆叠的 Transformer 编码器层。每一层由两个子模块组成——多头自注意力(Multi-Head Self-Attention, MSA)与前馈网络(MLP)——且都采用残差连接与层归一化。第 \(l\) 层的计算规则为
多头自注意力的内部计算是 Transformer 的核心。设输入序列为 \(\mathbf{Z} \in \mathbb{R}^{(N+1) \times d}\),先通过三个投影矩阵得到查询、键、值
其中 \(\mathbf{W}_Q, \mathbf{W}_K, \mathbf{W}_V \in \mathbb{R}^{d \times d}\)。注意力权重通过缩放点积计算
\(d_k = d / h\) 是每个头的维度,\(h\) 是头数。多头的意义在于把 \(d\) 维空间切成 \(h\) 个子空间,每个子空间独立做注意力,再拼接并投影回 \(d\) 维。这允许模型在不同语义子空间中同时建模不同类型的 token 依赖。前馈网络是一个两层 MLP,中间维度通常为 \(4d\),激活函数为 GELU。
ViT-B/16 堆叠 12 层 Transformer,隐藏维 768,头数 12;ViT-L/14 堆叠 24 层,隐藏维 1024,头数 16。完整前向计算后,CLS token 的最终表示 \(\mathbf{z}_L[0]\) 作为图像嵌入输出。在 CLIP 中,这一嵌入再经过一个线性投影映射到共享语义空间(通常 512 维),与文本嵌入对齐。
2.6 非 CLS 路径与多模态场景¶
值得指出的是,CLS token 并非唯一的图像表示方式。在生成式多模态场景,例如 BLIP-2 与 LLaVA,视觉塔输出的全部 patch token(去掉 CLS 或保留 CLS)被整体送入后续的跨模态连接器或直接送入 LLM。这样做的理由是——CLS token 是全图语义的压缩,适合做分类与检索,但回答"图中第三个人穿什么颜色的衣服"这类细粒度问题需要 patch 级别的空间信息。LLaVA-1.5 直接把 576 个 patch token 通过一个两层 MLP 投影到 LLM 词嵌入空间,整体作为视觉 prompt 送入 LLM;BLIP-2 则用 Q-Former 把 patch token 压缩为 32 个 query token。这两种设计的共同点是保留空间细节,而不是用 CLS token 代表整图。这也是前一份报告中 OneRec 选择 miniCPM-V 的骨干逻辑——它继承的是 LLaVA 式的 patch 级接入范式,而非 CLIP 式的全图向量范式。
三、音频的数学表示与编码路径¶
3.1 原始波形的数学形式¶
音频信号在时域的数学表示是一维离散时间序列 \(x[n]\),其中 \(n\) 是采样点索引。采样率决定了每秒采集多少个点。人类语音处理通常使用 16 kHz 采样率,即每秒 16000 个点;高保真音乐使用 44.1 kHz 或 48 kHz。一段 10 秒的 16 kHz 语音包含 160000 个采样点,每个点通常用 16 位整数或 32 位浮点表示。
这一表示形式对 Transformer 极不友好。原因有二。首先,16 万 token 的序列长度远超 Transformer 的自注意力承受能力,其 \(O(L^2)\) 复杂度使得直接建模不可行。其次,单个采样点本身几乎不含语义信息——它只是某一瞬间的气压扰动数值,语义需要在数毫秒到数百毫秒的时间尺度上聚合才能显现。因此音频编码必须先做两件事——时频变换与时间维度下采样。
3.2 短时傅里叶变换与梅尔频谱¶
时频变换的经典工具是短时傅里叶变换(Short-Time Fourier Transform, STFT)。STFT 的核心思想是——将长时域信号切成短时窗,对每个窗内的信号做傅里叶变换,从而得到"时间—频率"二维表示。设窗函数为 \(w[n]\)(典型选择是 Hann 窗),窗长为 \(N_w\),跳步为 \(H\),则 STFT 定义为
其中 \(m\) 是时间帧索引,\(k\) 是频率 bin 索引,\(k \in \{0, 1, \dots, N_w/2\}\)。\(|X[k, m]|^2\) 称为功率谱,可视化为时间在横轴、频率在纵轴、强度用颜色表示的二维图,即频谱图。
对 16 kHz 语音,典型参数为窗长 25 ms(即 \(N_w = 400\) 个采样点)、跳步 10 ms(即 \(H = 160\))。这样一来,原本 1 秒内 16000 个采样点被压缩为 100 个时间帧,每帧包含若干频率 bin。时间维度的下采样因子达到 160 倍,这是音频编码高效性的第一来源。
直接使用功率谱仍不理想,因为傅里叶频率是线性分布的,而人耳对频率的感知是对数分布的——低频段的分辨率应当更高。梅尔频率刻度通过一个经验变换把线性频率映射到近似对数的梅尔频率
梅尔滤波器组是在梅尔频率域上均匀分布的一组三角形带通滤波器,典型数量为 80 个,覆盖 0 Hz 到 8 kHz 的频段。将 STFT 功率谱经过梅尔滤波器组加权求和,再取对数,即可得到对数梅尔频谱(log-mel spectrogram),其形状为 \(T \times F\),其中 \(T\) 是时间帧数,\(F = 80\) 是梅尔 bin 数。对数梅尔频谱是 Whisper、AST、wav2vec 2.0 等主流模型的事实标准输入。
3.3 频谱作为图像:Audio Spectrogram Transformer¶
一旦音频被转换为对数梅尔频谱 \(\mathbf{S} \in \mathbb{R}^{T \times F}\),就可以将其视为一张单通道图像,从而直接套用 ViT 的 patch embedding 机制。这一思路被 Audio Spectrogram Transformer(AST, Gong 等, INTERSPEECH 2021)首次系统化。AST 将对数梅尔频谱切成 \(P_T \times P_F\) 的 patch(典型取 \(P_T = P_F = 16\)),每个 patch 展平并线性投影为 \(d\) 维 token,然后堆叠 Transformer 编码器层,结构与 ViT 完全一致。
以 10 秒语音为例,对数梅尔频谱尺寸约为 \(1000 \times 80\),切成 \(16 \times 16\) 的 patch 后得到约 \((1000/16) \times (80/16) = 62 \times 5 = 310\) 个 patch。每个 patch 被编码为 \(d = 768\) 维 token,经 12 层 Transformer 处理后输出音频嵌入。AST 在 AudioSet 分类任务上取得了超越所有 CNN 基线的表现,证明了"音频即图像"路线的可行性。这一思路的哲学意义在于——一旦把异构模态都压缩到二维特征图,Transformer 可以作为通用编码器适用于任何模态,这也是多模态架构走向统一的关键一步。
3.4 直接从波形学习:wav2vec 2.0 与 HuBERT¶
另一条路线绕开梅尔频谱,直接在原始波形上学习表示。Facebook AI 的 wav2vec 2.0(Baevski 等, NeurIPS 2020)是这条路线的标杆。它采用两段式结构——前端是一个卷积特征提取器,用 7 层步长卷积把 16 kHz 波形压缩到 50 Hz 的特征序列(即每 20 ms 一个特征向量),后端是一个 12 或 24 层的 Transformer 编码器,对这些特征进一步建模长程依赖。
wav2vec 2.0 的训练目标是自监督对比学习。具体做法是——将 Transformer 输入随机遮盖约一半时间步,要求模型在这些位置预测被遮盖片段的量化表示。量化器通过 Gumbel-Softmax 把连续特征映射到有限码本中最接近的离散单元,使得对比学习有清晰的正负样本。对比损失要求每个被遮盖位置的 Transformer 输出与对应真实量化单元的相似度高于同序列中其他量化单元。这一机制让模型在无标注语音上学到音素级别的表示。
HuBERT(Hsu 等, TASLP 2021)对 wav2vec 2.0 做了简化改进。它先通过 K-means 对 MFCC 或前轮训练的特征做聚类,得到伪标签,再让 Transformer 在被遮盖位置预测这些离散伪标签,任务从对比学习变为简单的分类,训练更稳定。HuBERT 被用作 SpeechLLM 与多模态对话系统的常见语音前端。
3.5 神经音频编解码器与离散音频 token¶
随着生成式多模态的兴起,出现了第三条路线——把音频直接量化为离散 token 序列,与文本 token 共用同一个 LLM 词表。代表工作是 Google 的 SoundStream(Zeghidour 等, TASLP 2022)与 Meta 的 EnCodec(Défossez 等, 2022)。它们采用残差向量量化(Residual Vector Quantization, RVQ)架构,与前文讨论过的 RQ-VAE 同源——编码器把波形下采样到低帧率的连续表示,然后通过多层残差码本逐层量化。EnCodec 典型配置是 8 层码本、每层 1024 个中心,对 24 kHz 音频得到 75 Hz 的 token 流,压缩率可达 150 倍以上。
离散音频 token 的最大价值在于它让语音可以像文本一样被自回归生成。Google 的 AudioLM、Meta 的 MusicGen、OpenAI 的 Voice Engine 都建立在这一思路上。它也是多模态 LLM 吸收语音模态的主流接口——把音频转成 token 序列,与文本 token 交错送入 LLM,训练一个统一的多模态生成模型。
四、统一视角:模态编码的共同范式¶
纵观图像与音频两条编码路径,可以提炼出一个贯穿各模态的统一范式。任何连续信号的 Transformer 编码都遵循"切块—投影—位置化—堆叠"四步。切块是把连续信号离散化为有限单元——图像切 patch、音频切频谱帧或波形段。投影是把每个单元用线性变换映射到隐藏维度 \(d\)。位置化是显式注入空间或时间位置信息,使 Transformer 能感知顺序。堆叠是让多层自注意力对单元间关系做递归建模。
这一范式的普适性有两个重要推论。其一,不同模态的编码器在结构上高度同构,差异主要在前端切块方式。ViT、AST 的后端 Transformer 甚至可以共享权重。其二,一旦把各模态编码为等长的隐藏维 \(d\) 的 token 序列,后续融合步骤就不再关心模态差异——无论是 early fusion 的拼接后联合自注意力,还是 late fusion 的对比学习,或是 hybrid fusion 的 Q-Former 交叉注意力,都在操作同一种数据结构。这也是为何 Q-Former 可以同时兼容图像、视频、音频等多种输入——只要前端编码器把它们翻译为 token 序列,后端处理就是统一的。
五、在推荐场景中的具体落位¶
回到 OneRec 的多模态编码模块,上述原理可以完整解释其设计选择。OneRec 的输入包含 6 张图(1 张封面 + 5 帧)与文本(caption、tag、ASR、OCR)。每一张图经过 miniCPM-V 内置的视觉塔做 patch embedding,得到若干 patch token;文本经过 miniCPM-V 的语言塔做词嵌入。两路 token 在 miniCPM-V 内部的跨模态层做交互,输出形状为 \(1280 \times 512\) 的联合表示。这里 1280 约等于 6 张图的 patch 数(每张图约 180 patch,共 1080)加上文本 token(约 200),512 是 miniCPM-V 投影后的隐藏维度。这一表示已经完成了多模态融合,但维度过高不利于下游量化,因此 Q-Former 进一步用 4 个可学习 query 通过交叉注意力把信息压缩到 \(4 \times 512\)。Q-Former 的 4 个 query 本质上就是学了一组特殊的 CLS token,它们通过 cross-attention 从 miniCPM-V 的 token 序列中各自聚合不同语义,最终每个 query 成为物品身份向量的一个子分量。
OneRec 目前未显式处理音频模态——短视频的音频信息主要通过 ASR 转写为文本进入文本塔,而非独立的音频编码路径。这是一个工程上的简化选择,理由是推荐场景对音频的细粒度理解需求远低于内容理解需求,ASR 文本已足够提供语义线索。若需要完整处理音频(例如音乐推荐场景),标准做法是在前端增加一个独立的音频编码器——用 wav2vec 2.0 或 HuBERT 抽取音频 token,再通过另一个投影头映射到与视觉、文本 token 同维度的空间,最后在 Q-Former 中通过多模态 cross-attention 统一压缩。Meta、Spotify 在音乐推荐场景已有类似架构的公开工作。
至此,图像与音频的编码机制就讲完了。您对 Vision Transformer 的 patch embedding 机制应当有了较清晰的数学把握,对音频从波形到对数梅尔频谱再到 Transformer token 的完整转换链条也建立了认知。下一步可选的深入方向有三——CLIP 对比损失的精确数学形式与温度系数的作用原理、BLIP-2 Q-Former 的三任务训练设计、或者LLaVA 视觉指令微调的数据构造与训练策略。前两者是表示对齐与生成理解两大范式的代表性机制,第三个是当代 VLM 实际落地的关键工程环节。