多模态论文条记——CogVLM和CogVLM2

打印 上一主题 下一主题

主题 975|帖子 975|积分 2925

各人好,这里是好评条记,公主号:Goodnote,专栏文章私信限时Free。本文具体先容多模态模型的LoRA版本——CogVLM和CogVLM2。在SD 3中使用其作为captioner基准模型的原因和优势。
  

   
   
  起首我们必要知道CogVLM是主要用于图像生成文本的。在此之前,我们已经先容了BLIP和BLIP2,但是BLIP模型生成的文本描述较为简单,模型训练则必要更具体、准确的图像描述或字幕。
在上期文章中将先容了模型Coca(Contrastive Captioners,谷歌出品),OpenAI的DALL·E 3在处置惩罚图像-文本训练数据集就是基于谷歌的CoCa模型,微调一个image captioner,用来合成图像的caption。
   Coca参考历史文章:多模态论文条记——Coca
  同样,在SD 3中也使用了模型去优化图像-文本数据会合的文本描述,只不外SD 3中使用了CogVLM。
SD 3先容参考 SD 系列文章:Stable Diffusion 3详解
CogVLM

论文

CogVLM: Visual Expert for Pretrained Language Models
背景

VLMs 的任务与挑衅

VLM 的应用任务: 视觉语言模型具有广泛的应用场景,例如:图像描述、视觉问答、视觉定位、分割等。这些任务必要模型具备强大的多模态推理本事,而这种本事通常依赖于对视觉和语言数据的深度理解与融合
训练 VLM 的挑衅: 训练与大规模语言模型(如 LLaMA2)性能相匹配的 VLM 是一项复杂任务。当前的主流方法是复用已有的预训练语言模型(如 GPT),并在此基础上扩展视觉处置惩罚本事。而这个扩展过程的核心挑衅在于解决视觉特征和语言特征的对齐问题。
现有方法及其局限性

浅层对齐方法(Shallow Alignment Methods)

代表方法有 BLIP 2(原文为:InstructBLIP,)MiniGPT-4


  • 通过一个 冻结的预训练语言模型(如 GPT)和 预训练视觉编码器(如 CLIP)实现简单连接。
  • 通过 可训练的 Q-Former 或线性层,将图像特征映射到语言模型的输入嵌入空间。
  • 优势:收敛快,训练简单。
  • 劣势:性能劣于深度融合模型,例如 LLaVA-1.5。问题包括:

    • 视觉与语言特征的不匹配:视觉特征在经过浅层映射后无法充实适配语言模型的深层布局。
    • 任务表现受限:在生成任务(如图像描述)中,这种方法难以捕获特定任务的细节。

   BLIP2 参考历史文章:多模态论文条记——BLIP2
  深度融合方法(Deep Fusion Methods)

代表方法有 LLaVA-1.5PaLIQwen-VL


  • 在预训练或监视微调阶段,直接对语言模型进行训练
  • 问题:深度融合方法会显著改变语言模型的分布,导致 灾难性遗忘(Catastrophic Forgetting)。

    • 语言模型在训练过程中会失去其原有的 NLP 本事,例如自然语言生成(NLG)性能降落。

   注意:
  

  • 浅层对齐方法和深度融合方法的区分点在于:是否会改变原始模型的权重参数,如果会修改,则是深度融合方法,否则,为浅层对齐方法。

    • LLaVA 属于浅层对齐方法,原始的语言和视觉模型权重是冻结的;
    • LLaVA 1.5 属于深度融合方法,原始的语言和视觉模型权重不是被冻结的,而是可以进行训练的。

  CogVLM 的创新点

