论文总结 | Next Token Prediction Towards Multimodal Intelligence A Comprehensive Survey

背景

文章介绍了截至 2024 年,多模态大模型的进展。文章从词元化(tokenization)、骨干网络(backbone)、训练方式(training)、数据集(dataset)四个方向进行总结,并给出了多模态模型的未来发展方向及挑战。这对于我们了解和部署多模态大模型非常有帮助。

同时,本文主要是梳理相关基础内容,暂不对论文中给出的所有参考文献做详细解析,仅对关键点进行总结。

模型流水线组成

General pipeline of Multimodal Learning with Next Token Prediction MMNTP

这张图主要分为三个部分:

  1. Tokenization是将输入数据转换为模型可以处理的形式的过程。图中展示了两种类型的词元化:
    • Discrete Tokens:输入图像通过Encoder转换为特征表示,这些特征表示通过Vector Quantization过程转换为离散的词元(如数字7、2、9等)。为了确保词元的生成质量,离散词元在训练阶段还需要通过Decoder转换回图像。
    • Continuous Tokens:输入图像同样通过编码器转换为特征表示。这些特征表示通过Projector转换为连续的词元。
  2. Modeling部分展示了Transformer模型的内部结构及其工作原理:
    • Decoder Layer:输入经过多层变换,包括Self-AttentionLayerNorm多层感知机
    • Attention Mask:注意力掩码模式包括因果、半因果模式和前缀模式用于生成下一个词元预测。
    • Next Token Prediction:即自回归范式,模型根据输入生成下一个词元。
  3. Training Objects部分展示了模型在训练过程中对任务建模的方式:
    • Discrete Token Prediction:根据任务的不同,生成离散的文本 ID 或者离散的图像 ID。文本 ID 可以直接变为人类可观测的文本结果,即图中的 “Girl with a Pearl Earring”;图像 ID 需要通过量化向量解码器(VQ Decoder)生成图像。
    • Continuous Token Prediction:考虑到图像或者音频都是连续的,这部分模型不使用向量量化技术,而是将输出直接建模为图像(Direct Output)或者隐藏变量(Latent Variable),并使用 Diffusion 模型生成图像。

词元化 | Tokenization

部分文章可能会将词元化模型表述为嵌入模型

多模态词元化

Multimodal Tokenization

上图主要展示了多模态词元化的过程,如下:

$$
x = \text{Encoder}(p)
$$

$$
z = \text{argmin } d(c_i, x), c_i \in \text{CODEBOOK}
$$

$$
z = \mathbf{f}(x), \mathbf{f} = \text{Projector}
$$

其中,$p$ 是输入的多模态数据,$x$ 是编码器输出的特征表示,即图中的 Multimodal Tokenizer,$c_i$ 是 codebook 中的嵌入向量,$d(\cdot, \cdot)$是距离函数,$\mathbf{f}$ 是投影器函数。$z$ 是最终映射到文本空间的多模态信息。由于 codebook 大小是固定的,所以第一种被称为离散式词元化,第二种则被称为连续词元化。

通过这种方式,实现了多模态信息与文本空间的解耦,将多种不同的输入信息映射为一个紧凑的向量表示,便可以使用标准的文本模型进行后续处理。

如何训练词元化模型

论文中介绍了四种不同的训练方式,如下图所示:

Training Method of Multimodal Tokenizer

一些代表性的模型如下:

训练方法 模型
Auto-Encoding VAEs, diffusion models
Denoising Auto-Encoding BERT, MAE, HuBERT
Supervised Pretraining SAM, ViTDet, MiDaS
Contrastive Learning Clip, SigLip, DINO

