▊ 写在前面
在本文中,作者提出了M3P,一个多任务、多语言、多模态预训练模型 ,通过多任务预训练目标将多语言预训练和多模态预训练结合到一个统一的框架中。M3P的目标是学习通用的表示,可以将以不同方式出现的对象或以不同语言表达的文本映射到一个公共语义空间。
此外,为了鼓励图像和非英语语言之间的细粒度对齐,作者还提出了多模态代码切换训练(Multimodal Code-switched Training,MCT) ,通过代码切换策略将单语言预训练和多模态预训练结合起来。
作者在两个基准数据集(包括MSCOCO和Multi30K)上对多语言图像检索任务进行了实验,结果表明M3P可以实现基于英语语言接近SOTA的结果 和基于非英语语言的SOTA结果 。
▊ 1. 论文和代码地址
M3P: Learning Universal Representations via Multitask Multilingual Multimodal Pre-training
论文地址:https://arxiv.org/abs/2006.02635
代码地址:https://github.com/microsoft/M3P
▊ 2. Motivation
最近,自然语言处理(NLP)的预训练模型逐渐兴起,即通过自监督的预训练从原始文本中学习一般知识,然后通过特定任务上微调将其应用于下游任务。
现在,这些SOTA的单语言预训练语言模型,如BERT、RoBERTa和GPT-2,已经扩展到多语言场景,如Multilingual BERT、XLM/XLM-R、Unicoder。
此外,研究者们还提出了一些多模态场景下的预训练模型,如Unicoder-VL、UNITER、Ernie-VIL、Villa和OSCAR。
然而,将这些预训练的模型扩展到多语言多模态的场景仍然具有挑战性。多语言预训练的语言模型不能直接处理视觉数据(如图像或视频),而许多预训练的多模态模型是在英语语料库上训练的,因此不能在非英语语言上表现得很好。
因此,高质量的多语言多模态训练语料库对于多语言预训练和多模态预训练的结合至关重要。然而,现有的多语种多模态的语料库很少,而且语言覆盖率也很低。此外,依赖高质量的机器翻译引擎从英语多模态语料库中生成此类数据既耗时又计算昂贵。
为了应对这些挑战,本文提出了一个多任务、多语言、多模态预训练模型M3P ,旨在将以不同方式出现的对象或以不同语言表达的文本映射到一个公共语义空间。
为了缓解多模态预训练中缺乏足够的非英语标记数据的问题,作者引入多模态代码转换训练(Multimodal Code-switched Training,MCT) 来加强图像和非英语语言之间的显式对齐。主要通过以下方式实现:
1)通过多语种预训练,学习使用多语种语料库表示多语种数据;
2)通过随机将一些英语单词替换为其他语言的翻译,学习多语种多模态表示;
3)通过多任务的目标来学习这些表征,以处理多语言多模态任务。
▊ 3. 方法
M3P的模型结构如上图所示,作者选用了BERT的Transformer结构,并使用三种类型的数据流设计两个预训练目标。
作者使用了来自多语言语料库和多模态语料库的两种基本数据流:多语言单模态流(Multilingual Monomodal Stream) 和单语言多模态流(Monolingual Multimodal Stream) ,此外还设计了多模态代码切换流(Multimodal Code-switched Stream) ,以同时利用多语言数据和多模态数据。
为了应用多语言预训练,作者使用多语言单模态流作为模型输入。给定任何语言的输入文本,首先通过Sentence Piece将其转换为BPE token序列。然后将每个BPE token的文本嵌入和位置嵌入相加,得到一个文本表示序列。此外,还要向每个token添加语言嵌入,以指示其语言属性。输入数据定义为:
其中表示的长度,表示语言集中的一种语言,将该数据流表示为。
为了应用多模态预训练,作者使用单语言多模态流作为模型输入。给出一对英文文本和图像,的文本表示序列类似于多语言单模态流的处理,并使用英语作为语言嵌入。对于图像v,作者使用Faster R-CNN来检测图像区域,并使用每个区域中相应的视觉特征作为视觉特征序列。
此外,作者还为每个视觉token添加了一个空间嵌入,这是一个由左上角、右下角坐标和所覆盖图像区域面积组成的5-D向量。作者使用两个全连接层将这两个向量投影到文本表示的相同维度。
然后,将图像中每个区域的投影视觉特征向量和空间嵌入向量相加,得到图像表示序列。此外,作者在图像区域序列的开始处添加了一个token,以分离文本标记和图像标记,并将它们concat起来以形成输入流:
将该数据流表示为。
作者通过代码切换(Code-switched)的方法从单语言多模态流生成多模态代码切换流,给定英语文本和图像对,代码切换语言集,以及可以将一个单词从英语翻译成任何语言的双语词典。
对于英文文本中的每个单词,将其以β的概率替换为翻译的单词。如果一个单词有多个翻译,那就随机选择一个。与单语多模态流类似,文本和图像表示序列连接为最终输入流:
其中是中的任意一种语言,输入序列可以表示为:
将该数据流表示为。
为了在多语言多模态场景下对M3P进行预训练,作者设计了两种类型的预训练目标。多语言训练 的目的是从结构良好的多语言句子中学习语法或句法。多模态代码转换训练(MCT) 旨在通过共享的视觉模态学习不同的语言,从而进行视觉和非英语文本之间的对齐。
与多语言BERT、XLM和Unicoder类似,该任务基于多语言语料库执行掩蔽语言建模(MLM)。在每次迭代中,每个Batch的数据由从不同语言中采样的句子组成。语言的抽样概率定义为,其中是整个多语言语料库中语言的百分比,平滑因子α设置为0.3。
在每个Batch中,随机抽取15%的单词,并以80%,10%,10%的概率将单词设置为 token,随机的token和原来的token。作者只对用多语言单模态流数据进行xMLM任务。损失函数计算如下:
其中是被mask的token,为上下文。
由于缺乏非英语多模态的标记数据,该模型只能独立学习多语种和多模态。为了帮助模型在共享视觉模态下学习不同的语言表达,作者提出了三种多模态代码转换训练任务:MC-MLM、MC-MRM和MC-VLM。在训练这些任务时,作者用了α和α的比例混合多模态代码转换流 和单语言多模态流 ,为了简化符号,将混合数据流表示为。
与ViLBERT和Unicoder-VL中的预训练任务不同,本任务旨在学习基于共享视觉模态的不同语言表示。混合数据流用于训练该目标。具体来说,该模型根据其周围的token 和所有图像区域,预测标题中的每个被mask的token。损失函数定义为:
其中是混合数据流。
本任务旨在学习在混合数据流中以多语言文本作为上下文的视觉表示。该任务基于剩余区域和所有字幕token 重建每个mask图像区域。作者以15%的概率随机mask图像区域。
每个mask图像区域的输入表示被设置为零或保持为原始值,概率分别为90%和10%。使用FC层将每个mask区域的Transformer输出转换为具有和视觉特征同维的向量。然后使用交叉熵损失来预测每个mask区域的对象类别,总的损失函数计算如下:
其中k为每个mask图像区域的索引,表示将每个mask区域的Transformer输出回归到其视觉特征的均方误差损失。
本任务旨在学习具有混合数据流的多语言文本和图像之间的对齐。在的Transformer输出上应用FC层,以预测输入图像和输入的英语或代码切换文本是否语义匹配。通过将匹配样本中的图像或文本替换为从其他样本中随机选择的图像或文本,可以创建负图像标题对,损失函数计算如下:
其中,表示输入图文对是否匹配,BCE表示binary-cross-entropy loss。
▊ 4.实验
上表展示了本文方法预训练和微调的数据集的详细数据。
上表展示在Multi30K和MSCOCO数据集上,本文方法和其他方法进行图文检索的对比。可以看出,本文方法在非英语的数据集上可以达到SOTA的性能,在英语数据集上也和Unicoder-VL性能差不多。
从上表可以看出,在不同的设置下,本文提出的MCT训练策略都是有效的。
上表展示了不同语言数量下训练的结果,可以看出en和cs在语言数量为5时能够达到比较好的性能。
上表展示了不同预训练任务的消融结果,可以看出,每个预训练任务对于性能提升都是重要的
作者还尝试了用MCT进行微调,结果如上表所示,可以看出,除了英语之外的其他语言,用MCT微调的结果都优于正常微调的结果。
上表为MCT的定性可视化结果。每个表中的第一行是原始文本,第二行是Code-switched文本。第三行Code-switched转换为英文的结果。
▊ 5. 总结
作者在本文中提出了一个新的预训练模型M3P ,该模型通过多语言多模态场景的多任务预训练,将多语言预训练和多模态预训练结合到一个统一的框架中。此外,作者还提出了多模态代码转换训练(Multimodal Code-switched Training) ,以进一步缓解非英语多模态任务缺乏足够数据的问题。
从前的多模态和多语言的预训练模型通常只能在特定模态或者语言范围的任务中进行,而不能同时进行多模态和多语言的任务。为了解决这个问题,一个最直观的方式就是用多模态、多语言数据集进行预训练。
然而目前缺少这样的数据集,而直接将英语多模态数据集用翻译引擎转换成多语言多模态数据集又是非常耗时的。因此,作者提出了新的预训练方法,能够分别用多模态数据集和多语言数据集联合训练多模态、多语言模型 。