Masked AutoEncoder
Masked AutoEncoder (MAE)
https://arxiv.org/abs/2111.06377
Reference: https://zhuanlan.zhihu.com/p/439554945
概述
MAE做的事情类似于语言模型中的mask,亦即以一定比例随机 mask 掉图片中的一些图像块(patch)然后重建这些部分的像素值。由原来的填词游戏变成了填图游戏。
主要特点:
- 非对称的decoder和encoder
- Encoder是对可见的图像块进行编编码
- Decoder则是解码所有的图像块
- 较高的Mask比例
- 通过这种方式模型才能学习到有效的潜在特征表示
CV和NLP中的Mask区别
- CV一般采用CNN,不方便集成Mask Token和Position Embedding(但是用ViT即可)
- 信息密度上,图像在空间上是高度冗余的,不需要大量的高级语义信息,所以训练的时候需要Mask比较高的比例。
- CV重建的是图像块的像素值,是低语义的,解码要慎重
Mask策略
沿袭ViT的做法,把图像分割成一块块的Patch,再用均匀分布(Uniform Distribution)对这些patch随机采样一部分,同时 mask 掉余下的另一部分。被 mask 掉的 patches 占所有 patches 的大部分(实验效果发现最好的比例是 75%),它们不会输入到 Encoder。无论是Fine-tune还是Linear Probing在75%下的Mask比例都是一个很好的选择。
Fine-Tune & Linear Probing
finetune 微调
finetune是使用预训练模型适配下游任务时,对整个预训练模型全部进行参数更新
微调也可以选择不进行全部更新,只对后面一部分模型进行更新,因为模型前几层一般提取的都是比较公共的特征,保留的底层信息较多,可以不用进行微调
linear probing 线性探测
linear probing 是在适配下游任务时,冻住预训练模型,对其参数不进行更新,只对模型最后一层的线性层进行参数更新
线性探测一般用于检验预训练模型的好坏
一般情况下,线性探测的结果会差于微调
Encoder
只在visible, unmasked patches上进行encoder!!!
与ViT的处理方式相同, 把
由于Masked比例很高,所以Unmasked比例就相对较低,计算消耗和空间需求都减少了,因此可以训练更大的Encoder
Decoder
Masked和Unmasked都需要进行decoder
所有的Masked Patch都共享一个向量,通过添加的Position Embedding来进行区分。这个Decoder是为了重建图像,但是实际上我们根据下游任务的不同也可以设计不同的Decoder
重建像素值
Loss Function: Masked Patch部分的MSE loss
- Title: Masked AutoEncoder
- Author: Yuze-L
- Created at : 2024-08-01 15:54:31
- Updated at : 2024-08-01 17:17:56
- Link: https://yuze-l.github.io/2024/08/01/MAE/
- License: This work is licensed under CC BY-NC-SA 4.0.