训练细节如下:

  1. 自编码器:自编码器用于学习一个高效的数据表征,包含两个模块:编码器和解码器。编码器将输入数据映射到维度缩小的潜空间,解码器则从该潜表示重建输入数据。自编码器的训练目标是尽量减小重构误差,确保解码输出与原始输入非常相似。因此自编码器模型具有多模态生成能力
  2. 去噪自编码器:去噪自编码器以自编码器概念为基础,在输入数据中引入噪声,并训练模型重建原始的无噪声版本。这种方法鼓励模型学习能够处理数据损坏的稳健特征,从而提高其泛化能力。
  3. 监督预训练:利用监督学习在大数据集上对词元化模型进行预训练,然后将其作为词元化模型与 LLM 一起训练。例如许多文本识别模型都会使用 Whisper 提取语音特征,而 Whisper 在 680,000 小时的有标注语音数据集上进行了预训练。
  4. 对比学习:对比学习是一种自我监督学习方法,其核心思想是在表征空间中拉近相似(正)样例的距离,同时拉远不相似(负)样例的距离。

论文指出,目前多模态理解模型(例如 LLaVA、BLIP)均使用具有较好表征能力的词元化模型,如 CLIP,因为它们不需要生成多模型数据,只需要生成文本结果;而具有多模型生成能力的模型(例如 Emu3)倾向于选择 VQVAE 结构的模型作为词元化模型。

从流水线架构来看,论文认为:

  1. 通过自回归范式生成离散化多模态 ID 的模型,倾向于选择向量量化的词元模型
  2. 使用 diffusion 过程生成多模态结果的模型,倾向于使用 LLM 输出的 hidden_states

离散词元建模与码本

简介

为了将连续的多模态数据表达为离散的 token id,一个自然的形式是使用量化技术,例如使用四舍五入方式将浮点数映射到整数上。Vector Quantization将原始的连续输入压缩到一个固定大小的码本中,对于向量,我们使用的方式最近邻算法,将向量压缩到距离最近的一个向量中。

Vector Quantization

上图表示了 Vanilla VQVAE 向量量化的过程。编码器将输入转为隐藏表征 $Z$,每个向量 $z_i$ 都被量化为码本 $C=\{c_i \mid i = 1, \dots, k \}$ 中的一个向量 $c_i$,得到量化向量 $\hat{Z} = \{ c_i \mid i = 1, \dots, N \} = \text{argmin}_{c_i \in C} || z-c_i ||_2$。解码器将量化向量 $\hat{Z}$ 恢复为原始的连续输入。

论文还介绍了其他的 VQVAE 模型,涉及到算法细节,这里就不再赘述了。

通过向量量化得到的多模态词元 ID 和文本词元 ID 是相同的,都被算入到词典大小中。在进行多模态预训练时,LLM 优化的是语言模型内部的嵌入层。

其它模态的离散词元化

图像。图像数据拥有许多稠密特征,如像素值、颜色、纹理等,但缺少语义信息。要在离散图像词元和文本信息之间建立起联系,需要一个强大表征能力的编码器。它需要能够对齐 LLM 的语言能力(表征能力),同时保留丰富的图像信息(重构能力),最后还需要在词元数量和计算复杂度之间找到平衡(词元效率)。

语音。原始音频以 16bit 进行储存,并通过采样率得到每秒的音频信号,一个常用的音频采样率为 48kHz。由于采样率非常高,因此语音编码器的工作方向主要集中于语音压缩,构建紧凑的语义表征(语音识别)和音色表征(语音克隆)。

视频。视频可以视为增加时间维度的图像数据。一个直接的策略是逐帧提取图像词元,这也是需要基座模型的方式;但是这会带来大量冗余信息,且缺少视频上下文信息。论文提出了两种视频词元化模型的算法:1、Joint Image-Video Tokenization,合并图像和视频的词元化,每个 clip = 一个代表帧 + 压缩后的视频词元,有点像视频压缩;2、Temporal Causality,为视频帧添加时序-因果掩码。

其它模态。论文介绍了一些基于 Next Token Prediction 范式的其他模态模型,比如:1、计算机视觉的检测、分割等任务;2、具身智能使用 NTP 进行动作规划;3、AI4Science 领域生成蛋白质结构。

