点关注,不迷路,定期更新干货算法笔记~
CLIP这类双塔预训练图文模型在图文检索等多模态任务中取得非常好的效果,但是在开放式的VQA任务、看图说话任务等这类需要生成的任务上效果较差或者无法应用。主要原因在于CLIP中的text encoder比较弱,CLIP中的text encoder的优化目标仅有一个句子整体的判别式损失函数,而BERT、GPT模型采用token粒度的生成任务。这导致CLIP中的text encoder无法用于生成任务。
ACL 2022华为发表了一篇论文:Enabling Multimodal Generation on CLIP via Vision-Language Knowledge Distillation(VLKD)。这篇文章将CLIP的跨模态能力以及预训练语言模型的BART的生成能力进行联合,实现了对CLIP模型text encoder的加强,在VQA、Caption等多个任务上都取得非常好的效果。下面我们来看看这篇工作的具体做方法。
1
CLIP和BART
CLIP和BART分别是称霸多模态和文本生成的两种方法。
CLIP模型采用经典的双塔结构,两个塔对文本信息和图像信息分别编码,输入数据是从多个渠道获取的图片和对应描述的image-text对,利用对比学习让相似的图像和文本表示近,不同的图像和文本表示远,进而起到文本和图像模态拉起到同一特征空间的作用。CLIP是模态对齐的一种非常有效的方法,在图文检索这种任务上取得非常好的效果。之前我们曾介绍过两篇近期CLIP的优化工作:谷歌最新多模态模型CoCa,多项任务取得SOTA效果,ImageNet达到91.0%、如何发挥预训练CLIP的最大潜力?。它们都从不同角度优化CLIP让其适用于更广泛的多模态任务。
BART则可以看做是BERT这种使用双向Attention的判别式方法与GPT这种使用单向自回归解码的生成式方法的结合。将输入文本经过某些噪声函数进行破坏,输入到一个Transformer Encoder中,Encoder会使用双向Attention进行信息提取,再使用一个Transformer Decoder对原来破坏前的文本进行还原。破坏的方式可以是随机mask、交换单词顺序、随机删词等等。BART经过token粒度优化目标的训练,具有很强的文本生成能力。想深入了解预训练语言模型的同学建议阅读之前的文章:一网打尽:14种预训练语言模型大汇总。
VLKD希望结合CLIP的多模态对齐能力和BART的自然语言生成能力,强强联手,打造一个能够用于解决跨模态文本生成任务的模型。
2
VLKD核心结构
VLKD的整体结构非常简单,如下图所示,将原来CLIP模型中的text encoder替换成预训练BART的encoder decoder,通过知识蒸馏的方式让BART的encoder和decoder学到CLIP中的跨模态知识。这里的跨模态知识,指的是让BART能够处理图像信息,借助CLIP中已经将图像和文本的表示映射到同一空间的能力,将BART对文本的表示也映射到这一空间。
为了让BART能够学到CLIP中的跨模态知识,文中将预训练CLIP模型的参数fix不变,引入Text-Text Distance Minimization和Image-Text Contrastive Learning两个loss对齐BART Encoder,引入Image-Conditioned Text Infilli对齐BART Decoder。
- Text-Text Distance Minimization(TTDM):这个loss直接最小化CLIP模型Text Encoder对文本的表示和BART Encoder对文本表示的距离。CLIP Text Encoder侧取分类token的表示,BART Encoder取所有token表示的average pooling,并使用一个全连接将其映射到CLP中的多模态特征空间,公式表述如下:
- Image-Text Contrastive Learning(ITCL):这个loss通过对比学习的方式对齐CLIP图像侧表示和BART Encoder的文本表示。CLIP图像侧编码如果是ViT模型的话可以取分类token对应的表示,这和CLIP预训练中的对比学习loss是类似的公式表述如下:
- Image-Conditioned Text Infilling(ICTI):通过上面两个任务,对齐了BART Encoder和CLIP的特征空间,然而并没有将BART Decoder对齐。因此本文提出引入看图说话loss将BART Decoder也和CLIP对齐。将CLIP模型的Text Encoder和BART Encoder的输出都过全连接进行映射,并拼接到一起,作为BART Decoder的解码context。BART Encoder中输入的文本进行15%的mask,在BART Decoder阶段对全文进行还原。公示表述如下:
最终的模型优化loss是上面3个loss的加权求和,联合优化。模型优化过程中,CLIP模型的参数freeze不变,防止finetune破坏其已经学到的跨模态对齐能力。训练完成后,原CLIP的Text Encoder被丢弃,使用BART的Encoder和Decoder替换。
3
模型应用和效果
训练好的VLKD可以用于开放式图文问答、看图说话等生成式任务。对于看图说话任务,将图像信息输入到CLIP的image encoder中,同时在BART Encoder输入A picture of 多个[mask],BART Decoder根据二者信息生成结果。对于VQA任务,图像侧信息仍然输入CLIP Image Encoder中,在BART Encoder中输入问题,以及Answer: 多个[mask],BART Decoder生成答案。
下表是VLKD和一些主流跨模态生成模型的效果对比:
文中也对3个损失函数进行了ablation study,结果如下表,如果不加TTDM损失或ITCL损失,模型的效果会有很大折扣,主要原因是缺少这两个loss会减弱BART理解图像和如何使用图像的能力。
文中还对比了VLKD和BART在纯文本摘要问题上的效果。下表可以看出,VLKD和BART在文本摘要生成任务上的效果基本差不多。这表明,文中提出的让蒸馏CLIP跨模态知识到BART的方法,基本不会影响原有BART模型的文本生成和理解能力。
4
总结
本文详细介绍了ACL 2022提出的多模态生成方法VLKD,通过借助预训练BART的文本理解和文本生成能力,帮助CLIP实现多模态文本生成,解决开放式图文问答、看图说话等任务。