这篇文章介绍多模态模型-CoCa
Transformer基础理论介绍可以看:深度学习基础-5 注意力机制和Transformer
多模态基础知识点可以看:多模态-1 基础理论
ViT介绍可以看:计算机视觉Transformer-1 基础结构
CLIP介绍可以看:多模态-2 CLIP
CoCa原论文:《CoCa: Contrastive Captioners are Image-Text
Foundation Models》
一 模型结构
结合对比学习和图像文本内容生成任务,基于统一的Transformer架构构建了一个可以兼顾图像理解与内容生成的多模态模型-CoCa
模型结构如下:
输入是<图像,图像文本描述>对,利用图像编码器(Image Encoder)获取图像的特征表示,论文中使用的图像编码器是ViT,然后利用注意力池化层对图像编码器的特征表示输出进行特征注意力池化。
将Transformer的Decoder分为两部分,底层部分作为统一文本特征编码表示组件(Unimodal Text Decoder),高层部分作为多模态文本生成组件(Multimodal Text Decoder)。Unimodal Text Decoder对输入文本只进行单纯的“文本”模态理解,特征解码时不会考虑图像编码器的输出信息,而Multimodal Text Decoder会利用交叉注意力(cross attention)综合图像编码器的输出进行图像文本内容生成解码。计算Unimodal Text Decoder的输出和图像编码输出之间的对比损失,再计算Multimodal Text Decoder输出的交叉熵损失,训练整个CoCa。
Unimodal Text Decoder是从全局粗粒度语义视角的一种<图像,图像文本描述>语义理解,而Multimodal Text Decoder是局部细粒度语义角度的语义理解,二者关注的语义空间不同,所以利用注意力池化层对图像编码器的输出进行注意力池化,对图像编码器进行全局注意力池化,得到一个全局图像特征编码表示,和Unimodal Text Decoder的输出进行对比学习损失计算,对图像编码器进行局部注意力池化,得到多个图像的细粒度编码表示,论文中设置的是256个,这256个特征编码类似以往卷积神经网络输出的特征图,代表着图像不同角度的语义特征,利用这256个细粒度图像编码表示作为K、V,输入到Multimodal Text Decoder的cross attention中,辅助Multimodal Text Decoder进行图像文本内容生成解码。
二 训练过程
1.从训练数据集中获取一个batch的<图像,图像文本描述>训练数据
2.利用图像编码器对当前batch的所有图像进行编码表示
3.利用Unimodal Text Decoder对当前batch的所有图像文本描述进行编码表示
4.利用注意力池化层获取图像编码表示的全局粗粒度语义编码表示,和Unimodal Text Decoder的输出计算对比学习损失
5.利用注意力池化层获取图像编码表示的局部细粒度语义编码表示,作为K、V,输入到Multimodal Text Decoder的cross attention中,辅助Multimodal Text Decoder进行图像文本描述解码,计算图像文本描述解码的交叉熵损失
6.综合对比损失和文本内容解码损失,反向传播训练CoCa
三 细节问题
1 为什么CLIP在论文中说生成式的任务对于<图像-文本>语义对齐效果不好,而后期大部分的多模态模型都是基于文本生成式的任务进行图文模态特征对齐
2 为什么CoCa的对比学习中没有使用动量编码器
对比学习存在以下问题:
CoCa借助文本生成任务的辅助,没有使用动量编码器,但是效果也较好