大家好,我是对白。

何恺明时隔两年发一作论文,提出了一种视觉自监督学习新范式——

用掩蔽自编码器MAE,为视觉大模型开路。

这一次,北大博士生提出一个新方法CAE,在其下游任务中展现的泛化能力超过了MAE。

来看看这是一项什么样的研究?

这是一项什么研究?

自何恺明提出MAE以来,基于MIM,Masked Image Modeling,这一自监督学习表征算法就越来越引发关注。

它的主要思路,就是对输入图像进行分块和随机掩码操作,然后对掩码区域做预测。

预测的目标可以是Token ID(如微软提出的BEiT),也可以是RGB值(如MAE)。

通过MIM这一方法,编码器学习到好的表征,从而在下游任务中取得良好的泛化性能。

以往这一方法常见于NLP领域,但随着ViT的提出和发展,这一方法在视觉领域也取得了一些进展。

团队认为,近期两个代表性工作,BEiT和MAE,没有充分挖掘编码器encoder的潜力,限制了预训练学习的表征质量。

简单来说,BEiT的编码器只有一部分负责表征学习,还有一部分在做“前置/代理任务”(pretext task)。

到了MAE则是另一种情况,解码器也做了一部分表征学习,可能让编码器学会“偷懒”。

基于这一背景,团队提出了Context Autoencoder,简称CAE。核心设计思想是对“表征学习”和“前置/代理任务(pretext task)这两个功能做分离。

在预训练时,编码器只负责表征学习,解码器只负责解决前置任务,两者分工合作,将编码器表征能力最大化。

CAE包含四个部分。

1、编码器是一个ViT模型,负责学习图像可见patch的表征,提取图像特征Zv。

2、Latent contextual regressor(隐式上下文回归器)则是在此基础上预测出掩蔽patch的表征Zm。

3、解码器以Zm和对应的位置编码作为输入,通过Zm预测掩蔽patch的某些性质,比如RGB值、Token ID。这过程中Zv不会更新,表征学习任务全交给编码器。

4、Latent representation alignment对 Zm添加约束,希望 latent contextual regressor 的输出和编码器的输出在同一空间。具体来说,图像的掩蔽patch也将输入到编码器中(此过程不参与梯度反传),获得的这部分表征,作为Zm的学习目标。

Alignment很重要,如果想对掩码部分做好预测,要求latent contextual regressor 的输出(也是解码器的输入)含有比较好的语义信息。通过对齐操作,可以鼓励编码器的操作也含有好的语义信息,提高编码器的表征质量。

论文对alignment做了可视化:将全部patch输入编码器,然后将表征直接输入到解码器中,进行RGB的重建。CAE可以将原图重建出来 (第一行是原图,第二行是重建结果),说明编码器的输出和latent contextual regressor 的输出处于同一编码空间。

图片

如果训练时不做alignment约束,那么输出的结果将是这样…嗯,都是乱码。

图片

这种设计的编码器学到的表征也相对更差,下游任务结果也会变差。

损失函数由两部分组成,一个是对解码器预测的监督,使用的是cross-entropy loss;一个是对alignment的监督,使用MSE损失函数。

图片

除此之外,也进一步验证了以CAE为代表的MIM方法,要比Moco v3、DINO为代表的对比学习方法更适合下游任务。

该论文从随机裁剪操作的性质分析,认为随机裁剪有很大概率包含图像的中心区域。

而ImageNet-1K这种数据集中,中心区域通常是1000类标签集中的物体(如下图)。因此,对比学习方法主要提取图像中主体物体的特征。

而MIM方法能学到每个patch的特征,包括图像的背景区域,而不仅仅是图像主体物体,这让MIM学到的表征更适合下游检测分割任务。

论文对CAE和MoCo v3的注意力图做了可视化。红色表示注意力值更高,蓝色表示注意力值更低。第一行是原图,第二行是 MoCo v3,第三行是 CAE。可以看到,MoCo v3 的注意力图主要在图像的主体区域有高响应,而 CAE 能考虑到几乎所有patch。

实验结果

研究团队使用ViT-small和ViT-base在 ImageNet-1K 上进行实验,输入图像的分辨率224*224,每张图被分成14*14的patch,每个patch的大小为16*16。

每次将有75个patch被随机掩码,其余patch则为可见的。

本文参照BEiT,使用DALL-E tokenizer对输入图像token化,得到预测目标。

最终结果显示,在语义分割任务中,跟其他MIM方法,比如MAE、BEiT,以及对比学习、有监督预训练方法的表征结果更好。

图片

在物体检测、实例分割的结果也是如此。

最后欢迎大家关注我的微信公众号:对白的算法屋duibainotes),跟踪NLP、推荐系统和对比学习等机器学习领域前沿,日常还会分享我的创业心得和人生感悟。想进一步交流的同学也可以通过公众号加我的微信,和我一同探讨技术问题,谢谢!

