《深入浅出多模态》之多模态技术知识总结(上)

1,933 阅读15分钟

💙作者主页: GoAI |💚 公众号: GoAI的学习小屋 | 💛交流群: 704932595 |💜个人简介 : 掘金签约作者、百度飞桨PPDE、领航团团长、开源特训营导师、CSDN、阿里云社区人工智能领域博客专家、新星计划计算机视觉方向导师等,专注大数据与AI 知识分享。

💻文章目录

专栏介绍: 本作者推出全新系列《深入浅出多模态》专栏,具体章节如导图所示(导图后续更新),将分别从各个多模态模型的概念、经典模型、创新点、论文综述、发展方向、数据集等各种角度展开详细介绍,欢迎大家关注。

《深入浅出多模态》之多模态技术总结(上)(本篇) 《深入浅出多模态》(一):多模态模型论文最全总结 《深入浅出多模态》(二):多模态任务应用与背景 《深入浅出多模态》(三):多模态任务前言知识 《深入浅出多模态》之多模态经典模型:CLIP 《深入浅出多模态》之多模态经典模型:ALBEF 《深入浅出多模态》之多模态经典模型:BLIP 《深入浅出多模态》之多模态经典模型:BLIP2 《深入浅出多模态》之多模态经典模型:MiniGPTv4 《深入浅出多模态》之多模态经典模型:MiniGPT-v2、MiniGPT5 《深入浅出多模态》之多模态经典模型:InstructBLIP


👨‍💻导读: 本文为《深入浅出多模态》系列总览篇,分为上下两篇,本期分享从多模态概念与意义、任务类型及数据集和基础知识等方面介绍多模态技术,主要对模型进行详述,从具体论文、数据集、代码、模型结构、结果等角度分析,本专栏适合从事多模态小白及爱好者学习,欢迎大家关注,如有侵权请联系删除!

一、多模态概念与难点介绍

多模态学习(Multimodal learning)是机器学习的一个重要分支。模态(Modality),就是数据的一种形式,例如图像、文本、语音等。通常意义的多模态学习,就是利用模型去同时处理多个模态数据,如同时处理图文,图生文本、文本生图等。通过多模态大模型,可以更好地理解和处理复杂的多模态数据,提高人工智能的应用性能。

多模态主要技术难点在于如何挖掘模态间的互补性或独立性以表征多模态数据。其中表征学习是多模态任务的基础,包含了一些开放性问题,例如:如何结合来源不同的异质数据,如何处理不同模态的不同噪声等级,测试样本的某种模态缺失怎么办。 在这里插入图片描述

二、多模态任务类型 多模态大模型在许多领域都有广泛的应用,应用方向不限于自然语言处理、计算机视觉、音频处理等,具体任务又可以分为文本、图像的语义理解与生成,其中多模态理解任务分为图像描述、视觉定位、对话问答、视觉问答、视频的分类和识别、音频的情感分析及语音识别等。

在这里插入图片描述

多模态开源数据集

在这里插入图片描述

基础任务数据集版本: 在这里插入图片描述

详细任务数据集版本:

在这里插入图片描述

三、多模态模型发展时间线

本文借鉴部分论文中提到的近几年主流多模态模型进行总结,从图中可以看到多模态技术发展迭代较快,各企业与机构间也是相继推出各类多模态模型,最后整理的多模态模型发展时间线如下:

四、多模态基础知识

1.Transformer基础介绍

目前主流多模态大模型大多以Transformer为基础,Transformer是一种由谷歌在2017年提出的深度学习模型,主要用于自然语言处理(NLP)任务,特别是序列到序列(Sequence-to-Sequence)的学习问题,如机器翻译、文本生成等。Transformer彻底改变了之前基于循环神经网络(RNNs)和长短期记忆网络(LSTM)的序列建模范式,并且在性能上取得了显著提升。Transformer结构如下图所示:

在这里插入图片描述

