多模态论文笔记——Coca(副)

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍多模态模型Coca,在DALL·E 3中使用其作为captioner基准模型的原因和优势。

文章目录

首先我们需要知道Coca是主要用于图像生成文本的。在此之前,我们已经介绍了BLIP和BLIP2,但是BLIP模型生成的文本描述较为简单,模型训练则需要更详细、准确的图像描述或字幕。本文将介绍一个新模型Coca(Contrastive Captioners,谷歌出品),OpenAI的DALL·E 3在处理图像-文本训练数据集就是基于谷歌的CoCa模型,微调一个image captioner,用来合成图像的caption。

DALL·E 3介绍参考DALL·E系列文章:DALL·E 3模型及其论文详解

ALBEF

CoCa可以理解成是ALBEF模型的一个后续工作,它与ALBEF模型类似,所以我们就先简要介绍一下ALBEF模型,再给出CoCa模型的介绍及其在ALBEF基础上做的改进。

ALBEF (Align Before Fuse) 是一个多模态学习模型 ,专注于图像和文本的联合表示学习 。它通过对比学习 (Contrastive Learning)多模态特征对齐 (Alignment) 来实现任务优化,同时为下游任务提供强大的基础表示。

论文

Align before Fuse: Vision and Language Representation Learning with Momentum Distillation

模型结构

组成

ALBEF 由三部分组成,如下:

  1. 一个图像编码器
  2. 一个文本编码器
  3. 一个多模态编码器
训练目标
  1. 图像-文本对比损失(image-text contrastive loss) :对齐图像和文本特征,最小化同一图像-文本对的特征距离,最大化不同图像-文本对的特征距离。用于在特征融合之前对图像和文本的单模态表示进行对齐。
  2. 图像-文本匹配损失(image-text matching loss) :判断图像和文本是否匹配,进一步提高特征对齐效果。用于学习图像与文本之间的多模态交互。
  3. 遮蔽语言建模损失(masked-language-modeling loss) :在文本中随机掩盖部分单词,通过上下文信息预测掩盖的单词。用于学习图像与文本之间的多模态交互。

为了提升对噪声数据的学习能力,我们在训练过程中生成伪标签(pseudo-targets),这些伪标签由动量模型(momentum model,即基础模型的滑动平均版本)生成,并作为额外的监督信号。

有没有发现ALBEF和BLIP模型的训练目标极其相似?因为他们来自一个团队。

BLIP参考本系列历史文章:多模态论文笔记------CLIP、BLIP

CoCa​

CoCa 是 ALBEF 的后续工作,在保持多模态特征对齐的同时,通过引入可学习的池化机制统一的 Decoder 架构,更适合生成任务(如图像描述生成)。这种设计不仅提升了多模态任务的性能,也在生成任务上展现了显著的优势。

CoCa 是谷歌提出的一种图像-文本对齐模型 ,旨在同时优化对比学习(contrastive learning)和图像描述(image captioning)的任务 。其主要特点是统一了对比学习和生成任务,通过共享的编码器和解码器框架完成多任务学习,生成更为准确且多样的图像描述。

论文

CoCa: Contrastive Captioners are Image-Text Foundation Models

模型结构

下面我们先介绍CoCa的模型结构。它是构建在encoder-decoder的基础上的。它的结构如下:

