Press "Enter" to skip to content

360 x 清华大学:图文跨模态表示最新研究成果公开

分享嘉宾 :邓亚峰 碳硅智慧 创始人&CEO

 

编辑整理:吴雪松

 

出品平台:DataFunTalk

 

导读: 在互联网领域,文本是最常见的数据呈现形式,其次是图像、视频。这几种不同模态的数据不是截然分开独立存在的,而是紧密融合在一起的。比如,在图文检索任务中,需要用文本去搜索图像;在视频搜索推荐任务中,视频中除了图像外,存在的标题、字幕和语音都可以映射为文本;在文章配图等场景中,需要建模文字和图片的关系。所以,图文跨模态表示是互联网领域最常见的任务之一,非常重要。今天主要跟大家分享360人工智能研究院、清华大学和360搜索事业部在图文跨模态领域合作完成的一个工作,包括图文跨模态数据集 Zero 和图文跨模态表示框架 R2D2 。

 

全文会围绕以下六点展开:

 

图文跨模态表示 背景介绍

 

中文图文跨模态数据集 Zero

 

图文跨模态预训练框架R2D2

 

实验结果

 

业务落地

 

总结

 

01

 

图文跨模态表示 背景介绍

 

首先和大家分享下图文跨模态表示的背景。

 

 

在互联网领域,最常见的数据存在形式是文本,其次是图像、视频。大部分情况下,这些不同模态的数据不是截然分开的,而是融合在一起的。比如,常见的网页既有文字又有图片,是图文混合数据。

 

这就导致,在互联网领域中很多任务都和图文跨模态表示相关。比如,图文检索任务,是用文本去搜索图像;视频搜索推荐任务,视频中除了图像外,无论标题、字幕或语音,都可以映射为文本;文章配图或广告配图,也需要建模文字和图像的关系。所以,图文跨模态表示从某种意义上来讲是互联网领域里应用最广,最有价值的技术之一。

 

 

提到图文跨模态表示,就不得不提 CLIP 这个工作。从架构的角度来讲,CLIP用的是双塔架构,即图像经过图像编码器转变为向量表示,文本也经过文本编码器转变为向量表示,两个向量间可以计算相似度,最后通过对比学习来学习编码器。CLIP 虽然架构简洁,但效果却非常惊艳,很重要的原因是使用了上亿的图文匹配数据进行训练。基于CLIP的图文跨模态表示,可以将图像分类任务转变为一个图像文本检索任务,如上图右侧所示,取得了非常好的效果,并且图像类别可以扩展。

 

 

如果图文跨模态表示做好,那幺使用文本去控制图像的生成也会取得不错的效果。比如DALLE-2 的工作,模型的上半部分是一个CLIP模型,通过把图像和文本向量表示映射到同一个空间中,就可以使用文本向量表示获得图像的向量,然后再反向生成图像,从而实现了用文本语义控制图像生成。

 

 

因为CLIP等模型中,图像编码器是单独一路,文本编码器也是单独一路,所以一般称之为双塔模型。 针对中文图文跨模态表示,在CLIP基础上,国内很多团队做过很好的改进工作,其中最有名的是WenLan,包括 1.0 和2.0,还有华为的Wukong模型。

 

(1) WenLan1.0模型 ,在CLIP的基础上,构造图文跨模态对比学习任务,框架利用了检测器的信息,并且在每个 Batch 的反样本之外,还构建了更多的反样本来帮助模型任务训练。WenLan2.0 训练数据量更大,支持多种语言,并且去掉了对检测器的依赖。

 

(2) Wukong模型 ,在 CLIP框架基础上,除了文本和图像的全局表示做对比学习之外,还将细粒度的文本 Token和图像 Token做对齐,从而能学习到更细节的对应语义信息。此外,Wukong使用了一亿训练数据做模型训练,且开源了数据。

 

 

在做图像和文本表示的时候,存在 两种思路 ,即 单塔模型 和 双塔模型 :

 

一种思路是把图像 单独通过一个  Encoder , 文本 单独通过一个  Encode r   然后再进行信息交互 的双塔结构 。上面提到的 CLIP、WenLan、PanGu都是双塔结构。由于双塔模型,可以单独对图像和文本做特征提取,因此在图像检索类任务上,速度比较快,但由于图文信息只在全局上有信息交互,所以,效果较差。

 

另一种思路是把图像和文本 联合起来一起 输入,让数据在网络的每一层都做信息交互 的 单塔 结构 ,UNITER、OSCAR、M6等是单塔结构。单塔结构往往不是用在图文检索这样粗粒度的任务上,而主要用在细粒度的任务上,这些任务对样本Label 要求比较高。单塔结构由于信息的充分交互在效果上往往会更好,而且,更适合细粒度任务,但由于同时需要文本和图像才能进行计算,所以计算效率往往较低。

 

