引言

近年来,从预训练模型到预训练大模型,从单模态的自然语言处理及计算机视觉,到现在的多模态与跨模态的预训练大模型,可以说关于大规模预训练模型的研究,无论在学术界还是企业界都是红红火火。大规模多模态预训练模型已经给许多研究任务带来了较大益处,为了能够进一步梳理它的研究现状和发展趋势,讨论和探索关于这个领域的研究难点、挑战、优势以及弊端,我们组织这个研讨专题,邀请了多位来自学术界和企业界的资深专家来进行探讨。

 

专题组织者:王亮、山世光、杨双

讨论时间:2021年10月16日

发言嘉宾:卢志武、刘静、常建龙、周畅

参与讨论嘉宾(按发言顺序):刘成林、王涛、张祥雨、常建龙、周畅、程明明、王兴刚、马占宇、刘静、卢志武、卢策吾、胡瀚、袁晓彤、黄高、查红彬、黄岩、刘青山、刘洋

文字整理:杨双

校审发布:任传贤

 

「RACV发言讨论嘉宾及CCF-CV专委会允许非商业用途的转载。转载时应保证内容与原文一致,声明“本文得到CCF-CV专委会(公众号: CCF计算机视觉专委会)授权发布”,并添加原文链接。」

 

主讲嘉宾发言实录

1.卢志武(中国人民大学)

我们的这个项目是从去年九、十月份开始做起的。当时我们查了很多学术论文与国内外的相关进展,发现有很多的问题。第一个问题是数据集的问题。我们发现国外公开的数据集基本上都是caption的数据集,这类数据的特点是文字必须是对图片的很详细的描述。但是实际上要做这种(大规模)预训练的话,不能这样去做数据。我们采取的一个很简单的办法就是从互联网上爬。但爬取的话,质量肯定不会那么高。大概率情况下得到的数据中,文字只是对图像的一个很弱的、抽象的、甚至是非常间接的描述。那针对这种情况,我们要怎么去做?当时OpenAI CLIP还没出来,没人告诉我们怎么做。我们就想,如果我们只有互联网上爬取的上千万或者上亿的图文对,我们要怎么去做多模态预训练?

基于这些,我们思考了三个问题,就是我们可以怎么样去设计模型来刻画这种关系。

第一,我们可能得到的数据质量不是那么高,我们怎么去利用它?

第二,我们做多模态预训练,那么肯定要把单模态利用好,这个肯定是必须要做的;

第三,这件事情需要投入大量的成本,那么要怎么落地是必须要考虑的一个问题。

基于这些考虑,我们设计了文澜模型,它具有以下三个特点:

首先,我们的文澜2.0应该是首个中英文多模态双塔模型:这里强调双塔,有很重要的一个考虑,就是我们假设我们的图和文之间只有很弱的关系。另外,模型最大参数量也只有50多亿,并不是很大;支持中英文双语,同时我们为了落地也推出了不同大小的多个版本。

其次,最值得提的是我们用了很大的数据量,共有6.5亿图文对,且并不经过特殊的数据清洗,这也是我们相较OpenAI等的模型的最大亮点。我们后面也可以看一些例子,会发现清洗与我们这里不做清洗是有很大的差别的。

第三,我们提供了一种资源节约型的大规模预训练算法,可以把有限的资源尽可能的利用好,去应对尽可能大的数据和大的模型。我们当时考虑的一个框架是去年新发布的DeepSpeed,但直接用的话会发现里面有很多问题。但最终,我们克服了很多困难,把它成功用上了,并把我们的预训练在这么大的数据集上跑起来了。

接下来介绍一下我们的模型与其它多模态预训练模型的不同之处。

首先,在模型结构上,其它的很多视觉语言模型都用了目标检测器object detector。我们当时就考虑说要把这个拿掉。其中一种基本的方式就是画格子(划分patch)。后来ViT出来以后也验证了这种方式。这么做的一个好处,就是既可以得到全局特征,也可以得到精细的局部特征,最后都抽成一个特征向量序列,继而可以接上Transformer来进行训练。同时,由于我们整体是双塔模型,因此在模态交互上要比单流或者说单塔模型要弱。 

其次,关于训练方式。起初我们很难把DeepSpeed用上,用了好几个月才把它调好。因为它刚出来也不成熟,中间有很多trick。最大的问题就在于它不支持跨模态对比学习,或者说它支持的是很弱的那种,有各种各样的问题,要靠我们去把它调顺。最后我们的预训练用到了6.5亿图文对,用了112张A100的卡,训练一个epoch需要七天左右。

最后,我们看看文澜在下游任务上的效果。 

第一个实验,是类似OpenAI CLIP在遥感数据上进行测试,看模型的跨域能力如何。我们用了AID数据集进行测试。因为我们的模型是中文模型,所以测试时要将它的英文类名先翻译成中文再进行测试。测试结果显示我们的模型要比OpenAI CLIP表现要好,大概高7个点。其实,这里的翻译过程对我们的模型是不利的,因为有些类别名称是国外(英文)独有的,在中国是没有的。但就是在这种不利的情况下,我们的模型还依旧能超过它。所以,这个也说明了我们模型的迁移学习能力还是很好的。

接下来的第二个实验,更有意思,对NLP的人,我觉得如果不是那么严谨地说的话,这个结果对NLP是一个大突破。为什么这么说?因为很多做NLP的人会认为语言就是完美的,认为靠语言可以解决一切的问题,并不认为图片对NLP有帮助。但是,我们这个例子就证明了文本的Backbone都是RoBERTa,但是一个是通过多模态去训练,一个是通过完形填空的单模态预训练,会发现这其中的gap有20个点,那么这个gap是怎么产生的?主要就是两个的训练方式不一样。然后,如果更严格地比较的话,我们把我们的模型训练数据集也给它,我们也发现这个gap还是存在,也就是说在公平对比时这个gap还是存在的。所以,就证明了和小孩学习语言一样,即如果你把视觉的东西加进去,他肯定会学语言学的快;而如果是盲小孩,即他从小就是个盲人的话,我估计他语言学的就会很慢。总之,我们虽然在做视觉的东西,但对纯NLP的任务也是有帮助的,我们在做了更多的类似的任务验证后,发现这个结论还是成立的。

这里也给出了一些可视化的例子(如下图),该图大概的意思就是来尝试解释为什么视觉是有帮助的,刚才可以看到最好的涨点的就是右边的“sports”(运动)的时候,我们把“运动”这个词做了embedding后,可以找出它的近义词,然后用t-SNE画出来,如图所示。这里就可以说明通过多模态训练得到的文本encoder所找到的近义词会比较多样化一些;而如果是纯文本训的话,则会单调一些。

第三个实验是在VQA任务上的实验。这个结果可以证明我们的预训练对VQA任务是可以有帮助的。第一行是没有用预训练,第二行以及往下都是用了预训练,大概涨了八个点。这里怕时间不够,我就快速跳过了。然后我们也做了很多别的评测,这里就不一一说了。

接下来,我们尝试去解释为什么我们文澜能做到这样子。

我们就想能不能用一些神经元可视化的东西来看看。神经元可视化其实也是特别简单的。如下图,首先给定一个中文概念,并选择最后一层神经元,然后输入一个噪声图像,并让该层神经元的输出与给定概念的文本embedding对齐,然后进行反传,去改变输入的噪声图像,而文本本身维持不动。通过这种方式,它其实就反映了最后一层神经元看到了什么东西。对于特定的某个神经元可以采用类似的方式来进行可视化。

然后,我们就发现,模型在一些具体的概念上看得跟我们人理解的比较一致。

模型也会理解古诗句,总体上它也理解得好像像模像样的。因为时间不够,我这里就快速跳过了。

当然刚才看到的可视化还是很抽象,我们还可以不改变文澜模型,通过加入GAN让生成的图像更真实一点,效果如下图,整体上更自然,语义表达也特别好。

对于抽象概念,比如我们想象中的一些图,它也能生成,这就证明大模型不是单纯依赖记忆,它学到了一些东西,有推理/推广能力。比如这里生成的连环画,显然不可能是纯靠记忆的。

应用落地方面,我们用文澜做了一个视频剪辑。这个任务其实大家看起来可能很容易,但实际上做起来就发现存在很多问题,并不是那么好做。这里,我们的输入限制为一首歌,而素材中用到了很多宫崎骏的电影,看能不能根据歌曲自动从中剪辑出一个MV?其中很重要的一步,就是如何让歌词和镜头的语义对上。从效果上来看,文澜其实在很多地方都做到了“神同步”。

我们的API文档已经对外公开了,社会上可以免费调用,到目前为止已经有超过千万次的调用了。应用上,华为与我们深度合作,也已经把我们的技术用到具体的产品里面了。快手、联通等也在跟我们合作,有些是微调模型,有些是直接用。目前来看,我们的模型还是很有用的。

2.刘静(中科院自动化所)

各位专家老师,上午好。非常感谢有这个机会来到这里做一个有关多模态预训练方面的综述,并和大家分享我的一些个人看法。报告主要包含以下三方面内容:首先是我们为什么要关注多模态预训练;接下来回顾当前多模态预训练的研究进展;最后,着眼当前看未来,多模态预训练模型接下来可以怎么做。

首先,为什么要关注多模态预训练?我们知道,自GPT和BERT提出以来,预训练模型确实得到了爆发式的发展。随着模型参数和训练数据量的不断攀升,性能确实得到了飞速的发展。我们可以看到从最早GPT的一亿参数,到现在悟道2.0的万亿参数,未来可能还会更多, 这种大模型的方式确实带来了很大的性能提升,同时也给算力带来了越来越多的挑战。