CoCa 与 ALBEF 对比
  1. 相似点

    • 整体结构 :CoCa 和 ALBEF 都采用 "图像分支 + 文本分支" 的结构,左边是图像编码器 (Image Encoder),右边是文本处理器 (Text Branch)。
    • 多模态融合:两者都需要将图像特征和文本特征进行融合,利用对比损失 (ITC, Image-Text Contrastive Loss) 和语言建模损失 (Captioning Loss) 来联合训练。
  2. 主要区别

    • 文本分支的结构
      在 CoCa 中,文本分支 完全使用 Decoder ,而 ALBEF 则使用 Encoder 来抽取文本特征。
      • Decoder 的意义 :CoCa 的 Decoder 更倾向于语言生成任务(Language Modeling),不仅能抽取文本特征,还能自然支持语言生成任务(如 Captioning)。
      • Encoder 的意义 :ALBEF 的 Encoder 主要用于文本特征的理解,适用于对比学习 (Contrastive Learning) 任务。
    • 可学习的图像特征池化 (Attentional Pooling)
      CoCa 在图像分支的池化操作中引入了可学习机制 ,能够根据具体任务优化图像特征提取,而 ALBEF 使用的是固定规则的特征池化。
    • 多模态文本处理器输入
      • CoCa 中,单模态文本解码器多模态文本解码器 是独立处理的,没有直接的输入输出关系。
      • ALBEF 中,单模态文本编码器 的输出被用作 多模态文本编码器 的输入,以实现图像和文本的有效对齐。
  • CoCa 中的 单模态文本解码器 (Unimodal Text Decoder) 和 多模态文本解码器 (Multimodal Text Decoder)
    是独立工作的,并且它们的输入和输出是分开处理的。不会将单模态文本解码器的输出作为多模态文本解码器的输入,多模态文本解码器的输入也是原始文本(或者文本经特定编码后的表示)。

    • CoCa 的架构设计使得 单模态文本解码器 和 多模态文本解码器 之间的任务和输入输出保持独立
  • ALBEF中会将单模态文本编码器的输出作为多模态文本编码器的输入。
    Attentional Pooling

  • 可学习图像特征池化 方式,能够针对不同任务学习出更有用的视觉特征

  • 在特征融合前,通过 Attention 机制选择性地提取图像 Token,而不是简单地用固定规则池化特征。

训练过程

它由一个 Image Encoder 和两个 Text Decoder 组成,均采用Transformer模型。

  1. 图像编码器 (Image Encoder)
    • 使用一个视觉变换器(例如 ViT)对输入图像进行编码,生成一系列特征表示。
    • 这些特征表示通过注意力池化 进一步提取,分别生成两个特征:
      • 对比特征 (Contrastive Feature): 专门的 cls-token ,用于对比学习,通过与文本的 cls-token 特征进行对比。
      • 描述特征 (Captioning Feature): 其他的图像特征经过 Attentional Pooling 后,传入多模态 Text Decoder,用于文本生成任务,作为多模态解码器的输入。

采用attention pooling对image encoder进行图像的全局特征提取。(这里的attention pooling可以理解为一个multi-head attention,只不过key和value是image encoder得到的特征,而query是预先定义的一个可训练的embedding,由于我们只需要提取一个全局特征cls-token【与单模态文本解码器的全局特征进行图像-文本的对比学习】,所以只需要定义一个query 就好了)

如上图中的代码:con_feature = attentional_pooling(img_feature, con_query)

  1. 单模态文本解码器 (Unimodal Text Decoder)
    • 不参与对图像特征的cross-attention;
    • 使用 Transformer 模型生成文本的上下文表示cls-token 特征,得到整个句子的全局特征。
    • 特别关注 cls-token,其特征用于计算与图像对比特征的对比损失 (Contrastive Loss)
    • Decoder 是因果自回归的(Masked),即只能看到序列前面的部分。

图像编码器单模态文本解码器的两个全局特征就可以实现图像-文本的对比学习。image encoder和unimodal text decoder的两个[CLS]向量作为图片和文本的表示,进行对比学习。

  1. 多模态文本解码器 (Multimodal Text Decoder)
    • 接收图像的描述特征文本的输入 ,利用交叉注意力机制生成文本表示
    • 输出文本序列,优化目标为描述生成损失 (Captioning Loss) ,通常是交叉熵损失

这里也通过了attention pooling对image encoder得到的特征进行提取,不过这里query数量定义为256 ,这样attention pooling可以得到256个特征,它作为multimodal text decoder的cross-attention的输入,用于融合图片和文本信息,实现双模态,最后做文本生成。

如上图中的代码:cap_feature = attentional_pooling(img_feature, cap_query))

