论文阅读——MAE

论文地址:https://arxiv.org/pdf/2111.06377.pdf

1. 一些乱七八糟的知识

关于Autoencoder:样本的x,y都来自于一个东西。比如在语言模型里面用前面的词来预测下一个词。

1. Motivation

  • 在计算机视觉领域还是依赖大量有标注的图片。在NLP领域有许多表现很好的自监督模型。例如GPT和BETR。但是BETR作用在视觉领域表现不佳。原因可能如下:
    • “掩码”策略在卷积中,kennel很难区分边界。
    • 信息密度不一样,图片的话如果只是简单去掉一些像素块,只需要对临近的像素做个插值就可以了。MAE选择去掉一些高比率的patch。
    • 在NLP领域需要还原的是词,具有比较高级的语义信息,可能使用一个MLP就能还原出来。但是在视觉领域需要还原的是像素。

2.Contribution

  • 随机盖住图片里的一些patch然后重构这些patch。
  • 不对称的编码器解码器结构,编码器只作用在可见的patch,解码器是轻量解码器可以重构原始图片。
  • 使用ViT-Huge模型在ImageNet-1K上最好精度达到87.8%(只使用小的数据集,用自监督的方法可以达到比较好的训练精度。)

3. Method

3.1 核心思想

在这里插入图片描述

预训练:随机盖住图片里的一些patch(例如盖住75%)->图片中的可见patch作为输入,输入到编码器->将图像patch拉平成一个序列,可见patch被填入编码信息。被mask的patch可能就只有一些位置信息->然后解码器重构这些patch。
训练阶段:解码器被丢弃,编码器被应用于未被破坏的图像的识别任务。

3.2 Method

Masking:随机采样少量块,剩下的全部盖住,这样信息冗余少。
MAE encoder:ViT encoder,但是只作用在可见patch里面。
MAE decoder:可见patch经过编码器后的潜表示+不可见的patch(没有进入编码器)——通过一个共享的可以学到的向量表示。是另外一个Transformer,所以需要加入位置信息。decoder只在预训练的时候使用。
Reconstruction target:解码器最后一层是线性层,线性层将一个patch投影到一维。损失用的是MSE(只在mask patch上做损失)。也可以对mask patch做归一化使其在数值上更稳定。
Simple implementation:对于输入的patch打乱一下,然后取前25%(based on masked ratio)送入编码器。在解码的时候要附上和以前长度一样的patch序列(编码器输出+masked patch——用一个可学习的向量表示)。然后再unshuffle一下,还原到原来的顺序。

4. Experiment

4.1 Main Properties

训练方案:先在ImageNet-1K数据集上做自监督的预训练(图片无标号),然后在同样的数据集上做有标号的监督训练——有两种方案,第一种是做end-to-end的微调(允许更改所有参数);第二种是linear probing(允许该最后一层的线性输出层 )。

Baseline:ViT-large(ViT-L/16)
results:
在这里插入图片描述

  • 第一列ViT原始设置,第二列加入一些正则化,最后一列就是MAE做预训练再在ImageNet上做微调。

MAE ablation experiments
在这里插入图片描述

  • ft:fine tune,lin:linear probing
  • Decoder width:每一个token表示成多长的向量。
  • ©表,编码器不加入盖住的patch,精度反而更高,计算量更少。
  • (d)表,在重构时使用MSE并加入normalization效果是最好的。dVAE token是BEiT的做法。用VAE把每一个patch映射到一个离散token上。使其可以像BERT一样做预测。
  • (e)表,怎么做数据增强。按随机大小裁剪效果最好。对于数据增强不敏感
  • (f)表,采样策略(随机采样,block,按照格点)。可视化如下:

在这里插入图片描述

  • 默认情况是:解码器的深度为8,宽度为512,重建目标为非正常化像素,数据增强为随机调整大小的裁剪,遮蔽率为75%,预训练长度为800 epochs。默认设置以灰色标记。

Masking ratio
在这里插入图片描述

高遮蔽率(75%)对微调(顶部)和线性探测(底部)都很有效。在本文的所有图中,Y轴是ImageNet-1K的验证准确性(%)。

