当前位置: 首页 > news >正文

(NIPS-2024)CogVLM:预训练语言模型的视觉专家

CogVLM:预训练语言模型的视觉专家

paper是Zhipu AI发表在NIPS 2024的工作

paper title:CogVLM: Visual Expert for Pretrained Language Models

Code:链接

Abstract

我们介绍了 CogVLM,这是一个强大的开源视觉语言基础模型。与将图像特征映射到语言模型输入空间的流行浅层对齐方法不同,CogVLM 通过在注意力层和前馈神经网络(FFN)层中引入可训练的视觉专家模块,弥合了冻结的预训练语言模型与图像编码器之间的差距。由此,CogVLM 实现了视觉与语言特征的深度融合,同时不会牺牲自然语言处理任务的性能。CogVLM-17B 在 15 个经典跨模态基准上达到了当前最先进的性能,包括:1)图像描述数据集:NoCaps、Flicker30k;2)VQA 数据集:OKVQA、ScienceQA;3)LVLM 基准:MM-Vet、MMBench、SEED-Bench、LLaVABench、POPE、MMMU、MathVista;4)视觉定位数据集:RefCOCO、RefCOCO+、RefCOCOg、Visual7W。

图1

图1:CogVLM生成的样本。

1 Introduction

视觉语言模型(VLM)具有通用性和强大的能力。许多视觉和跨模态任务都可以被建模为下一个标记预测问题,例如图像描述 [Agrawal 等, 2019]、视觉问答 [Antol 等, 2015]、视觉定位 [Yu 等, 2016],甚至是图像分割 [Chen 等, 2022a]。随着 VLM 的规模扩大以及下游任务性能的提升,诸如上下文学习(in-context learning)[Tsimpoukelli 等, 2021;Sun 等, 2023b;Alayrac 等, 2022] 等有用的能力也逐渐显现出来。然而,训练一个大型语言模型本身就已具有相当的挑战性,而从零开始训练一个同时在 NLP 任务上表现与 LLaMA2 [Touvron 等, 2023] 等优秀语言模型相媲美的 VLM 则更为困难。因此,自然的做法是研究如何从一个现成的预训练语言模型出发去训练 VLM。

目前流行的浅层对齐方法,如 InstructBLIP [Li 等, 2023b] 和 MiniGPT4 [Zhu 等, 2023],通过一个可训练的 Q-Former 或线性层将冻结的预训练视觉编码器与语言模型连接起来,将图像特征映射到语言模型的输入嵌入空间。这种方法收敛速度快,但尽管其模型规模和训练数据集与 LLaVA-1.5 基本相同,其性能却明显不如后者(LLaVA-1.5 中语言参数是可训练的)。

浅层对齐方法在 VLM 中性能受限的主要挑战在于视觉与语言数据之间缺乏深度融合。由于语言模型的权重被冻结,这些方法在处理视觉特征时面临困难,因为语言模型本质上是为了处理文本标记而训练的。这导致了显著的不匹配问题,因为视觉特征在语言模型的输入空间中没有直接的对应表达。当这些视觉特征经过多层变换时,它们往往会偏离语言模型深层期望的输入分布。这种对齐失衡在图像描述任务中尤为明显,例如写作风格和描述长度等任务特定属性,只能通过浅层方法在视觉特征中进行表层编码。

一种常见的策略,如 PaLI [Chen 等, 2022b] 和 Qwen-VL [Bai 等, 2023] 中所采用的,是在预训练或有监督微调(SFT)阶段直接训练 LLM。然而,这种方法可能会削弱模型的泛化能力,尤其是在关注文本输出的任务中。传统上,LLM 是在大规模纯文本数据集上进行预训练的 [Raffel 等, 2020],而这与 LAION [Schuhmann 等, 2022] 和 COYO [Byeon 等, 2022] 等图文对数据集在数据分布上存在显著差异。这种差异往往导致灾难性遗忘,即模型在其原始领域中的能力下降。这一问题在图 2 中得到了验证:随着模型对 LAION 数据集的适应程度增加,其在 MMLU [Hendrycks 等, 2020] 上的得分显著下降,印证了我们的假设。这种趋势并非个例;类似的现象也出现在 PaLME [Driess 等, 2023] 和 Flamingo [Alayrac 等, 2022] 等模型中。例如,将一个参数量为 8B 的语言模型用于 VLM 预训练,可能会导致自然语言生成(NLG)性能下降高达 87.3% [Driess 等, 2023]。