连续词元化建模

简介

Continuous Tokenization

上图展示了连续词元化模型的结构。与离散词元化模型不同,连续词元化模型多了两个适配器 $E^\prime$ 和 $D^\prime$,用于将编码器输出和 LLM 输入对齐、并将 LLM 输出和解码器输入对齐。

为什么离散词元化建模的模型不需要适配器?因为当多模态输入被转为多模态词元 ID 之后,实际上是从 LLM 的嵌入层中提取嵌入向量,二者是完全对齐的。

用于多模态理解的编码器

多模态理解的连续词元化模型需要有两个关键模块:特征提取到一个合适的表征空间(编码器)、将其与 LLM 特征空间对齐(适配器)。

编码器。编码器用于捕获语义特征,以及重要的细微差别。常用的编码器有基于 transformer 的编码器,如 ViT、CLIP 等;以及基于 CNN 的编码器,如 ResNet 等;也有无需编码器的方式,直接将原始数据输入 LLM。

适配器。编码器对非文本模态数据编码后,可以得到一个有语义的的表征,但是这种表征与 LLM 的文本嵌入空间不一致。原因在于:1、存在冗余词元;2、缺少上下文语义,因为它们一般使用 image-caption 数据对进行训练,而不是 image-text 交错数据或者 image-instruction 数据训练。因此,在非文本模态数据的表示空间和 LLM 文本嵌入空间之间建立连接非常重要。

  • image-text 交错数据:图文混杂的输入格式,让 LLM 实现图像理解,用于 pre-training,例如许多文档
  • image-instruction 数据:提示词指令,用于 post-training,例如通过提示词让 LLM 在图片中实现 OCR

适配器一般有下面几种:

  1. 基于槽的重采样器基于槽的重采样器将编码阶段的冗余非文本模态标记压缩成较少的学习查询向量,即所谓的槽。这通常是通过使用具有交叉注意机制的多个变换器块来实现的。简单的来说,这种算法一般使用 Cross-Attention 模块,将编码器的输出作为 Key-Value,将 slot 输入作为 Query,将模态数据压缩并且编码到 Query 中。例如,MiniCPM-o-2_6 的视觉模块就以重采样器作为适配器,在 modeling_minicpmo26.py#L107 中也可以看到。
  2. 投影法投影法比较简单,使用一个linear-projection-head 或者 MLP 即可。LLaVA 使用的是投影头;LLaVA-1.5 使用的是 MLP。例如,MiniCPM-o-2_6 的语音模块以 MLP 作为适配器,见 modeling_minicpmo26.py#L114
  3. 还有其它的一些算法,例如 Emu 使用 causal-transformer 来自回归地生成多模态表征;Emu2 使用线性投影+平均池化生成多模态表征。

在代码中,基于槽的重采样器一般使用 resampler 作为变量名;而投影法一般使用 projection/projector 作为变量名。

用于多模态生成的解码器

LLM backbone 是为了语言生成而设计的,输出层 lm_head 的功能是预测语言分布,判断在当前文本下下一个词元的条件概率分布。离散的词表可以通过多分类的方式嵌入到输出层中;但是这不适用于连续的非文本模态生成。为了从 LLM backbone 生成连续的标记输出,必须修改其输出层,以生成适合非文本模态数据的表示法。然后对这些表征进行转换,使其与特定非文本模态数据解码器(如 diffusion model)的输入特征相一致。

因此,多模态生成也涉及到两个模块:1、如何定位 LLM 的输出为多模态输出;2、如何实现 LLM 输出特征到非文本模态解码器的转换。

LLM 多模态解码。这部分涉及到多模态特征的定位,以及控制 LLM 何时切换多模态输出或者文本输出。有两种方法:1、使用特殊占位符告知 LLM 输出为多模态,例如 mini-gpt5 使用 [IMG1][IMGr] 这些词元作为视觉输出特征占位符;2、使用 begin-of-sentence (BOS) 词元。