在以图像为核心的视觉领域,随着数据和参数规模的增大,视觉大模型也带来了性能的稳步提升。预训练模型在语音、语言、视觉等各个子任务上都得到了非常成功的应用,展示出了巨大的潜力,因此很多人认为,预训练模型有望成为一种通用AI平台的技术。

我们再回过来看多模态数据。从各种公众号、自媒体、短视频分享网站还有各大媒体网站等我们都可以获取到非常多的多模态资源,其中可能90%以上都是图像和音视频数据。预训练大模型最早的成功是基于文本的,但互联网上文本只占到不到10%,这意味着我们还有90%以上的互联网数据是没有用上的。

那么有了多模态大模型,有了多模态大数据,做多模态训练本身是否合理?我认为至少某些方面上它是合理的。首先,多模态协同是符合人类的认知的。我们人在认知世界的时候,靠眼睛去看,靠嘴去说,靠耳朵去听。无论是在感知世界还是在表达世界的时候,都有多模态协同的现象。同时,对多模态理解相关研究也表明,通过挖掘多模态之间的相关性,确实可以提高多模态数据理解的性能。因此我们认为,做多模态预训练应该能帮助我们更好地理解多模态数据。

因此,预训练模型未来将会从单模态去迈向多模态,这应该是一种必然。因为它是一种能用大数据来学习、同时又能用来理解大数据的解决方案。

接下来,我们看当前大家到底是怎么来做这个问题的。首先我们知道Transformer 是预训练模型爆发的一个原动力。Transformer模型本身是很简单的,一个Transformer编码器(encoder)、一个Transformer解码器(decoder),而GPT、BERT为代表的的预训练语言模型基本上也是基于Transformer架构的。BERT是一个Transformer编码器为主的、侧重理解任务的模型,而GPT是基于Transformer解码器而侧重生成任务的模型。

回顾跨模态理解,大家走的也是同样的一条路。因为很多多模态任务更侧重理解任务,所以最早出现的一些多模态预训练模型基本都是基于Transformer编码器的BERT方法。基于BERT的方法按网络结构不同可分为单流(单塔)模型与双流(双塔)模型。这两类模型的主要区别在于:单流模型中,不同模态是直接一起输入到Transformer编码器中的,从一开始或者说底层就开始做多模态的交互;而双塔模型中每一个模态需要送入自己的编码器,然后在高层可能再通过一个跨模态的编码器实现交互,甚至完全不做交互,例如CLIP就是一个纯粹的双塔模型。

另一类就是基于Transformer解码器,用来解决生成任务。当前最著名一个是DALL-E模型,一个是清华和智源开发的CogView。这两个模型的结构类似,都是采用了VQ-VAE+GPT架构,先通过VQ-VAE把图像进行序列化表示成一个比较理想的token序列,然后将其和文本一同输入到GPT模型,再通过Transformer解码器来实现生成任务。

再一类就是编码器+解码器,由编码器来理解,由解码器来生成。它实际上可以理解成一个理解+生成的综合任务。为什么这样效果会好,我个人认为是因为引入解码器模型应该可以更好、更充分地去学习不同模态之间的关联,进而提升理解能力。这里也有几种不同方式:一种比如T5[ICML2021]模型,它把多种多模态任务统一成了一个文本生成任务,这样把VQA(视觉问答)、caption 等都统一成一个生成任务放进模型预训练的过程,使得可以有更多数据、更多任务来帮助模型调优。另一种像阿里E2E-VLP[ACL2021]联合目标检测和语言描述,把它们放到解码器端来提升预训练模型理解的能力。前面两个研究中编码器和解码器采用了类似串联方式,而下面这两种阿里的Unified VLP[AAAI2020]和M6[KDD2021],实际上可以理解成编码器和解码器并行方式,他们的编码器与解码器共享一个transformer网络。

前面讲了以Transformer为核心,大家做出的很多相关工作。从信息源上来讲,其实也可以分为另外一些类型。例如在多模态预训练建模过程中引入知识,百度公司在这方面做了很多优秀的工作,如ERNIE-ViL[AAAI2021]。如何有效的将知识嵌入到预训练网络框架中,这是非常重要的一个方向。当前完全数据驱动方式下的预训练模型,是不是可以走到底?知识合理有效引入是可以给我们带来更多新的东西。另一类模型,如微软的OSCAR[ECCV2020]和百度的ActBERT[CVPR2020],他们都是通过引入更多的信息源,来帮助模型更好地训练,例如OSCAR模型中目标和区域的细粒度对齐,ActBERT模型中对视频加入动作属性。

根据输入数据的不同模态形式,预训练模型还可以有不同划分。首先是最主流的图像-文本两模态和视频-文本两模态的预训练任务。现在各大厂在做的多模态预训练主要是上述两类。还有另外两类以图像为核心的图文音大模型和以视频为核心的图文音三模态预训练模型。这也是我们团队近期一直在做的方向。我们自动化所前段时间对外发布的紫东太初模型就是一个典型的图文音三模态预训练模型。它将更好的建模视觉、文本、语音三种不同模态信息的协同关联,服务于各种跨模态理解与生成任务。

我看到今天讨论材料里面有提到,图像和视频预训练模型要不要分别处理?我们认为图像和视频,这两个其实是很难混在一起的。主要区别体现在:其一,图像与视频的编码方式不同,它们各自所关注的语义层面是不一样的;其二,对音频的解析不一样,在以图像为核心的图-文-音模型中,我们更多关注人的语音(speech),而在视频任务中,我们更期望去建模环境音,它是对声音的一种更为泛化的理解。

接下来我简单介绍一下我们这个模型。我们这个模型采用的是多流多模态编解码结构,特点在于我们这里引入了多层次多任务的自监督学习。该模型的主要优势在于可以支持图文音完全匹配的数据,也可以支持图文部分模态匹配的信息,甚至可以只使用一种模态的信息来进行模型训练,这样就可以大大降低我们对多模态数据完全依赖的问题。另外,我们合理引入了编解码结构,能够把多模态理解和生成任务更好地统一到一个框架下,从而更好地支持下游的多模态任务。图文音三模态对应的下游任务,相比图文而言,更为丰富,因为引入了语音,其实就带来了更多可做的事情,例如从语音到图像,或者从语音到视频等等。我们也在一个初步的实验中验证了我们的方法性能相比有监督方法,或者说现在的一些预训练模型,确实是得到了一些性能的提升。在一些图文两模态的任务上,我们也取得了一些当前SOTA性能。

最后来讲我们接下来还可以做什么?首先分析一下多模态预训练,它到底需要解决什么问题。我们知道不管是单模态还是多模态,其实它的基本范式都很简单,就是一个预训练加微调的这样一种结构。这种预训练主要包含几个关键部件,首先至少现在的模型基本上都是Transformer 作为基本模型,通过有效地设计一些自监督学习任务,从大规模数据中去学习一种通用知识,然后针对不同下游任务,进行模型微调,实现通用知识的有效迁移,进而更好地解决下游任务。在多模态预训练里面,我认为可能要更多的关注跨模态关联问题,这可能是不同于单模态任务的一个主要特性。我们需要更多地关注不同模态之间的融合与关联关系,通过更好地挖掘它们之间的关联来实现多模态之间不同语义粒度、不同层次的对齐,进而帮助我们提升模型的多模态理解和生成能力。

这里面就提到了,我们要有数据,要有Transformer模型,要有自监督学习任务,要有下游任务。接下来,我会从这几个方面来讲一下未来多模态预训练可以怎么做。首先我们认同“大数据+大模型”这样一种简单、粗暴但有效的路子还未走到尽头,但终将走到尽头,或者至少说它总会遇到瓶颈。那我们怎么让它在瓶颈期更好地适应?

(1)首先是数据。大模型肯定需要大数据,这个数据规模越大、质量越高,对模型的学习肯定是越有帮助的。而我们多模态模型,其实对数据的要求要高于单模态数据,这就需要我们研究如何以更低代价挖掘和构建这种不同模态之间对齐的数据;另外,我们可以引入知识来筛选大数据,因为人有非常强的筛选能力,那么能否收集数据时也这样去做?

(2)其次是Transformer模型。我们是不是可以设计能够更高效计算的网络模型结构,改进甚至是替代Transformer;设计针对超大规模模型的分布式并行训练,这也是非常重要的一个环节;还有既然多模态预训练,我们需要去设计跟下游任务更好兼容的网络结构模型;再就是我觉得数据和知识混合驱动也是非常重要的方向,怎么把显式知识去嵌入,怎么让大模型学到的隐式知识和我们人的知识去做匹配,这都是需要思考的问题。

(3)再次是构建适合多模态关联建模的自监督学习。我们要考虑这种单模态、部分模态和全模态的混合训练方式,降低对多模态对齐数据的要求,同时也能更好利用现有单模态、部分模态开源数据;另一方面,要更多地去考虑如何有效建模不同模态信息的细粒度语义对齐问题。

(4)最后,预训练模型的下游应用与迁移能力。主要考虑以下两方面:通过模型压缩与推理加速为特定场景应用提供可能;多模态应用更为丰富,如何拓展更多的创新下游应用。

总结,更多研究创新,更高算力提升,更多知识与数据,将使多模态预训练模型更好、更快、更强。谢谢大家。

3.常建龙(华为云)

尊敬的各位领导、老师、专家,大家好,非常荣幸能参加今天的研讨会,我是来自华为云的常建龙。今天我演讲的主题是华为云盘古大模型。