02

 

中文图文跨模态数据集Zero

 

 

下面介绍中文图文跨模态数据集——Zero。

 

优质的数据集对于一个领域发展而言至关重要。虽然,行业里有一些图文跨模态数据集,但缺少定义了预训练数据集以及多个下游任务数据集的完整协议 , 而且,预训练数据集要适合学术界使用,同时需要更高质量、更丰富的下游任务。

 

Zero的提出是基于公平公正,对学术界可用的初衷。刚好 360 有这样的条件,在搜索中,积累了非常多的图文数据,数据质量要比在互联网上爬取的数据质量更高。最终,我们发布了一个包括 2300 万和 230 万的预训练数据集,之所以有 230 万的设定,就是因为考虑到学术界做 2300 万数据预训练在计算量上可能会存在挑战。Zero 包含两个预训练数据集,以及五个下游任务数据集,希望Zero的出现,能够让学术界也开始在图文跨模态的任务上卷起来。如果有更大的算力,可以在 2300 万上做预训练,如果没有则可以在 230 万上做训练。这样大家就在一个完全一致且公平的设置上做比较,可以更多地关注算法本身的效果。

 

下面具体介绍一下构建Zero数据集的过程。

 

1. 2个预训练数据集

 

 

如上图左侧,获取一个如 Image Caption 这样精确标注的数据,成本是比较高的。

 

对于搜索点击数据,在用户搜索某个查询词的时候,会点击一个或几个图像,通过点击次数对数据进行过滤,可以得到文本和图像有较强对应关系的数据对。这些数据,再通过大量的自动化过滤,去除可能含有不良信息的数据,最终从几十亿数据中,提取到 2.5 亿优质数据。再从中随机抽取 2300 万以及 230 万数据,就完成了Zero预训练数据集的构建。

 

 

Zero跨模态数据集相较之前数据集的特色在于,它是真实场景的用户数据,在图文的对应关系上,因为使用用户行为做了过滤,所以比在互联网上爬取并处理的数据质量更高。我们的试验结果也证明了这样的结论。这个数据集包含两个预训练数据集,以及五个下游任务数据集。每一条数据,除了查询词和图像外,还包括标题、周边文本以及 Url,整个数据库都是对外开放的。

 

2. 5个下游任务数据集

 

 

为了更好地对比各个模型的效果,我们共构建了五个下游任务:

 

长文本图文匹配分类任务

 

短文本图文匹配分类任务

 

长文本图文互检任务

 

短文本图文互检任务

 

更新的Flickr30k数据集

 

 

之所以对Flickr30k做处理,是因为Flickr30k是英文图文跨模态领域非常主流的测试数据,为了更好地比较中文图文跨模态模型和英文图文跨模态模型的结果,需要一个优质的Flickr30k中文对应数据集。过去曾经有一个人工翻译测试集、自动翻译训练集的版本Flickr30k-CN,但自动翻译存在较多错误。所以,我们找了6个专业人士重新对训练集和测试集进行了翻译。在上图的例子中,可以看到,原有数据集Flickr30k-CN存在较多的标注错误,通过重新标注,错误基本上都被纠正了,新的数据集我们称作Flickr30k-CNA。

 

03

 

图文跨模态预训练框架R2D2

 

下面主要介绍一下我们提出的图文跨模态预训练框架R2D2。R2D2来自于星球大战里边让人印象深刻的那个机器人,而R2简写是因为我们的预训练框架做了两次Rank,D2简写是因为我们的预训练框架做了两次Distillation。

 

 

上图显示了整个 R2D2框架 ,下半部分,图像使用了VIT架构做表示,图像被表示为多个Patch,经过 Image encoder 输出图像向量,右侧是Text encoder,我们使用了RoBERTa,下面整体是一个双塔结构,和CLIP一样。

 

在框架上面部分,为了让图文信息更好交互,把图像和文本信息进行Cross Attention。最终共使用了四部分 Loss,第一个是跟CLIP一样的对比学习Loss,称作GCPR,第二个是文本-图像的细粒度匹配分类 Loss,第三个是图像-文本的细粒度匹配分类 Loss,第四个是文本的 MLM(遮盖语言模型)Loss。

 

这个框架类似于互联网领域里搜索/推荐/广告最常用的召回和排序框架,底层的双塔模型,主要目标是快速排除大量容易的干扰,保证召回可能的结果。上层的单塔模型,利用更细粒度的信息交互,主要针对比较难的干扰,类似于精排的逻辑。

 

1 .   Pre – Ranking + Ranking框架

 

 

