论文:https://arxiv.org/pdf/2405.20797
github:https://github.com/AIDC-AI/Ovis
在多模态大语言模型 (MLLM) 中,不同的嵌入策略有显著的区别。以下是使用基于连接器的方法与 Ovis 方法的比较:
基于连接器的方法-优缺点(connector-based approach)
- 策略:在基于连接器的方法中,视觉嵌入通过连接器(connector)转化为与文本嵌入具有相同维度。
- 具体实现:文本嵌入从一个文本嵌入表中索引,而连接器的作用是将视觉嵌入调整到相同的尺度和形式,使其能够与文本嵌入一起处理。
- 优点:这种方法确保了视觉和文本嵌入在形式上的一致性,方便后续的联合处理。
- 缺点:连接器可能限制了视觉特征的表达能力,无法完全捕捉到视觉输入的复杂模式和细节。
Ovis 方法-优缺点
- 策略:Ovis 引入了一个额外的视觉嵌入查找表,从而生成结构化的视觉嵌入,并对齐两种模态的嵌入策略。
- 具体实现:在 Ovis 中,这个额外的视觉嵌入表的每一行对应一个唯一的视觉词汇,表示不同的视觉模式。Ovis 首先将视觉编码器输出的连续 token 映射为概率 token,通过索引视觉嵌入表多次来生成最终的视觉嵌入。这种方法利用了整个嵌入表的期望值,捕捉了视觉输入的丰富语义。
- 优点:这种方法能够更好地捕捉视觉输入中的复杂模式,提升了视觉信息的表达能力。此外,通过与文本嵌入策略的一致性设计,提高了两种模态信息的融合效果。
- 缺点:引入额外的视觉嵌入表可能增加计算复杂度,需要更多的存储和计算资源。
Ovis 总结
它提出了一种新颖的多模态大语言模型 (MLLM) 架构,称为 “Ovis”。该架构吸收了大语言模型 (LLMs) 的洞见,从而建立视觉输入的结构化嵌入。如图1所示,Ovis 引入了一个额外的可学习视觉嵌入查找表,用以转换连续的视觉tokens,从而与文本嵌入的结构完整性相呼应。图2展示了在各种基准测试中,Ovis 在相同参数范围内优于开源 MLLMs,而 Ovis-14B 在整体表现上也超越了高资源的专有模型 Qwen-VL-Plus。
具体而言,Ovis 包含一个视觉嵌入表,其行对应于唯一的视觉词汇,代表不同的视觉模式。给定由视觉编码器 [22] 输出的视觉块的连续token,Ovis 首先将该token 映射为概率token,展示其在整个视觉词汇表中的相似性。这个概率token 捕捉单个视觉块中的丰富语义,其中可能包含多个视觉词汇的模式,有效地将视觉token视为从视觉嵌入表中基于分布抽样而来。随后,Ovis多次根据概率token 索引视觉嵌入表,生成一个最终的视觉嵌入,即整个嵌入表的嵌入期望。因此,Ovis 将视觉嵌入策略与其文本嵌入结构的本质对齐。
视觉嵌入表的优化和生成概率token 的参数显著影响 MLLM 的性能。与之前方法使用图像上的向量量化自动编码器和各种其他损失不同 [78, 23, 33],Ovis 利用联合文本生成损失,并以三阶段方式优化参数。这种学习过程使得 Ovis 避免了由于缺乏文本指导而在视觉语言任务中表现不足的风险。
以开源的视觉 Transformer 和 LLM 模型作为骨干实现 Ovis,并在不同的多模态基准中评估其性能。结果表明,在大多数基准测试中,Ovis 在相同参数范围内优于流行的开源 MLLMs。具体而言,Ovis-8B 与其竞争对手相比表现出较大的优势,而 Ovis-14B 始终超越了被比较的开源 MLLMs。
首先回顾了多模态大语言模型(MLLMs)中的视觉和文本嵌入策略的差异。接着,我们介绍了提出的架构Ovis,该架构包括用于概率性tokens的线性映射和在大语言模型(LLM)中引入的视觉嵌入查找表。
1 视觉和文本tokens的差异
图像和文本都作为输入被送入MLLM,但它们的标记化策略各不相同。设 I ∈ R C × W × H I \in \mathbb{R}^{C \times W \times H} I∈RC×W×H 为图像的像素值张量,其中 C C C、 W W W、 H H H 分别表示图像的通道数、宽度和高度。图像首先被划分为一系列视觉块(visual patches) { P i ∈ R C × w × h } i = 1 , 2 , … , n \{P_i \in \mathbb{R}^{C \times w \times h}\}_{i=1,2,\ldots,n} {Pi∈RC×w×h}i=1,2,…,n,其中 w w w 和 h h h 分别表示视觉块的宽度和高度, n = ⌈ W w ⌈ ⌈ H h ⌈ n = \left\lceil \frac{W}{w} \right\lceil \left\lceil \frac{H}{h} \right\lceil n=⌈wW⌈⌈hH⌈ 为视觉块的数量。给定预训练的视觉转换器(ViT)骨干网 g θ g_{\theta} gθ ,我们将这些视觉块转换为一系列视觉表示 { r i ∈ R d } i = 1 n \{r_i \in \mathbb{R}^d\}_{i=1}^n {ri∈Rd}i=1n。
对于文本输入,设 { t i } i = 1 m \{t_i\}_{i=1}^m {ti}i=1m 为文本tokens的输入序列,它们将被 LLM f ϕ f_{\phi} fϕ 处理。在 MLLM 中,视觉 { r i } i = 1 n \{r_i\}_{i=1}^n {ri}i=1n 和文本 { t i } i = 1 m \{t_i\}_{i=1}^m {ti}i=1m 的tokens都需要转换为相同的形式,随后 LLM 处理所有tokens,并生成一个文本tokens的输出序列。我们用 λ \lambda λ 来表示图像指示器token的索引,即 t λ = <image > t_{\lambda} = \text{\textless image \textgreater} tλ=<image >,多模态输入tokens变成:
[ t 1 , … , t λ − 1 , <image > , … , t m ] ( 1 ) [ t_1, \ldots, t_{\lambda-1}, \text{\textless image \textgreater}, \ldots, t_m ] \ \ \ \ \ \ \ \ (1) [t1,…,tλ−1,<image >,…,tm] (1)由于视觉和文本tokens的维度不同,直接用 { r i } i = 1 n \{r_i\}_{i=1}^n {ri}i=1n 替换 <image > \text{\textless image \textgreater} <image >是困难的。先前的方法引入了额外的线性投影、MLP或transformer架构来将视觉tokens映射成与文本tokens相同的形式。
2 概率性视觉Tokens
在Equation 1中与其使用连续的视觉tokens,我们对齐图像和文本的内部标记化策略以激发MLLM的潜力。为了模拟离散的文本tokens,我们使用一个线性头 R K × d R^{K \times d} RK×d 来变换具体的视觉tokens。假设K是视觉词汇表的大小,即唯一视觉词的数量,给定一个视觉token r i r_i ri,我们首先通过线性投影和softmax归一化将 r i r_i ri 转换为一个 ( K − 1 ) (K-1) (K−1) 维的概率单纯形 Δ K \Delta^K ΔK:
v i = softmax ( W r i ) , W ∈ R K × d ( 2 ) v_i = \text{softmax}(W r_i), W \in R^{K \times d} \ \ \ \ \ \ \ \ (2) vi=softmax(Wri),W∈RK×d (2)将 v i ∈ Δ K v_i \in \Delta^K vi∈ΔK 视为一种概率token,这是一种在包含K个视觉词汇的视觉词汇表上的概率分布。如果 r i r_i ri 更多地与某些模式相关,则 v i v_i vi 中对应的元素应更大。
注:给定一个视觉嵌入表,我们将每个视觉词与其原型 { w i ∈ R d } i = 1 K \{w_i \in R^d\}_{i=1}^K {wi∈Rd}i=1K 关联。为了匹配一个连续的视觉token与嵌入表中的K个视觉词,我们利用内积来计算它们的相似度值。Equation 2是 r i r_i ri 与所有视觉词之间的归一化相似度。
3 视觉嵌入表
在LLMs中,通常采用文本嵌入表将词汇表中的每个词映射到一个嵌入向量。对于以one-hot形式表示的每个文本token t i t_i ti,其嵌入 T i ∈ R d ′ T_i \in R^{d'} Ti∈Rd′ 是由 t i t_i ti 中非零索引指示的文本嵌入表中的行。
类似地,我们引入一个额外的视觉嵌入表,其中每个视觉词(每一行)与一个嵌入向量 e k ∈ R d ′ e_k \in R^{d'} ek∈Rd′ 关联, d ′ d' d′ 是嵌入维度。为了使视觉和文本tokens的嵌入具有兼容的形状,我们将视觉嵌入表的维度设定为与文本嵌入表相同。
相应地,每个视觉token v i v_i vi 的嵌入可以基于概率性token推导出来:
V i = ∑ k = 1 K v i , k e k ∈ R d ′ ( 3 ) V_i = \sum_{k=1}^K v_{i,k}e_k \in R^{d'} \ \ \ \ \ \ \ \ (3) Vi=∑k=1Kvi,kek∈Rd′ (3)
其中 v i , k v_{i,k} vi,k 表示 v i v_i vi 的第 k 个成分。另一方面,由于 v i ∈ Δ K v_i \in \Delta_K vi∈ΔK,上述公式可以重写为
V i = E k ∼ v i [ e k ] V_i = \mathbb{E}_{k \sim v_i}[e_k] Vi=Ek∼vi[ek]
这是视觉词的嵌入的期望,视觉词从 v i v_i vi 中抽样。换句话说,我们假设视觉嵌入可以基于视觉块的概率token v i v_i vi 从离散的视觉嵌入表中抽样。
注:考虑到视觉块 r i r_i ri 的多义性,仅从嵌入表中为其分配一个视觉词(即由 arg max j ∈ { 1 , … , K } v i j \arg \max_{j \in \{1, \ldots, K\}} v_{ij} argmaxj∈{1,…,K}vij 索引)可能忽略块内包含的丰富语义。为解决这个问题,我们将视觉块与多个视觉词关联,由 v i v_i vi 中非零元素表示,这些元素代表视觉块与K个视觉词的相关性。
我们随后使用所选视觉词汇的加权组合 V i V_i Vi 作为最终的块嵌入。换句话说,基于 v i v_i vi 的值,从嵌入表中索引出多个视觉嵌入,并利用这些嵌入的加权平均作为视觉嵌入模块的最终输出。附录E中的实验验证了 v i v_i vi 的稀疏性。视觉嵌入 V i V_i Vi 既捕捉了丰富的视觉语义,同时其生成过程与文本生成过程相似。
4 Ovis的训练策略
视觉和文本嵌入组合后作为输入送入LLM。具体来说,我们将以下多模态输入嵌入序列
[ T 1 , … , T λ − 1 , V 1 , … , V n , T λ + 1 , … , T m ] ( 4 ) [T_1, \ldots, T_{\lambda-1}, V_1, \ldots, V_n, T_{\lambda+1}, \ldots, T_m]\ \ \ \ \ \ \ \ (4) [T1,…,Tλ−1,V1,…,Vn,Tλ+1,…,Tm] (4)输入到LLM。所有tokens不仅具有相同的维度,而且通过嵌入表以相似方式生成。LLM将输出一个文本token序列 o 1 , … , o l o_1, \ldots, o_l o1,…,ol。
Ovis分三阶段训练,并始终通过文本生成损失(即Ovis输出的文本tokens与真实文本之间的交叉熵)进行优化。这三个阶段的差异在于其可训练参数和训练数据的类型。
阶段1:我们冻结LLM的所有参数,以及视觉编码器 g g g 中大部分参数(一个开源的预训练ViT骨干网)。我们随机重新初始化 g g g 最后一层的参数,使用诸如COYO [7] 等视觉描述数据集训练重新初始化的参数和Ovis的投影矩阵 W W W 以及视觉嵌入表 { e k } k = 1 K \{e_k\}_{k=1}^K {ek}k=1K。对于标题数据集中的每个图像,我们构建一个训练样本,输入为“的标题:”并将其标签为“CAPTION”,其中CAPTION表示图像的标题。
阶段2:在这个阶段,我们继续训练Ovis的W,视觉嵌入表 { e k } k = 1 K \{e_k\}_{k=1}^K {ek}k=1K 以及视觉编码器 g g g 中的所有参数。LLM仍然冻结。与第一阶段使用的标题样本不同,我们利用如ShareGPT4V-Pretrain [11] 等视觉描述数据,这些数据集的训练样本结构化为描述图像的对话。
阶段3:在阶段1和阶段2的训练中赋予Ovis视觉感知能力之后,本阶段的重点是多模态指令学习。目标是使Ovis具备跟随多模态指令的能力。为此,我们解冻LLM模块,并在多模态指令数据集(如LLaVA-Finetune [47])上训练Ovis的全部参数。
总结
通过三阶段的训练策略,Ovis能够逐步获得视觉感知和跟随多模态指令的能力。这种策略既保证了模型在视觉和文本上的高效整合,又通过多模态任务不断提升模型的实际应用能力。