为什么采用这种分层设计?

  • 高效性: 先处理单模态文本输入,避免对所有层都施加跨模态交互,降低计算复杂度。
  • 任务分离: 单模态和多模态表示的分离使模型能够同时支持对比学习(Contrastive Learning)和生成式任务(Captioning)。
训练目标

CoCa(Contrastive Captioners)解码器的设计在任务分工和结构上非常特别,采用了 分层解码器结构,以同时支持单模态(Unimodal)和多模态(Multimodal)目标。CoCa 的目标函数是单模态和多模态任务的联合优化:

L C o C a = λ Con ⋅ L Con + λ Cap ⋅ L Cap \mathcal{L}{CoCa} = \lambda{\text{Con}} \cdot \mathcal{L}{\text{Con}} + \lambda{\text{Cap}} \cdot \mathcal{L}_{\text{Cap}} LCoCa=λCon⋅LCon+λCap⋅LCap

  1. ITC loss:Contrastive Loss ( L Con ) (\mathcal{L}_{\text{Con}}) (LCon)

    • 通过:图像的对比特征CLS Token和文本的CLS Token计算。通常计算InfoNCE Loss
    • 用于优化图像编码器单模态文本解码器在多模态嵌入空间中的对齐。
    • 单模态表示(Unimodal Text Representations)通过 cls-token 特征与图像特征进行对比。
    • λ Con \lambda_{\text{Con}} λCon 是对比损失的权重超参数。
  2. LM Loss:Captioning Loss ( L Cap ) (\mathcal{L}_{\text{Cap}}) (LCap)

    • 通过:图像的描述特征(通过 Attention Pooling 提取)和文本输入,经过交叉注意力机制后生成文本描述,与目标文本进行对比,通常计算交叉熵损失
    • 用于优化图像编码器多模态文本解码器对生成任务(文本生成)的质量。
    • 多模态表示(Multimodal Image-Text Representations)通过交叉注意力生成文本描述,与目标文本计算交叉熵损失
    • λ Cap \lambda_{\text{Cap}} λCap 是描述生成损失的权重超参数。

InfoNCE Loss参考本系列历史文章中的解释:多模态论文笔记------CLIP、BLIP

历史文章

机器学习

机器学习笔记------损失函数、代价函数和KL散度
机器学习笔记------特征工程、正则化、强化学习
机器学习笔记------30种常见机器学习算法简要汇总
机器学习笔记------感知机、多层感知机(MLP)、支持向量机(SVM)
机器学习笔记------KNN(K-Nearest Neighbors,K 近邻算法)
机器学习笔记------朴素贝叶斯算法
机器学习笔记------决策树
机器学习笔记------集成学习、Bagging(随机森林)、Boosting(AdaBoost、GBDT、XGBoost、LightGBM)、Stacking
机器学习笔记------Boosting中常用算法(GBDT、XGBoost、LightGBM)迭代路径
机器学习笔记------聚类算法(Kmeans、GMM-使用EM优化)
机器学习笔记------降维

深度学习

深度学习笔记------优化算法、激活函数
深度学习------归一化、正则化
深度学习------权重初始化、评估指标、梯度消失和梯度爆炸
深度学习笔记------前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总
深度学习笔记------卷积神经网络CNN
深度学习笔记------循环神经网络RNN、LSTM、GRU、Bi-RNN
深度学习笔记------Transformer
深度学习笔记------3种常见的Transformer位置编码
深度学习笔记------GPT、BERT、T5
深度学习笔记------ViT、ViLT
深度学习笔记------DiT(Diffusion Transformer)
深度学习笔记------CLIP、BLIP
深度学习笔记------AE、VAE
深度学习笔记------生成对抗网络GAN
深度学习笔记------模型训练工具(DeepSpeed、Accelerate)
深度学习笔记------模型压缩和优化技术(蒸馏、剪枝、量化)
深度学习笔记------模型部署
深度学习笔记------VQ-VAE和VQ-VAE-2
多模态论文笔记------dVAE(DALL·E的核心部件)
多模态论文笔记------LLaVA

相关推荐
NAGNIP2 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab3 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab3 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP7 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年7 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼7 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS7 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区8 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈8 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang9 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx