\u200E
文心大模型・CV基础大模型及应用
发布日期:2022-08-01T03:42:42.000+0000 浏览量:110次


本系列根据WAVE SUMMIT 2022深度学习开发者峰会「AI大模型 智领未来」论坛嘉宾分享整理。本文整理自百度计算机视觉首席科学家王井东的主题演讲:文心大模型 · CV基础大模型及应用。


过去,我们研发了多种计算机视觉大模型,比如:面向搜索的图文大模型、视频文本大模型及垂类的商品大模型等。今天我将跟大家分享其他三种大模型。

文心VIMER-UFO 2.0

文心VIMER-UFO 2.0是面向多任务的视觉表征学习大模型。在计算机视觉里,有各种各样的计算机视觉任务,通常的做法是为每一个任务设计一个模型、训练一个模型。在这个工作里,我们希望训练一个能够同时做多项任务的大模型。

文心VIMER-UFO 2.0有如下三个特点:
  • 多任务。如果有多任务,训练数据也会增多,每个任务都有自己的监督,监督信息会增多,既有数据也有监督的增多,学习表征的语义信息就会更强,在这个工作里我们覆盖了22项任务,包括检测、识别、分割等。
  • 大模型。模型大了后,容量也随之增大,能够处理更加复杂的任务,如下图所示,面临22个任务时,文心VIMER-UFO 2.0的模型参数多达170亿。
  • 易部署。这是区别于其他很多大模型的重要一点。训练得到的网络结构不仅包含大模型,还可以得到多个小模型。轻量的小模型能够很容易地部署在设备端。

这项工作中的网络结构是基于飞桨MoE训练框架训练得到的。下面向大家展开介绍一下,我们是如何实现上面介绍的三个特点的:

多任务联合优化

优化多个任务时,会为每个任务都设计所谓的任务层。为什么需要为每个任务设计任务层,而不是把所有的任务放到一起,用单一的任务层去做呢?比如,有两个分类任务,它可能表达同一个语义信息,但在两个任务里用不同的标签表达,如果放到一起,同样的语义是两个标签,不利于优化。

Path Routing

我们希望每个任务都有自己的路径,都有自己的子网络。那如何得到这个结果呢?在实际的设计里,网络结构基于Transformer结构,不同的任务会共享所谓的Attention层。在FFN层里,为每个任务都提供了一个独特的FFN,除此之外,每个任务也有机会去选择共享FFN。共享FFN即每个任务都有可能选择同一个FFN。

随机结构剪裁

在深度神经网络里,网络层比较深,这样使得计算量、参数量都会比较大。为了得到刚才提到的轻量模型,我们采取了随机深度的方法。除此之外,还有随机宽度,即减少或者随机地挑选一些channel进行优化。同时,在attention层里也有多个head,实际head的数目在训练过程里也随机可选。

下图展示了文心VIMER-UFO 2.0在公开数据集上测试的结果,基于单个模型,我们在28个公开数据集上均取得了最好的结果。

上文介绍的文心VIMER-UFO 2.0是面向多任务的、有监督的一个方法,而无标注情况下,则需要采取自监督视觉表征学习方法。

文心VIMER-CAE

当前计算机视觉里比较热门的方向之一即自监督视觉表征学习。该方法希望从大量的、很容易获得的、没有标注的图像中,通过设计预训练任务的方式学习视觉表征或者视觉表征编码器,把它们应用到下游任务中,并加上特殊的下游任务解码器,通过Finetuning的方法或者其他方法解决下游任务,以提高下游任务的性能。


过去几年里,计算机视觉里主要有两大类自监督表征学习的方法:

  • Contrastive pretraining:其特点是在图像里随机地crop出几个图像块,希望图像块通过编码器得到的表征尽量相像。



  • Masked image modeling:如上图右侧所示,Masked image modeling是最近一年在计算机视觉里关注度比较高的一种方法。该方法通过随机将图像里的一些图像块Mask处理,然后把这些Mask部分预测出来。

文心VIMER-CAE所采用的方法,属于Masked image modeling一类,它比Contrastive pretraining这类方法效果更好,同时也超越了有监督的方法,我们称之为Context Autoencoder。