Transformer的核心构成包括:

  • 自注意力机制(Self-Attention Mechanism):Transformer模型摒弃了传统RNN结构的时间依赖性,通过自注意力机制实现了对输入序列中任意两个位置之间的直接关联建模。每个词的位置可以同时关注整个句子中的其他所有词,计算它们之间的相关性得分,然后根据这些得分加权求和得到该位置的上下文向量表示。这种全局信息的捕获能力极大地提高了模型的表达力。
  • 多头注意力(Multi-Head Attention):Transformer进一步将自注意力机制分解为多个并行的“头部”,每个头部负责从不同角度对输入序列进行关注,从而增强了模型捕捉多种复杂依赖关系的能力。最后,各个头部的结果会拼接并经过线性变换后得到最终的注意力输出。
  • 位置编码(Positional Encoding):由于Transformer不再使用RNN那样的顺序处理方式,为了引入序列中词的位置信息,它采用了一种特殊的位置编码方法。这种方法对序列中的每个位置赋予一个特定的向量,这个向量的值与位置有关,确保模型在处理时能够区分不同的词语顺序。
  • 编码器-解码器架构(Encoder-Decoder Architecture):Transformer采用了标准的编码器-解码器结构,其中编码器负责理解输入序列,将其转换成高级语义表示;而解码器则依据编码器的输出并结合自身产生的隐状态逐步生成目标序列。在解码过程中,解码器还应用了自注意力机制以及一种称为“掩码”(Masking)的技术来防止提前看到未来要预测的部分。
  • 残差连接(Residual Connections):Transformer沿用了ResNet中的残差连接设计,以解决随着网络层数加深带来的梯度消失或爆炸问题,有助于训练更深更复杂的模型。
  • 层归一化(Layer Normalization):Transformer使用了层归一化而非批量归一化,这使得模型在小批量训练时也能获得良好的表现,并且有利于模型收敛。 以上为Transformer的基础构成,同时基于上述Transformer结构又可以细分为Encoder-only、Decoder-only、Encoder-Decoder三类,这些结构是构建大语言模型的基础框架,同时也被运用在多模态大模型中连接视觉与语言特征。

在这里插入图片描述

(1)Encoder-Only架构:

  • 定义与特点:这类模型仅包含编码器部分,主要用于从输入数据提取特征或表示。例如,在BERT (Bidirectional Encoder Representations from Transformers) 中,它是一个双向Transformer编码器,被训练来理解文本上下文信息,并输出一个固定长度的向量表示,该表示包含了原始输入序列的丰富语义信息。
  • 用途:主要用于预训练模型,如BERT、RoBERTa等,常用于各种下游任务的特征提取,比如分类、问答、命名实体识别等,但不直接用于生成新的序列。
  • 仅编码器架构(Encoder-only):自编码模型(破坏一个句子,然后让模型去预测或填补),更擅长理解类的任务,例如:文本分类、实体识别、关键信息抽取等。
  • 典型代表有:Bert、RoBERTa等。

(2)Decoder-Only架构:

  • 定义与特点:解码器仅架构专注于从某种内部状态或先前生成的内容生成新的序列,通常用于自回归式预测任务,其中每个时刻的输出都依赖于前面生成的所有内容。
  • 优点:具有序列生成能力,能够按顺序逐个生成连续的元素(如单词、字符),适用于文本生成、自动摘要、对话系统等生成性任务。
  • 典型的Decoder-Only模型包括GPT系列(如GPT-3)。
  • 仅解码器架构(Decoder-only):自回归模型(将解码器自己当前步的输出加入下一步的输入,解码器融合所有已经输入的向量来输出下一个向量,所以越往后的输出考虑了更多输入),更擅长生成类的任务,例如:文本生成。
  • 典型代表有:GPT系列、LLaMA、OPT、Bloom等。