CogVLM 提出了新的解决方案,答复了一个核心问题:是否能在保留语言模型 NLP 本事的同时,赋予其强大的视觉理解本事?
CogVLM 的方法:引入视觉专家(Visual Expert)


  • CogVLM 并不对原始语言模型进行修改,而是添加了一个 可训练的视觉专家

    • 视觉专家的作用:在每一层中,视觉特征通过QKV 矩阵MLP 层 与文本特征交互。
    • 参数与效率:视觉专家的引入使参数数量增长一倍,但模型的计算量(FLOPs)保持稳定。

  • 优势

    • 保留语言模型的 NLP 本事:原始语言模型的参数完全冻结,避免灾难性遗忘问题。如果输入序列中没有图像,模型表现与原始语言模型一致。
    • 深度融合视觉与语言特征:使用雷同低秩矩阵的思想,间接改变模型参数的方式实现深度融合。避免浅层对齐中的特征分布偏移问题。

   这个灵感来源于:P-Tuning 与 LoRA 的对比
  

  • P-Tuning

    • 学习任务特定的输入前缀(prefix embedding),通过调整输入来适配模型。
    • 雷同浅层对齐方法中的图像特征映射。

  • LoRA

    • 在每一层通过引入低秩矩阵分解调整模型权重,实现更好的性能与稳定性。

  • 类比:CogVLM 的视觉专家雷同于 LoRA,它通过在每一层引入视觉-语言交互,解决了浅层对齐方法中的特征不匹配问题。
  P-Tuning和LoRA请分别参考微调系列文章:
  

  • SD模型微调之Textual Inversion和Embedding fine-tuning
  • SD模型微调之LoRA
  模型架构


   图4. CogVLM的架构。(a) 关于输入的示意图,其中一张图像由预训练的ViT处置惩罚,并映射到与文本特征相同的空间。(b) 语言模型中的Transformer模块。图像特征具有差别的QKV矩阵和FFN。只有紫色部门是可训练的。
  CogVLM模型共包罗四个基本组件:ViT 编码器,MLP 适配器,预训练大语言模型(GPT-style)和视觉专家模块。

  • ViT 编码器
    CogVLM 中接纳了 预训练的 EVA2-CLIP-E作为ViT 编码器,该编码器将图像输入转化为特征表现。在 CogVLM-17B 中,移除了 ViT 编码器的最后一层,由于该层主要用于整合 [CLS] 特征用于对比学习。
  • MLP 适配器
    CogVLM 使用了一个 两层的 MLP(SwiGLU) 作为 MLP 适配器。MLP适配器的作用是将 ViT 的输出映射到与 文本特征 相同的空间。
    SwiGLU 是一种高效的激活函数,通常用于提拔模型的表达本事和稳定性。全部的图像特征共享相同的 position id,这意味着模型不会区分图像特征的次序,仅仅根据位置进行编码。MLP适配器在训练过程中通过少量参数的调整,显著提拔了模型的表现。
  • 预训练大语言模型
    CogVLM 的预训练大语言模型接纳了与 GPT-style 的大语言模型兼容的设计。具体来说,CogVLM-17B 接纳了 Vicuna-7B-v1.5 作为基础模型,进行进一步的训练。别的,还选择了 GLM 系列模型LLaMA 系列模型,这确保了 CogVLM 可以或许在各种预训练大语言模型上进行扩展,以优化多模态任务的表现。
  • 视觉专家模块
    CogVLM 引入了 视觉专家模块,在每一层 Transformer 中加入 图像特征的深度融合。每个 Transformer 层中的图像特征使用与 文本特征差别的 QKV 矩阵和 MLP 层,这些矩阵和层都是可训练的。这个设计使得视觉特征和语言特征可以或许深度融合,提高视觉与语言特征对齐的精度,进而增强多模态任务的效果。
视觉专家模块

在传统的多模态模型中,图像在处置惩罚过程中每每被看成“附庸”来处置惩罚,图像特征通常被直接对齐到文本特征的输入空间(拼接到一起,如LLaVA、ViT、ViLT等)。


  • 这种方式使得图像特征在多模态模型中并没有得到与文本同等的处置惩罚和重视。这导致了图像理解的本事有限,尤其是在必要复杂图像理解和生成的任务中,模型的效果自然会受到限定。
CogVLM 通过引入 视觉专家 来改变这一思绪,接纳 视觉优先 的方法。


  • 通过让图像特征与语言特征在每一层 Transformer 进行深度融合,CogVLM 使得图像特征可以或许在多个层次上到场建模,并得到与文本特征同等的重视,从而提拔了图像理解的效果,避免了传统方法中图像特征被视为“附庸”的情况。
架构

