深度学习——Pay Attention to MLPs

2023-11-06

前言

前不久入职某大厂了,有点怀念无忧无虑的学生时代。入职后很快收到了第一个优化任务,算法岗的高不确定性确实会让人有一丝焦虑。目前体感来看,现有的深度学习模型性能非常依赖于数据质量,在数据质量足够的前提下,才有模型上的一系列操作。

本文将总结类ViT网络结构Gmlp,论文题为Pay Attention to MLPs

本文为个人总结,如有错误,欢迎指出。本文默认读者具有ViT相关知识


Gmlp

输入与输出

Gmlp是类ViT的结构,其输入仍为若干图像块(即将一张图像切割成若干图像块),输出为若干个向量(token)堆叠组成的矩阵,例如token的维度为 L L L,个数为 N N N,则输出为 N ∗ L N*L NL的矩阵。通过池化等操作转换为最终的特征向量。

结构

对比ViT,Gmlp取消了Position Embedding以及Self Attention,由若干个基本构成单元堆叠而成,基本构成单元(unit)的结构如下图所示
在这里插入图片描述
设输入矩阵(即图中的Input Embeddedings)为 n ∗ d n*d nd的矩阵 X X X,则Gmlp的unit结构可以简化为(省略了Norm等操作):
Z = δ ( X U ) Z ^ = s ( Z ) Y = Z ^ V + X \begin{aligned} Z&=\delta(XU)\\ \hat Z&=s(Z)\\ Y&=\hat Z V+X \end{aligned} ZZ^Y=δ(XU)=s(Z)=Z^V+X

U 、 V U、V UV为可学习的矩阵(就是FC层,维度自己定), δ \delta δ为激活函数, s ( z ) s(z) s(z)为图中的Spatial Gating Unit,其结构可以表示为

f W , b ( Z ) = W Z + b s ( Z ) = Z ⊙ f W , b ( Z ) \begin{aligned} f_{W,b}(Z)&=WZ+b\\ s(Z)&=Z\odot f_{W,b}(Z) \end{aligned} fW,b(Z)s(Z)=WZ+b=ZfW,b(Z)
Z Z Z n ∗ d n*d nd的矩阵,则 W W W n ∗ n n*n nn的矩阵(不会改变输入矩阵的维度), b b b n n n维向量( W Z + b WZ+b WZ+b表示 W Z WZ WZ的第一行元素与b的第一维元素相加),为了保证训练的稳定性, W W W初始化值接近于0(貌似用[-1,1]的均匀分布初始化), b b b的初始值为1,此时 f W , b ( Z ) ≈ 1 f_{W,b}(Z)\approx1 fW,b(Z)1,此时Spatial Gating Unit相当于Identity Mapping。

更进一步的作者发现将 Z Z Z沿着channel维度切割成 Z 1 、 Z 2 Z_1、Z_2 Z1Z2 Z 1 、 Z 2 Z_1、Z_2 Z1Z2维度分别为 n ∗ d 1 n*d_1 nd1 n ∗ d 2 n*d_2 nd2 d 1 + d 2 = n d_1+d_2=n d1+d2=n)两个部分更为有效,此时 s ( Z ) s(Z) s(Z)操作变为
s ( Z ) = Z 1 ⊙ f W , b ( Z 2 ) s(Z)=Z_1\odot f_{W,b}(Z_2) s(Z)=Z1fW,b(Z2)

Spatial Gating Unit的输出在经过矩阵 V V V调整维度后与unit的输入进行相加。

个人理解

这里总结几点我认为比较重要的点,首先是脱离Gmlp的大方向上,在看完ViT的结构后,个人一直感觉Self Attention不是其性能的主要来源,gMLP、MLP-Mixer,以及接下来要总结的MetaFormer都验证了这一点。更进一步的,这几个工作都有一个共性,即类ViT结构的模型都会先用FC层混合单个token中的信息,接着用一个特定的操作来混合多个token的信息(MLP-Mixer通过token mixer来混和多个token的信息,MetaFormer通过池化操作,gMLP通过Spatial Gating Unit),这两个操作可看成对CNN中卷积操作的拆解,在CNN中,多个特征图输入到卷积核后,卷积核会糅合多个特征图中的空间(Spatial)和通道(channel)信息。而在类ViT结构中,若将token看成特征图,则其首先利用FC层糅合单个特征图(token)的空间信息,接着糅合多个特征图(token)的信息(通道信息)。此外,类ViT结构中的矩阵操作可以等价于卷积操作(只不过卷积核的分辨率大小等于特征图大小)。综合上述分析,类ViT结构更像是CNN模型的变种,我们似乎发现了一种更为有效的CNN结构。

回到Gmlp上,Spatial Gating Unit形式上很想Attention,但作者引入其的本意并不是挑选哪类特征是重要的,而是混合多个token的信息,不过这种混合的方式比较诡异,应该存在更具解释性的方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习——Pay Attention to MLPs 的相关文章

