type
status
date
slug
summary
tags
category
icon
password
🔥
太火了 再不学要失业了

模型架构:

MLLM通常包含以下三个组件:
  • A pre-trained modality encoder
  • A pre-trained LLM
  • A modality interface to connect them

1. Modality Encoder - 模态编码器

模态编码器即将单一模态的输入转化成合适的representation(通常为latent embedding)。
视觉编码器与NLP中的Encoder类似,可以直接选择pre-train好的。其中比较常见的为通过CLIP(Contrastive Language-Image Pre-Training)训练好的encoder。CLIP通过对图像-文本对的大规模预训练,将视觉编码器在语义上与文本对齐。通过对齐预训练,使用这种最初预对齐的编码器与LLM的对齐更容易。
  • 常用的视觉编码器详情:
    • notion image
在选择视觉编码器时,通常需要对分辨率模型参数量编码器的预训练数据集进行考虑。
许多工作已经实证证实,使用更高的分辨率可以获得显著的性能提高。其中不同架构对于处理不同分辨率(可以粗略分为高分辨率和低分辨率)的图片有着不同的策略。
  • 使用不同编码器编码后进行特征融合:CogAgent使用了两个vision encoders去分别对高分辨率图片和低分辩率图片去进行编码,在得到高分辨率特征和低分辨率特征后,使用cross- attention进行高低分辨率特征融合。
  • 图片切片方法(patch-division method):将高分辨率图像分割成多个小块,再利用低分辨率编码器去进行。其中图片切片方法可能需要positional embedding去提示每个小块在原始图片中的相对位置。
在众多因素当中,图片分辨率的重要性要大于模型参数量和和训练数据组成。

2. Pre-trained LLM - 预训练大语言模型

LLM则为整个MLLM中可以说最核心的部分
 

3. Modality Interface - 模态接口

考虑到以端到端方式训练大型多模态模型的成本很高,为了使用Pre-trained LLM和Pre-trained modality encoder,我们需要去设置一个模块,这个模块可以去将不同模态的经过encoder后的信息融合。
最为常见的方法为使用 Learnable Connector Expert Model.

3.1 Learnable Connector 可学习连接器

通过learnable connector这个模块,可以将多模态信息融合成可以让LLM理解的信息。融合的模型可以根据融合的最小颗粒度划分:token-levelfeature-level
  • Token-level Fusion Token级融合
    • 对于在token层面的融合,modality encoder输出的特征会被转化成与LLM输入等价的token representation,通过将text token representation和其他模态转化后的token representation进行拼接,可以作为“可以被理解”的LLM输入。
      比较经典的有(其中MM1 (from Apple)论文中发现:模态适配器(对应上文提到的Q-former或是MLP)种类的对MLLM性能的影响远远不及图像分辨率visual tokens的数量。):
    • Q-former style (BLIP2): 引入learnable queries来缩小 (frozen) image encoder和LLM之间gap。具体通过共用的self-attention层。
      • notion image
    • MLP (LLaVA) : 通过MLP将视觉特征与文本特征对齐。
      • 插入额外的模块(这里指在LLM里或者visual transformer中插入额外的layer),以实现文本特征和视觉特征之间的深度交互和融合。
      • Flamingo在LLM中插入了额外的cross-attention层去加强语言模态与视觉模态的融合。
      • 由此可知,feature-level fusion和token-level fusion的本质区别在于是否更改LLM或是ViT的内部结构:若是仅在两个组件之间增加一个额外的组件(例如Q-former)则是token-level fusion;若是更改了LLM或是ViT的内部结构,例如加入了额外的模态融合层,则是feature-level fusion。

3.2 Expert Model

专家模型,例如image caption模型,可以将图片转化成描述文字,这样多模态的输入可以被转化成单模态的输入。由此只需要进行单一模态建模即可。

训练策略及数据

1. Pretraining - 预训练

预训练阶段主要进行模态融合并且给模型提供基础的世界知识(也可以理解为给模型提供基础的认知能力)。
一般的预训练做法是将一些其他pre-trained模块冻结,例如LLM和visual encoder。从而仅仅需要去训练一个用于模态融合的interface。这么做的目的是希望在模态融合的过程之中保证其他模块的预训练知识不流失
有些方法也选择去更新pre-trained modules的参数,但这么做的前提是数据质量过硬,否则训练出的大模型容易出现幻觉
预训练数据可以被划分为粗粒度(coarse-grained)和细粒度(fine-grained)。(具体dataset详见论文)
  • 粗粒度数据大部分来源于网络,noise过多,可以考虑去用CLIP模型去设立一个阈值过滤掉图文不匹配的数据。
  • 细粒度数据大部分需要通过商用模型,例如chatgpt-4o去构建得到数据。

2. Instruction-tuning - 微调

Instruction-tuning的目的是让模型理解输入的指令从而输出符合指令的答案。通过指令调优,LLM有望去提高zero-shot的能力:依靠模型的泛化能力,在面对训练数据中没有的任务类型时也可以回答正确。
notion image
Pretrain-finetune:预训练后微调,微调通常需要大量的任务强相关数据。
Prompting:提示方法减少了对大规模数据的依赖,可以通过提示工程来完成专门的任务。
Pretrain-finetune和prompting两种模式仅仅可以提升模型的few-shot能力,并不能很好地提升zero-shot能力。
Instruction tuning通过指令可以提升模型的泛化能力从而提升zero-shot能力。

2.1 Training Detail 训练细节

notion image
 
instruction tuning将一条instruction,一组多模态数据作为输入,从而可以得到模型的predicted response(答案),与ground-truth response相比较,通过cross-entropy即可实现模型训练

多模态模型的幻觉

MLLM幻觉问题可以理解为:问题-图片-答案 三者不匹配的原因。
常见的幻觉问题可以分为三类:
  • Existence Hallucination:图片中的物体存在性识别错误。
  • Attribute Hallucination:图片中的物体属性识别错误。(例如物体的颜色)
  • Relationship Hallucination:图片中的物体之间的关联错误。
 
  • 能力层级递进:在训练MLLM中,经常发现能力与能力之间是应该有先后学习顺序的,就像不可能在字体都不识别的时候去解出来一道数学题。所以需要Curriculum Learning - 能力循序渐进。因此,如何鉴别能力之间的层级关系成为了重中之重
  • 数据宁缺毋滥:目前来看,技术上再大的革新数据很脏也建模不好。数据并不是越多越好,脏数据的数量极少也会对MLLM的效果带来毁灭性打击,如果想要一个sota模型,数据清洗与过滤十分重要。
Nvidia DGX-1 拓扑结构The Last Emperor
Loading...
SimonSun
SimonSun
Internet Malou, LLM Rookie, Bug Maker🤧
最新发布
PPO(0)强化学习基础
2025-2-20
Last Day of 2024
2025-2-19
服务器从零到 personal workspace
2025-2-13
CO-STAR Prompt
2025-2-8
Notion Next 嵌入网易云音乐
2025-1-19
LLM训练数据格式
2025-1-16
公告
🙌README🙌
🤯There is nothing left
in my right brain,
🤯and there is nothing right
in my left brain...
⭐I wish you every success⭐