CogVLM 中,视觉专家模块被引入到每一层,以实现深度视觉-语言特征融合。这个模块主要由两部门组成:

  • QKV矩阵:用于计算注意力,决定哪些部门的信息对当前输出最紧张;
  • MLP层用于前馈神经网络,对注意力计算后的特征进行进一步的非线性转换,增强模型的表达本事。

工作流程

视觉专家模块在每个transformer层对图像特征进行专门处置惩罚,使得模型更好理解和融合视觉信息。
输入拆分

起首,输入的隐藏状态                                    X                              X                  X(hidden states)会被拆分成图像隐藏状态(                                             X                            I                                       X_I                  XI​)和文本隐藏状态(                                             X                            T                                       X_T                  XT​)。
   其中,输入的隐藏状态为                                         X                            ∈                                       R                                           B                                  ×                                  H                                  ×                                  (                                               L                                     I                                              +                                               L                                     T                                              )                                  ×                                  D                                                       X \in \mathbb{R}^{B \times H \times (L_I + L_T) \times D}                     X∈RB×H×(LI​+LT​)×D:
  

  •                                                   B                                          B                           B:批次大小(batch size)
  •                                                                L                                     I                                                      L_I                           LI​:图像序列的长度
  •                                                                L                                     T                                                      L_T                           LT​:文本序列的长度
  •                                                   H                                          H                           H:注意力头的数量(Attention heads)
  •                                                   D                                          D                           D:隐藏层的大小(hidden size)
  注意力计算

视觉专家模块中的注意力机制计算过程如下:

  • Q、K、V的计算
                                                  Q                               =                               concat                               (                                           X                                  I                                                      W                                  I                                  Q                                          ,                                           X                                  T                                                      W                                  T                                  Q                                          )                                      Q = \text{concat}(X_I W_I^Q, X_T W_T^Q)                        Q=concat(XI​WIQ​,XT​WTQ​)
                                                  K                               =                               concat                               (                                           X                                  I                                                      W                                  I                                  K                                          ,                                           X                                  T                                                      W                                  T                                  K                                          )                                      K = \text{concat}(X_I W_I^K, X_T W_T^K)                        K=concat(XI​WIK​,XT​WTK​)
                                                  V                               =                               concat                               (                                           X                                  I                                                      W                                  I                                  V                                          ,                                           X                                  T                                                      W                                  T                                  V                                          )                                      V = \text{concat}(X_I W_I^V, X_T W_T^V)                        V=concat(XI​WIV​,XT​WTV​)

    • 其中                                                                W                                     I                                     Q                                              ,                                               W                                     I                                     K                                              ,                                               W                                     I                                     V                                                      W_I^Q, W_I^K, W_I^V                           WIQ​,WIK​,WIV​ 是视觉专家的 QKV 矩阵,                                                               W                                     T                                     Q                                              ,                                               W                                     T                                     K                                              ,                                               W                                     T                                     V                                                      W_T^Q, W_T^K, W_T^V                           WTQ​,WTK​,WTV​ 是原始语言模型的 QKV 矩阵。

  • 注意力权重计算
    使用上一步得到的 Q、K、V ,代入下面的公式,进行计算:
                                                  Attention                               (                               X                               ,                                           W                                  I                                          ,                                           W                                  T                                          )                               =                               softmax                                           (                                                             Tril                                        (                                        Q                                                       K                                           T                                                      )                                                                D                                                           )                                          V                                      \text{Attention}(X, W_I, W_T) = \text{softmax}\left(\frac{\text{Tril}(QK^T)}{\sqrt{D}}\right) V                        Attention(X,WI​,WT​)=softmax(D                      ​Tril(QKT)​)V

    •                                                                      W                                        I                                                           W_I                              WI​                                                                     W                                        T                                                           W_T                              WT​ 分别是视觉专家和原始语言模型中的 QKV 矩阵。
    •                                                        Tril                                     (                                     )                                              \text{Tril}()                              Tril()下三角矩阵操作,用于掩盖掉未来信息(常用于自注意力机制中的掩码操作)。

FFN层