(3)Encoder-Decoder架构:

  • 定义与特点:这种架构由两个主要部分组成:编码器和解码器。编码器负责将输入序列转换为压缩的中间表示,解码器则基于这个中间表示生成目标输出序列。这种结构非常适合翻译、摘要生成、图像描述等任务,需要理解和重构输入信息后生成新序列的任务。
  • 工作原理:编码器对源序列进行处理并生成上下文向量,解码器根据此上下文向量逐步生成目标序列。例如,经典的Seq2Seq(Sequence-to-Sequence)模型和Transformer中的机器翻译模型就采用了这样的结构。
  • 编码器-解码器架构(Encoder-Decoder):序列到序列模型(编码器的输出作为解码器的输入),主要用于基于条件的生成任务,例如:翻译,概要等。
  • 典型代表有:T5、BART、GLM等。

2.多模态预训练模型架构

相较于多模态,基于单模态的表征学习已被广泛且深入地研究。在Transformer出现之前,不同模态所适用的最佳表征学习模型不同,例如,CNN广泛适用CV领域,LSTM占领NLP领域。较多的多模态工作仍旧局限在使用N个异质网络单独提取N个模态的特征,之后采用单流或双流结构进行训练,具体如下述结构所示: 在这里插入图片描述

单流、双流概念及典型算法示例如下:

在这里插入图片描述

  • 单流架构:指将文本和视觉特征连接在一起,然后一起输入到单个转换器块中,如 左图所示。单流结构通常利用合并的注意力机制来融合多模态输入。
  • 双流架构:指文本和视觉特征不连接在一起,而是独立发送到两个不同的模块,模块间不共享参数,如右图所示。为了获得更高的性能,通常使用交叉注意力机制来实现跨模态交互。

其中以VIT为基础视觉预训练可以通过Transformers模型对视觉进行有效表征,逐渐成为视觉信息编码的主流手段。此部分主要梳理以VIT为延伸的预训练和多模态对齐工作,具体分类如下: 在这里插入图片描述

上述多模态预训练模型发展关系如下:

在这里插入图片描述

多模态预训练模型详细版介绍如下: 在这里插入图片描述

3.主流多模态模型结构组成

随着多模态模型不断迭代发展,目前可以在上述预训练结构基础上进一步将多模态大语言模型结构划分为五个主要关键组件,从多模态理解到生成任务,具体组成如下图所示: 在这里插入图片描述

  1. 模态编码器(Modality Encoder, ME):图像编码器(Image Encoder)、视频编码器(Video Encoder)、音频编码器(Audio Encoder)
  2. 输入投影器(Input Projector, IP):线性投影器(Linear Projector)、多层感知器(Multi-Layer Perceptron, MLP)、交叉注意力(Cross-Attention)、Q-Former等
  3. 大模型基座(LLM Backbone):ChatGLM、LLaMA、Qwen、Vicuna等
  4. 输出投影器(Output Projector, OP):Tiny Transformer、Multi-Layer Perceptron (MLP)等
  5. 模态生成器(Modality Generator, MG):Stable Diffusion、Zeroscope、AudioLDM 按上述五部分结构对经典多模态模型进行分类的结果如下,I为输入形式,O为输出形式,其中I为图片,V为视频,T为文本。

在这里插入图片描述

五、单模态与多模态任务对齐

本文以文本和图像的多模态数据为例,首先介绍文本、图像各自单模态转换过程:

(1)文本转Embedding:

Tokenization: 也称作分词,是把一段文本切分成模型能够处理的token或子词的过程,通常会使用BPE或WordPiece这样的子词算法,有助于控制词典大小的同时保留了表示文本序列的能力 Embedding: 将token或子词映射到多维空间中的向量表示,用以捕捉语义含义。这些连续的向量使模型能够在神经网络中处理离散的token,从而使其学习单词之间的复杂关系。 经典的文本转Embedding可采用Tramsformer(bert)模型 具体步骤:

  • 输入文本:"thank you very much"
  • Tokenization后: ["thank", "you", "very","much"]
  • Embedding:假设每个token被映射到一个2048维的向量,“thank you very much”被转换成4*2048的embeddings