我们研发大模型的初衷就是希望能改变现在AI 的开发方式,让更多人开发出更高效的模型。当下每个人都需要在一个固定的任务上做很多的定制化,包括数据、模型、调优等等,这个过程其实代价非常高,取得的结果也不见得会非常好。我们希望有一个更大的模型,通过预训练提供一个比较高的基准,在这个基准之上可以在下游进行比较简单的微调,然后就能取得更高精度的结果,可以在不同的任务上面去应用。

为了做到这点,我们主要研发了四大领域的大模型。一个是NLP,这个从2018年开始,很多人一直在做,也是大模型领域最靠前的一块。第二个是CV大模型,视觉领域占了AI任务的大概百分之七八十,也是非常重要的一块。此外是科学计算和多模态模型。科学计算和多模态二者本来就有着比较高的重合度:科学计算主要是要解决分子动力学、海洋、气象等方面的问题,它的数据本质上也是多模态的,既有雷达反馈的数据,又有一些传统算法预测出来的数据,此外还可以把偏微分方程等建模到神经网络中去。如何把这些多领域的知识应用起来,是科学计算大模型需要解决的一个问题。多模态的话,其实就是一些图文,甚至说不同领域的这个语言的数据,怎么把它们更好地结合起来去应用也是一个比较重要的点。当我们把预训练大模型做完了之后,另外一个就是你在下游应用怎么去用,我们会提供一些成套的算法包、算法工具,然后可以基于算法工具去使用。先讲两个单模态的大模型

第一个是盘古NLP大模型,我们当时在做的时候是采用了编码器+解码器这种架构,希望能在不同的任务场景中去用。我们用了大概40TB的数据,训练完之后,它可以在下游的零样本上面取得非常高的一个精度。就说不需要任何的样本,就可以在判断是和否这些问题上面取得一个非常高的一个精度。如果没有一个比较好的训练方法,在训练的时候它的精度到底怎么样也是很难说的。所以大模型这个大数据和大算力之外另外一个很重要的点,可能就是你用了什么样的方法,然后中间是用一些什么样的技巧使得它的性能提升。

另外一块是CV大模型,也是借鉴了我们NLP大模型的一个能力,就是盘古的架构,希望它这块既能做判别又能做生成的方案。大概训了一个30多亿规模的模型,就可以在下游小样本任务上面取得比较高的精度。而现实生活中,除了这种单模态的,一般最常见的就是语言和文本。那么其实在应用的时候,多模态占了很重要的一个环节,主要就是图文。图文在搜索检索等等里会经常用到;另外一方面科学计算里面。假如说我们就要预测分子,那么它的输入其实是多个领域不同模态的一个输入。另外的话我们也在多语言翻译上面做了一些,就是不同的语言输入进来之后,能不能去检索一些同样语义的图片。

我们多模态现在在做的任务其实比较多样。一方面就是图文、音视频等数据的一个检索。然后另外一方面,我们也在做中英和中阿、还有英阿的一些翻译,就是多种语言之间,包括小语种之间的一个翻译任务。那么我们其实用的架构也非常的简单,就是用的多塔模型,是基于之前训练好的单模态模型做的。假如说我们有一个英文的大模型,有有一个中文大模型,还有一个阿语的大模型。然后我们有很多的图像数据。那么我们希望这四个不同数据里面,他们可以相互的去做检索。

除了图文之外,现实生活中很多数据其实是嵌入在非欧空间的。那么这一类的数据就是一个很经典的一个多模态。但是他跟传统的图文不太一样。我们的盘古药物分子大模型,它输入的其实是一个简单的图结构,就是对应于一个化学表达式。那我们希望在这一类数据上面去做一个预训练。然后希望它能生成一些新的分子结构。或者是对于一些新的分子体,我们可以对一些分子进行优化,然后它可以在很多具体的下游分子任务上取得一个比较好的精度。我们在预训练的时候,输入是一个这样的一个分子结构,然后输出是它的化学表达式,中间搭建了一些图网络,加Transformer这样的架构,在大概16亿的分子数据上进行预训练。预训练之后,我们这是有一个demo 的结果。我们可以看到就是它是可以做的。我们可以输入不同,会显示出药物的属性,药物上面的一些属性,比如说这个分子的活性是多少,它的毒性,它的药物属性等等。

最后是我个人对这个大模型的一些见解。

我们去年开始,到现在也做了一年多了,发现大模型其实跟原来的模型之间的一个区别,就是比原来更大了一点,然后参数量更多了一点。然后说这个精度的提升,其实没有宣传中的那么大。它只是在一些特别的场景下,比如说在零样本这个场景或者说小样本的场景上面,他可以表现得比较好。所以我个人认为大模型的训练,它其实本质上还是对大数据的某种记忆,这个从单模态的NLP和CV还有分子大模型这几个大模型的训练中得到的一些经验。

然后要应用起来,需要适配地去用,就是去微调。微调其实相当于是一个对大模型里面记忆出来的数据的一个检索,就是可以给模型少量的样本,用这些少量的样本,唤醒原来在预训练的时候加入大量样本形成的知识。那如果能很高效地去微调,很高效地去唤醒的话,大模型的能力就会比较强。现在小样本这一块,在某些场景上面,它可以做到零样本,就是它不需要提供任何的标签数据,它就可以表现得比较好。但是其实在很多场景还是需要一些样本进行微调。我个人感觉未来的发展,慢慢地才会过渡到零样本。 

另外,越大肯定是越强。现在我个人感觉有点像是15年的时候因为网络变深了之后会更好一样,就是大家都发现变大了之后确实会更好,但是怎么样高效和有效地去训练,就是你算法上面怎么去调优,另外再加速的事,比如说现在用各种开源的框架,英伟达还有微软他们的开源框架去做,怎么做更快,也是一个问题。

谢谢大家,这是我今天的报告。

4.周畅(阿里达摩院)

各位老师好,非常高兴今天能跟大家一起讨论多模态预训练模型和超大规模模型。我来自阿里巴巴达摩院智能计算实验室,今天分享的主要是我们在这方面的工作以及大模型在生态化方面的应用。

首先我们做这个东西从工业化的角度来想,“通用”的思想我觉得一直是AI解放生产力的重要的点,甚至它在所有学科里面,都是一个掌上明珠。其实国内在“通用”方面的事情做得相对不是很好,比如说操作系统、数据库、深度学习框架,基本上都没有开创性的成果,一个很重要的原因就是通用的东西在最开始可能就是没用的。

从工业界的角度来讲,我们更关注的是通用的AI是否在更多的任务上有实际的效果,是否能减少我们在下游任务上需要投入的专家数量和需要的数据标注数量。因为现在通用大模型的发展是比较好的,所以一个自然的问题是,这样的东西是不是一个标准的新的范式,就像之前深度学习对于技术的改造一样。这个问题我们从三方面去入手。

第一方面是我们现在做一个基础技术,包括研究我们的算力到底能到哪一个程度、然后数据量能支持多少。再就是我们现在基础技术里面通用的AI模型,它到底能达到什么?从Transformer开始,其实国外很多,比如DeepMind或OpenAI等,都在研究这种技术,比如最近的Perceiver、Perceiver IO 或者T5、ByT5等工作,其实都在向更通用的方向走,用字节(byte)的输入输出去处理其他各种任务。

第二是假如我们基础技术研究好了之后,那大模型到底对整个产业生态有什么样的影响。如果这个东西不能用,或者不能商业化,或者不能让更多人加入进来,那会是一个比较痛苦的事情。所以第二方面,我们需要从整个大模型的生态入手,看是不是能有更多的人能够被这个模式服务到。

第三是创新化的应用,我们通过多模态预训练到底能不能做到一些以前做不到的事情,并且孵化出一些比较创新的应用。

刚才讲到的M6模型,它是一个decoder-only的结构,非常简单。它的输入里,图像可以用各种方式输入,比如说你可以用VLP的方式直接输入,用切patch加ResNet的方式直接输入,也可以像VinVL或者是OSCAR那样去加一些物体(object)的元素;然后通过不同的掩码(mask)矩阵我们可以调整下游的任务。

M6的总体技术路线分为两条线第一条线是探索通用模型,它的算力和数据到底能支持什么样的规模,凭我们现在的硬件技术到底能做多大规模的事情。去年六月份,我们是一个比较简单的一个基础(base)模型。然后今年一月份有一个128卡的一个稠密(dense)模型。到三月份,我们就把这个稠密的模型用稀疏化的方式去做,把这个规模扩展到千亿。五月份的时候,我们在这个MoE的基础上开发了一下分组MoE 的一个算法。这个算法能成功地把这个规模扩展到万亿,并且能提速五倍以上。过几天云栖大会里面也会去发布我们这个10万亿参数规模的模型。我们用了大概512卡去训,也在算法层面做了一些改进。我们用Sharing-Delinking的方法,能把原来的万亿规模参数通过比较少的代价扩展到10万亿上去。因为前面我们的这个万亿模型已经发布了,我们其实就不用太讲,直接讲那个10万亿方案的构建。

在10万亿模型研发之前,我们看到微软在DeepSpeed之后又做了一些后续工作,叫Zero Infinity。因为GPU的显存不太多,所以DeepSpeed原来通过各种方式做参数和优化器状态的分区(partition),并把多余的东西卸载(offload)到CPU。而内存其实也有限,所以在更大任务上,他们可能会把CPU的东西卸载到SSD上。我们内部讨论过这个方案:极端情况下虽然是能存下,但我们要把模型训练出来、训到收敛,SSD会达到本身写入次数的限制而废掉。