除了多模态定位,还需要从LLM 输出空间中提取出多模态表征,以用于后续的多模态生成任务。常用的提取方式有:1、调整输出头,使其具有分类任务和回归任务的双重能力;2、增加额外的输出头;3、使用 hidden states 作为多模态表征。

输出适配器。与输入适配器类似,LLM backbone 生成的特征不能直接用于多模态生成,因为它们与多模态解码器的输入特征不一致。因此,我们引入了输出适配器将 LLM backbone 生成的特征映射到多模态解码器的输入特征,一般是将输出词元转为 diffusion 模型的隐藏向量


骨干网络 | Models | Backbone

这部分主要介绍多模态大模型的网络结构,以及输出范式。

网络结构

Unified Multimodal Transformer

上图展示了多模态大模型的基础网络结构,展示了关键的 3 个步骤:1、使用 tokenizer 将文本、图像、音频等输入转为词元嵌入;2、将嵌入向量输入多模态大模型,并基于 next-token prediction 范式输出词元;3、根据建模方式,决定多模态输出结果。

Attention Patterns for different tasks

上图展示了各种不同范式的注意力模式,包括:因果自注意力-解码器架构、半-因果自注意力-解码器架构、前缀注意力-解码器架构、编码器解码器架构。每一行的颜色标志了注意力掩码的范围,对于因果自注意力,每一个词元都只能看到它前面的词元,而不能看到后面的词元。半-因果自注意力则允许它看到它后面一部分的词元和前面的词元。

某些任务需要以内容丰富的输入前缀为条件生成后续文本,例如根据富文本格式文档生成摘要。此时我们可以使用非因果格式的自注意力,例如前缀注意力等等。

输出范式 / 任务建模

Next token prediction for vision modality

图中展示三种不同的视觉任务:1、视觉问答/图像理解;2、文本指导下的图像生成;3、文本和图像指导下的图像编辑/生成。其中第三种任务需要 LLM 同时具备图像理解和生成功能。

Next token prediction for audio modality

图中展示了三种不同的语音任务:1、语音理解;2、语音生成,零样本音色克隆;3、全双工流式语音理解/生成。因为语音能够流式输入,因此语音任务中多了一项流式语音理解,能够有效降低语音延迟。

语音模型中的第三幅图的理解是:

  1. 给定一段输入语音,以绿色词元标志;输出的文本/语音词元以橘黄色/蓝色词元标志;
  2. 输出第一个文本/语音词元时,不需要等待整段语音全部输入,而是等待一小段时间之后就能够开始输出第一个词元。
  3. 等待的这一小段时间,以灰色词元填充。

这种方式能够有效降低 TTFT 延迟,提高系统反应速度,特别是在计算资源受限的情况下;相对地,降低了 TPS

具体模型分类

论文将模型分为了两个类别:多个模型合并的组合模型、LLM 能力较强的统一模型,如下图。

two types of multimodal next token prediction

组合模型。组合模型使用了较强的编码器和解码器,语言模型主要负责文本理解和建模。同时在编码器和解码器之间还添加了一个跨模态的适配器,提高模型的稳定性。

统一模型。统一模型使用一个端到端的多模态大模型来完成多模态理解和生成,相应的编码器和解码器则十分简单。

我认为使用哪种方式需要由模型设计者来决定,这里作者是根据编码器、解码器大小以及模型复杂度做了一个分类。


多模态任务训练 | Training

InstructGPT 中,作者们提出了使用人类反馈来对 GPT-3 输出结果进行微调,从而使得大模型更加符合人类偏好,并且减少了错误内容的输出。因此在模型的预训练阶段后又引入了后训练的微调阶段。

一个语言模型的损失函数可以建模为:

$$
L(\theta) = f(y_i, p_\theta (x_i \mid x_{1 \sim i-1}))
$$

