多模态大模型调研
多模态+大语言模型
1. 将跨模态编码器等其它结构与LLM进行有机结合
他山之石:腾讯博客综述
他山之石:博客
本文整理了近两年来基于LLM做vision-lanuage任务的一些工作,并将其划分为4个类别:
- 利用LLM作为理解中枢调用多模态模型,例如VisualChatGPT(2023), MM-REACT(2023);
- 将视觉转化为文本,作为LLM的输入,例如PICA(2022),PromptCap(2022),ScienceQA(2022);
- 利用视觉模态影响LLM的解码,例如ZeroCap,MAGIC;
- 冻住LLM,训练视觉编码器等额外结构以适配LLM,例如Frozen,BLIP2,Flamingo,PaLM-E;
Multimodal Few-Shot Learning with Frozen Language Models
https://arxiv.org/pdf/2106.13884.pdf
DeepMind,2021
固定llm的参数,把图片信息encode后当prefix与text拼接,论文中说llm的规模是7B

Flamingo
https://arxiv.org/pdf/2204.14198.pdf
固定llm,vision-encoder参数,额外添加两个可训练的部分:
(1)在Visual Encoder后加入了Perceiver Resampler模块,用于加强视觉表征;
(2)在LLM的每层之前加入了Gated xattn-dense模块用于加强跨模态信息交互。

Perceiver Resampler:用特定长度的Query抽取图片信息(降低图片的表示长度)
BLIP-2
https://arxiv.org/pdf/2301.12597.pdf
固定llm,vision-encoder参数,添加了Q-former来将图片信息对齐到文本
训练分两阶段
阶段一:Q-former用bert-base参数初始化,设置三个训练目标联合训练

阶段二:vision-to-language generative

LLM使用OPT(2.7B,6.7B),FlanT5(XL,XXL)
MiniGPT-4
https://arxiv.org/pdf/2304.10592.pdf
主要强调高效,省钱
基于的LLM为Vicuna,vit和Q-former来自BLIP-2,能训的只有新加的一个线形层,4张A100训10小时

训练分两阶段:
-
第一阶段预训练:pretraining
-
- 使用Conceptual Caption、SBU和 LAION等几个数据集进行第一阶段的训练,batch size=256训练了2万步,大概覆盖了500万个image-text pairs,使用4张A100-80GB的GPU训练了10个小时;
- 经过第一阶段的pretrain,作者发现了一些模型很难产生连贯的语言输出的例子,而且会输出一些重复的单词或句子、支离破碎的句子或无关的内容;
-
第二阶段微调:finetuning
-
- finetune的prompts模板: ###$Human: < Img>
</ Img> \(###\)Assistant:$ - 使用3500条高质量的数据集去finetune模型,使得模型的输出有更好的连贯性,更加符合对话场景;在单张A100-80GB的GPU上训练了7分钟
- finetune的prompts模板: ###$Human: < Img>
LLaVA
https://arxiv.org/pdf/2304.08485.pdf
CLIP+一层FFN 与 LLaMA 拼接
首次尝试将 instruction-tuning 扩展到多模态空间
LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
https://arxiv.org/pdf/2303.16199.pdf
LLaMA-Adapter是高效微调llama的一种方式,给transformer的后L层 layer 前面加可学习的 adapter,并在初始化的时候将对adapter的attention初始化为零,这样在早期训练不会收到adapter的影响。加入可学习的门控因子。通过零向量初始化,门控可以首先保留 LLaMA 中的原始知识,并在训练过程中逐步引入指令信号

拓展到图文任务,把图文信息用encoder(CLIP)拼到adapter

LLaMA-Adapter V2: Parameter-Efficient Visual Instruction Model
https://arxiv.org/pdf/2304.15010.pdf
-
加入了更多可学习参数:线性层的偏差调整
-
使用不相交的参数来联合训练模型
- 图文对数据多,文本指令数据少。如果直接混合,学习,会严重损害 LLaMA-Adapter 的指令跟随能力
- 将可学习的参数分成不相交的两组,各自学习一个任务,两组学习同时进行。
- 好处:不需要多模态的指令数据,只需要文本指令数据+图文对数据
-
视觉知识的早期融合
- 为了避免视觉和语言微调之间的干扰,将vision token拼在较早的层,将adapter拼在较晚的层(与llama-adapter一致)
- (llama-adapter v1 是将adapter拼在较晚的层,在拓展到多模态场景时,将vision token也一同拼在较晚的层)
2. 直接利用图像和文本信息训练得到的多模态大模型
Language Is Not All You Need: Aligning Perception with Language Models(KOSMOS-1)
https://arxiv.org/pdf/2302.14045.pdf
KOSMOS-1 1.6B 用微软的Magneto1.3B初始化LLM,视觉encoder是CLIP的ViT-L(fix最后一层以外的其他层),也使用了Flamingo的Perceiver Resampler来降低图片embedding的长度
训练数据分三类:Text Corpora,Image-Caption Pairs,Interleaved Image-Text Data(图文穿插)
用special token标出文本中的图片特征

3. 其他思路
IMAGEBIND: One Embedding Space To Bind Them All
https://arxiv.org/pdf/2305.05665.pdf
将多种模态的信息编码到统一的一个表示空间,每个模态一个encoder,让image与每个模态都进行对比学习,6种模态靠image连接起来