我们就想能不能取巧一把,从算法的角度来把这个事情给简单做一下,因为做完一万亿之后,我们的卡数又不能增加,怎么办?我们的一个简单想法就是,能否先把一万亿训练好,然后在一万亿的基础上,让它通过某种方式变成10万亿。我们借鉴ALBERT的方式,用共享的方式,先把一万亿训好,然后把一万亿的参数扩展十层,它们之间是相互共享的,在训练了一部分之后,再把这个共享的层解耦,就是说原来一开始是大家共享的,之后就不共享了。那这里有一个很自然的问题,就是这么做会不会对最后的收敛有影响,或者说这个取巧是不是划算。所以我们最后也做了大量的实验,包括直接在10万亿的模型上面去做。最后我们的几个结论就是,无论从样本的效率维度,还是时间的效率维度来讲,这种sharing 和delinking的算法—或者说这种P2R(pseudo-to-real)的方式—都是更高效一些的。我们也在小数据集上测过,测到最终大家都收敛的情况, real肯定是更好的,但是差别没有那么想象中的那么大。在资源比较受限的情况下,这种方式是大模型训练的一个可行方案。这就是我们训练10万亿模型时的一个简单想法。

那么10万亿之后,自然就有一个问题,要不要做百万亿规模的模型?其实我们之前也在超算中心的其他老师一起合作,做了一个百万亿的。但是要在现有的基础上去扩得更大,我发现有点乏力,乏力的点就在于ROI(投资回报率)有点低,比如我们阿里云再弄个一千台机器或者一千张卡来做这件事,投入的代价会比较大。我们希望在参数规模上先探索到这里,看看算法或者应用方面的成果能不能跟上这个模型size发展的速度。当然,这件事也还是有很大意义的,毕竟我们现在做的10万亿的模型,相比人脑的1000万亿还是至少少了两个数量级,但体积和耗能跟人脑比起来,还是多很多的。这方面现在也有一些进展,比如说光芯片或者生物芯片,我昨天也问了达摩院的同事,他们说这个的代价和研发成本比较高,但是未来很广阔。也就是说,如果真要更高效地开发算力和数据,可能要从更底层入手。我们的结论是,基于当前的GPU硬件,512卡支持10万亿的模型基本上已经是一个比较恐怖的事情了。

第二方面,我们现在这个大模型它到底在产业化里的一个生态是什么?我们自己其实从今年的四、五月份开始就已经开始服务内部的各大BU(业务单元)了。因为阿里它生态比较复杂,基本上什么应用都有,多模态的也是一样很多的。所以我们一开始就做了一个M6的孵化平台,原来是对内的,然后云栖大会上将对外发布。现在积累下来,基本上内部用户已经有30多个BU每天都在用,每天的调用量基本都在1亿以上。这个平台其实我们想把它做的更系统化、更通用,用户不仅可以直接调用,也可以用比较好的基础代码库去做它的下游任务,各种下游任务的微调,或者也可以用我们的技术去做自己的预训练。

下面就回到了一些创新应用。就是说我们多模态的这个东西在商业里面,它到底能能不能做一些以前不太好做的事情。

这里我们选取一个文到图生成的案例来展示。这个例子的背景比较复杂,就是犀牛新制造。在服饰行业里面,他们原来是需要去请设计师去设计衣服,然后再到线上去测款,有一个非常长的流程,可能要一年。但是用AI的技术,包括我们这里提到的文到图生成,以及后面我们自己做的虚拟试衣(virtual try-on)等,通过这些手段,或者是我们未来还要做的比如说2D到3D的设计等,就直接可以去工厂生产。通过这样一个手段,我们可以把原来很长的一个时间线起码缩短十倍的一个周期。这是我们生成出来的一个图案,它不是StyleGAN的这种无条件的生成,是文到图的生成,是有一个明确的query,这个query 可能来自于说手头最近搜得比较火的一些query。然后输入的query放到M6里面去生成800×800的高清图片。可以看到,生成结果真的能符合query描述,真实感也不错。当然跟设计方面来讲的话,我们现在已经投产。这个在双十一的时候,基本上有三十多家服饰商家在合作。我们跟一些大品牌也有合作,但是不太好说。还有另外一些,就是放大了以后的的例子。鞋类比衣服更好做一些,因为它的版型更加固定。所以你即使把生成的图像放到很大,它的瑕疵(artifacts)也比较少。

创新应用也会有特别具体的需求,并不是我们只用提供文到图生成的能力,问题就解决了,在交互的过程中它会不断给我们提需求。比如给定一张参考图像,你要学它整体的风格;或者给一件衣服,客户觉得它这个领子特别好,希望能保留下来。非常多的这些需求导致我们这个两阶段、自回归的系统,就是把M6左侧图像的patch 变成比如说VQGAN或者VQ-VAE的这个离散码字(code)输入进去的做法,很难保留领子这种事情。所以我们就做了一个非自回归(NAR)的模型。其实图像生成任务本身是一个非自回归的任务(比如StyleGAN),但是要用两阶段的语言模型去做,就变成了自回归任务。因此我们在M6的基础上加入了非自回归的限制,也就是每次迭代只能生成一部分的token。随着迭代越来越多,生成结果也会越来越好。这篇文章也刚被接收了。

接下来是更多的M6的应用,我们从内部的案例里挑选出来一些能说的来介绍。

首先是纯语言模型,M6也能做,因为它是多模态的。我们去年已经在支付宝搜索里全量上线了,这也是去年单模型里面获得最大提升的一个事情。他们原来的基线是BERT。

M6也可以加一些对比损失去做跨模态检索,或者加入排序和召回做推荐,都是有很大提升的。

在Talk2Car这个任务中,给出一个指令,比如说在前面那个绿车前面停下来,它可以找到那个车,我们的embedding就用在了他们这里。

还有一大块是营销文案的生成。这个是跟few-shot有关,原来我们需要十万到百万级别才能工业级可用的,现在我们基本上需要的样本就是原来的5%左右。我们的通过率可以达到百分之八十五以上。这个跟多模态有关,输入不仅是一个title,还可以输入图,因为有图的话,它的覆盖率会很高。另外,我们生成推荐理由的应用,也在阿里小蜜上线了,这个也有一定的转化效果的提升。

还有金融领域的大块文本续写和摘要,可以看到基本上已经是比较成熟的一个方案了。还有像数字人应用的淘宝直播,它会通过ASR(语音识别)把主播的话转化成文字,需要把主播说话时非常口语化的部分去掉,我们也用M6 做了一个尝试,现在也已经上线了。

我们后续的发展方向,算力上会再考虑训练怎么更高效,参数量不太会再往上扩了。算法上会尝试把模型能力做的更加通用,谢谢。

 

讨论嘉宾发言实录

刘成林(中科院自动化所)

我对大模型一直在关注,但这里面的技术细节我不是很清楚,我主要关心大模型到底有什么用。最近一两年,大模型很热闹,但是我们做研究者的,在我们实验室,好像没有人用。我不知道工业界有没有人用,因为下午我们有一个议题是开放环境的自适应,所以我想从分类器设计的角度,设想一下大模型有什么用。因为开放环境的分类器设计,它这里涉及到开放性的问题,一个最大的问题是只要类别数变了、或者环境变了等,分类器的特征表示也得变。但现在深度学习的特征表示跟分类器是联合学习的。那如果说大模型拿来直接用,特征提取就不用做了,然后再把贝叶斯学习也都拿过去,就什么问题都解决了,就只(需要)关心分类器模型就够了。从概率密度估计的角度讲,那这些问题就都解决了,大家知道那个贝叶斯增量学习,它是能保证最优的。现在做的特征提取,就都可以用现成的。希望大家提提看法,如果要做分类,那这个特征提取是不是就不用做了。

王涛(爱奇艺)

最近的大模型,我们公司包括我本人都做了一些调研和研究。首先,我们认为大模型的重要性是无可争议的。深度学习能够突飞猛进,就是因为有ImageNet等一系列预训练模型为基础才发展起来的。但是我们发现,对于视频搜索、视频摘要,视频创作,比如说生成剧照、改写剧本等实际应用时,单模态小模型不但精度有限,而且很难解决跨模态的语义描述和表达生成问题;因而我们业务对多模态预训练模型是非常急需、非常期待的。比如用中文检索视频,如果是用图像来描述查询条件,就很难说清楚。但是通过输入文字,就可以轻松地通过图文大模型统一特征把视频结果找到。最近我们也在做视频摘要,通过剧情简介或者剧本的文字描述,利用大模型来检索对应的镜头,就可以通过脚本分镜剪辑的方法来高效生成短视频。

实验过程中,我们看到了一些问题。首先国内的大模型,我们测了智源、自动化所、还有盘古的。虽然国内大模型进展很快,已经到了千万亿参数的水平,但是精度还不够高。大模型除了要快速学习,还要看从数据中能否有效学习,是不是学出的性能很好。我觉得这两个方面确实有些问题。我在图文检索上实验大模型性能,发现Open AI 的CLIP的性能更好。它通过4亿图文对训练,不但文本encoder抽取出语义特征,而且用不同的说法说一句话,也能编码出一致、有效的特征,例如“恩施有哪些景点?恩施有什么好玩儿的?”。通过文本特征在图像特征空间中查找,可以匹配出语义相似的图片。反之,在输入图像后,也可以找到对应的文本描述。所以我觉得,模型有效性是我们接下来需要努力的方向。