图2

图2:MMLU得分和训练损失在多模式预处理阶段。当使用LAION数据集直接训练VLM的语言部分时,该模型在纯文本数据集MMLU上的分数迅速降低,在2500步中下降至24.9。

上述讨论提出了一个重要问题:是否有可能在保留大型语言模型 NLP 能力的同时,为其加入顶尖的视觉理解能力?CogVLM 给出了肯定的答案。CogVLM 的方法是在语言模型中加入一个可训练的视觉专家模块。在每一层中,序列中的图像特征会使用新的 QKV 矩阵和 MLP 层与文本特征进行交互。视觉专家在保持 FLOPs 不变的情况下,使参数量翻倍。

由于原始语言模型中的所有参数都是冻结的,当输入序列中不包含图像时,其行为与原始语言模型完全一致。这一设计灵感来自高效微调中的 P-Tuning [Liu 等, 2023f] 与 LoRA [Hu 等, 2021] 的对比:P-Tuning 在输入中学习任务前缀嵌入,而 LoRA 则通过低秩矩阵在每一层中调整模型权重。结果表明,LoRA 表现更优且更稳定。类似现象可能也存在于 VLM 中,因为在浅层对齐方法中,图像特征类似于 P-Tuning 中的前缀嵌入。

本工作的主要贡献如下:

  • 我们提出了 CogVLM 模型,在保留完整预训练语言模型能力的同时,深度融合了视觉与语言特征。CogVLM-17B 基于 Vicuna-7B 训练,在 17 个经典跨模态基准上达到了当前最先进的性能。

  • 通过大量消融实验,我们验证了所提出的视觉专家模块的有效性以及深度融合的重要性。同时我们深入探讨了多模态预训练中的多个关键因素,包括视觉编码器的规模、注意力 mask 的变体、VLM 中最关键的参数、是否需要引入自监督图像损失等。

  • 我们开源了 CogVLM 的权重及其在 SFT 阶段使用的数据集。我们期待 CogVLM 的开源能为视觉理解的研究与产业应用带来显著推动。

2 Method

2.1 Architecture


图3

图 3:CogVLM 的架构。(a) 输入示意图,其中图像通过预训练的 ViT 处理,并被映射到与文本特征相同的空间中。(b) 语言模型中的 Transformer 块。图像特征使用不同的 QKV 矩阵和前馈网络(FFN)。只有紫色部分是可训练的。

CogVLM 模型由四个基本组件构成:视觉 Transformer(ViT)编码器、MLP 适配器、预训练大型语言模型(GPT)以及视觉专家模块。图 3 展示了 CogVLM 架构的概览。各组件的设计与实现细节如下:

ViT 编码器。我们在 CogVLM-17B 中采用了预训练的 EVA2-CLIP-E [Sun 等, 2023a]。需要注意的是,ViT 编码器的最终一层被移除,因为它专门用于聚合 [CLS] 特征以进行对比学习。

MLP 适配器。为了将 ViT 的输出映射到与词嵌入中语言特征相同的空间,我们使用了一个 MLP 适配器,即一个两层的 MLP(采用 SwiGLU [Shazeer, 2020] 激活)。为了简化实现,所有图像特征在语言模型中共享相同的位置 ID。

预训练大型语言模型。CogVLM 的模型设计兼容任意现成的 GPT 风格预训练语言模型。具体而言,CogVLM-17B 在 Vicuna1.5-7B [Chiang 等, 2023] 的基础上进一步训练。所有注意力操作,包括图像特征之间的注意力,都应用了因果掩码(causal mask)。

视觉专家模块。我们在每一层中引入视觉专家模块,以实现视觉与语言特征的深度对齐。具体来说,每一层中的视觉专家模块由一个 QKV 矩阵和一个 MLP 构成,其形状与预训练语言模型中的相同,并从中初始化。其设计动机在于:语言模型中的每个注意力头负责捕捉某一语义信息,而可训练的视觉专家可以将图像特征转换成与不同注意力头对齐的形式,从而实现深度融合。

形式上,假设某个注意力层的输入隐藏状态为 X ∈ R B × H × ( L I + L T ) × D X \in \mathbb{R}^{B \times H \times (L_I + L_T) \times D} XRB×H×(LI+LT)×D,其中 B B B 是 batch size, L I L_I LI L T L_T LT 分别是图像和文本序列的长度, H H H 是注意力头的数量, D D D 是隐藏维度。在具有视觉专家的注意力机制中, X X X 首先被划分为图像隐藏状态 X I X_I XI 和文本隐藏状态 X T X_T XT,注意力计算如下:

