MAE

发布时间 2023-04-13 15:31:53作者: 诸葛村夫CC

 开篇定性如上图

标题:Masked Autoencoder Are Scalable Vision Learners 带掩码的自编码器是一个可拓展的(scalable)视觉学习器

沐神说加入做的模型比较大就用scalable,算法比较快的话就用efficient

Masked就是要做完形填空的意思。

auto在机器学习中一般理解为自己而不是自动,其实我一直都觉得是自己的意思(尤其是自回归模型,不是自动回归,是用自己回归,即输入样本和预测标签来自同一个东西)但不确定。这里加一个auto就是强调输入样本和预测标签都来自图片,在视觉领域中很少有这种情况,一般分类的结果是文本。

题目用XX是XX,这种是一个非常强有力的句式,相当于结论浓缩成一句话直接当标题。

摘要:随即盖住一些图像块,再重构这些像素。这里有两个核心设计,一个是非对称的encoder-decoder架构,这里要先说明一下,虽然题目中讲只有encoder,但是严格来讲任何一个模型都会有decoder,就像在BERT(BERT我没学,但是应该和ViT里那个结构差不多)中,虽然不是transformer那种完整的解码器,但它的解码器就是最后的那个全连接层。这里的非对称是说编码器和解码器看到的东西是不一样的,编码器只看见可见的那些块。第二点就是说,如果mask掉很多的块,例如一张图片中75%的东西都盖住,就能够强行让模型学习到一些有用的东西。因为如果你只盖住一两个块,只用简单的插值也能插出来一点东西。

 

 架构图:首先将输入切块然后拉直,将没有被盖住的部分进行编码,然后在编码结果里把盖住的那些块插回去(这里插的只有位置编码),用解码器复原。这里编码器比解码器大一点,因为主要的计算量来自于编码。我们都知道transformer模型的计算量都特别大,这里只需要看1/4的图片就够了也是一个很大的亮点,算是一种加速方式。这个模型预训练好正式投入具体任务的时候,只需要编码器,把解码器丢掉就可以了。

 

 这里展示了只用1/4图片来还原原始图片的效果,可以看出来还原出来的东西还是比较模糊的。这里有一个严重的问题,就是这个用模型还原出来的模糊的图片,可能对于模型理解这张图,或进一步做分类任务可能就够了。如果把这种方式移到气象海洋领域中应用,还需要再思考具体操作方法。但是仅从图片的角度讲,还是比较令人震惊的,输入的1/4图片人眼看都很难看出来,它还原出来的结果还是比较一致的。

 

讨论和结论:简单且易拓展的算法是整个深度学习的核心,这里的简单和易拓展都是基于一小群人的,其实对于普通人来说已经足够复杂了。

我们要注意到图片和语言的区别,对于语言来讲一个词是一个语义的单元,它里面包含的语义信息较多,图片中的一个patch虽然包含较多的语义信息,但一个patch中并不是一个语义的单元,换句话说一个patch中没有一个完整的图片对象,大部分情况下只是一个对象的某个分片。但即便如此效果也不错。

 

导言:自监督学习的transformer在NLP领域已经搞的不错了,但是在视觉方面是稍稍落后的,主要原因如下:1. 之前主要用卷积,但是mask机制没法很好的在卷积上用,模型在卷积的时候很难分辨mask的边界,不像transformer一样,mask掉的东西是完完整整被特殊对待的。2. 信息密度不同。NLP中一个词是一个语义的实体,所以完形填空也不是一件非常简单的事。但图片中冗余信息还是比较多的,一般来说一个patch盖住仍然可以通过邻居来判断猜测,作者提出的办法就是多mask掉一些东西提高难度,而且这样做使得模型被迫去学全局信息而非局部信息。3. 自编码器的解码器,NLP中需要还原的是一个词,一个词在语义层面比较高的,按我的理解就是说比较高层的特征。但是CV中要还原的毕竟是具体的像素点,像素还是比较低层次的语义表达(高层次的可以认为是分类结果,例如一只猫)。所以BERT的解码器用一个简单的全连接层就够了,这就像是你在做图片分类目标检测的时候输出层(解码器)就是MLP就够了,但是复杂一点的分割任务,需要给一个像素级别的输出,通常就是用一个转置的神经网络来做一个比较大的解码器。

基于上述分析提出了MAE,1. 随即遮住大量的patch进行重构。 2. 因为大量的信息都被遮住了,所以使用非对称结构(编码器只看见可见块,解码器看见所有块),这样可以极大的减少编码器的计算开销。

MAE可以只是用Image-1K的数据(100万张图片)进行训练,使得模型能够达到ViT中使用一百倍大小的数据才能达到的效果。

迁移学习上的效果也极好,物体检测、语义分割、实例分割

这篇文章的导言不仅讲了做了什么,怎么做的,更重要的是引出了问题,然后回答了问题,讲清楚了为什么这么做,李沐比较赞成这种写法。也就是说它的导言不仅仅是摘要的延申和扩展。

 

方法:随机采样的意义是降低图片的冗余度

编码器就是ViT,没有变,分块,加位置信息,当然mask掉的部分就不输入网络了

解码器看到的是所有块,已知块已经被编码器编码过了,未知块用一个可以学习的向量来表示,所有未知块都共享同一个表示方式。解码器也是另外一个transformer,需要加位置信息。这里李沐说有一个不明确的就是编码器过来的东西要不要重新编码,毕竟已经编码过了。但是我的疑惑是,不管哪个块,在编码器输入前不是都有位置信息吗?这里为什么又说需要加一次位置信息