这里边还需要探讨下列问题:第一、模型参数量多大为好?如果模型再增大了,可能ROI收益不一定更高。第二、数据量多大才行?比如文澜有6亿图文对,虽然收集处理这些数据成本非常高,但是清洗后真正的有效数据是多少?智源、紫东太初、盘古、M6等训练数据能不能通过合作获得更大的数据集?第三、虽然有很多视频数据,但是里面的画面、文本、音频长序列数据都很难标注和对齐,如何才能用于多模态大模型的有效训练?第四、Encoder、Decoder能否抽取出知识和记忆。这些需要研究的问题都很有挑战和价值。

张祥雨(旷视研究院)

首先,我想就刘老师刚刚提到的问题,发表一下我自己的看法。

我认为视觉,至少在目前基于deep learning的视觉算法中,大家研究的核心问题还是如何构建更好的表征。对于大模型,我认为它的一个最重要的作用是,我们的视觉中涉及到各种视觉元素以及视觉相关的元素,比如NLP、声音等,都能合到一个统一的空间,本质还是一种表征学习。

它为什么非常有用呢?假如说我们可以把视觉上的所有概念都嵌入到一个特征空间里去,并且这个特征空间的几何形状以及它的距离度量是符合人对这些知识的认知先验的,比如两个概念比较近的事物,它的特征距离就比较近的话,那么就可以认为这是一个好的特征。而大模型,包括视觉大模型或者多模态模型,我认为是通向这种表征的通路。

至于说它能做什么?我们知道,如果我们对各种视觉元素的特征空间有一个比较好的先验刻画,那么就只需要很少的样本、或者是一些有偏的样本,就可以帮助去完成下游的很多任务,比如专门领域的分类任务等等。这也是目前视觉的大模型的最重要价值之一。

另一方面,从目前我们看到的方法来看,大模型的主要局限也恰恰是只能提供表征上。我们知道,表征学习有它的优势,也有它的问题,比如它对因果关系刻画不好,它更多的是这种相关性。所以我觉得这里还是有些问题,就跟那些传统的方法相比,比如知识图谱等,它还是在能力上也是有一定的欠缺。

然后我也是想问另一个问题,尤其想问在工业界的同事们,就是大模型我们看中的价值更多的还是它的通用性。但是落实到具体的每个任务上,大模型的ROI到底怎么样?因为我的感觉是,我们要把大模型训练好并用起来,肯定是要有非常大的投资,但到下游的时候,比如要用到天气预报里,我们还是得做不少额外的工作。这样的话,整个系统投入产出比是不是偏低了呢?

常建龙(华为云)

大家好,我是华为常建龙。我刚才听刘老师在说大模型怎么用,然后祥雨这边也是关于怎么用的问题。

对于NLP的大模型,我们是期望所有的人,就是所有的用户,都只用共用我们一个大模型。然后,很多客户需要做他的任务的时候,他只要给数据。那么我基于这个大模型做微调,而这个过程中大模型本身是不会变的,我可以只给一个非常小的小网络,然后让它去学习一个小网络。这个小网络和大网络是联合在一起的,它们两个是紧密相连的,但客户只能看到小的,他用的时候呢,他只能和大的绑到一起用,就是提特征,然后对特征进行一个二次加工这样用。

周畅(阿里达摩院)

根据我们这几个月在内部的一个经验,有一些团队是会利用大模型的,有些团队不会用,而哪些团队会用呢?就是那些本身科学家比较少的、或者是本身那个场景数量很少的,会非常积极的去用。因为他不用,就没办法做好,就做不好。而哪些人不会用呢,比如说搜索推荐,因为它的数据非常多,那它这个数据跟open 的那种数据分布也非常不一样,所以呢它不需要用,或者是说它用大模型的ROI不高,用了跟没用比也不会多很多。所以对他们来讲没有太大的差异。目前应用的情况大概是这样。

但是换一个角度讲,很多的中小团队,或者说他们自己本身的数据量没有那么多,或者是一个新兴的业务,(大模型)这个东西就非常重要。比如说我刚才最后举的那个例子,就是数字人直播,你要给他写个ASR,把ASR的剧本转换成一个数字人可以播的剧本,现在的样本总共不到一千条,样本的长度可能有两千多个字,这时候要从头来做一个模型来做这件事情,基本上就是很不可能。

程明明(南开大学)

刚才听到各位的发言,我学到很多,有一些看法也跟大家分享一下。

首先第一点,大模型为什么很重要,我个人的一个理解,是跟我们ImageNet 出来之前一样,我们去搞各种各样的一些模型,因为数据量很小,所以我们的思维空间是受到限制的。比如说今天让我们找到一块小平地说怎么做一个交通工具,他跑的最快。因为我们就看到这一块小平地,我们就不会去想到什么高铁之类的,不会去想到和用到轨道这些东西。我们现在有了这样一个特别大的模型,继而我们才有可能有更大的一个探索空间。这个探索空间里面,也许今天没发现什么东西,但可能会存在一些非常重要的东西。

刚才也提到了说我们人的神经元,大概有一千多万亿个连接,但是我们现在最大的模型,出于资源的限制,还依旧在十万亿的级别。可能长期来讲的话,至少得有人或是一些组,当然不一定是每个组,得去探索这样一个很重要的大模型。也许会有重要的一些新发现。

当然,还有一个问题就是,刚才也有老师提到说这样一个大模型,好像我们现在用的比较少,我们自己目前也没用到过这个大模型,大部分人确实用不了,这时候也要提一个问题,就是对这个大模型,一方面是在一个资源非常丰沛的环境里面,我们真的去探索一些未知的世界;另一方面是这样一个大模型,怎么样能够去给更多的研究者提供一个方便使用的接口或者是一个途径,我觉得这个也是一个挺重要的问题。

常建龙(华为云)

从工业角度来看,对一般的客户,用的时候只要给我数据,我直接给你算结果,把结果给你。然后,对于专家的话,他可能要进行二次开发。这时候我用大模型来提供特征,然后下游想要怎么用就怎么去用。

王兴刚(华中科技大学)

OK,我作为用户,我觉得我们实验室其实是在用大模型,就是OpenAI的CLIP模型。因为他本身很小,图像的encoder就是ResNet-50的,文本encoder也是一个很小的Transformer。在我们实验室内部可以跑的飞起,这个模型不加密,也不要钱,而且跑的很快。我不知道我说的对不对。

周畅(阿里达摩院)

对。我们其实也在做那个平台,其实我们提供的东西就是我们有接口,因为有接口,然后大家可以直接在我们的checkpoint 上去做finetune。可以去自定义自己的任何任务。我觉得对于学术来讲的话,也是比较好的,大家可以在阿里云的平台上面玩起来。

但对于这个checkpoint能不能开源,就是因为它是巨大的模型,肯定是不太好开源的,会不太好。这个的一个原因就是包括当时OpenAI CILP和GPT-3都有讲到,就是会有很多伦理性的问题。而且你如果不追踪的话,可能如果出了伦理性的问题,那么找谁承担这法律责任,这都是我们大模型会去考虑的。但是如果小模型的话,我们其实就会公开出来,但这个小模型其实也是在非常大量的数据里面训出来的。

我们希望说有一个比较好的一个community,把工业界和学术界的人都connect 在一起,然后大家可以做更多的事情。因为国内在做system或者是通用性的东西上面,一直都比较薄弱。我现在觉得我们能不能结合一点力量,把这个做的更系统化一些,让我们国产的也有自己的一片天地

王兴刚(华中科技大学)

我想接着请教一个问题,因为我们今天其实是视觉的一个研讨会,所以大模型能否有助于解决一些视觉基础问题很关键,比如物体的定位、检测、分割、场景的三维估计、3d depth、文本的定位等一些问题。但现在看到的这种大模型,它可能是在分类,或者说表征学习上面取得很好的效果。但我从来没有见过,它能够零样本去做一些定位分割、或者是说场景的三维理解。刚才卢老师讲到这个模型好像学习得到了一些知识,但是我从来没有见过大模型能够有一些真正的这种视觉知识。比如我女儿两岁,我觉得她其实就比大模型强不少,她至少这个深度信息还是有很强的感知。她知道物体是可以去拿、可以去定位的。所以我很好奇大模型对视觉的一些定位、深度估计、场景的理解等方面有没有一些帮助。就这个问题,我特别想请教刘静老师,我其实也特别想知道是否有方法训练大模型,使得它能够对于基础的视觉问题能够有一个质的提升。

马占宇(北京邮电大学)

对不起,我正好跟兴刚也问一个问题,刚才很多老师在讲,就是我们在训练模型的时候,可以引入知识,那么引入知识的作用究竟是补充,还是来替代?就是刚才提到的暴力美学大数据,通过大模型大算力达到预期的效果。所以,如果能用知识有针对性地替代一部分数据,就不需要这么多数据量了?还是说就跟小孩儿上课一样,反正你这个学校上课学、其他地方比如课外班也学,见得多了,最后考试就可能会考的更好了?我感觉,现在是不是就是什么都学、什么都看这样的效果好,但是如果我们能够从知识的角度,真的充分利用它,我们引入一部分知识后,另一部分是不是就可以不用了。这样的话我们的模型是不是也不一定非要做的那么那么大或者是那么复杂,这是我的一个问题。谢谢。

刘静(中科院自动化所)

我试着回答一下两位老师的问题。一个就是王老师刚才问到这个定位能力问题,首先我觉得大模型,它学到的是一种通用知识,到具体的一些下游任务,他能做的是在小样本低资源情况下对具体任务的知识迁移与性能优化。