(2)图像转换Embedding:

图像转Emdedding一般采用Vit Transformer模型,首先把图像分成固定大小的patch,类比于LLM中的Tokenization操作,然后通过线性变换得到patch embedding,类比LLM中的Embedding操作。 由于Transformer的输入就是token embeddings序列,所以将图像的patch embedding送入Transformer后就能够直接进行特征提取,得到图像全局特征的embeddings。

具体步骤如下:

图像预处理:

  • 输入图像大小:224x224像素,3个颜色通道(RGB)+ 预处理:归一化,但不改变图像大小 图像切分:
  • 假设每个patch大小为14x14像素,图像被切分成(224/14) × (224/14) =256个patches 线性嵌入:
  • 将每个14x14x3的patch展平成一个一维向量,向量大小为 14×14×3=588
  • 通过一个线性层将每个patch的向量映射到D维的空间,以768为为例 , 每个patch被表示为一个D维的向量, 注:由于Transformer内部不改变这些向量的大小,最后可以用256*768的embeddings表示一张图像。

(3)多模态对齐:

上述介绍文本和图像都被转换成向量的形式,但这并不意味着它们可以直接结合使用。问题在于这两种不同模态的向量是在不同的向量空间中学习并形成的,它们各自对事物的理解存在差异。例如,在图像中“小狗”的Embedding和文本中“小狗”的Embedding在两种模态中的表示可能截然不同,这就引出了多模态技术的核心概念——多模态对齐。

由于本部分内容较多,文章篇幅有限,关于如何多模态对齐大家可参考文章:

  • 多模态训练,怎么解决不同模态之间差异的问题?
  • 多模态训练,怎么对齐不同模态? 最后,本篇末尾介绍一下多模态模型如何进行训练的,同时也是为下篇文章内容做铺垫。

六、多模态模型训练流程

多模态大型语言模型的训练流程主要分为两个阶段:多模态预训练(MM PT)和多模态指令调优(MM IT)。

(1)多模态预训练:

  • 目标:预训练阶段的目标是通过训练输入和输出投影器(IP和OP)来实现不同模态之间的对齐,以便LLM主干能够有效地处理多模态输入。
  • 数据集:通常使用X-Text数据集,包含图像-文本(Image-Text)、视频-文本(Video-Text)和音频-文本(Audio-Text)对,以及交错的图像-文本语料库等。
  • 优化:训练过程中,主要优化的是输入和输出投影器的参数,以最小化条件文本生成损失。通常涉及到将模态编码器的输出特征与文本特征对齐,生成的对齐特征作为LLM主干的输入。

(2)多模态指令调优:

  • 目标:指令调优阶段的目标是通过指令格式化的数据集对预训练的MM-LLM进行微调,以提高模型遵循新指令的能力,从而增强其在未见任务上的性能。
  • 方法:指令调优的训练方法可以分为监督式微调(SFT)和基于人类反馈的强化学习(RLHF)。SFT将PT阶段的数据转换为指令感知格式,而RLHF则依赖于对模型响应的人类反馈进行进一步微调。
  • 数据集:使用的数据集通常包括视觉问答(VQA)、指令遵循任务等,数据集结构可以是单轮问答或多轮对话。

七、总结:

以上就是本篇全部内容啦,感兴趣的同学可以对后两部分内容进行着重学习,下篇文章内容将围绕不同多模态模型的对齐方法对经典多模态模型进行对比与总结,并引入厂内多模态框架PaddleMIX进行多任务实战,帮助大家快速了解多模态技术,欢迎大家在评论区交流学习,最后作者能力有限,若文中描述有误也欢迎大家指导!

🎉知识星球: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职相关(简历撰写技巧、面经资料与心得)多方面综合学习平台,推荐AI小白及AI爱好者学习!星球➡️主页