(1) 全局对比 预 排序 损失函数 ,和CLIP相似,区别在于增加了 Distilling 的改进,此外,在构建反样本对时,CLIP只在单卡的 Batch 内做,Zero则使用多卡的数据构建更多的反样本对。

 

 

(2) 细粒度排序Loss ,这个损失函数的目标是处理更难区分的反样本,对于正样本而言,都会被送到上层做处理,但是只会把比较难的反样本送到上层进行处理,并且采用了二分类的loss,图像和文本都使用了这个 Loss。

 

 

(3) 掩码语言建模   Loss ,即Mask Language Model,只用在文本一侧。如上图所示,其他工作中,在同时把 MLM 和其它 loss 一起用的时候,会用 MLM 迭代一轮,其它Loss再迭代一轮,交替进行。而在Zero框架中,我们把细粒度排序 Loss 和 MLM Loss 看作是联合训练任务,一起进行迭代训练,每一轮只迭代一次,这样在训练速度上会有一定优势,我们统称为增强训练 ET。

 

在整个训练过程中,图像的底层VIT特征一直是固定不变的。这是因为,如果同时训练图像特征,训练速度非常慢,并且在我们的试验中,打开图像特征会使效果变差。

 

2 .   Target – guided   Distillation + Feature – guided   Distillation

 

 

在CLIP Loss基础上,我们还使用了目标导向型蒸馏,即除了真实的One Hot标签外,同时结合教师模型输出的软标签做Label。这样做的好处是,图文的对应关系,并不是绝对的1/0关系,而是存在中间的状态,软标签更能反应真实的情况。教师模型输出取了历史模型的指数滑动平均。在训练的过程中,为了增加反样本,我们维护了一个历史的反样本队列,并根据样本的时效性,对样本进行重要性加权。

 

 

进一步,我们还使用了目标导向型蒸馏,即在特征输出上去拟合教师模型。 教师模型可以看作多个模型的分布,最终利用交叉熵 Loss 来约束学生模型与教师模型分布一致。

 

 

总结一下, R 2 D 2 框架对比 之前的框架 , 在CLIP 双塔框架 基础上 将双塔模型和单塔模型进行结合,利用了二者的优点 , 具 有 一定 创新性 。其中双塔部分,文本和图像各自的编码器,做好各模态自己的表示,最终保证召回,而单塔部分,充分进行信息交互,更好地区分更难的反样本。

 

模型和使用代码都已开源,欢迎大家关注。

 

04

 

实验结果

 

 

在中文图文跨模态领域,公开报道结果能用来对比的工作并不多,这里主要是用Wukong和Wenlan2.0的结果做对比。Zero在模型上有VIT Base和VIT Large两个版本,在训练数据上有230万、2300万以及2.5 亿三个预训练数据集。

 

从结果来看,相同训练数据条件下,VIT Large模型要显着好于VIT Base模型;在同样的模型上,预训练数据量越大,结果越好。

 

与此前 SOTA 结果相比,使用230万数据训练的模型,已经可以在大多数任务上超过此前 SOTA,使用2300万数据训练的模型全面超越SOTA,2.5亿数据训练的模型效果更加显着。

 

 

上图汇总了本文提出的模型在 Zero的五个下游任务上的结果。为了研究精标注的Flick30K-CNA数据对于训练结果的影响,我们测试了Filckr30K-CNA训练的模型,与Flickr30k-CN训练的模型,在Filckr30K-CN的测试集上的结果,发现确实有所提升,证明了训练集人工标注的价值。其它四个数据集上,只包含本文工作结果,可以看出,当模型容量更大的时候,效果会更好。

 

 

我们做了消融实验来分析各个机制的影响,上图中,R2D2中显示的是各个机制融合的最终版本结果,是所有结果中最好的。

 

其中,PRD2的结果是对于 CLIP的改进,即把双塔特征,拿出来进行计算。可以看出,这个对于 CLIP 改进的特征还是要比 R2D2最终的结果显着差。

 

去掉 ET 机制,即 MLM 和细粒度分类任务联合机制,结果有一个点左右下降,说明这个机制对结果影响较大。去掉目标导向蒸馏和特征导向蒸馏,结果也有下降。

 

 

在Zero Shot实验中,2300万数据训练的模型,要比此前的 SOTA 模型好一些,而 2.5 亿数据训练的模型,则显着好于 SOTA :

 

Flickr30k-CN 上提升了4.7%,达到85.6%。

 

Coco数据集上提升了5.4%,达到80.5%。

 

MUGE数据集上提升了6.3%,达到69.5%。

 

MUGE是一个比较偏商品的数据集,我们的训练集中有关商品的数据很少,上面的结果说明,预训练模型学到了比较通用的表示。

 

 