我本人在做语义分割任务,大家都知道语义分割的backbone非常重要,从FCN出来以后,实际上每一轮backbone的改进,都会带来语义分割任务上的性能提升。同样,各种有监督、无监督视觉预训练大模型提出以后,语义分割的性能也得到了响应提升,但通常都是将语义分割视为下游任务上进行模型微调来实现的。现有基于Transformer的视觉大模型,可以给出基于注意力机制的细粒度语义关联信息(如patch、区域等)。所以我觉得大模型可以在一些定位或者或者细粒度理解任务上,给出了一些不错的效果。但到底说,这种大模型能不能完全做到零样本,至少我觉得现在还不可以,还是需要domain数据,只是相比全监督时代,可以数据比原来更少、但性能可以比原来更好。

有关马老师提到知识方面,我觉得是一个非常好的问题,值得我们认真思考,这里我简单谈一下我的个人看法。我个人认为现在这种完全数据驱动的模式是很难一直走到底的。我觉得应该会向着知识和数据混合驱动的方式发展。那么知识在这个模型里到底可以起到什么作用?其实我个人也有一些思考。首先,就是知识能帮我们去筛选大数据。现在这么多数据,这个数据里面各种嘈杂的信息非常多。就像我们人实际上面对一项具体任务时,第一步就是有用信息过滤,而且十分高效。所以,我觉得知识首先可以用来帮助我们筛选有用数据。另一方面,可以通过知识发现(或探测)与知识嵌入,帮助我们去设计更好的模型。大模型效果好除了对大数据有很强的拟合能力,应该也可以学到知识,但它习得的知识是隐式的,或者说我们还不能理解,跟我们人类现在的常识,可能并没有一个明确的关联。所以如何把大模型这种隐式知识跟我们人类已有知识进行关联,我觉得这是可以做的。除此,怎么把现有的这种显式的知识,比如知识图谱等,嵌入到模型结构中,对于CNN我们是很清楚的,每一层在干什么,从低到高,其实知识都可以嵌入到各层,而Transformer 没有CNN这么明确的从低到高的语义抽象,该如何嵌入,使得模型更高效、更准确,可以深入探讨。谢谢。

常建龙(华为云)

嗯,大家好,我想再补充一下,这个大模型现在都讨论知识啊什么这些,其实我们认为大模型它本质上还是在做一个记忆。那么,怎么样去让模型能记得更好,怎么样让大模型训练的更好,这个其实是一个本质的问题。如果这一步做好了,在下游应用的时候,包括零样本的推理,或者说小样本的微调,用很少的样本直接去唤醒在大数据训练的模型里面的知识,所以,我觉得还是分为这两步去做。但现在只是在做第一步,就是我们怎么样更好的把这些这么大规模的数据存到这个网络中去。那从这个过程里面看来,就是前途还是非常困难的。

卢志武(中国人民大学)

首先,我不同意他的观点。如果是个记忆的话,那何必要做大模型呢?直接做检索还能快一些。在多模态训练这边,我觉得模型还是学到了一些东西的,而不是都是从数据来的。我们一开始其实就特别担心这一点,担心模型是纯记忆的,所以我们做了很多实验去验证。结果表明,它是可以学到数据以外的东西的,而同时数据存在的东西它也能学到。当然了,它肯定是个混合的,有一部分是记忆的,有一部分是学到的,还是学到了一些迁移的能力,所以它学到的是个综合性的能力。不能说预训练模型就是靠记忆,那等于整个方向都否了,那还能做什么呢?

第二个,我回答一下王涛老师的问题,他可能在英文VOC数据集上测了我们的模型,测的结果不好,我要解释一下,其实是因为我们的模型没有做任何的数据清洗,更强调整体句子语义的匹配,不适用单个目标分类任务。但是,我们为什么坚持这么做,因为我们认为,我们大模型还是要有一点非理性的思维在里面。训练的时候当然可以把数据清洗的很好,然后把分类做好,但那有什么意义呢?因为CLIP已经做的很好了,那我们就不要再搞一个CLIP。我们考虑的是,加一点非理性的东西,其实在很多的一些场景下,比如说做视频剪辑,那我们对比了很多对标的,我们目前是做的挺好的。为什么呢?就是因为他有非理性思维在里面,说白了它就是有“艺术范儿”的,所以他就可以在有些任务上做的好一点。这是我的观点。

刘静(中科院自动化所)

我也接着这个话题谈下我个人看法,我个人认可,大模型具有很强的记忆能力。也与人的学习类似,我们常说,熟读古诗三百首,不会作诗也会吟。

实际上,人的学习是一个记忆再加上有外界环境、或者有老师指导的学习,是一个不断积累的过程。所以首先是大数据记忆住,然后通过设计更好的模型,可以学到一些知识,比如卢老师这边模型设计的好了,那么它就可以学到一些知识,然后慢慢的把数据变换成知识。只是它的知识可能是隐式的。我们怎么把这个知识跟我们现在的显式知识去关联可能现在还没有好的解决方案。现在的预训练都是一种基于Softmax、或者是一些回归、或者对比损失等的端对端训练方式。但人在学习的过程中,是有一个不断试错的过程,或者是需要进学校、由老师指导学习的。基于此,我们是不是可以引入强化学习机制,把环境反馈引入进来。我觉得这个可能也是需要去尝试的一个方向。

卢策吾(上海交通大学)

大家好,我是上海交通大学的卢策吾。我其实在很多场合都听到过关于大模型的记忆、常识等的讨论,我们辩论了很久,我觉得这个问题其实我们可以换个角度看。

这个问题,其实我们在这里定性的聊,可能很难聊清楚。那我有个小小建议说,我们因为做学术界,可以把这个问题给变成一个一个学术的一个小分支领域,像物体检测、分割一样,就是让我们能去探索究竟这个模型里面是记忆和常识。我们可以定义一些比如一些标准,比如怎么去判断它的记忆是什么、常识是什么,然后形成一个metric,再用一个固定的测试集,那么每个大模型来,就可以判断是记忆的成分多还是常识的成分多。我们学术圈的人可能训不了大模型,但是我们做分析评测是可以的。可以测试比如说记忆成分多少,比如之前有的图片,那这个大模型能不能得到相近的图片,得不到,那可能就是记忆性偏多了;而常识就比较难了,就是模型能不能在里面进行推理等。那在这里我只是抛砖引玉,想的还不是很充分,可以有一个学术领域来真正的、定量的去搞明白,那以后我们下次讨论的就不是在这里说究竟是记忆还是常识的辩论了,而是可以直接去拿数据说话。

胡瀚(微软)

大家好,我是微软胡瀚。我讲一下我自己的观点。 

第一点,我觉得多模态对于视觉领域或者整个领域来说,都是一个很好的机会。我觉得我们可能思考问题可以从以前更多地考虑表征学习的角度,就是刘成林老师还有祥雨刚才提到的表征学习,到更多地思考语义学习。事实上,我们以前更多会关注表征学习,但我们视觉的目标其实是需要去理解场景的语义。以前我们的很多视觉任务定义的类别都比较少。例如分类可能就是做1000类分类;做检测,coco有80类;做分割,ADE20K是150类。现在,因为多模态,我们可能可以去思考如何做包含更多语义的各种视觉任务,可以是扩展到几万个类别,也可以是其他的语义形式。但是如何去定义清楚各种问题,建立合理的benchmark,对于领域来说可能是一个很重要的问题。

第二点,就是关于兴刚老师刚才那个问题我发表下自己的观点,也就是多模态或者大模型,能不能帮助去做检测或者分割的问题。我个人对此是乐观的,检测分割可以分为两个方面,一是做定位,这个我觉得可能不需要通过大模型或者多模态来做。二是大类别,这个我觉得多模态可能是必须的。做好定位,加上多模态提供的丰富语义,我认为就可以做到大类别的检测分割了。

第三点,我觉得我们可能要把大模型跟多模态区分开。多模态其实不需要大模型,尤其像CLIP,一个小的ResNet50级别的模型就可以做的很好了。所以我觉得学术界其实是可以广泛参与这个研究的,就是可以在一个相对小规模的模型上去做很多很多的问题。当然你可以依赖于一个公开的预训练模型,例如CLIP,也可以自己去预训练这个模型,可以在数据上下功夫,至于模型本身是可以小一些的。 

以上就是我的一些个人观点。

王兴刚(华中科技大学)

不好意思,我回答胡瀚的那个问题。我觉得定位这个问题可能没有那么简单。

主要有两个角度,首先,我觉得这个任务还远远没有完全的完成,其实还是很难很难,还没有做完。第二个就是这个学习模式。现在这个学习模式,都是标一个框学一个框,标一个像素学一个像素,这个是可以的。但是我觉得这不是人的学习方式,人的方式并不是像大模型一样,毕竟我没有给他那么多的标注,他最后还是学到了,我觉得大模型可能是解决定位的一个终极思路,因为人可能是这样做的。

胡瀚(微软)

这个我部分是认同的,做定位可能需要大模型,包括大模型和大数据来实现的。但是不一定是多模态。多模态的话,其实更多的是想去把这个视觉信号跟语言联系起来。至于定位这个问题,确实可能是需要很多很多的数据以及模型,需要表示能力足够才能够实现的。

袁晓彤(南京信息工程大学)