其中,各个参数介绍如下:

  1. $x_{1 \sim i-1} = \{ x_1, x_2, \dots, x_{i-1} \}$ 是输入词元序列
  2. $x_i$ 是预测的下一个词元,$y_i$ 是下一个词元对应的标签
  3. $\theta$ 是当前模型参数
  4. $p$ 是概率,$p_\theta(x_i \mid x_{1 \sim i-1})$ 表示根据输入序列 $x_{1 \sim i-1}$ 预测 $x_i$ 的条件概率,按照模型参数 $\theta$ 来计算
  5. $f$ 是损失函数,如果 $y_i$ 是离散的,则 $f$ 一般为交叉熵损失;如果 $y_i$ 是连续的,则 $f$ 一般为均方误差损失。

总的来看,这个损失函数描述的是:根据当前输入 $x_{1 \sim i-1}$ ,模型 $\theta$ 预测 $x_i$ 的概率分布 $p_\theta$,然后与标签 $y_i$ 计算损失。对于自监督训练,标签 $y_i$ 就是下一次词元的 one-hot 编码。

训练目标

Training objectives example for text to image generation

上图展示了离散词元和连续词元的训练目标。

离散词元预测任务。对于离散词元预测任务,骨干模型(通常是转换解码器)处理文本输入,生成离散图像标记。通过 Vocab Prediction Head 和 Softmax 函数生成离散词元,然后将生成的词元传递给 VQVAE 解码器,以构建最终图像

总的来说,离散词元预测任务实际上是根据上下文来预测下一个词元的概率,下一个词元可能是文本,也可能属于不同的模态。这种方法拓展了传统语言模型的建模方式,能够适应与文本与其它模态交错生成的格式。例如,LLaVA、Qwen-VL 等视觉理解模型就只输出离散化的文本序列;而 DALLE 等图像生成模型就能够以自回归范式输出图像。

连续词元预测任务。对于连续词元预测任务,没有使用 Softmax 函数将输出隐藏状态映射到 Feature Prediction Head 的固定大小词汇表。相反,输出直接由视觉生成模块(如扩散模型)处理。

连续词元预测任务主要用于生成多模态数据,而不是离散化的词表预测任务。连续的词元输出被传递给外部的生成模型(如 diffusion 模型)作为 latents,以得到更好的输出质量。

预训练 | 知识嵌入

training stage

上图展示了三个阶段的训练方式,包括:多模态对齐预训练、指令微调和偏好对齐微调。

下面将介绍预训练的训练方式。

训练目的。为 LLM 提供多模态的理解能力,将来自不同模态的输入表示在一个共享空间内,以便进行后续处理。鉴于各种模态在性质上的固有差异,专门针对每种模态的编码器会将原始输入转化为矢量表示,然后在共享空间中对齐。

训练数据。一般是在大规模的【图像-文本对 $\mathbf{C} = \{(C, I)\}$】【语音-文本】语料库上进行预训练,让 LLM 学会对多模态数据进行描述(词语接龙)。

训练函数

  1. 多模态理解: $L(\theta_{M}) = f(y_i, p_\theta (x_i \mid x_{1\sim i-1}, I))$;表示基于图像输入 $I$,LLM 建模图像描述 $C$ 的损失,表征 LLM 的理解能力
  2. 多模态生成: $L(\theta_{M}) = f(y_i, p_\theta (t_i \mid t_{1\sim i-1}, C))$;表示基于图像描述 $C$,LLM 建模图像词元 $I$ 的损失,表征 LLM 的生成能力

其中,$\theta_{M}$ 表示多模态编码器的参数,$\theta$ 表示全部的参数(包括多模态编码器和 LLM ),这两个公式表示单独训练多模态编码器,LLM 的参数是冻结的。对于理解任务,$y_i$ 表示下一次词元;对于生成任务,$y_i$ 可能是从 VQVAE 编码器得到的离散图像词元,也可能是基于 diffusion 过程得到的 latent 表征。

LLM 的参数可以由语言模型预训练范式训练得到。