我们还做了一些可视化的工作,做得比较简单。 根据R2D2模型的参数,将文本对应图像的注意力分数在图像上进行可视化。 可以看到,模型学习到了一些区域对应关系。

 

05

 

业务落地

 

图文跨模态模型,在互联网的很多任务上都有落地价值。比如在文本搜图、配图以及视频内容理解中。360搜索事业部在 R2D2 模型落地业务中,已经做了很多尝试,取得了不错的结果,欢迎更多同学在自己的业务场景下尝试。

 

06

 

总结

 

 

本篇文章主要介绍了中文跨模态数据集Zero和图文跨模态表示框架 R2D2,其中 Zero包括两个预训练数据集和五个下游任务数据集,预训练数据集包括2300万和230万两个版本。Zero,可以让学术界和工业界在同一个起跑线上做算法的研究和对比,避免只是比拼算力和数据。

 

预训练框架R2D2,借鉴前面工作的很多技巧,是一个很优雅的框架,对互联网搜广推领域的同学,会感觉很熟悉。而且,这些模型和数据都已经开源,欢迎大家使用和反馈。

 

 

最后做个广告,我最近开启了一次新的历程,创立了一家叫碳硅智慧(Carbon Silicon AI)的公司,碳是组成生命的基础元素,硅是组成计算机的基础元素,我们希望把最先进的计算机AI技术与最先进的生命科学技术结合,用 AI计算驱动生命科学。

 

我自己一直在寻找AI落地的垂直方向,而生命科学刚好满足两个条件:一是生命科学能惠及每个生命,非常有使命感,二是 AI计算将在其中起到核心驱动作用。

 

从技术角度看,生命科学领域有非常多没有被很好解决的问题,而这个领域中真正懂 AI建模的同学还很少,远没有 CV 和 NLP领域卷,所以机会很多;此外,我们在 CV 和 NLP领域积累的经验和方法,包括跨模态表示、预训练大模型等,都对生命科学有非常多的借鉴价值。欢迎更多同学加入到这个领域中来,做一些有价值且不同的事情。

 

以上,就是今天的分享,谢谢大家!

 

07

 

QA环节

 

Q1:多模态和生命科学 , 主要 有 哪些方面的结合 ?

 

A1:在生命科学领域里,大家过去习惯把任务简单割裂地看待,将每个任务独立对待,这样会造成能利用的数据和信息很少。生命科学领域存在多种不同模态的数据,分子是一种模态,蛋白是一种模态,疾病、基因、DNA、RNA都是不同的模态,这些模态间都存在关联。比如当考虑蛋白靶点和疾病的关系时,或者考虑小分子和蛋白的关系时,都可以用多模态的思路去建模。而且,一种信息也可以有不同的表示形式,比如小分子的2D和3D结构,也可以近似看作是多模态问题,这个思路可以用来构建预训练模型。

 

Q2:R2D2比较复杂,能够直接在线上部署幺?

 

A2:R2D2框架分为两级,其中,第一级和CLIP是一样是双塔结构,直接把图像或文本转换为一个特征向量,可以提前计算存储下来,所以比较适合做大规模检索任务。但第二级的单塔模型,需要同时输入图文两路信息,工程上会难使用一些,比较适合在精排阶段使用。大家可以看到,这和搜索推荐广告里边的召回排序逻辑是一样的,先用第一级特征在几十亿或者更大规模的数据库中用向量检索召回,然后用第二级模型做排序,计算更有区分度的分数用来把最好的匹配结果挑出来。

 

Q3:从事 NLP 的同学参与到生命科学中,这个技术壁垒高不高?

 

A3:在生命科学领域里边,从数据形式上来讲,分子有两种表示形式。一种是一维序列形式,叫作 SMILES,类似 NLP领域的文本序列,只不过是由碳氢氧氮等元素和键组成。第二种表示形式是Graph,原子作为节点,共价键作为边。同样,蛋白质、基因等信息也可以用一维序列或者图来进行表示。所以,从数据形式上看,和 我们在 NLP领域遇到的信息表示形式很相似。同样,模型会使用 GNN或者Transformer,也和NLP领域很相近。当然,生命科学领域还需要很多领域知识,需要一定的适应时间,但从算法角度看,并没有什幺障碍。

 

从某种意义上, AI模型在各个领域是在逐步走向统一的。换句话讲,就如同统一的编程语言一样,无论是 CV、NLP、语音或生命科学领域,未来都会用类似 Transformer这样的模型进行建模,虽然不同领域会有所区别,但是不同领域解决问题的办法会逐渐统一,且相互借鉴。就如同过去几年, CV和 NLP领域互相借鉴了很多,同样,生命科学领域也会受益于 CV和 NLP领域的技术进步。

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注