北大博士生提出CAE,下游任务泛化能力优于何恺明MAE的更多相关文章

  1. lecture9-提高模型泛化能力的方法

    HInton第9课,这节课没有放论文进去.....如有不对之处还望指正.话说hinton的课果然信息量够大.推荐认真看PRML<Pattern Recognition and Machine L ...

  2. Local Response Normalization作用——对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力

    AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中.AlexNet主要使用到的新技术点如下. (1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过 ...

  3. Gradient Centralization: 简单的梯度中心化,一行代码加速训练并提升泛化能力 | ECCV 2020 Oral

    梯度中心化GC对权值梯度进行零均值化,能够使得网络的训练更加稳定,并且能提高网络的泛化能力,算法思路简单,论文的理论分析十分充分,能够很好地解释GC的作用原理   来源:晓飞的算法工程笔记 公众号 论 ...

  4. 机器学习中模型泛化能力和过拟合现象(overfitting)的矛盾、以及其主要缓解方法正则化技术原理初探

    1. 偏差与方差 - 机器学习算法泛化性能分析 在一个项目中,我们通过设计和训练得到了一个model,该model的泛化可能很好,也可能不尽如人意,其背后的决定因素是什么呢?或者说我们可以从哪些方面去 ...

  5. 查看neighbors大小对K近邻分类算法预测准确度和泛化能力的影响

    代码: # -*- coding: utf-8 -*- """ Created on Thu Jul 12 09:36:49 2018 @author: zhen &qu ...

  6. ECCV 2018 | 旷视科技提出GridFace:通过学习局部单应变换实现人脸校正

    全球计算机视觉三大顶会之一 ECCV 2018(European Conference on Computer Vision)即将于 9 月 8 -14 日在德国慕尼黑拉开帷幕,旷视科技有多篇论文被此 ...

  7. 学界 | 华为诺亚方舟实验室提出新型元学习法 Meta-SGD ,在回归与分类任务中表现超群

    学界 | 华为诺亚方舟实验室提出新型元学习法 Meta-SGD ,在回归与分类任务中表现超群 机器之心发表于机器之心订阅 499 广告关闭 11.11 智慧上云 云服务器企业新用户优先购,享双11同等 ...

  8. 网络前置任务(Pretext task)和下游任务(downstream tasks)

    Pretext task 可以理解为是一种为达到特定训练任务而设计的间接任务. 比如,要训练一个网络来对 ImageNet 分类,可以表达为 $f_{\theta}(x): x \rightarrow ...

  9. 机器学习:模型泛化(L1、L2 和弹性网络)

    一.岭回归和 LASSO 回归的推导过程 1)岭回归和LASSO回归都是解决模型训练过程中的过拟合问题 具体操作:在原始的损失函数后添加正则项,来尽量的减小模型学习到的 θ 的大小,使得模型的泛化能力 ...

随机推荐

  1. SSRF服务器端请求伪造漏洞基础

    0x00 思考 1.什么是SSRF漏洞?2.SSRF漏洞的利用方式3.SSRF漏洞绕过4.SSRF漏洞加固 0x01 什么是SSRF漏洞 定义:SSRF漏洞,中文全称为服务端请求伪造漏洞,是一种由攻击 ...

  2. 知乎上一个关于Android面试的问题答案

    由于链接出错,这里附上原文链接:Touch Me 前段时间面试,自己以及小伙伴们简要的汇总的一些面试问题,可以对照的参考一下吧- 建议就是在面一家公司之前了解好这个公司的app是以什么为驱动的,例如电 ...

  3. java有四种访问权限

    Java面向对象的封装性是通过对成员变量和方法进行访问控制实现的,访问控制分为4个等级:私有.默认.保护和公有,具体规则如下表:

  4. ARTS Week 22

    Algorithm 本周的 LeetCode 题目为 297. 二叉树的序列化与反序列化 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也 ...

  5. 返回值Student处理过程

  6. python网络爬虫-动态网页抓取(五)

    动态抓取的实例 在开始爬虫之前,我们需要了解一下Ajax(异步请求).它的价值在于在与后台进行少量的数据交换就可以使网页实现异步更新. 如果使用Ajax加载的动态网页抓取,有两种方法: 通过浏览器审查 ...

  7. Spring系列9:基于注解的Spring容器配置

    写在前面 前面几篇中我们说过,Spring容器支持3种方式进行bean定义信息的配置,现在具体说明下: XML:bean的定义和依赖都在xml文件中配置,比较繁杂. Annotation-based ...

  8. NOIP2018 Day2T2 填数游戏

    下面先给出大家都用的打表大法: 首先我们可以发现 \(n \le 3\) 的情况有 \(65pts\),而 \(n\) 这么小,打一下表何乐而不为呢?于是我写了一个爆枚每个位置再 \(check\) ...

  9. python——平时遇到问题记录

    # pyhs2安装 #centos yum install groupinstall 'development tools' yum install python34-devel yum instal ...

  10. Postman接口测试脚本编写规范

    Postman接口测试脚本编写规范 1.前言 2.名词解释 3.接口测试脚本规范 3.1接口测试脚本编写的规范 3.2 Postman使用规范 4.单个接口测试 5.整个流程的开发过程 1.前言 本规 ...