Attention ( X , W I , W T ) = softmax ( Tril ( Q K T ) D ) V , (1) \text{Attention}(X, W_I, W_T) = \text{softmax}\left( \frac{\text{Tril}(QK^T)}{\sqrt{D}} \right)V, \tag{1} Attention(X,WI,WT)=softmax(D Tril(QKT))V,(1)

其中,

Q = concat ( X I W I Q , X T W T Q ) , (2) Q = \text{concat}(X_I W_I^Q, X_T W_T^Q), \tag{2} Q=concat(XIWIQ,XTWTQ),(2)

K = concat ( X I W I K , X T W T K ) , (3) K = \text{concat}(X_I W_I^K, X_T W_T^K), \tag{3} K=concat(XIWIK,XTWTK),(3)

V = concat ( X I W I V , X T W T V ) , (4) V = \text{concat}(X_I W_I^V, X_T W_T^V), \tag{4} V=concat(XIWIV,XTWTV),(4)

W I , W T W_I, W_T WI,WT 是视觉专家与原始语言模型的 QKV 矩阵, Tril ( ⋅ ) \text{Tril}(\cdot) Tril() 表示下三角掩码。

视觉专家在 FFN 层的处理方式类似:

FFN ( X ) = concat ( FFN I ( X I ) , FFN T ( X T ) ) , (5) \text{FFN}(X) = \text{concat}(\text{FFN}_I(X_I), \text{FFN}_T(X_T)), \tag{5} FFN(X)=concat(FFNI(XI),FFNT(XT)),(5)

其中 FFN I \text{FFN}_I FFNI FFN T \text{FFN}_T FFNT 分别是视觉专家和原始语言模型的前馈网络。

位置嵌入。在 LLM 的 RoPE 中,我们令所有视觉标记共享一个位置 id,因为它们在输入 ViT 时已包含位置信息。这种方式缓解了 LLM 中远距离衰减的影响。由于一张图像可能对应几百甚至几千个 token,且典型输入序列结构为 <image embed> query,如果使用常规的位置编码会导致编码序列过长。同时这也会导致模型更加关注靠近查询的图像 token,通常是图像的下部区域。

2.2 Pretraining


数据(Data)。用于预训练的图文对数据均为公开可用,包括 LAION-2B 和 COYO-700M。在移除了损坏链接、NSFW 图像、标题噪声图像、具有政治偏见的图像以及长宽比大于 6 或小于 1/6 的图像后,最终保留约 15 亿图像用于预训练。

我们还构建了一个包含 4000 万图像的视觉定位数据集。图像描述中的每个名词都配有边界框,以标注其在图像中的位置。构建过程大致遵循 [Peng 等] 的方法,使用 spaCy [Honnibal 和 Johnson, 2015] 提取名词,并利用 GLIPv2 [Zhang 等, 2022] 预测边界框。图文对采样自 LAION-115M,这是 LAION-400M 的子集,经过 [Li 等, 2023b] 筛选。我们过滤并保留了一个包含 4000 万图像的子集,确保其中超过 75% 的图像至少包含两个边界框。

训练(Training)。预训练的第一阶段针对的是图像描述损失(image captioning loss),即文本部分的下一个标记预测。我们在上述 15 亿图文对上对 CogVLM-17B 进行了训练,共进行了 120,000 次迭代,batch size 为 8,192。

第二阶段的预训练是图像描述与指代表达理解(Referring Expression Comprehension, REC)的混合。REC 是一个任务,旨在根据对象的文本描述预测图像中的边界框,其训练形式类似 VQA,即:

Question: Where is the object?
Answer: [[x₀, y₀, x₁, y₁]]

其中 x x x y y y 坐标范围为 000 到 999,即图像中的归一化位置。我们仅对 “Answer” 部分的下一个标记预测计算损失。第二阶段预训练进行了 60,000 次迭代,batch size 为 1,024,训练数据为上述图文对与视觉定位数据集。在最后 30,000 次迭代中,我们将输入分辨率从 224 × 224 提高到 490 × 490。模型的可训练参数总数为 65 亿。

2.3 Alignment