大家好,我是南京信息工程大学袁晓彤。今天很高兴能够学到这么多关于大模型的最新进展。我本身并不做这个大模型,但我感觉确实是一个非常激动人心的研究方向。那么这个模型越来越大,泛化能力也很强,然后性能层面的进展也不错。但是我有一个问题想请教各位做大模型的老师或者工业界的同仁,因为模型越来越大嘛,但是这个模型最终可能需要在工业界或者学术界部署应用。特别是在工业界的话,可能还涉及到上线的问题。但可能有些业务对模型的大小和规模是有一个限制的。那么这种情况下我就想问一个问题,这种大模型如果真的用到实际产品中去,它的可压缩性怎么样?比如用剪枝、量化或者蒸馏等压缩技术对这种大模型的实际性能有没有什么影响?想请教一下。谢谢。

张祥雨(旷视研究院)

我接着刚刚卢老师的那个思路,就是说如何提一个metric来衡量大模型的好坏,我发表一下我的观点。我研究过一段时间“什么样的特征是好的”这个问题。我觉得其实大家可能不必要纠结什么是记忆、什么是常识,它都是属于feature learning的一部分。而在feature learning中的关键问题在于,你要找到一个指标来度量什么样的特征属于好的特征。有一个非常经典的一个理论,叫Information Bottleneck,它认为一个好的特征,应该满足对信源的充分压缩、同时与下游标签的互信息要尽可能的大,要同时完成这两个目标。比如最近马毅老师的MCR²(基于Coding Rate Reduction)理论,其实也是在说明这个,只不过他们把Information Bottleneck用更为定量的方式进行了计算。对于模型来说,虽然不知道下游是什么,但我们可以设想一个好的特征应该是什么样的,首先就像刚刚说的,它要对信源进行一定程度的记忆,但又不能全部记忆,相当于要用最小的码长来把信源的原貌尽可能的刻画出来。同时,要保证得到的表征跟下游任务的互信息尽可能大,就是要保留下游所需要的各种信息。那这里就存在一个矛盾,就是说如果连下游都不知道,那么这个互信息是什么呢?其实最近的对比学习背后的理论其实是MINE(神经网络互信息估计器,Mutual Information Neural Estimator),它是在最大化这个互信息的下界。这套理论蕴含了一个原理,就是如果不知道下游任务是什么,具体需要什么样的特征,那么我们就需要尽可能保持无知,保持它是一个最大熵的状态,也就是说要让特征尽可能分布在整个特征空间,它认为这样的特征更好。

所以回到刚刚卢老师这个问题,能不能设计一个度量来衡量特征的好与不好,我认为这种从特征本身的统计分布入手的思路是非常有希望的。此外龙明盛老师他们组提出的LogME,从causality的maximum evidence出发找特征跟下游任务表现之间的相关性,也是一种非常有意思的思路。

黄高(清华大学)

我想回应一下刚才有关记忆的问题。我认为跟记忆相对的概念是泛化。如果纯粹是记忆,那就不具有泛化能力。这个问题其实在2017年,Yoshua Bengio有一篇发表在ICML上的文章,叫《A Closer Look at Memorization in Deep Networks》。他们做了一个很有意思的实验:测试集不动,训练集标签打乱,比如把猫标成狗,引入这种明显的错误标签。根据经典的机器学习理论,我们通常假设能够泛化的拟合函数是光滑的。在样本空间中,某个区域可能都对应于狗的类别,那么他们做的事情相当于在中间挖了一个洞,把这个样本标成了猫。如果一个模型能学对,那它一定是一个记忆,因为这违背了光滑性假设,很难具备泛化能力。他们发现在神经网络训练的开始阶段,会倾向于学出光滑的函数,它学到的特征在干净的测试集上性能是往上涨的;但是到后期它就会开始过拟合,测试集性能会掉,而训练集一直在涨。所以他们发现神经网络还是会优先去学可泛化的特征,到后期才会去记忆。这篇论文还给出了一个指标去刻画模型到底是在记忆还是泛化。什么叫记忆呢?简单说就是训练好的模型在某个样本上做对了,但是你给它加一个小的扰动,它可能马上就做错了,这其实就是不鲁棒的一个表现,也就是说它更多地在记忆,而不是在做可泛化的特征学习。基于这个思想,他们定义了一个敏感度指标,即在一个样本周围去加一个的扰动,看模型是否把本来能做对的样本做错。因此,这篇文章实际上给出了一个具体评估模型到底是在做记忆还是在做泛化的方法。

张祥雨(旷视研究院)

回答一下刚刚袁老师的问题,就是超大模型我们要怎么实际使用。从我们这边的实践来看,第一个方式是可以用来清洗数据集,比如可以在无标签的数据集上用超大模型打标签,然后直接训练小模型,这是最直接的一种半监督的使用方式。通常我们会逐级做,用大模型打中模型的伪标签,中模型打小模型的伪标签,一级级训练,从而得到小模型。第二种方案类似现在NLP中非常火的prompt方法,它跟蒸馏其实非常像,它相当于预先找到了一个最佳的特征,你可以让小模型向这个特征空间靠、把特征对齐就可以了。第三种方法就是化简,比如用传统的模型剪枝等策略。根据我们的实践经验,这种方法不是特别有效,尤其是模型大小相差一个数量级的情况下,想直接把超大模型化简到实际业务可用的复杂度规模还是比较困难的。

查红彬(北京大学)

刚刚我们聊到大模型训练过程中的记忆和常识问题,我记得很多认知科学教科书中讲记忆的时候通常会跟注意力机制一起来讲,因为单纯的记忆可能说明不了人的一些认知能力,应该更多地跟环境、跟任务结合起来,所以通常会跟注意力机制结合起来讲。那这里我就有一个很大的疑惑,现在我们看到,训练出的大模型的判断能力有提高,好像也有很多的应用可能性。这个逻辑很简单,你给它的数据越多,包括场景、数据分布、不确定性等因素的采样越多,它当然能力会提高。但关键是,这种学习方式是不是我们人工智能中所讲的泛化能力?反过来说,会不会我们沿着这条路走下去,发现是个弯路?我们是做计算机视觉的,这里包括了视觉的两部分,第一部分是数据获取,第二部分是数据处理和理解。现在我们用数据驱动的方式,用这种大数据来训练,根本上把这两件事割裂开了。但是从人的生物认知的角度来看,数据获取和处理过程是分不开的。数据是怎么来的,去找什么样的重要数据,这也是机器应该通过学习而获得的能力。但是现在我们将数据获取与处理过程割裂开了,如果这种状态时间长了以后,可能会影响大家对前一部分工作的兴趣。所以我觉得这里应该更多地把它们融合起来,不是说数据都给你,你去训练吧,生物应该不是这么做的。

卢策吾(上海交通大学)

关于刚才讲的数据、记忆和常识,我个人觉得,我们追求的记忆其实是在空间上进行插值。我们追求好的、光滑的特征都是为了插值。那么插值究竟好还是不好呢?有两种情况我觉得是可以的。第一种是我们如果能有一种便宜的办法,把人类的所有数据都采下来,这种暴力做法是可以的,但好像不太现实。第二种是我们这种插值刚好插到人类的常识上,也是可以的。所以我觉得记忆之上要有常识是因为如果我们能从经验中总结出一种常识,那么面对开放环境,我们会更有确定性。这条路是很难的,我觉得现在我也讲不出什么方案。但我们如果放弃,或者对这条路的探索的力度比较小的话,可能会丧失一些机会。

黄岩(中科院自动化所)

关于记忆方面,我们其实有一些探索,给大家分享一下。

我们试过基于一个模型去外挂一个记忆,类似于那个神经图灵机一样,想让它去学到一些所谓的常识或者规律性出现的一些目标之间的关系等等,但是发现本质上来讲,它们在原有模型基础上的提升是比较有限的,而且学习到的一些东西也不是那么容易解释的,大部分都是一些拟合出的统计性的规律。

我们尝试的第二种方式是纯粹从知识图谱之类的标注数据中抽出一些类似于三元组的所谓先验知识,没有加入训练,只是用来测试。怎么测呢?就是说我发现包括刚才有包括王兴刚老师提到的CLIP其实是一个很好的模型了,但是它也有它的问题,包括提到了它的小样本、处理数量问题等等问题。我们就没有训练,直接把它的结果拿过来测试,来做检索任务,发现它已经达到了一个比较好的结果。比如它Recall@10大概是90%,但是Recall@1比较低,我们就直接把它的结果利用刚才提到的所谓的先验知识去进行一种重排序,发现还能够在它的基础上继续提升一些性能。我们后来分析为什么会出现这种情况,发现CLIP其实在80%~90%的数据上表现都还挺不错,但是在一些比较难的场景的图片上,它检索排名较高的一些图片其实都有很明显的违反常理的情况出现。比如我搜索“一条白色的狗和一个人在过马路”,很多搜出的图片都只有一个人或者一条狗,或者数量上有其他明显的问题。所以我们通过加入一些先验,比如做颜色判断、关系判断、目标判断、行为判断,就可以很容易地把一些排名较高的一些检索结果踢下去,对结果是有帮助的。所以刚才说记忆在什么地方可以发挥作用,其实不只是筛选数据,也可以用在一些后处理上。当拟合的模型已经做得很好的时候,我们还可以通过先验对它进行调优。

王涛(爱奇艺)

我感觉多模态大模型最主要的意义,不再是解决低水平视觉的物体定位和标签分类问题,而是利用多种模态信息来解决语义理解和内容生成的高层次问题。这时,识别的语义空间就不仅仅是一个标签了,而是一句话。小说和电影通常是很长的一段,比如一个段落有几百个字,一篇文章甚至可能是上万字,分成几个章节,此时就需要处理“更长序列”信息的encoder的语义理解和decoder的内容生成能力。

