多模态大型语言模型(Multimodal Large Language Models, MLLMs)-二、多模态学习的原理

时间:2025-04-17 08:36:11

多模态学习的原理可以从文本LLMs的视角分解为以下几个关键步骤:模态编码、跨模态对齐、模态融合和任务建模。以下详细讲解每个步骤的理论基础。

2.1 模态编码

多模态学习的第一步是将不同模态的数据编码为统一的表示空间,通常是高维向量空间。

  • 文本编码

    • 原理:文本LLMs(如BERT、GPT)使用分词器(Tokenizer)将文本分解为词或子词单元(Tokens),然后通过嵌入层(Embedding Layer)映射为向量,再通过Transformer层提取上下文信息。
    • 技术细节
      • 分词:如WordPiece(BERT)、BPE(GPT)。
      • 嵌入:词嵌入(Word Embedding)+位置编码(Positional Encoding)。
      • Transformer:多层自注意力机制(Self-Attention)捕获词间关系。
      • 输出:每个Token对应一个高维向量(如768维或更高)。
    • 实现:Hugging Face的Transformers库提供了预训练模型(如bert-base-uncased)。
  • 图像编码

    • 原理:将图像分割为小块(Patches)或直接提取特征,映射到与文本类似的向量空间。
    • 技术细节
      • 传统方法:使用卷积神经网络(CNN,如ResNet)提取全局特征。
      • 现代方法:Vision Transformer(ViT)将图像分为固定大小的Patch(例如16x16像素),通过嵌入层和Transformer编码。
      • 输出:图像被表示为一个或多个向量(如ViT的CLS Token或Patch嵌入序列)。
    • 实现:PyTorch的torchvision.models.vit或Hugging Face的vit-base-patch16-224
  • 音频编码

    • 原理:将音频信号转换为频谱表示或时序特征,再编码为向量。
    • 技术细节
      • 预处理:将原始波形转换为Mel频谱图或MFCC(Mel-Frequency Cepstral Coefficients)。
      • 模型:使用Wav2Vec、HuBERT等模型,通过Transformer编码时序特征。
      • 输出:音频序列的向量表示。
    • 实现:Hugging Face的wav2vec2-base

2.2 跨模态对齐

跨模态对齐是多模态学习的核心,目标是让不同模态的表示在语义上对齐。例如,图像中的“猫”和文本中的“cat”应该映射到相近的向量空间。

  • 原理
    • 使用配对数据(如图像-文本对)学习模态间的映射关系。
    • 常见方法是对比学习(Contrastive Learning`,通过拉近正样本(匹配的模态对)距离、推远负样本(不匹配的模态对)距离来优化表示。
  • 技术细节
    • 对比学习损失
      • 使用InfoNCE损失(Normalized Temperature-scaled Cross Entropy Loss):
        L = − log ⁡ exp ⁡ ( sim ( x i , y i ) / τ ) ∑ j = 1 N exp ⁡ ( sim ( x i , y j ) / τ ) \mathcal{L} = -\log \frac{\exp(\text{sim}(x_i, y_i)/\tau)}{\sum_{j=1}^N \exp(\text{sim}(x_i, y_j)/\tau)} L=logj=1Nexp(sim(xi,yj)/τ)exp(sim(xi,yi)/τ)
        其中, x i x_i xi y i y_i yi 是匹配的图像-文本对, sim ( ⋅ ) \text{sim}(\cdot) sim() 是相似度函数(如余弦相似度), τ \tau τ 是温度参数, N N N 是批量大小。
      • 正样本:匹配的图像-文本对(如图像和其描述)。
      • 负样本:批量中其他不匹配的图像-文本对。
    • 实现示例:CLIP(Contrastive Language-Image Pretraining)使用大规模图像-文本对(如400M对)进行对比学习,训练图像编码器(ViT)和文本编码器(Transformer)共享一个语义空间。
  • 从文本LLMs扩展
    • 文本LLMs(如BERT)已通过自监督学习(如掩码语言建模,MLM)捕获了丰富的语义信息。
    • 在多模态学习中,文本编码器通常基于预训练LLMs,图像或音频编码器则通过跨模态对比学习与文本对齐。例如,CLIP的文本编码器基于Transformer,与图像编码器联合优化。

2.3 模态融合

模态融合是将不同模态的编码表示整合为统一的表示,用于下游任务。

  • 融合方式
    • 拼接(Concatenation)
      • 将文本、图像等模态的向量直接拼接,输入到后续网络。
      • 优点:简单。
      • 缺点:忽略模态间的交互。
    • 加权求和(Weighted Sum)
      • 对各模态向量加权平均,权重可学习。
      • 适用于晚期融合。
    • 跨模态注意力(Cross-Modal Attention)
      • 使用Transformer的注意力机制,让不同模态的特征相互交互。
      • 原理:以文本向量为Query,图像向量为Key和Value,计算注意力权重:
        Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V
        其中, Q Q Q 是文本向量, K , V K, V K,V 是图像向量, d k d_k dk 是向量维度。
      • 优点:捕获模态间的深层语义关系。
    • 混合融合:结合多种融合方式,灵活适应任务需求。
  • 从文本LLMs扩展
    • 文本LLMs的Transformer架构天然适合处理序列数据。
    • 在多模态模型中,图像或音频的编码结果被视为“伪Token”,与文本Token一起输入到Transformer。例如,LLaVA(Large Language and Vision Assistant)将图像Patch嵌入与文本Token拼接,输入到预训练LLM(如LLaMA)进行联合建模。
  • 实现细节
    • LLaVA示例
      • 图像通过ViT编码为Patch嵌入。
      • 嵌入通过线性层映射到文本LLM的词嵌入空间。
      • 拼接后的序列输入Transformer,计算自注意力。
    • 代码片段(伪代码,基于PyTorch):
      text_emb = text_encoder(text)  # [batch, seq_len, dim]
      image_emb = image_encoder(image)  # [batch, num_patches, dim]
      fused_emb = torch.cat([text_emb, image_emb], dim=1)  # [batch, seq_len+num_patches, dim]
      output = transformer(fused_emb)  # 多模态表示
      

2.4 任务建模

根据具体任务,设计输出头(Head)对融合表示进行处理:

  • 分类任务:添加全连接层(FC)输出类别概率。
  • 生成任务:使用解码器(如Transformer Decoder)生成文本、图像等。
  • 检索任务:计算模态间的相似度(如余弦相似度)。
  • 从文本LLMs扩展
    • 文本LLMs通常用于生成或分类任务。
    • 在多模态模型中,生成任务可直接复用LLM的解码器。例如,LLaVA使用LLaMA的解码器生成对话回复。
    • 对于生成图像的任务(如DALL·E),结合扩散模型(Diffusion Models)或变分自编码器(VAE)。