论文阅读_MAE
1 | name_ch: 带遮蔽的自编码器是大规模的视觉学习者 |
1 读后感
图像领域的无监督学习,延续 ViT 使用 Transformer 结构 论文阅读_ViT,学习 BERT 遮蔽图片块,然后预测被遮蔽的块实现自我学习 autoencoder。
ViT 论文最后也做过类似实验,但效果并不好,MAE 对此做了一些修改:遮住更多的图片块,这是由于相对于文本,图像中存在更多冗余信息;编码时只处理没遮住的部分,从而节约了算力;另外,使用与 Encoder 不对称的轻量级Decoder 来预测遮住的块。
2 介绍
MAE 是 Masked Autoencoders 的缩写,是一种用于计算机视觉的自监督学习方法。在 MAE 方法中,会随机 mask 输入图片的部分 patches,然后重构这些缺失的像素。其主要技术基于 ViT 和 BERT。
和 ViT 一样,先将图片切分成大小一致(一般是 16x16)的 Patch,遮住其中 75%(图中灰色部分);然后对没遮住的块进行编码,生成隐空间表示(蓝色列,下游应用使用的就是这一步的结果),然后用隐空间预测被遮住的块,以还原图像,逐步调优使模型更好地预测遮住的块,以实现不需要标注的自我学习。
2.1 模型结构
2.2 效果展示
第一列是被部分遮蔽的图,第二列是 MAE 恢复的图,第三列是原图(人都脑补不成这样)。
2.3 面临问题
之前 BERT 方法应用到视觉所面临的问题如下:
- 之前一直使用卷积神经网络处理图像,直至最近 ViT 解决了这一问题。
- 图像数据中存在大量冗余,不像文本信息一样密集,图像中 mask 掉一部分可通过邻近信息插补,因此无法学习到复杂关系,文中提出 mask 掉高比例数据,以解决这一问题。
- 去掉图像区域再还原像素比较困难,文中提出设计解码器解决这个问题。
2.4 核心设计
MAE 基于两个核心设计:
- 不对称的编码解码结构,编码器仅仅对可见的 patches 进行编码,而解码器则对所有 patches 进行解码,但结构更简单;
- 使用随机掩码来遮盖输入图像的部分区域,以此来训练模型。出人意料的是,图像的大部分都遮住了,还能还原出来。
MAE 方法简单且可扩展性强(scalable),因此在计算机视觉领域得到了广泛应用。只使用 ImageNet-1K 来精调 ViT-Huge 模型,就能达到 87.8% 的准确率,且在其它下游任务中也表现良好。
3 方法
MAE 使用 autoencoder 自编码器,由不对称的编码和解码器构造。
3.1 Mask
在不放回的情况下按照均匀分布对随机 Patch 抽样。简称为“随机抽样”。
- 高掩蔽率(一般遮住 75%)很大程度上消除了冗余,创建了无法通过从可见的相邻插补轻松解决的任务。
- 均匀分布可防止潜在的中心偏差。
- 高度稀疏的输入为设计接下来介绍的高效编码器提供可能。
Mask 具体实现同 Vit,详见:论文阅读_ViT
3.2 编码器
编码器是 ViT,通过添加位置嵌入的线性投影嵌入 Patch,然后通过一系列 Transformer 块处理结果集。
与 ViT 不同的是:MAE 只对整个集合的一小部分(例如 25%)进行操作,不考虑 Mask 掉的 Patch,从而节约了计算量和内存。
3.3 解码器
如架构图所示,解码器的输入是所有 Patch,并对所有块加入了位置信息,与编码器相比,默认解码器更窄而浅,每个 token 的计算量仅编码器的 10%,通过这种不对称设计,显著减少了预训练时间。
解码器只在预训练时使用,其下游任务只使用图 -1 中全蓝色的隐空间表示。
3.4 重构目标
解码器输出中的每个元素代表一个 Patch 的像素值向量。解码器的最后一层是线性投影,其输出通道数等于补丁中的像素值数,另外,还使用归一化方法提升重构质量。损失函数计算像素空间中重建图像和原始图像之间的均方误差 (MSE)。
3.5 简单实现
先随机打乱 token 顺序,删除 token 列表的后面一部分(相当于采样),然后送入编码器,后进行随机打乱的逆操作对齐对原来顺序加入位置信息后再送入解码器。这样简单操作开销可以忽略不计,且不用使用稀疏操作。
4 我的收获
- 标题中的 Auto 指的是学习编码的数据来自图片本身
- 标题:把自己的工作总结成一句话,如:XXX 是 XXX(相对客观,从读者角度看问题)
- 沐神视频看论文,先看摘要,然后看结论,再看中段
- 从原理上讲,mask 也是一种噪声和使用去噪的方法