刚才,几位讲者的工作都非常优秀,能用上亿的数据把大模型训练出来,非常不容易。我有一个问题,您们是怎么从网上收集、清洗这些含有噪声的数据的?另外,这里还涉及到文本处理长度的问题。因为网页中图片对应的文字可能很长,而text encoder输入长度通常默认限制到77个字符,您们是怎么解决这个问题的?因为大家已经有算力和训练方法了,那接下来如何收集、清洗和处理长序列数据就是很重要的问题了。

卢志武(中国人民大学)

这确实是一个很严重的问题。阿里有条件,他们有很多商品的数据,可能稍微好一点,质量高一点,但是我们拿不到。我们只能爬取数据,爬的话肯定会有很多噪声。我们当时只做了很简单的清洗,还特意把很多看起来质量不好的数据留着,就是想看看最后模型会变成什么样。我们没有像CLIP一样弄个字典,把某些数据过滤掉,这可能也解释了刚才黄老师说的,为什么CLIP在有的情况下不行,这跟数据清洗也有关系,因为它把长尾词都去掉了。这就是为什么我们不清洗数据,反而在有的场景有意想不到的结果。比如华为试用的效果已经很好了。然后我们做视频剪辑,我们对数据什么都不处理,直接做,好像剪出来的效果比快手特意设计的,还要好很多。那它的这种能力是怎么来的,为什么会这样?总之,我感觉预训练可能还要定两个目标,一个就是说那种精确的任务上我要做的好,另一个就是说可能还是要注重它的推理,特别是不那么精确的推理,我也不知道怎么表达这个事情。反正,我感觉我会坚定的走这个通用的路线,就是不要要求它去单独在分类上做那么好,它做不到,但整句话去匹配/理解就可能比一般的模型好。

刘静(中科院自动化所)

我觉得对多模态预训练大模型来说,用质量好的数据训练出的模型肯定会比用质量不好的数据训出的模型好。我们其实在数据收集上还是做了更多自动清洗工作。我们采用的是数据和模型迭代优化的方式,用数据优化模型,反过来用模型筛选数据。刚刚王老师说的文本长度问题,可能超过几百字的文本我们就不会去爬。另外我们会维护一个很大的基础词库,在模型和数据更新的过程中我们会不断去更新、扩展这个词库,对文本做基本的过滤。我们希望通过低代价的自动清洗方式获取大规模、高质量的数据,训练大模型。我觉得至少现在来看,这对提升性能来说可能是一种有效方式。

刘青山(南京信息工程大学)

我想问两个问题。第一,刚才很多讲者都展示了大模型学到的可视化结果,是有一定语义信息的。但是从结果来看,实际上还是有很大的一个错误率。有没有去分析这些错误的问题到底是出在哪里?第二,从经济性的角度来说,堆数据、堆机器的这种做法高校实际上基本是做不了的,不可能有这么多钱去做这件事情,那就只能剩下企业去做,但从刚刚听的这几个大模型来看,实际上大的想法都是基于Transformer的思路下来的。那是不是做的还是属于这种小修小补。这样的话,从大模型的设计的角度来看,似乎没有一个很强的一个理论指导。就这块我不知道大家怎么看这个事情。

再发散一点想,这个大模型,就是说刚刚阿里的周老师讲的,我先从这个十亿到百亿等一步步的提上来。那这个东西就有点像我们做超分辨率一样,我把这个先用四分之一,然后二分之一,再一倍一倍按级联的方式倍增。如果真是能够按照这样的思路去做,那我们后面的一些研究,包括使用的情况,可能都有好处。我觉得这些东西可能做这个大模型的人,可以去想一想,也便于我们高校的人能够去下一步去做一点参与,包括能够很好的去做一些使用。我的问题可能有点发散了,但是,也是值得讨论的。

常建龙(华为云)

我个人感觉NLP模型在变大了之后,带来的性能增益确实是比较大的。本质上可能就是数据多了,模型大了一点,但算法本身很少有进一步的优化,就是主要可能还是一个工程的问题。感觉跟研究还不是太一样。但研究上面,我个人感觉现在比较急切的是怎么样更好的去训它,或者说怎么样更优的去训练,怎么样更快地去训,比如等训完了之后,怎么样把这个千亿的参数模型更好地扩展到万亿上面。这样万亿不是从零开始训,而是在千亿的这个基础上面开始训。

程明明(南开大学)

我刚才在听的过程中我也很困惑,我还跟黄高讨论了一下。我感觉视觉里面的大模型有两个含义,一个就是说我们的模型参数量真的很大。另一个是说我们数据量很大,模型可能不一定很大。我听的过程中,从兴刚的发言里面,感觉到好像也有一类所谓的大模型,其实那个模型本身、参数量其实并没有变大,只是说我们用的这个训练数据变得很大了后,我们现在也把它叫大模型,它的数据量大,但其实它的计算量和参数量并没有变大。

刘洋(北京大学)

对,是有这一类模型的,他们预训练数据很大,但模型参数量本身不大,比如OpenAI提出的 CLIP 模型,在高校工作的我们,也可以在某种意义上成为这种大规模预训练模型的受益者。 简单来说,仅通过网络前传,我们便可以提取到图像或文本泛化性比较好的表征,这个过程是不需要消耗大量计算资源的。比如,在视频检索领域,我们今年CVPR有个工作,采用迁移学习的思想,尝试提高多模态跨域场景下的视频检索性能,然而后续实验中我们发现,采用大规模预训练模型提取的图像、文本特征明显具有更好的泛化能力。刚才王兴刚老师也有提到Zero-shot 的方向,最近也有一些研究人员利用预训练模型的泛化性能来做零样本或少样本问题,在物体检测、跟踪等应用方向上也有了一些比较成功的尝试。

另外,我有一个问题想在这边跟大家探讨,目前我们看到预训练大模型的性能是很好的。但是它真的是我们实现人工智能的一个必经之路吗?我之前看到有一些心理学家,比如说Linda Smith的一些论文,她说婴儿在非常早期的时候,也没去过很多环境,也没有很多记忆的素材,但他们就可以开始完成物体的抓取,或者至少能识别到物体的边界,完成一部分动作了。所以我想请问一下这边从事了很长时间预训练的研究人员,大家觉得通过大数据多模态预训练是我们实现智能的一个必经之路吗?

常建龙(华为云)

这个问题非常大了,我觉得大模型可能只是说它现在能在某个行业上面,它泛化性确实比较强,微调之后,立马性能非常高。另外,我个人感觉,就是可能这个实现所谓人工智能和人脑不一定非要一样,就是婴儿他确实没有见过很多新鲜的东西,但是就跟就你刚才说抓取这一类,他其实还是在日常生活中接触的量还是非常大的,他其实时时刻刻都在学习。

周畅(阿里达摩院)

我觉得整个的科学的发展,它本身就是一个螺旋式上升的。所以你说它是不是,或者我们要不要做大模型,那首先得有人探。在国外发现大模型好用之后,我们跟进探索一下,我觉得也是一个正常的思路。然后它是不是这个必由之路?我觉得就看我们这个探索过程当中,你是不是有新的发现嘛。

假如说我们做的过程中发现这个模型变大确实能给各位带来足够大的insight,我觉得可能后面有一天大家真的要用大模型的时候,那我们发现这个东西是好的。就比如说我们现在用大模型的技术,其实都是人家18年开始做的这种底层的东西。只不过2020年的时候,GPT-3火了之后,大家说我们应该做大模型,其实人家早就开始研究了。我说这个目的就是说大家的研究方向其实都是散点。但是如果真的说要通向人工智能的必由之路,那需要看大家在每一个细分的方向发展是不是足够的好。目前来说,只是因为大模型这个事情已经展现了一定通用能力,确定性比较高,大家关注度普遍很高,工业界也喜欢,所以才去讨论是不是必经之路。而比较难的问题,比如说知识怎么获取,或者说像婴儿一样怎么样去progressive地学习一些有组织的一个知识,这都是比较难的问题。我们现在其实没有那么多的探索。

刘静(中科院自动化所)

我个人不能断定是否是必由之路,但确实是现在可以看到的可行之路。基于CNN的深度学习从2012年开始,从AlexNet,VGG,Inception,Resnet等一路走来,大多是通过设计各种合理有效的方式不断把模型加宽加深,由此增加模型参数,提升模型对更大规模数据的拟合与泛化能力。可能现在大模型也是将出现类似趋势,现在呈现模型参数与数据规模不断增加带来了性能的显著提升,但终将会遇到瓶颈,所以我们需要去设计更为高效的模型结构与训练方式等。

另外我还想解释一个问题,就是大家刚才都说NLP里面大模型其实取得了很好的效果。而在视觉和多模态里面确实会有一些差强人意的地方。我觉得其实最核心的问题就是因为语言本身就是一种语义符号,其语义鸿沟问题并不显著,而对图像、视频等多模态信息来说,从底层特征到高层语义具有天然难以跨越的语义鸿沟。对语言预训练模型来说,从网上获取的自由文本,要多少有多少,可直接用于语言模型的学习。而在多模态任务种,需用到多模态关联数据,其收集、清洗的成本都要大得多。因此,从困难挑战和数据收集成本等诸多方面,多模态预训练模型的学习难度相比NLP大模型更大。

(部分PPT将于近期在专委会网站发布,敬请关注!)

 

内容中包含的图片若涉及版权问题,请及时与我们联系删除