文章提出:传统的 MLLMs 中,文本嵌入是从 LLM 的嵌入查找表中索引得到的,而视觉嵌入是由视觉编码器(如:ViT)直接生成的连续向量。这种差异导致在视觉和文本信息融合时存在挑战。
与传统的MLLM不同,Ovis 通过在视觉编码器的过程中引入一个额外的视觉嵌入查找表来解决这个问题。这种方法使得视觉嵌入的生成过程与文本嵌入类似。
核心创新
从下面模型结构代码可以看到,Ovis和传统的LLava架构其实差不多,最大的区别就是LLava使用MLP,Ovis使用“视觉词汇”。
Ovis 的核心创新在于其视觉嵌入表的引入:
-
图(a):基于连接器的MLLM:传统多模态模型(如LLava)的典型架构,连接器通常是一个MLP,其作用是将视觉特征投影到与文本嵌入相同的维度空间中。
-
图(b):Ovis的结构化嵌入对齐:视觉编码器的输出不再直接通过MLP投影,而是送入一个视觉嵌入表(Visual Embedding Table)。这个表是一个可学习的结构,类似于文本嵌入。表。
-
视觉编码器:图像首先被视觉编码器(如 ViT)处理,分为多个patches,每个patch生成一个连续的特征向量。
-
视觉嵌入表:不同于传统方法直接通过 MLP 投影,Ovis 在视觉编码器后整合了一个可学习的视觉嵌入表。每个图像patch的特征向量用于多次索引该表,生成最终的视觉嵌入。为了使视觉和文本嵌入具有兼容的形状,视觉嵌入表的维度设置为与文本嵌入表相同。
-
嵌入对齐:视觉嵌入表的引入使得视觉嵌入的生成方式与文本嵌入类似。文本嵌入通常通过查找表为每个token分配一个嵌入向量,而 Ovis 通过视觉嵌入表为视觉patch生成结构化的嵌入,实现了两者的对齐。
-
训练方法
训练分为三个阶段:
阶段 1:初始化训练
在这个阶段,冻结 LLM 和视觉编码器的大部分参数,仅随机初始化视觉编码器的最后一块参数。使用视觉描述数据集(如 COYO)来训练这些新初始化的参数,以及 Ovis 的投影矩阵 W W W 和视觉嵌入表 { e k } k = 1 K \{e_k\}_{k=1}^{K} {ek}k=1K。
阶段 2:扩展训练
在这个阶段,解冻 Ovis 的投影矩阵 W W W 和视觉嵌入表 { e k } k = 1 K \{e_k\}_{k=1}^{K} {ek}k=1K,并继续训练视觉编码器的所有参数。使用视觉描述数据集(如 ShareGPT4V-Pretrain)进行训练。这个阶段的目标是进一步优化视觉嵌入的生成。
阶段 3:多模态指令学习
在前两个阶段的基础上,解冻 LLM 模块,并在多模态指令数据集(如 LLaVA-Finetune)上训练整个模型。这个阶段的目的是赋予 Ovis 跟随多模态指令的能力。
训练超参数设置:
训练数据集
参考文献:Ovis: Structural Embedding Alignment for Multimodal Large Language Model,https://arxiv.org/abs/2405.20797