Context Autoencoder的特点来源于深度学习里非常重要的共识——即希望解决视觉任务在高维的隐空间里做任务。基于以上出发点,我们希望掩码部分是在高维空间里预测出来,再通过解码器得到掩码的目标。

算法实际是希望编码器只做表征学习,比如:编码器只学习可见区域的表征,剩余其他部分只做预训练任务,而不再对可见区域做表征学习任务,如此就把表征学习和任务解决区分开,使得编码器能力更强。

如上图所示,文心VIMER-CAE编码器通过对图像块进行编码,得到它的表征,利用表征进行搜索。第一个例子中,最左边对应“查询”图像块,第一行查询的是运动员腿部,可以得到运动员腿部对应的图像块。第二行查询的是胡须,可以看到搜索得到的图像基本都是和胡须相关。这是非常有意思的一件事情,因为在学习编码器的时候并没有任何标注信息,但仍然能够学到如此有意义的语义信息。

除此之外,第四行和其他四个例子是不同的。第四行实际是关于场景类,不像腿部、胡须或车灯,说明这样的方法不仅能处理object,也可以处理stuff。

我们将这个方法在公开的数据集里做了测试,如上图左侧所示方法都是基于ViT-Large,它们编码器的计算量完全一样。第一行结果使用的是有监督方法,下面四行使用的是自监督方法,可以看到,自监督的结果比有监督的结果好很多。第三、四、五行,均基于Masked image modeling方法实现,除文心VIMER-CAE外的两项工作来自于微软和Facebook。可以看到,文心VIMER-CAE无论在分类还是分割的结果都比以前的方法表现要优越。

上图右侧展示了垂类OCR场景的结果,也是标准公开数据的结果,目前这个方法已经应用落地,在手写体、通用、小度词典笔等场景中,错误率下降25%。

文心 VIMER-StrucText 2.0

最后,再给大家分享一类特殊的图像——文档图像的处理方法,这个方法也是和文心VIMER-CAE非常相关。我们知道,在文档图像中有非常多的任务,例如:识别、版式分析等,同样也需要编码器。

上图展示了文心VIMER-StrucText 2.0方法的流程图。与文心VIMER-CAE相关的地方在于,这两种方法都会把文档图像Mask掉一部分区域后,根据其他部分信息预测掩码区域的部分信息。比如说,这里面有两个任务,图像重建的任务,即直接把Mask部分图像重建出来。除此之外,还要预测Mask部分对应的文字,使得这样的方法学到的编码器,同时能够学到语义的信息,也能够得到结构的信息。

文档图像预训练,编码器学习最近几年也有不少的方法。我们做了简单的比较,大概把方法分成了三大类:

  • 第一大类,LayoutLM/DocFormer/StrucTexT 1.0版本 。以上几个方法需要输入既包含文档图像,同时也要包含OCR的结果。通常这一类的方法最终能够学到一些结构关系,而不能够学到语义信息,因为语义信息已经包含在输入里了。
  • 第二大类,自监督方法 。比如刚才提到的CAE或者其他的方法,它的输入跟我们一样,也是文档图像,但是这一类方法通常只能学到结构性关系。
  • 第三大类,文心VIMER-StrucTexT 2.0的方法 。实际上只输入文档图像,但由于预测任务既包含文本的预测也包含图像的预测,使得模型最终学到的信息既包含了结构的信息也包含了语义特征,使得可以更多地在下游支持任务。

最后,与大家简单分享一下文心VIMER-StrucText 2.0方法在实际场景里的应用。如上图左侧示例所展示,这样的方法相比于StrucTexT 1.0而言,信息抽取流程能够大幅简化,不再需要依靠单独的OCR处理器输入OCR结果,使得效率至少能够提高30%。

上图右侧则展示了在一些公开数据集上文心VIMER-StrucText 2.0方法的效果,包括文档图像分类、版式分析、表格结构识别任务,以及端到端的OCR检测识别和信息抽取任务。由于不需要额外的OCR处理器,我们可以看到,使用文心VIMER-StrucText 2.0方法的结果相较以往有了明显提升。
以上就是我的分享,谢谢大家!

扫码获得模型开源链接


  • 拓展阅读:

“地理-语言”大模型文心ERNIE-GeoL及应用


关注【飞桨PaddlePaddle】公众号

获取更多技术内容~