Crd233's Notebook
Home
Courses
Languages
Math
CG
CV
AI
Reading
其它
— order: 9 —
1
Masked Autoencoders Are Scalable Vision Learners
●
时间:
2021.11
1.1
标题
&
摘要
&
引言
&
相关工作
●
标题:
Masked Autoencoders Are Scalable Vision Learners
●
与之前读的文章的关系
○
Transformer
:
纯基于注意力机制的编码器和解码器,在机器翻译任务上,它比基于
RNN
的架构要更好一些
○
BERT
:
使用一个
Transformer encoder
,
拓展到了更一般的
NLP
任务上。使用完形填空的
自监督
的训练机制,这样就不需要使用
标号,而是通过预测一个句子里面哪些词不见了,从而获取对文本特征抽取的能力。
BERT
极大地扩展了
Transformer
的应用,可
以在一个大规模无标号的数据上训练出非常好的模型
○
ViT
:
将
Transformer
用到
CV
上,将整个图片分割成很多个
1
6
∗
1
6
的
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 model
,
BERT and GPT
2.
autoencoding in CV
,
MAE
也是一种形式上的带去噪的自编码,但跟
GAE
还是很不一样的
3.
masked image in encoder
,
比如
iGPT, BEiT
4.
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.
如果只是遮住几块的话,进行插值足矣,模型可能学不到特别的东西;而如果遮住大量的块(比如说把
7
5
%
的块全部遮住),则会
得到一个非显然的而且有意义的自监督任务,迫使模型去学习一些更好的特征
●
具体实现
1.
Masking
:
随机采样一些块进行保留,剩下的盖住
2.
MAE encoder
:
用
ViT
的
encoder
,
把每个可见块拿出来线性投影,加上位置信息
3.
MAE decoder
:
会看到两部分信息:一是变成潜表示的可见块,二是同一向量表示的可学习掩码块,都加上位置信息,送入
Transformer decoder
里。
decoder
只在预训练时使用,把它恢复成原始图片
4.
Reconstruct target
:
全连接层输出到
2
5
6
维,
reshape
成
1
6
∗
1
6
。损失函数为
MSE
,
只在掩码块上做。然后还提到
normalization
的一个小优化
5.
Simple implementation
:
首先我们通过线性投影和位置编码得到一系列
patch
的
tokens
,
然后
random shuffle
一下,取出前
(
e.g.)
2
5
%
送入
encoder
,
用可学习的
mask token
把结果
append
到同样长度,再
unshuffle
回去,加上位置编码并送入
decoder
,
之后
再
reconstruct targets
。
整个过程避免了稀疏操作非常高效
2
实验
&
结论
●
先在
ImageNet-1K
(
100
万张图片)上自监督预训练,然后再应用到下游任务(不用
decoder
复原而是拿去分类)进行有监督地微调
(
fune-tuning or linear probing)
●
Baseline
是
ViT-large +
各种新
technique
使得在小数据集上也奏效的版本(甚至精度更高,从
7
2
.
5
%
提升到了
8
2
.
5
%
)。然后如果先
使用
MAE
做预训练,然后再在
ImageNet-1K
上做微调,提升到了
8
4
.
9
%
●
各种
ablation study
1.
decoder
的深度(辅以
fune-tuning or linear probing
)
2.
decoder
的宽度,
5
1
2
比较好
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
工作之后的各种技术,使得它的训练更加鲁棒一点