最近几年,以自然语言处理(NLP)和计算机视觉(CV)等应用领域为代表的人工智能正在经历大一统的变革,本文从计算机视觉的视角出发,对这一走向统一的趋势进行了探讨。
报告主要包括以下三个方面:
1. NLP 和 CV 的大统一趋势及其背景
2. 神经架构融合
3. 预训练融合
分享嘉宾|胡瀚 微软
编辑整理|罗傲雪 慧科
出品社区|
01
NLP 和 CV 大一统
近几年,自然语言处理(NLP)和图形图像领域(CV)在神经网络架构和预训练上正在经历一个趋向统一的融合趋势。
1. 神经架构融合趋势
的神经网络架构率先在自然语言处理(NLP)领域取得了很好的效果,并成为该领域的主流神经架构。从 2020 年下半年开始,计算机视觉领域也开始将 应用到各种视觉问题中,并取代此前的卷积神经网络,成为新的主流神经架构,其中谷歌的 ViT 以及我们小组提出的 Swin 是两个比较流行、比较有代表性的视觉 网络。
2. 预训练融合趋势
除了神经架构外,不同 AI 应用领域的预训练方法也在趋向统一。
其中涉及到的技术主要是掩码语言/图像建模( /Image )方法,它们通过预测随机遮掩区域的自监督任务来预训练网络参数。这种方法首先在 NLP 领域证明了其效果(诸如 GPT、BERT 等),目前在图像领域也被证明非常有效(诸如 Beit、MAE、 等)。
这是一个很有意思的事情,所谓分久必合,合久必分。如图所示这些不同的问题在最早期的时候是被一起考虑的,后来发现直接一步到位解决问题比较困难,于是有了很多不同的领域或者 ,例如 ACL,CVPR 等,如今各个 又在走向统一,神经架构和学习范式趋同,随着 更进一步发现了解决 NLP 问题的路径,也许以类似的方法去解决更通用的 AI 问题已不再遥远。
3. 脑科学的启发
AI 从上个世纪 50 年代开始起步,在几乎同一时间,脑科学或者说认知神经科学也真正起步。这个领域也有很多很好的进展,其中一个发现就是人处理不同智能问题的机制很可能是相似的。
譬如人脑处理不同智能的神经结构就是比较一致的。大脑负责处里不同智能的神经器官主要在新皮质,也就是上面左图中褶皱的部分,它分为很多功能区(上图左示意图),后脑勺负责处理视觉信号,顶叶负责处理运动、触觉等智能,颞叶的皮质又分为处理声音、处理语言等不同区域,以及前额叶区域主要负责更高级的智能,例如决策、认知等等。尽管新皮质由不同的功能区在负责各种各样的智能,但其神经结构其实是非常统一的,把褶皱的新皮质展开,就像一个餐厅布,而几乎所有地方的剖面结构在显微着色下观察几乎是一样的,都是有一个很清晰的六层结构。
事实上,这种统一的结构对人类的生存和发展是很关键的,这样就不需要经过几百万年的漫长时间去进化出一个新的智能,而是依靠同样的神经结构很快就能适应新的环境或者学会一个新的技能。
上面讲了神经结构,下面来看人脑如何学习。
现在也是有很多研究表明人的学习可能也是一个非常统一的机制,也就是通过预测的方式来学习。这里有个关键器官:丘脑。
这里举的是一个视觉学习的例子,通过视网膜接收信号,视觉神经信号会先经过丘脑,到大脑皮层后再返回到丘脑,这个过程就是在预测下一帧是什么,通过预测的画面和真实画面的比较,就可以进行学习,这和现在比较流行的 GPT 方法非常相似。
除了视觉,触觉、听觉和语言理解很可能也是基于同样的 和 机制来进行学习的,这就是一种统一的预训练范式。
4. 大一统带来的实用上的好处
关于统一的好处,这里列举三点:
① 第一、技术和知识共享:技术和知识共享能让不同领域都有更快的进步,对于 NLP 和 CV 领域来说,深度学习革命的早期主要是 CV 技术在影响 NLP 领域,而最近两年 NLP 领域进展迅速,很多很好的技术被 CV 领域所借鉴。
② 第二、促进多模态应用:技术的统一也在催生全新的多模态研究和应用,例如实现零样本物体识别能力的 CLIP 模型、能给定任意文本生成图片的 DALL-E 模型等等。
③ 第三,实现降本增效:我们举芯片的例子,以前设计芯片时需要优化不同的算子,例如卷积、 等,而现在芯片设计只需要优化 就可以解决 90% 以上问题。 最新的 H100 GPU 的一个主要宣传点,就是可以将 的训练性能提升 6 倍。
NLP 和 CV 基本技术的趋同,还能带来一个好处,那就是在 NLP 领域大模型所表现出的“涌现”特性,也有可能在不久的将来就会出现在 CV 领域。当然现在还不能完全确定,但无疑将是计算机视觉领域努力的目标,我们也非常期待见到这方面的进展。
—
02
AI 神经架构的统一
1. 神经架构迈向统一之路
在早些年,不同 AI 领域的主流模型是很不一样的。例如视觉领域通常会用卷积网络,NLP 通常会用 ,而在社交计算领域,通常会用图网络来建模。
上图展示了 NLP 领域或者序列数据的模型变迁。
最早比较有名的工作是 LSTM,这个模型流行了很多年,直到 2013 年 Deep 在语音识别取得突破的时候,还是采用这样一种建模方法,只是网络层数变得更深;2014 年的 GRU 模型在机器翻译问题上用一个相对简单的结构取得了比 LSTM 更好的效果;2015 年, 机制首次在机器翻译问题上证明非常有效;这几年模型变迁很快,直到 2017 年 出现,NLP 领域的建模才稳定下来。
再看计算机视觉领域神经结构的变迁,它的发展相对简单,整个领域一直主要以卷积操作来构建神经网络。早期比较有影响力的事件是 Yann LeCun 等人将其应用在手写数字识别中,取得了广泛关注。在深度学习时代的一系列著名网络都是以卷积算子为基础的。
为了统一 NLP 和 CV 的神经网络,很自然会有以下两个思路:
① 第一,把 CV 的建模方法用到 NLP 领域。
② 第二,把 NLP 的建模方法应用到 CV 领域。
先看将卷积应用到 NLP 的尝试。
其实在 之前的一个月, 就曾尝试把 CV 领域主流的卷积算子应用到 NLP 里(),当时在机器翻译问题上取得了突破,只是 1 个月以后就被 超越,所以没有引起很广泛的关注。直到现在, 由于一些很好的性质,仍然是 NLP 领域中一种绝对主导的网络结构。
再看 或者 模块应用到 CV 的尝试。
早些时候大家主要把 机制用到各种 CV 问题里去,取得了些成功,例如 2017 年底的 NL-NET 以及我们小组提出的关系网络()均在一些特定视觉问题上取得了很好的应用。
最近的工作开始把 作为整体应用到 CV 里,其中比较流行的有谷歌的 ViT、我们小组的 Swin ,以及同期的一些工作。
我们看下谷歌的 ViT 模型。
它的做法很简单,就是把图像切块切成不重叠的块,将每个块当作一个 token,于是就可以将 NLP 里的 直接应用于图像分类。
这一模型在 CV 的一个重要 -1K 分类任务中取得了新的记录,比此前最好的模型好了 0.1 个百分点,尽管提升不算多,但足够引起领域的关注。
这种建模相比 CNN 有两个明显的好处:
① 第一,相比 CNN 这种基于静态模板的网络, 的滤波模板是随位置动态的,可以更高效地建模关系。
② 第二,可以建模长程关系(Long-term ),可以建模远距离的 token 之间的关联。
我们组的工作 Swin 则进一步证明了基于 的框架能在更广泛的视觉问题中取代传统的卷积神经网络方法(CNN),例如语义分割(对图像里的每个像素作分类)、物体检测(定位到感兴趣的物体)等这些视觉领域很重要的问题,而且是大幅超越。
此后 在视觉领域开始广泛的应用开来。
2. Swin
Swin 的神经架构和传统的视觉神经网络一样分为四个阶段,每个阶段具有不同的图像分辨率,都用 模块组成。现在回头来看这个工作,主要是三方面的贡献:
① 提出将 和 CV 领域先验知识的设计思想;
② 提出了一种可移位不重叠窗口,不重叠窗口的设计至今仍然是处理高分辨率视觉任务必不可少的一个技术;
③ 研发了使用于视觉 训练的一系列技巧,并做了很好的开源,从而加速了整个研究社区对于视觉 的研究。
先来看下视觉信号跟文本信号的区别:
① 首先,视觉算法需要尺度不变性。视觉算法需要识别不同大小的物体(一只猫不论大小都应该把它识别成一只肥猫),但在文本里我们只会说,“我是一只肥猫”,不会讲“我是一只肥肥猫猫”。
② 第二,视觉信号是连续的。图像中相邻块的颜色和纹理大概率是相似的,而文本则是离散的。
③ 第三,视觉算法需要满足平移不变性。图像中不同位置的物体都应能被识别出来。而词的位置则对文本的理解更为重要。
第二点是我们提出的移位不重叠窗口技术:
① 传统的滑动窗口方法(左图),对不同位置都取以该位置为中心的窗口将注意力计算限制在窗口内,这样一个图像里面就会有几千个窗口,这种方法对 的硬件实现不太友好。
② 我们的移位窗口方法(右图),把窗口变成不重叠,这样整个图像的窗口数变成了几十个,且非常利于并行计算。为了构造窗口与窗口之间的联系,在下一层将窗口做移位操作,乍一看会破坏视觉信号的连续性假设,但实验证明该策略非常有效。
最后一个贡献是我们做了很好的开源,很荣幸帮助到了后续针对视觉 的研究。
此外,Swin 中通用 计算单元和领域相关的先验的设计原则是通用的,可能适合解决各种 AI 模态的建模问题。
具体来说,先验部分可以用图中是否有连边来刻画,没有连边就表示先验上不用刻画它们之间的联系,Swin 就是去掉了较远的节点之间的联系,所谓局部先验。利用这种引入领域先验的建模思想,我们同事开发的 在 KDD 的一个比赛(预测分子图的量子效应)中拿到了冠军。
回头看为什么 能够成为统一各种 AI 问题的神经结构的选择,我认为,主要就是来源于它的通用性,具体来说,是两个方面:
① 一方面是图建模的通用性,图可以建模世间万物和所有概念(包括实体概念和抽象概念)以及它们之间的联系, 就可以看作一个基于图的神经网络。
② 另一方面是投影比较法的通用性,它在进行关系建模时,会先把不同节点的特征投影到同一个子空间去比较相似度,这样就可以构建任意异构输入节点之间的联系,譬如,文本和图像这样很不一样的信号,都可以通过投影找到一个子空间,使得在子空间里面它们是可以比较的。
3. Swin V2
下面我们介绍小组研发的第二代 Swin ,我们相信 CV 和 NLP 没有本质区别,因此基本上沿着 NLP 领域的成功之路来探索视觉神经网络的未来。
过去几年 NLP 领域最大的一个发现,就是扩展模型大小对性能很关键(如图 语言建模任务在模型从一个亿运到五千亿时,准确率从 40% 提升到 80%),甚至出现涌现()的能力。
而对比计算机视觉和 NLP 后会发现模型规模的差距很大(灰色 NLP,蓝色视觉),视觉模型和 NLP 模型的大小差了 300 倍,和人脑相差 10 万倍。
Swin V2 是我们在 2021 年年底的一个工作,是当时全世界最大的一个稠密视觉模型,结果也是符合“模型越大效果越好”的结论的。
我们在四个主流的 上取得了新的记录(SOTA),分别是物体检测、语义分割、视频分类、图像分类。
和其它 10 亿级别的视觉模型(谷歌的 ViT-G 和 -7)对比,我们的模型大了 25%,需要的标注数据少了 40 倍,训练 cost 小十倍,而且能应用到更广泛的视觉问题中。
其中的关键就是我们用了一种新的基于掩码图像建模(MIM)的预训练方法,该预训练方法是自监督的,完全不需要标注数据。这种预训练方法和以前基于图像分类或者图像-文本对的预训练方法相比,大大降低了对数据量的要求。例如,前两种预训练方法,往往需要 10 亿级别的图片,才能训练出 10 亿参数规模的模型,而我们的预训练方法,只需要百万、千万级别就行。而核心的 ,就是新的预训练任务编码的信息量要大的多:图像分类任务即使类别数达到 10 万,每个图片所编码的信息量也就在 15 个 bit 左右,图像-文本对的形式稍多,但也仅有 20-30 个 bit 左右,而基于掩码图像建模的方法,其所蕴含的信息量几乎包含了整个图片的信息,预计远大于 10 万 bit,而这也是它能用更少的数据驱动更大模型训练的主要原因。
第二,视觉任务不同于 NLP 任务的一个特点是预训练与下游任务分辨率的差别很大。
我们提出了从离散相对位置偏置到连续相对位置偏置的方法,能更好地在不同分辨率之间迁移。
第三,我们发现视觉任务(例如图像分类或者图像-文本对比任务)比文本任务更容易不稳定,这里示意图显示的是,每次 后 (方差)可能会扩大,经过两层之后, 就从 1 变到 60 多。我们的改进是提出了一种新的 计算方法,和一种新的配置 Layer Norm 层的方法,这样数值上稳定了许多。
通过这些改进,我们训练了一个拥有 30 亿参数的 Swin-V2 模型,刷新了多个代表性任务上的性能。当然,它和 NLP 模型的差距还有 180 倍,所以仍然任重道远。
除了稠密大模型外,另一种能更快扩展模型规模的方法是采用稀疏模型,人脑就是一个典型的稀疏模型的例子。
稀疏模型目前领域最好的实践是混合专家模型(MoE),针对这一模型,我们开发了Tutel 系统,在单层神经网络上取得了 5 倍左右的性能提升, 这一系统被 Meta()所采用(利用 Azure 云服务),相比于它们自己的框架有 40% 的提速。另外,我们开源了用于视觉问题的 Swin-MOE 模型和训练脚本。
—
03
AI 预训练方法的融合
1. 视觉预训练方法的发展历程
预训练方法对于计算机视觉的发展非常重要,这一技术使得深度学习模型被成功应用到只有少量或中等规模的标注数据(几百或几千)上,例如图像细粒度分类、物体检测、语义分割等等。
上图展示了视觉预训练方法的变迁。
最早是 Auto 通过一个重构任务逐层训练了一个相对比较深的网络,这也被认为是深度学习革命的开端之一;2012 年, 在图像分类任务中取得了里程碑突破,深度学习技术开始广泛应用于视觉问题;2019 年,基于对比学习的自监督方法在一些下游任务中超过了有监督,当然,当时这一方法在大模型预训练方面不是很成功;2021 年的 CLIP 方法例如亿级别的图像-文本对进行预训练,在任意类别识别方面取得了重要突破;接下来是掩码图像建模方法 BEIT,以及其后的 MAE/ 方法,这一类方法和 NLP 中的方法很相似,我们证明,它同样可以和在 NLP 领域里一样,用来驱动视觉大模型的训练。
这一预训练任务也非常简单,就是把图像中的一些区域掩盖住,然后训练网络用剩余的图像部分来预测盖住部分的像素值。
我们主要尝试回答了下面三个问题:
① 一是,如何构造一个最简单的 MIM 的预训练任务。
② 二是,这一预训练任务能否从更大的数据中获益。
③ 三是,它能否启发一些其它方法。
2. 极简 MIM 预训练框架
我们尝试了一个最简化的设计:
① 掩码策略:用较大的 patch size 随机掩盖图像块。
② 预测头:用几乎是最轻量级的线性预测头。
③ 预测目标:把分类任务变成预测像素值。
④ 编码器:希望能够预训练不同的视觉编码器(Vi,Swin, 等)。
⑤ 解码器:稀疏(MAE)和稠密解码器()之间,更推荐稠密解码器(训练时间足够长时效果更佳)。
在掩码策略里,我们发现随机掩码效果反而几乎是最好的,而且块的大小很重要(32×32 最佳)。
我们还发现指标 能很好地反映预训练最终的效果,也就是每个不可见像素离它最近的可见像素的距离的平均,实验表明 在 15 到 20 之间时,下游任务的表现最佳,这也解释了为什么掩码块大小为 32×32 时会有整体最佳的效果。
上图说明我们对不同的神经架构是具有通用性的,其中包括 ViT、Swin、 等。
这里右图中黑色曲线表示有监督预训练在不同大小的模型上的表现,红色曲线是我们的方法的表现,模型越大,我们的预训练方法带来的提升越大。
最后看一下可视化,当掩盖住一半的区域的时候(左一组图),可以很好的去恢复遮盖部分;当遮盖几乎整个物体的时候,还能推理出物体来;而全部遮盖时,它将不能恢复该物体,这说明模型不是通过记住,而是通过推理来恢复图像像素值的。
3. 预训练方法能否有效利用大数据
这是 发现的一个重要定律,即扩展定律( Laws),这一定律表明,计算、数据量和参数量指数增加时,模型的性能线性增加,而且至今没有发现饱和的趋势。
我们针对视觉的预训练方法 MIM 做了类似的研究,发现计算和参数量是遵循这个规律的,但是数据量还不是很明晰,这可能是因为我们的模型还不够大,希望将来有更多资源时,可以做进一步探索。
4. 对其它预训练任务的启发
MIM 预训练方法的成功,启发我们去改进此前的预训练模型的微调性能,同时又能保持该预训练模型原有的能力。我们发现一种特征蒸馏方法能有效实现这一效果,就是将原先预训练好的模型的特征图,蒸馏到一个新的学生网络中,这一学生网络将既能保持原先模型的能力,又能在微调性能上取得显著提升。
这种方法,不仅对中等规模模型有效,对大模型也是有效的。也是基于这一方法,我们在语义分割和物体检测上均刷新了新的记录。
最后做下总结,不同 AI 任务在架构和预训练上有着统一的趋势,这个趋势在 NLP 和 CV 上可以略窥一二。这一趋势还在继续,特别是在 NLP 领域的 模型在某种意义上基本解决了 NLP 问题后,CV 的问题也有望在不远的将来得到有效解决。
发表回复