Wall-clock time
**在这里插入图片描述**

使用ViT-L,而且解码器只使用一层Transformer的时候精度也不错,时间也是最少的(加速了3.7倍)。使用ViT-H也是使用一层解码器,速度是最快的。加速是相对于编码器有掩码标记的条目而言的(灰色)。

Training schedules
在这里插入图片描述

4.2 Comparisons with Previous Results

1. Comparisons with previous results on ImageNet- 1K.
在这里插入图片描述
预训练数据是ImageNet-1K训练集(除了BEiT的标记器是在250M DALLE数据上预训练的)。所有的自监督方法都是通过端到端的微调进行评估的。

2. MAE pre-training vs. supervised pre-training(ViT)
在这里插入图片描述

4.3 在迁移学习上的效果

1. COCO object detection and segmentation
在这里插入图片描述

2. ADE20K semantic segmentation
在这里插入图片描述

3. 重构原始像素VS BEiT重构用dVAE学出来的标号比
在这里插入图片描述

在精度差不多的情况下,重构原始像素更简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是实现代码: ```python from sklearn.datasets import load_boston from sklearn.tree import DecisionTreeRegressor from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score from sklearn.model_selection import train_test_split # 加载数据集 boston = load_boston() # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2, random_state=42) # 构建决策树回归模型 model = DecisionTreeRegressor(random_state=42) # 拟合模型 model.fit(X_train, y_train) # 预测房价并输出 y_pred = model.predict(X_test) print("预测结果:", y_pred) # 模型评估 mae = mean_absolute_error(y_test, y_pred) mse = mean_squared_error(y_test, y_pred) rmse = mean_squared_error(y_test, y_pred, squared=False) print("MAE:", mae) print("MSE:", mse) print("RMSE:", rmse) ``` 输出结果: ``` 预测结果: [21.7 24.5 19.6 8.8 21. 19.1 21.5 14.3 18.7 20.4 19.9 23.1 20.5 23.2 23.7 13.3 19.3 21.2 34.9 22.6 19.4 23.4 19.4 20.3 19.3 21.2 23.4 21.8 16.6 20.1 19.5 23.9 22.2 23.1 17.8 8.3 20.6 21.1 18.7 13.8 19. 50. 19.4 20.1 23.4 36.2 23.1 12.7 21.4 22.9 23.2 20.3 20.7 22.8 19.4 21.4 22.8 19.5 12.5 36.4 14.9 22. 13.9 24.8 23.1 20.7 21.7 7. 20.1 17.1 23.1 22.9 23.7 16.3 23.8 23. 22.6 20.6 23.1 22. 26.7 23.4 31.7 27.5 21.7 23.9 21.7 11.9 20.4 23.3 20.6 25. 18.5 50. 23. 20.5 19.6 20.5 13.6 25. 22. 22.7 23.2 8.8 21.7 20.3 14.9 23. 17.8 22.6 19.6 23.7 14.4 23.6 20.6 22.2 19.6 20.8 18.4 22.6 16.5 20.3 20.3 13.4 22.8 21.5 20.3 22.6 7.2 14.1 24.5 22.2 21.9 23.8 27.5 23.4 21.7 16.7 13.1 21.8 23.3 22.8 19.6 20.8 20.4 23.9 22.6 19.6 23.4 15.6 22.3 35.4 23.9 13.4 27.5 24.5 43.1 19.3 22. 21.2 24.7 24.4 22.6 23.1 20.4 21. 19.6 15.6 20.6 19.4 26.6 18.2 20.6 23.3 20.5 19.6 19.9 18.2 22. 14.4 22.5 22.6 19.4 22. 18.7 22. 20.4 23.9 22.9 22. 22.5 23.1 23.9 50. 19.4 19.8 21.4 22.9 23.8 20.6] MAE: 3.057843137254902 MSE: 27.37098039215686 RMSE: 5.230351225545127 ``` 可以看到,决策树回归模型可以用于波士顿房价预测,并且我们得到了MAE、MSE和RMSE三个指标的评估结果。其中,MAE值为3.06,MSE值为27.37,RMSE值为5.23。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值