还需要“注意力层”吗?一堆“前馈层”在ImageNet上表现得出奇得好
水木番 发自 凹非寺
量子位 报道 | 公众号 QbitAI
谷歌昨天提出的MLP-Mixer,可谓是小火了一把。
简单来说,就是不需要卷积模块、注意力机制,就可以达到与CNN、Transformer相媲美的图像分类性能。
但看到新闻的牛津大学博士Luke Melas-Kyriazi,却沮丧了好一会:
因为大约一个月前,他就发现了可以用前馈层替换注意力层,并已经获得了很好的效果。
也就是说,他的方法和MLP-Mixer差不多……
所以当他看到报纸时,他甚至一度曾考虑报废自己的成果。
但他最终还是把成果发在了arXiv上,全文包括了4页的报告和代码。
让我们来看看他的成果。
研究原理
视觉transformer在图像分类和其他视觉任务上的强大性能,通常归因于其multi-head 注意力层的设计。
但是,目前尚不清楚引起这种强劲表现的程度。
而在这份简短的报告中,他亮出了核心观念:
注意力层是必要的吗?
具体来说,他将视觉transformer中的注意力层,替换为应用于patch dimension的前馈层。
最终产生的体系结构,只是一系列以交替的方式应用于patch和特征dimension的前馈层。
在ImageNet上进行的实验中,此架构的性能出奇地好:
基于ViT / DeiT的模型,可达到74.9%的top-1精度,而ViT和DeiT分别为77.9%和79.9%。
他的结果表明,无需注意力层,视觉transformer的其他方面,例如patch embedding,可能是其性能强大的主要原因。
他也希望这些结果能帮助大家,花更多的时间,来理解为什么目前的模型能像现在这样有效。
MLP-Mixer的原理
再回头看看谷歌的MLP-Mixer。
MLP-Mixer是一种仅基于多层感知机(MLP)的体系结构。
MLP-Mixer包含两种类型的层:一种具有独立应用于图像patches的MLP(即“混合”每个位置特征),另一种具有跨patches应用的MLP(即“混合”空间信息)。
MLP-Mixer用Mixer的MLP来替代ViT的transformer,减少了特征提取的自由度,并且巧妙的可以交替进行patch间信息交流和patch内信息交流。
从结果上来看,纯MLP貌似也是可行的,而且省去了transformer复杂的结构,变的更加简洁。
你品,你细品!
怎么样,是不是很像?
Luke Melas-Kyriazi自己说,这是与谷歌MLP-Mixer并行的研究,idea完全相同,不同之处在于使用了更多的计算。
网友:几乎相同,但好过谷歌!
论文看起来与MLP-Mixer几乎相同,除了Mixer的大数据方法中包含了花式的数据和长效的实验。
他的“前馈层堆栈”比MLP-Mixer的还要精确得多!
而他也表示:
正是大公司的介入使竞争越来越激烈,他们可以在更短的时间内进行更多的实验,就像高度优化的造纸机。
好吧,果然大神们的世界做课题的方向和速度都是一样的“神”。
有兴趣的亲们记得去看这两个研究的原文。
团队介绍
Luke Melas-Kyriazi 哈佛大学数学系毕业生、现牛津大学博士。
目前,在牛津大学Andrea Vedaldi教授指导下,Luke攻读方向为机器学习和计算机视觉,专注于半监督和多模式学习研究。
参考链接:
[1]https://www.reddit.com/r/MachineLearning/comments/n62qhn/r_do_you_even_need_attention_a_stack_of
[2]https://arxiv.org/abs/2105.02723
[3]https://www.reddit.com/r/MachineLearning/comments/n59kjo/r_mlpmixer_an_allmlp_architecture_for_vision/
[4]https://arxiv.org/abs/2105.01601
[5]https://zhuanlan.zhihu.com/p/369959580
[6]https://www.163.com/dy/article/G9AVMRPD0511DPVD.html
还需要“注意力层”吗?一堆“前馈层”在ImageNet上表现得出奇得好相关推荐
- 还需要“attention”吗?一堆“前馈层”在ImageNet上表现得出奇得好
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 水木番 发自 凹非寺 量子位 报道 | 公众号 QbitAI 谷歌昨 ...
- 仅需12层网络,在ImageNet上准确率达到80.7%!普林斯顿大学最新提出ParNet!
[导读]自从2012年深度学习兴起以来,深度,宽度,多尺度,分辨率,group数目,注意力模块等等都是影响卷积神经网络性能的关键因素.因此,后面大多网络比如:VGGNet.HighwayNet.Res ...
- 深入学习卷积神经网络中卷积层和池化层的意义(转)
为什么要使用卷积呢? 在传统的神经网络中,比如多层感知机(MLP),其输入通常是一个特征向量:需要人工设计特征,然后将这些特征计算的值组成特征向量,在过去几十年的经验来看,人工找到的特征并不是怎么好用 ...
- pytorch 入门:GPU加速,卷积层,池化层
GPU 加速 深度学习设计很多向量和多矩阵运算,比如BP , CNN 等深层模型都可以写成矩阵运算的格式,不用写成循环运算.但是CPU 上矩阵的运算会被展成循环的形式,CPU 是串行执行的.而GPU ...
- 深入学习卷积神经网络中卷积层和池化层的意义
为什么要使用卷积呢? 在传统的神经网络中,比如多层感知机(MLP),其输入通常是一个特征向量:需要人工设计特征,然后将这些特征计算的值组成特征向量,在过去几十年的经验来看,人工找到的特征并不是怎么好用 ...
- 理解CNN卷积层与池化层计算
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 概述 深度学习中CNN网络是核心,对CNN网络来说卷积层与池化层的 ...
- OSI七层模型中每层的协议及网络设备—Vecloud微云
物理层 数据端设备在物理层传送数据,物理层可以是一个物理媒体,也可以是多个物理媒体连接而成. 物理层中网络设备有:中继器和集线器(多个口的中继器就是集线器).例如双绞线的传输距离是100M,超过整个长 ...
- Keras.layers各种层介绍,网络层、卷积层、池化层 等
[转载]Keras.layers各种层介绍 - 心冰之海 - bk园 https://www.cnblogs.com/lhxsoft/p/13534667.html 文章导航 一.网络层 1.常用网络 ...
- sql server 2008 年累计数_MySQL高阶问题:server层和存储引擎层是如何交互的?
点击上方石杉的架构笔记,右上选择"设为星标" 每日早8点半,精品技术文章准时送上 往期文章 BAT 面试官是如何360°无死角考察候选人的(上篇) 每秒上万并发下的Spring C ...
最新文章
- Linux中强制结束一个进程的终极方法
- Angular Component template函数执行上下文的对象
- python 命名实体识别_使用Python和Keras的有关命名实体识别(NER)的完整教程
- 被 C# 的 ThreadStatic 标记的静态变量,都存放在哪里了?
- 五岁的时候,你在干什么?
- ASP中FSO的神奇功能(1)
- rhel7 ifconfig command not found
- PO、VO、BO、DTO、POJO、DAO之间的关系
- 谈谈对 SRE 的理解
- 《实变函数简明教程》,P63,f可测等价于f+,f-均可测 以及 f可测蕴涵|f|可测
- Ubuntu 源(教育网,IPv6)
- 根据关键词采集文章php,如何通过文章采集获取一篇高质量的网站内容
- horner算法matlab实现,使用Euclid和Horner算法的多项式求值
- 揭开CVE漏洞挖掘与编号申请那层神秘窗户纸
- jQuery学习之旅 Item1 选择器【一】
- 【AI应用】NVIDIA GeForce RTX 2060的详情参数
- java设置excel单元格文本右对齐,POI操作Excel--设置单元格对齐方式--day03
- ZEMAX常用操作数及常见用法(更新中。。。)
- 电影程序php,搜一次CMS电影程序PHP版
- 异或的性质 HDOJ 2095 find your present (2)