随机推荐

  • 语音编码之压缩

    我的书 购买链接 京东购买链接 淘宝购买链接 当当购买链接 这本书里叙述了SILK和Opus语音编解码器 这里简单的串接编解码的核心知识点 LPC LPC Linear predictive coding 在音频和语音处理领域常用于表示压缩
  • Python使用open读取文件时,如何不带换行符(\n)

    在读入一些用文本文档存储的数据时 一般都会在每一行存储一个数据 当我们用python自带的open和readlines读取每行的数据时 是会将每一行结尾的换行符 n 读入的 如下 test text txt内容 dataA dataB da
  • R语言 决策树--预测模型

    决策树 算法的目标是建立分类预测模型或回归预测模型 是一种预测模型 按目标不同可以细分为分类树和回归树 因为在展示的时候 类似于一棵倒置的树而得名 如下图 基本概念 根节点 如上图中最上方 一棵决策树只有一个根节点 中间节点 位于中间的节点
  • 找不到msvcp140.dll无法继续执行代码是什么原因?如何修复呢?

    想和大家分享一个常见的问题 找不到msvcp140 dll无法继续执行代码是什么原因 这个问题可能会让你感到困惑和烦恼 但是请放心 我会提供5个修复方法 并在最后告诉你修复完成以后需要注意的事项 找不到 msvcp140 dll 无法继续执
  • SylixOS系统如何永久修改IP地址

    1 进入 etc目录 找到startup sh文件 通过FTP下载该文件 2 用vs打开startup sh文件 将IP配置信息写入文件 保存 退出 我修改的是en2网口的IP地址 3 将修改后的startup sh文件通过FTP重新传输到
  • scrapy框架讲解

    简介 Scrapy是一个基于Python的开源异步爬虫框架 它被广泛用于从网页或App中 提取数据并将其保存到本地或数据库 由2 8版本以后提供了 http2 0协议的爬虫支持 扩展 scrapy是基于twisted框架开发而来 twist
  • C语言实现二叉树--->二叉查找树

    声明 代码实现都是自己写的 而且没有借鉴别人的代码 也没有看任何教程 只看了下二叉树的具体定义 知道大概是个什么东西 说这些只是为了说明下列代码实现肯定不是最优的 甚至在你们看来都是很垃圾的代码 不过没关系 因为这是我自己动脑筋写出来的 记
  • cmd /c /k

    cmd c dir 是执行完dir命令后关闭命令窗口 cmd k dir 是执行完dir命令后不关闭命令窗口 cmd c start dir 会打开一个新窗口后执行dir指令 原窗口会关闭 cmd k start dir 会打开一个新窗口后
  • 【串口屏】迪文的串口屏下载程序SD卡如何格式化

    用SD卡下载程序到迪文的串口屏需要先将SD卡格式化 而直接鼠标右键快速格式化这种方式不行 必须通过字符命令行格式化才行 即运行 cmd命令 具体如下 SD卡需要格式化成屏能识别的格式 开始 运行 输入cmd进入DOS系统 输入format
  • (二)vue.js的设计模式

    概述 Vue js在设计上采用mvvm模式进行设计 mvvm模式刚出来时一度的被人奉为神一般的模式 好像不懂mvvm模式就脱离了时代一样 什么是mvvm模式呢 Mvvm的全称为 Model View ViewModel m表示数据模型层 v
  • JavaScript 导出CSV文件

    列标题 逗号隔开 每一个逗号就是隔开一个单元格 var str 项目名称 项目信息 n for let i 0 i lt checkedItems length i var data checkedItems i str data Item
  • mysqlbackup企业版物理备份工具使用

    MySQL Enterprise Backup 简称MEB MEB8 对应的是MySQL8 0版本 8 0 28 备份工具的版本和MySQL版本要一致 MEB8 新特性 参考链接 https dev mysql com doc mysql
  • Java设计模式——建造者模式

    文章目录 为什么要有建造者模式 建造者模式 为什么要有建造者模式 工厂类模式提供的是创建单个类的模式 而建造者模式则是将各种产品集中起来进行管理 用来创建复合对象 所谓复合对象就是指某个类具有不同的属性 建造者模式与工厂模式的区别 工厂模式
  • 究竟什么是in-place?它在autograd当中怎么注意? 含grad函数的使用的一个小点

    1 a 0 b 0 是in place 2 a a 1 不是in place 3 a a permute 0 3 1 2 不是in place a view of a leaf Variable that requires grad is
  • 《国富论》笔记——货币

    上一个读书笔记 我简单发散思维到了货币 从以物易物到以贝壳作为货币举了一段例子 国富论 第四章就马上讲到了货币 并且补充了我很多未分析到的地方 货币的起源 当以物易物的时候 也许是因为我不再需要你的物品了 所以不再需要和你交换 你的东西只有
  • java实现的坦克大战(整理代码)

    本科做的小项目 现在整理一下 package T1 import java awt import javax swing import java awt event import java io import java util Vecto
  • 开学季征文

    目录 前言 一 自我介绍 二 前情回顾 2 1 摆烂大学生 2 2 从床上爬起来 三 新学期目标 1 刷算法 1 1 我与算法的缘 1 2 开始写题 1 3 为什么刷算法以及flag 1 4 计划参加一下蓝桥杯试试 2 学习英语和日语 2
  • 【区块链与密码学】第4-6讲:如何运用区块链实现防伪?

    本课堂用通俗易懂的系列内容为大家呈现区块链与密码学领域相关知识 这里有知识也有故事 从感兴趣到有乐趣 点宽课堂等你来学 课程首先从比特币着手进行入门介绍 再延伸至区块链的相关技术原理与发展趋势 然后深入浅出地依次介绍在区块链中应用的各类密码
  • vue 使用wangEditor

    1 npm install wangeditor core wangeditor editor wangeditor editor for vue 2 封装组件 MyEditor vue 这里是通过props content 将展示内容传入
  • 深度学习——Pay Attention to MLPs

    文章目录 前言 Gmlp 输入与输出 结构 个人理解 前言 前不久入职某大厂了 有点怀念无忧无虑的学生时代 入职后很快收到了第一个优化任务 算法岗的高不确定性确实会让人有一丝焦虑 目前体感来看 现有的深度学习模型性能非常依赖于数据质量 在数