后训练 | 指令微调

指令微调

训练目的。通过预训练得到的模型具有一定的文本输出能力,但是还缺少在上下文中对话和理解人类意图的能力,指令微调通过多段对话让 LLM 具有对话和上下文理解能力。这也是许多模型区分 Base 版本和 Instruct 版本的原因。

训练数据。为了将不同的说话者区分开来,一般会使用 Chat Template 来区分不同对象。以视觉问答为例,一个数据集由三元组组成 $\mathbf{D} = \{(I, Q, A)\}$,其中 $I$ 表示输入图像,$Q$ 表示用户提问,$A$ 表示期望回答。

训练函数

  1. 理解任务:$L(\theta) = f(A, p_\theta (x_i \mid x_{1\sim i-1}, I))$;这表示了给定图像 $I$,LLM 生成期望文本回答 $A$ 的损失
  2. 生成任务:$L(\theta) = f(y_i, p_\theta (s_i \mid s_{1\sim i-1}, Q))$;这表示了给定文本查询 $Q$,LLM 生成多模态输出 $y_i$ 的损失

注意到,理解任务使用的是回答 $A$,而生成任务使用的是 $y_i$。

偏好对齐微调

与预训练和指令微调不同,为了更好地对齐人类的输出结果,偏好对齐微调加入了拒绝回复负样本的概率。这个阶段要提高模型对正样本的概率,降低负样本的概率,使得模型向人类的偏好看齐。这也就是 RLHF 阶段。

训练目的。对齐人类输出结果,降低模型的有害回答数量、误导性回答数量

训练数据。一般是一些事实性回复,或者像 InstructGPT 那样使用标注员手工标注得到的数据集;而前面阶段的数据集可以由爬虫爬取整个互联网得到,特别是预训练阶段。

训练函数。基于直接偏好优化得到的训练函数如下:

$$
\max_{\pi_\theta} \mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}} \log \sigma \left( \beta \log \frac{\pi _\theta (y_w \mid x) }{\pi _\text{ref} (y_w \mid x)} - \beta \log \frac{\pi _\theta (y_l \mid x) }{\pi _\text{ref} (y_l \mid x)} \right),
$$

其中,$(x, y_w, y_l) \sim \mathcal{D}$ 表示从数据集 $\mathcal{D}$ 中采样得到的输入 $x$、正样例 $y_{\text{win}}$ 和负样例 $y_\text{lose}$;$\sigma$ 表示 logistic 函数;$\pi _\theta$ 表示当前策略模型,即目前已经训练得到的 LLM;$\pi _\text{ref}$ 表示参考策略模型,即人类偏好;最大化期望 $\max _{\pi _\theta} \mathbb{E}$ 表示我们希望最大化整个数据集里的所有数据分布,从而得到最终的 LLM $\pi _\theta$。

推理 | 提示词工程

在预训练和微调阶段之后,多模态大模型也可以像 LLM 一样受益于提示词工程技术。上下文学习思维链推理是显著提高 LLM 在复杂任务(如数学推理)中性能的关键方法。

在 deepseek 之后,应该也会有许多工作期望使用 RL 让多模态大模型学习到思维链推理方法


数据集 | Dataset

根据 scaling laws,数据集的量应当随着模型的大小而指数增长,因此挑选足够多的数据集是非常重要的。同时,不同的训练阶段对于数据集格式也有着不同的偏好。因此论文还介绍了多个多模态数据集。

这部分不进行赘述,详情可以查看论文 | Next Token Prediction Towards Multimodal Intelligence


致谢

感谢 Next Token Prediction Towards Multimodal Intelligence 作者们的工作,让我对多模态大模型的细节有了初步的理解。


论文总结 | Next Token Prediction Towards Multimodal Intelligence A Comprehensive Survey
http://hebangwen.github.io/2025/03/08/mmntp/
作者
何榜文
发布于
2025年3月8日
许可协议