— order: 9 —1 Masked Autoencoders Are Scalable Vision Learners时间:2021.111.1 标题 & 摘要 & 引言 & 相关工作标题:Masked Autoencoders Are Scalable Vision Learners与之前读的文章的关系Transformer纯基于注意力机制的编码器和解码器,在机器翻译任务上,它比基于RNN的架构要更好一些BERT使用一个 Transformer encoder拓展到了更一般的 NLP 任务上。使用完形填空的自监督的训练机制,这样就不需要使用标号,而是通过预测一个句子里面哪些词不见了,从而获取对文本特征抽取的能力。BERT 极大地扩展了 Transformer 的应用,可以在一个大规模无标号的数据上训练出非常好的模型ViT Transformer 用到 CV 上,将整个图片分割成很多个1616 patch放进 Transformer 进行训练。ViT 这篇文章证明:假设训练数据足够大,相对于 CNN 的架构来说,ransformer 架构上限可能高一点MAE可以认为是 BERT CV 版。基于 ViT 这篇文章,把整个训练拓展到没有标号的数据上面,通过完形填空来获取对于图片的理解。MAE 并不是第一个将 BERT 拓展到 CV 上的工作,但是很有可能是这一系列工作之中影响力最大的一篇标题中 Auto 表示标号和样本来自同一个东西,在语言领域基本都是 auto但是在 CV 领域比较难做到 auto一般是另外标注的内容论文技巧:1.在写论文的时候假设算法特别快的话,就写 efficient假设做的东西比较大,就叫 scalable二选一来使得文章更有 B 2.标题是一句浓缩后的结论(什么是一个好同志),非常强有力的句式,比较客观适合当标题CV NLP 领域 Masked Autoencoder 不同的原因1.CNN里的卷积窗口不太好做掩码,因为在 NLP 里面一个 mask 是一个特定的词,但在 CV 里就是(某个像素)转化成一个值,卷积窗口不好识别;而且也不好加入位置信息(但是卷积其实自带位置信息)。不过现在随着 ViT 的出现这些都不是问题了2.两者的信息密度不同。语言高度语义化,但图片中有很多冗余甚至可以通过插值还原,解决方法为高比例掩码,迫使模型学习到更有用的信息3.解码器的职责不同。在 NLP decoder 只要一个全连接层就可以了,但是 CV 中就比较困难(在 NLP 中,需要还原到词,相对来说在语义层面上比较高一点;而在 CV 中,需要还原到输入也就是原始像素,相对来说是一个比较低层次的表示)相关工作1.masked language modelBERT and GPT2.autoencoding in CVMAE 也是一种形式上的带去噪的自编码,但跟 GAE 还是很不一样的3.masked image in encoder比如 iGPT, BEiT4.self-supervised learning之前比较火的是 contrastive learning 和数据增强,autoencoder 是另一种路线提了几个比较大的话题,但没有展开去讲到底有何不同。写作上的建议,最好还是明明白白写出来不要让人去猜1.2 方法两个核心的设计1.非对称的 encoder-decoder 架构虽然是一个 Autoencoder 架构,但实际上任何模型都有一个 encoder 和一个 decoder比如说在 BERT虽然号称 encoder-only 中的 decoder 就是最后一个全连接输出层,因为 BERT 预测的东西相对来讲比较简单,所以一个简单的全连接层足矣;但是 CV 中相对复杂,因为需要预测一个 patch 中的所有像素encoder 只作用在可见的 patch 中,对 encoder 这样巨大的模块来说,节省计算成本decoder 比较轻量,能够重构原始的图片2.如果只是遮住几块的话,进行插值足矣,模型可能学不到特别的东西;而如果遮住大量的块(比如说把75%的块全部遮住),则会得到一个非显然的而且有意义的自监督任务,迫使模型去学习一些更好的特征具体实现1.Masking随机采样一些块进行保留,剩下的盖住2.MAE encoder ViT encoder把每个可见块拿出来线性投影,加上位置信息3.MAE decoder会看到两部分信息:一是变成潜表示的可见块,二是同一向量表示的可学习掩码块,都加上位置信息,送入Transformer decoder 里。decoder 只在预训练时使用,把它恢复成原始图片4.Reconstruct target全连接层输出到256维,reshape 1616。损失函数为 MSE只在掩码块上做。然后还提到 normalization的一个小优化5.Simple implementation首先我们通过线性投影和位置编码得到一系列 patch tokens然后 random shuffle 一下,取出前(e.g.)25%送入 encoder用可学习的 mask token 把结果 append 到同样长度,再 unshuffle 回去,加上位置编码并送入 decoder之后 reconstruct targets整个过程避免了稀疏操作非常高效2 实验 & 结论先在 ImageNet-1K100万张图片)上自监督预训练,然后再应用到下游任务(不用 decoder 复原而是拿去分类)进行有监督地微调(fune-tuning or linear probing)Baseline ViT-large + 各种新 technique 使得在小数据集上也奏效的版本(甚至精度更高,从72.5%提升到了82.5%)。然后如果先使用 MAE 做预训练,然后再在ImageNet-1K 上做微调,提升到了84.9%各种 ablation study1.decoder 的深度(辅以 fune-tuning or linear probing2.decoder 的宽度,512比较好3. encoder 中要不要加入被盖住的那些块,不加比较好4.重构时候的目标:简单版本、正则化版本PCA 版本、dVAE 版本(像 BERT 一样做预测)5.数据增强:MAE data augmentation 不那么敏感6.采样方法:最简单的随机最好然后还有 掩码率、训练时间、掩码采样策略、预训练的轮数(fune-tuning or linear probing)不同的超参数 等等图片评论:MAE 的算法还是非常简单的,就是利用 ViT 来做和 BERT 一样的自监督学习,ViT 已经做了类似的事情了,但是本文在此基础之上提出了几点1.需要盖住更多的块,使得剩下的那些块,块与块之间的冗余度没有那么高,这样整个任务就变得复杂一点2.使用一个 Transformer 架构的解码器,直接还原原始的像素信息,使得整个流程更加简单一点3.加上 ViT 工作之后的各种技术,使得它的训练更加鲁棒一点