Ovis原理解读: 多模态大语言模型的结构嵌入对齐

在这里插入图片描述

论文: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} IRC×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} {PiRC×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=wWhH 为视觉块的数量。给定预训练的视觉转换器(ViT)骨干网 g θ g_{\theta} gθ ,我们将这些视觉块转换为一系列视觉表示 { r i ∈ R d } i = 1 n \{r_i \in \mathbb{R}^d\}_{i=1}^n {riRd}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) (K1) 维的概率单纯形 Δ 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),WRK×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 {wiRd}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'} TiRd 是由 t i t_i ti 中非零索引指示的文本嵌入表中的行。

类似地,我们引入一个额外的视觉嵌入表,其中每个视觉词(每一行)与一个嵌入向量 e k ∈ R d ′ e_k \in R^{d'} ekRd 关联, 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=

上一篇:开源模型应用落地-Qwen2.5-7B-Instruct与vllm实现离线推理-使用Lora权重(三)-二、术语


下一篇:基础设施即代码(IaC):自动化基础设施管理的未来