在计算完注意力后,视觉和文本特征会被进一步通报到前馈神经网络(FFN)层
                                         FFN                            (                            X                            )                            =                            concat                            (                                       FFN                               I                                      (                                       X                               I                                      )                            ,                                       FFN                               T                                      (                                       X                               T                                      )                            )                                  \text{FFN}(X) = \text{concat}(\text{FFN}_I(X_I), \text{FFN}_T(X_T))                     FFN(X)=concat(FFNI​(XI​),FFNT​(XT​))


  • 其中                                                    FFN                               I                                            \text{FFN}_I                     FFNI​ 和                                                    FFN                               T                                            \text{FFN}_T                     FFNT​ 分别是视觉专家和原始语言模型的前馈神经网络
训练细节

CogVLM的训练是氛围两阶段,第一阶段进行预训练,第二阶段,对卑鄙任务进行针对性微调。
   这个两阶段的训练过程,在大模型中很常见,例如LLaVA也是两阶段:
  

  • 阶段1:特征对齐预训练
  • 阶段2:端到端微调
  LLaVA参考历史文章:多模态论文条记——LLaVA

  1. 预训练阶段

数据集:


  • 预训练数据集:公开可用的图像文本对进行训练
  • 视觉定位数据集:作者还构建了一个包罗4000万张图像的视觉定位数据集,图像中的名词与边界框相关联,表现物体在图像中的位置
预训练超参数:参考论文原文表5。
预训练第一阶段:图像描述损失函数

在预训练的第一阶段,主要使用 图像描述损失函数 来进行训练,目标是让模型学会根据图像生成描述文本。具体来说,模型被训练去猜测图像对应的文本序列中的下一个标记(token)。
   使用了15亿图像文本对,进行12万次迭代,批量大小为8192。
  

  • 目标:对于每一张图像,模型必要生成与之对应的描述文本。这个过程雷同于传统的图像描述生成(image captioning)任务,模型通过最大化对文本部门的下一个标记猜测的概率来进行训练。
  • 损失函数:通常使用 交叉熵损失(cross-entropy loss)来计算模型生成的文本序列与真实描述序列之间的差异,损失函数界说为:
                                                  Loss                               =                               −                                           ∑                                               t                                     =                                     1                                              T                                          log                               ⁡                               P                               (                                           y                                  t                                          ∣                               x                               ,                                           y                                               <                                     t                                                      )                                      \text{Loss} = -\sum_{t=1}^{T} \log P(y_t|x, y_{<t})                        Loss=−t=1∑T​logP(yt​∣x,y<t​)

    • 其中,                                                  P                                  (                                               y                                     t                                              ∣                                  x                                  ,                                               y                                                   <                                        t                                                           )                                          P(y_t|x, y_{<t})                           P(yt​∣x,y<t​) 表现在给定图像                                                   x                                          x                           x 和前面生成的文本                                                                y                                                   <                                        t                                                                   y_{<t}                           y<t​ 的条件下,猜测下一个标记                                                                y                                     t                                                      y_t                           yt​ 的概率。

预训练第二阶段:图像描述损失函数 + 指代表达理解(REC)任务的损失函数

第二阶段,除了图像描述任务外,还引入了 指代表达理解(REC)任务。REC任务要求根据物体的文本描述猜测图像中的边界框位置,接纳雷同VQA的训练形式(问题:物体在那里?答案:                                   [                                   x                            0                                  ,                                   y                            0                                  ,                                   x                            1                                  ,                                   y                            1                                  ]                              [x_0,y_0,x_1,y_1]                  [x0​,y0​,x1​,y1​])。
   在第二阶段,训练进行了6万次迭代,批量大小为1024,最后3万次迭代中提拔了输入分辨率(从224×224到490×490),以增长图像细节和增强模型的泛化本事。
  

  • 图像描述损失:与第一阶段相同,图像描述损失函数依然用于训练模型生成图像的描述文本。
  • REC任务的损失函数:REC任务必要模型根据物体的文本描述猜测图像中的边界框位置。具体来说问题:物体在那里?答案:                                             [                                           x                                  0                                          ,                                           y                                  0                                          ,                                           x                                  1                                          ,                                           y                                  1                                          ]                                      [x_0,y_0,x_1,y_1]                        [x0​,y0​,x1​,y1​]。为了训练这一任务,使用 下一个标记猜测的损失函数,即雷同于图像描述任务的交叉熵损失,但这次输出是坐标值。
  • 损失函数:对于 REC 任务,损失函数可以形式化为:
                                                                    Loss                                     REC                                              =                                               ∑                                                   i                                        =                                        1                                                  N                                              MSE                                  (                                               y                                                   pred                                        ,                                        i                                                           ,                                               y                                                   gt                                        ,                                        i                                                           )                                          \text{Loss}_{\text{REC}} = \sum_{i=1}^{N} \text{MSE}(y_{\text{pred}, i}, y_{\text{gt}, i})                           LossREC​=i=1∑N​MSE(ypred,i​,ygt,i​)
    其中,                                                         y                                               pred                                     ,                                     i                                                             y_{\text{pred}, i}                        ypred,i​ 是模型猜测的边界框坐标,                                                         y                                               gt                                     ,                                     i                                                             y_{\text{gt}, i}                        ygt,i​ 是真实的边界框坐标,                                             N                                      N                        N 是边界框的数量。
