CoCa:对比字幕生成的视觉语言基础模型
机器学习的发展推动了基础模型(Foundation Models)的兴起。基础模型是一类根据大量数据预先训练的模型,可作为无数下游应用的通用基础,以自然语言处理(NLP)中的 GPT 和 BERT 等为代表,在零样本和少样本学习等任务中展示了前所未有的能力。
本文深入研究图像-文本基础模型领域,探索创新的 Contrastive Captioner(CoCa) 模型。我们将剖析其架构,了解其结合对比目标和生成目标的独特方法,看看它是如何将 CLIP 和 SimVLM 等模型的能力嵌入到一个统一、连贯的模型中的。

图 1:对比字幕生成器(CoCa)。
1. 基础模型的兴起
基础模型的思想在机器学习中并非新事物。在深度学习中,训练大规模模型的技术使我们能够针对下游任务调整模型。在 NLP 领域,GPT 和 BERT 等基础模型蓬勃发展,这些模型在嘈杂的互联网规模数据上进行训练,展示了卓越的零样本和少样本能力。
构建视觉和视觉语言基础模型的研究探索了三种主要路径:单编码器模型、具有对比损失的图像-文本双编码器模型,以及具有生成目标的编码器-解码器模型。在介绍 CoCa 之前,我们先回顾这些研究路线及其不足。
2. 词汇表
- Foundation Models:在机器学习中作为各种应用起点的预训练模型,可适应特定任务。
- Contrastive Loss:一种损失函数,用于训练模型学习相似输入对的相似表示,以及不同输入对的不同表示。
- Cross-Modal Interaction:不同类型数据模态(例如图像和文本)之间的交互,用于生成联合表示。
- Encoder-Decoder Architecture:一种神经网络结构,包含用于处理输入数据的编码器和用于生成输出的解码器,常用于序列到序列任务。
- Causal Masking Transformer:模型中的一种技术,用于防止训练期间访问序列中的未来 token。
- Attention Mechanism:允许模型在处理信息时对输入的不同部分进行加权和优先排序的组件。
- Zero-Shot Learning:一种学习范式,模型对训练期间未见过的数据类别进行预测或分类。
- Visual Question Answering(VQA):结合计算机视觉和自然语言处理回答有关图像内容问题的任务。
- Unimodal and Multimodal Representations:单模态表示从一种数据模态捕获信息,而多模态表示集成来自多个模态的信息。
- Contrastive Language-Image Pre-training(CLIP):使用对比学习训练的模型,将图像和文本在共享表示空间中对齐。
3. 单编码器模型
如果你涉足过计算机视觉,很可能接触过这类模型。它们学习图像的表示,可以通过在带注释图像的大型数据集上以交叉熵损失训练,来适应下游视觉任务。
经验表明,这些模型在检测等视觉任务中表现出色,但在涉及视觉语言的任务中表现较差,因为它们严重依赖人类注释,无法自然地将人类语言融入模型。

4. 图像-文本双编码器模型与对比损失
这类视觉语言基础模型的代表包括 CLIP 和 ALIGN。
在预训练期间,通过使用对比损失联合训练图像和语言模型来学习对齐任务。其基本思想是:将图像-文本对的表示聚集在一起(它们是相关的),并将同一潜在空间中不相关图像和文本的表示分开。然后得到的双编码器模型可以用于执行零样本分类任务和图像检索。
这类模型的最近版本(如 CLIP)已经在各种视觉语言任务中取得了出色的性能,但几乎无法用于需要图像和文本融合表示的任务,例如视觉问答——因为我们只学会了对齐图像和文本表示,而没有生成一个统一包含图像和文本输入信息的表示。

图 3:对比语言-图像预训练(CLIP)。
5. 生成式预训练与编码器-解码器架构
这类模型利用图像和文本的隐藏表示之间的跨模态交互来生成联合表示。
在预训练期间,通过在隐藏文本表示和图像编码器输出之间的跨模态交互生成图像和文本的统一表示,并对解码器输出应用语言建模损失。
在最近的机器学习架构中,跨模态交互主要通过 Transformer 中的交叉注意力机制执行,使用图像编码器的输出作为查询,隐藏文本表示作为键和值。
对于下游任务,可以使用解码器的输出(图像和文本的联合表示)执行各种多模态图像-文本理解任务,例如视觉问答。使用这种范式的最新模型之一是 SimVLM。


