当前位置: 首页 > news >正文

MAE论文阅读《Masked Autoencoders Are Scalable Vision Learners》

文章目录

  • 动机
  • 方法
  • 写作方面参考


Paper: https://arxiv.org/pdf/2111.06377.pdf


动机

首先简要介绍下BERT,NLP领域的BERT是基于Transformer架构,并采取无监督预训练的方式去训练模型。它提出的预训练方法在本质上是一种masked autoencoding,也就是MLM(masked language modeling):去除数据的一部分然后学习恢复。
在这里插入图片描述
自从ViT火了之后,Transformer架构也可以应用于CV领域中了,一些研究者就开始尝试研究ViT的无监督学习,比如Mocov3用对比学习的方法无监督训练ViT,此外也有一些研究开始借鉴BERT中的MLM方法,比如BEiT提出了用于图像的无监督学习方法: MIM(masked image modeling)。但尽管如此,NLP领域已经在BERT的这种masked autoencoding方法下取得了巨大的进展,而CV领域中在无监督预训练这一块远远落后,主流的无监督训练还是对比学习。其中这种masked autoencoding方法并不是没在图像领域应用过,很早便就出现了,比如Denoising Autoencoders。但是至今却未取得像在NLP领域中的巨大发展。MAE论文对这个问题做了以下分析(参考:视觉无监督学习新范式:MAE):

  • 图像的主流模型是CNN,而NLP的主流模型是transformer,CNN和transformer的架构不同导致NLP的BERT很难直接迁移到CV。但是vision transformer的出现已经解决这个问题;
  • 图像和文本的信息密度不同,文本是高语义的人工创造的符号,而图像是一种自然信号,两者采用masked autoencoding建模任务难度就不一样,从句子中预测丢失的词本身就是一种复杂的语言理解任务,但是图像存在很大的信息冗余,一个丢失的图像块很容易利用周边的图像区域进行恢复。也就是说:丢失一个单词去恢复句子很难,用MLM这样的方式去学习这样一个难的任务可以学到一些有意义的信息;但是丢失一个patch去恢复图像却很简单,这只用线性插值就可以实现了,用MIM这样的方式去学习这么简单的任务,几乎学不到什么有价值的信息
  • 用于重建的decoder在图像和文本任务发挥的角色有区别,从句子中预测单词属于高语义任务,encoder和decoder的gap小,所以BERT的decoder部分微不足道(只需要一个MLP),而对图像重建像素属于低语义任务(相比图像分类),decoder需要发挥更大作用:将高语义的中间表征恢复成低语义的像素值。

因此,本文提出了一种简单有效的用于ViT无监督预训练的方法,称为MAE(masked autoencoder)。MAE也属于MIM的范畴,可以将MAE看作是BERT的CV版本:
在这里插入图片描述

方法

MAE方法很简单,整体架构如下。针对以上的分析,MAE采用了MIM的思想,随机mask掉部分patchs然后进行重建,并有两个核心的设计: 1)设计了一个非对称的encoder-decoder结构,这个非对称体现在两方面:一方面decoder采用比encoder更轻量级设计,encoder首先使用linear将patch映射为embedding,然后采用的是ViT模型,decoder是一个包含几个transformer blocks轻量级模块,最后一层是一个linear层采用的是一个;另外一方面encoder只处理visible patchs,而decoder处理所有的patchs(插入masked patchs)。2)MAE采用很高的masking ratio(比如75%甚至更高),这样构建的学习任务大大降低了信息冗余,或者说增加了学习难度,使得encoder能学习到更高级的特征。此外,由于encoder只处理visible patchs,所以很高的masking ratio可以大大降低计算量。 ​
在这里插入图片描述
MAE采用随机mask策略,对于mask ratio的选择如下:
在这里插入图片描述
其中的linear probing和Fine tune的区别是:linear probing把encoder冻结只加一个linear分类器训练,Fine tune是不冻结encoder完全放开训练。注意,decoder部分只是辅助无监督预训练的,具体到下游任务时就不需要它了。

不同mask ratio的效果:
在这里插入图片描述

在ImageNet-1K上与其他自监督方法对比:
在这里插入图片描述

最后的loss只计算masked patchs。

写作方面参考

论文名《Masked Autoencoders Are Scalable Vision Learners》也是一个常用的强有力的句式:xxx are xxx。并且这样的表达会给人一种很客观,站在读者角度上的感觉。

当你做的模型比较大时,用scalable;当你做的模型比较快时,用efficient。

画图的一些细节: MAE的计算量主要出现在encoder部分,所以作者将encoder部分画的比decoder部分大。论文图中的每一个小细节,体现的都是文章的思想。

http://www.lryc.cn/news/59022.html

相关文章:

  • 代码随想录算法训练营第三十四天-贪心算法3| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
  • 比较系统的学习 pandas (2)
  • 怎么查看电脑主板最大支持多少内存?
  • 数据结构——线段树
  • 【C++进阶】实现C++线程池
  • Redis常用五种数据类型
  • C++ Primer第五版_第十一章习题答案(1~10)
  • GEE:使用LandTrendr进行森林变化检测详解
  • docker项目实施
  • springboot实现邮箱验证码功能
  • Java 进阶(5) Java IO流
  • “终于我从字节离职了...“一个年薪40W的测试工程师的自白...
  • 设计模式之策略模式(C++)
  • 从工厂普工到Python女程序员,聊聊这一路我是如何逆袭的?
  • 全国青少年信息素养大赛2023年python·选做题模拟二卷
  • 分布式事务Seata原理
  • 用ChatGPT怎么赚钱?普通人用这5个方法也能赚到生活费
  • ( “树” 之 DFS) 110. 平衡二叉树 ——【Leetcode每日一题】
  • nvm软件使用-同一个环境下控制多个不同node版本
  • 连续两个南航的研究生面试出了从来没出现过的问题,本科和研究生都是计算机专业的,竟然说static是不可更改的。
  • How to install nacos/nacos-server:v2.1.2-slim with docker
  • Rust社区引发舆论危机,问题到底出在哪儿?
  • C++算法恢复训练之归并排序
  • 使用Process Explorer和Clumsy工具定位软件高CPU占用问题
  • 为何巴菲特和马斯克站在了一起?
  • 企业数字化转型全是坑?这几篇数字化转型成功案例,减少70%损失
  • 13.Java面向对象----嵌套类
  • Redis数据迁移过程,使用jedis客户端发送命令,需要注意string和byte类型的命令,如果使用的转换字符编码不一致,会导致丢数据
  • 第六章 IA-32指令类型
  • 基于BenchmarkSQL的Oracle数据库tpcc性能测试