2. SFT有监视微调



  • 微调数据:可以参考数据集 CogVLM-SFT-311K 进行训练。
  • 微调超参数:参考论文原文表6。
  • 训练细节:在有监视微调(SFT)阶段,除 Vision Transformer (ViT) 编码器外,全部的参数都是可以训练的。
这些训练细节展示了 CogVLM 的多阶段训练过程,其中预训练和微调的联合确保了模型可以或许高效地理解和生成图像与文本之间的关系。
CogVLM2

论文

CogVLM2: Visual Language Models for Image and Video Understanding
优化

CogVLM 2与第一代CogVLM雷同,CogVLM 2在注意力和FFN模块中都接纳了视觉专家的架构。这种架构创新促进了视觉和语言特征的深度融合,同时保留了模型固有的语言本事。
与第一代模型差别,CogVLM 2进一步接纳2×2下采样模块,在保持效率的同时提高输入分辨率,并使用LLaMA 3-8B作为LLM骨干。别的,我们从多样性和质量方面不断增强训练前和训练后数据,具体信息见第3.1节和第4.1节。
CogVLM2CogVLM 的基础上做了多项优化和改进,主要表现在以下几个方面:
1. 视觉专家模块的改进



  • CogVLM 中的视觉专家模块主要通过引入视觉专家对每一层的视觉特征进行深度处置惩罚,实现图像特征与文本特征的深度融合。
  • CogVLM2 进一步优化了视觉专家模块,使得图像特征的处置惩罚更加高效和准确。具体来说,CogVLM2引入了 多层视觉专家模块,让视觉专家模块在每一层都能更加精细地调节图像和文本特征的融合。
2. MLP 适配器的增强



  • CogVLM 中使用了 MLP适配器 来将视觉特征与文本特征对齐,这一操作是通过一个两层的 MLP(SwiGLU)来完成的。
  • CogVLM2 中对 MLP 适配器进行了优化和增强,增强了适配器的本事,使其可以或许更有效地映射差别模态的特征,进一步提高了图像和文本特征的融合效果。具体增强了适配器的容量和非线性表达本事,使得图像和文本的对齐更加精细。
  • CogVLM2 使用了 Downsample 操作来降低计算复杂度,同时保证特征的准确性,使得模型在处置惩罚更大规模的图像数据时依然保持高效。
3. 视觉优先的加强



  • CogVLM 中,视觉特征在多个层次上和文本特征进行对齐,但图像的处置惩罚可能没有完全达到视觉信息的深度融合。
  • CogVLM2 强化了“视觉优先”的思想,进一步优化了图像特征与文本特征的深度融合过程,确保图像特征在各个层次上都有充实的表达,而不是仅在浅层中对齐。这使得 CogVLM2 可以或许更好地理解复杂的视觉信息,并在视觉任务上取得更好的效果。
历史文章

呆板学习

呆板学习条记合集
深度学习

深度学习条记合集
多模态论文

深度学习条记——ViT、ViLT
深度学习条记——DiT(Diffusion Transformer)
深度学习条记——CLIP、BLIP
多模态论文条记——BLIP2
深度学习条记——VQ-VAE和VQ-VAE-2
多模态论文条记——dVAE(DALL·E的核心部件)
多模态论文条记——LLaVA
多模态论文条记——Coca

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

冬雨财经

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表