作者指出,现有的视觉-语言预训练(Vision-Language Pre-training, VLP)模型在语言理解与生成任务上难以同时取得优异表现:一方面,基于编码器(encoder-based)的模型在生成任务中的适应性较差;另一方面,编码器-解码器(encoder-decoder)结构虽然适用于生成任务,但尚未在图文检索等理解任务中取得显著成果。此外,目前广泛采用的数据集仍存在大量文本噪声,进一步限制了模型的性能提升。
VIT
Unimodal encoder
; Image-grounded text encoder
; Image-grounded text decoder
Unimodal encoder
:基于BERT实现;[CLS]为句子的特征表示;
Image-grounded text encoder
: Transformer block中,在self-attention
(SA)和Feed forward network
(FFN)之间加入了Cross Attention
(CA),融入图像特征信息,[Encode]为图文对的特征表示;
为什么加入Cross Attention以及怎么加入的?
- 在标准 Transformer 中,Self-Attention 只能在同一模态内部建模依赖,难以实现多模态融合。为了提升模型对跨模态语义的建模能力,Cross-Attention 被加入到 SA 与 FFN 之间,作为一种跨模态交互机制。其本质是将当前模态的 token 作为 Query,另一模态的 token 作为 Key 和 Value,实现“信息注入”。这种结构广泛用于图文预训练(如 BLIP2 的 Q-Former)、多模态对齐、图文检索等任务中。
Image-grounded text decoder
:将Transformer block中bi-directional self-attention layers
改为 causal self-attention layers
, [Decode]表示句子的开始,end-of-sequence token表示句子的结束;
为什么要改为 Causal attention layer?
- 在将原始的图像引导文本编码器改为生成器时,我们将其中的 bi-directional self-attention 改为 causal self-attention。这是因为生成任务要求模型按序预测每一个词,不能访问未来的信息。Causal attention 能保证自回归生成的正确性,使模型适合用作 decoder,实现图像到文本的自然语言生成。这种结构转变常见于图文生成、多模态问答等任务中,例如 BLIP、BLIP-2。
两种注意力的区别
- Bi-directional 和 causal attention 的实现差异主要在于 attention mask 的构造。双向注意力不使用 mask 或允许所有 token 互相可见,适合语义理解任务。因果注意力则使用下三角 mask,保证每个位置只能看到自己和前面的 token,用于自回归生成任务。它们的核心区别是是否允许访问“未来信息”
损失函数名 | 激活的模块 | 训练目标 | 核心思想 |
---|---|---|---|
Image-Text Contrastive Loss |
Unimodal encoders | 对齐图像与文本的全局语义空间 | 让正样本图文对更接近,负样本更远 |
Image-Text Matching Loss |
Image-grounded text encoder | 学习图文细粒度语义对齐 | 判断图文是否匹配(二分类) |
Language Modeling Loss |
Image-grounded text decoder | 图像到文本的语言生成能力 | 使用自回归预测生成 caption,优化交叉熵 |
Image-Text Contrastive Loss (ITC)
: InfoNCE(对比学习)损失
Image-Text Matching Loss (ITM)
: Binary classification task (挖掘 Hard Negatives)
Language Modeling Loss (LM)
: Cross entropy loss
作者提出来的核心模块,包含了captioner
和 filter
两个模块,这两个模块采用相同的预训练模型,并先用COCO
数据集进行微调。captioner
基于Image-grounded text decoder
生成图像标题,filter
基于Image-grounded text encoder
从生成的文本以及原始文本中过滤掉噪声(不匹配)文本,通过 ITC 和 ITM 两个损失函数优化。最后组成一个新的数据集预训练模型。