在指令对齐阶段,我们训练了两个通用模型:CogVLM-Chat 和 CogVLM-Grounding。CogVLM-Chat 接收自然语言输入与输出,而 CogVLM-Grounding 接收和输出带有边界框的内容。

CogVLM-Chat。在本研究中,我们整合了多种开源视觉问答数据集,包括 VQAv2 [Antol 等, 2015]、OKVQA [Marino 等, 2019]、TextVQA [Singh 等, 2019]、OCRVQA [Mishra 等, 2019]、ScienceQA [Lu 等, 2022],以及多轮对话格式数据集,如 LLaVA-Instruct [Liu 等, 2023c]、LRV-Instruction [Liu 等, 2023a]、LLaVAR [Zhang 等, 2023b]。我们在这些多样化数据集上进行了统一的指令监督微调(SFT)。SFT 数据的完整性和质量至关重要,尤其是 LLaVA-Instruct 数据集最初通过语言模型 GPT-4 管道生成,存在一定不准确之处,我们通过人工审查与标注进行仔细修正,以确保数据质量。

VQA 数据集通常具有简洁、单词级的回答,而对话类数据集则更强调细致推理和长文本回答。为了适应这种差异性,在训练中我们进行了 6000 次迭代,学习率为 1e-5,batch size 为 1024。为增强训练稳定性,我们激活了视觉编码器的参数,并将其学习率设为其余参数的十分之一。

CogVLM-Grounding。为了赋予模型一致且可交互的视觉定位能力,我们收集了包含四种类型的高质量视觉定位数据集:
(1) Grounded Captioning (GC):图像描述数据集,每个名词短语后跟相应的边界框;
(2) Referring Expression Generation (REG):图像导向数据集,图像中每个边界框标注一个准确描述其内容的文本表达;
(3) Referring Expression Comprehension (REC):文本导向数据集,文本中多个短语与图像中对应的边界框关联;
(4) Grounded Visual Question Answering (GroundedVQA):VQA 风格数据集,问题中可能包含区域指示信息。

上述视觉定位数据均为公开数据,来源包括 Flickr30K Entities [Plummer 等, 2015],RefCOCO [Kazemzadeh 等, 2014;Mao 等, 2016;Yu 等, 2016],Visual7W [Zhu 等, 2016],VisualGenome [Krishna 等, 2017] 以及 Grounded CoT-VQA [Chen 等, 2023a]。[box] 的格式为 [[x₀, y₀, x₁, y₁]]。

值得注意的是,这些数据集展现了视觉定位能力的多样性,许多数据集可以被适配为不同任务。例如,Grounded Captioning 数据可被转化为 REG 或 REC 任务。例如,“A man [box₁] and a woman [box₂] are walking together” 可被转化为问答对:“Describe this region [box₂]”、“A woman.” 或 “Where is the man?”、“[box₁]”。类似地,REC 数据集可通过切换输入与输出转化为 REG。然而,这类转换可能导致歧义。例如,当模型面对孤立的问题 “Where is another man?”(源自标题 “A man [box₁] is running, while another man [box₂] is looking.”),box₁ 与 box₂ 的区别就可能变得模糊,从而导致错误。

相关文章:

  • 大事件项目记录13-接口开发-补充
  • 深入剖析 Linux 内核网络核心:sock.c 源码解析
  • 现代 JavaScript (ES6+) 入门到实战(四):数组的革命 map/filter/reduce - 告别 for 循环
  • 数据挖掘、机器学习与人工智能:概念辨析与应用边界
  • 设计模式精讲 Day 18:备忘录模式(Memento Pattern)
  • FastAPI路由管理APIRouter实战指南
  • 广度优先搜索BFS(广搜)复习(c++)
  • 【智能协同云图库】智能协同云图库第三弹:基于腾讯云 COS 对象存储—开发图片模块
  • 电子计数跳绳原型
  • 如何撰写有价值的项目复盘报告
  • 深入剖析Nacos服务发现与注册,及如何基于LoadBalancer实现负载均衡
  • Tomcat 安装使用教程
  • 第10篇 图像语义分割和目标检测介绍
  • OpenCV 4.10.0 移植
  • Kafka与RabbitMQ相比有什么优势?
  • 第七节 矩阵键盘模块
  • MCP Chart Server服务本地部署案例
  • 咸虾米项目总结1--const用法
  • LeetCode Hot 100 最大子数组和
  • 推荐几本关于网络安全的书