图 5:简单视觉语言模型(SimVLM)。
6. CoCa 模型的动机
CoCa 的作者试图将构建图像-文本基础模型的不同范式的能力合并到一个简单的模型中。CoCa 的设计同时利用:
- 对比损失:学习在一个向量空间中对齐图像和文本表示;
- 生成目标(字幕损失):学习联合的图像-文本表示。
通过这种方式,CoCa 将 CLIP 和 SimVLM 等模型的能力嵌入到一个单一、连贯的模型中。
7. 模型架构
CoCa 采用了标准的编码器-解码器方法,与大多数此类模型一样,使用神经网络(如卷积神经网络或 Transformer)对图像进行编码。
CoCa 架构的独特性始于其编码器的输出和整个解码器设置。
回顾 CoCa 论文的目标:将两种视觉语言模型范式(对比目标和生成目标)的功能结合到一个模型中。对比目标要求文本解码器输出单一的文本表示,然后将其投影到与图像表示相似的向量空间中以学习对齐任务;生成目标允许解码器从编码器获取图像表示,并根据图像表示和文本输入自回归地生成文本。
请注意,两个解码器部分都应用了因果掩码,以防止模型提前查看未来的 token。
为了实现这一目标,作者巧妙地采用了一种解耦的解码器设置:第一部分学习为对比目标生成单模态文本表示,第二部分学习生成多模态图像-文本表示。

8. 对比目标
对比目标背后的思想非常简单,正如在 CLIP 和 ALIGN 等多个模型中所使用的:学习不同模态(如图像和文本)的表示,使得相似的对在表示空间中更接近,不相似的对更远离。
在每个训练步骤中,从数据集中抽取图像-文本对的样本,并驱使编码器的权重将配对样本聚集在一起,将非配对样本推开。

正如前面提到的,对比目标要求图像和文本模态的单模态表示。为了在文本编码器方面实现这一点,采用了 BERT 中使用的经典技术:在输入序列的末尾引入一个可学习的分类 token [CLS],希望映射到该 token 的输出向量能够捕捉整个输入序列的语义含义。
由于解码器对其注意力图进行因果掩码,将分类 token 添加到序列末尾可以确保分类 token 与输入序列中所有其他 token 之间存在注意力连接,从而捕捉整个句子的语义。我们忽略其他输入 token 的向量表示,仅使用分类 token 的向量表示来估计对比损失。
![文本 [CLS] token 文本 [CLS] token](https://images.datacamp.com/image/upload/v1696436122/image10_eedb0da783.png)
在图像编码器方面,情况略有不同。
从图 6 可以看到,图像编码器输出的一部分与分类 token 嵌入一起用于估计对比损失,另一部分则发送到解耦设置的上部用于估计联合表示。事实上,只需要图像的单个嵌入输出来估计对比目标,而整个图像编码器的嵌入输出序列用于估计生成目标。
作者经验性地发现,单个池化嵌入输出有助于捕捉图像的全局表示(这正是对比目标所希望的),而嵌入输出序列有助于需要图像更细粒度表示的任务。
为了实现这一目标,引入了一个注意力池化层(Attentional Pooler)。它是一个单一的多头注意力层,通过一个可学习的查询参数将图像编码器输出定制为不同目标所需的嵌入序列。通过将查询参数设置为特定整数值,可以使整个编码器设置输出一个长度等于该参数的嵌入序列。
- 在对比目标中,将查询参数设置为 1,以获得单个嵌入来计算对比损失。
- 在生成目标中,将其设置为任意值,理想情况下等于文本序列长度。在 CoCa 论文中,作者选择了 256。

用于对比损失的注意力池化设置。注意力层的输出是单个 256 维嵌入。

9. 生成目标
与仅需要图像全局表示的对比目标不同,生成目标在生成图像更细粒度的表示时更有效。
如前面所解释的,通过将查询参数设置为一个任意数字(CoCa 论文中为 256),生成一个
该表示被传递到解耦解码器设置的上部,并通过与单模态文本表示的跨模态交互(忽略 [CLS] 表示),获得统一的图像-文本表示。该表示通过自回归分解用于预测词汇的概率分布。

正如本文前几节所示,CoCa 的架构设置允许吸收两类模型的能力:一类在零样本学习任务(如图像分类和跨模态检索)方面表现出色,另一类在 VQA 和图像描述方面表现出色。CoCa 模型还可以在多个下游视觉和语言任务上进行微调。
10. 最后的思考
像 CoCa 这样的基础模型的出现标志着机器学习领域的重大进展。CoCa 将各种范式的优势融合在一起,提供了一个能够对齐图像和文本表示并生成联合图像-文本表示的统一模型。
该模型证明了整合对比目标和生成目标的潜力,为增强视觉问答和图像描述等任务的性能铺平了道路。它兼具擅长零样本学习的模型和精通多模态图像-文本理解任务的模型的能力,为众多下游视觉和语言任务提供了多功能工具。