FFN -> GLU -> GAU

news2025/7/26 7:23:35

1 GLU

GLU的起源是2016年由Yann N. Dauphin在
论文:Language Modeling with Gated Convolutional Networks

在语言模型的建模方法上相比于循环神经网络更具有竞争力,提出了一种简单的线性门控单元来堆叠卷积层从而使得文本中的token可以并行化处理来获得上下文的语义特征。
而且与循环神经网络相比,其复杂度从O(N)降低到O(N/k),其中的k为卷积核的宽度,N为文本的上下文集合。这里的循环神经网络不单指RNN,还有其变种LSTM、GRU等等。论文中整个模型的结构如下图所示:输入层(Input Sentence+Lookup Table)、中间层(Convolution+Gate)以及输出层(Softmax)
在这里插入图片描述

输入层(Input Sentence+Lookup Table)
W=[w1,w2,……,wn],wn代表输入token,通过lookuptable得到embedding
E=[ew1,ew2,……,ewn]

中间层(Convolution+Gate)
首先输入到两个卷积层Conv1和Conv2 ,得到两个输出Ccon1和Ccon2,然后将Ccon2利用sigmoid函数进行激活得到h(Ccon2),然后通过Hadamard积逐位相乘得到相应的隐层向量h,更一般的可表示为:
在这里插入图片描述
X表示输入的向量,N表示输入文本中token的集合长度,m表示向量的维度,k表示卷积核的宽度,n表示输出的特征图大小(输出维度),V,W是可训练的参数矩阵,b,c表示对应的偏置项。
可以看出,门控线性单元与LSTM的门控本质上是一样的,只不过在计算隐层向量时不需要依赖上一个时间步。通过堆叠多层卷积就可以得到文本的上下文信息

GTU的门控机制,其实也就是将GLU的前一项利用 函数进行激活,但引入一个激活函数就代表梯度在反向传播过程中就多了一项衰减项,因此,作者认为GLU优于GTU。GTU表示为:
在这里插入图片描述
对于采用sigmoid可能导致的梯度弥散问题,作者还在网络加入了残差。并且由于sigmoid在中间部分(近0端)表现近似于线性,所以整个模型的复杂度基本近似于线性。

输出层(Softmax),
在这里插入图片描述
由于在语言模型建模过程中的词表V是相当大的,也就是在进行一次预测时会撸一遍词表,其复杂度就为O(V),会严重影响模型的效率。所以作者采用了AdaptiveSoftmax作为归一化函数,将词表中的词分为高频词和低频词两组,将不同词频区间的词分为不同的clusters,按照词频高的cluster优先访问的原则,对cluster中的每个词进行softmax来预测,所以也要求词表需要按照频率从大到小进行排列。以此来加快模型训练时的效率。

门控线性单元(Gated Linear Unit, GLU),它是门控增强的改进版 MLP 变体
GLU 已被证实在很多情况下都有效,并在 SOTA Transformer 中使用;
GLU Variants Improve Transformer

标准FFN
在这里插入图片描述

GLU
在这里插入图片描述
一般情况下的GLU是U不加激活函数而V加Sigmoid

在这里插入图片描述

GAU

论文《Transformer Quality in Linear Time》

其核心思路是将注意力和 GLU 作为一个统一层,并尽可能多地共享它们的计算,具体如下图所示。这样做不仅实现了更高的参数和计算效率,而且自然地赋能一个强大的注意力门控机制。

在这里插入图片描述

结合GLU。将Attention和GLU结合
在这里插入图片描述
在式(3)中,如果A等于单位阵I,那么它就是GLU式的FFN;而如果A是全1矩阵,那么它就是普通的注意力机制。所以说,(3)是Attention和FFN的一个简单而自然的融合,我们期望它能同时替换掉Attention和FFN,甚至有更好的表现。
在这里插入图片描述
Z是共享表示 (s<<d), 论文中s =128
当GAU只有一个头时,Wz的参数量就很少了,主要参数量在Wu,Wv,Wo上,所以GAU的参数量大约为3de;
而在标准的Transformer中,Attention的参数量为4d2,FFN的参数量为8d2(标准FFN中一般是e=4d),所以总参数量为12d2
因此,从参数量看,当e=2d时,两层GAU大致上就等于原来的Attention+FFN。
“n层Attention+n层FFN”的标准Transformer模型,对应的就是“2n层GAU”的新模型,我们记为FLASH-Quad,其中Quad是“Quadratic”的简写,表明复杂度依然是二次的。

降低复杂度的方法
(1)将注意力计算稀疏化、即人为根据先验知识规定哪些token可以进行注意力计算(典型代表: Longformer、BigBird等)
(2)将注意力计算线性化。提出另外的方法,去逼近标准注意力的效果(典型代表: Linformer、Performer等),如下公式所示:

在这里插入图片描述
假设Q , K , V 的维度都为:( m , d )
右边是正常计算:m∗d∗m + m∗d∗m = 2dm2,跟序列长度m成平方正比.
左边:先计算KTV, d∗m∗d+d∗m∗d,即:2md2.

第二种方法随着序列的边长,效率会远高于第一种方法

分块注意力的计算
假设序列长度为n,每个块的维度为c,则可分成n/c个块(默认可整除)。
在这里插入图片描述
块内注意力
每个块的token内部自行交互,本质上也算是“稀疏化”的一种,其复杂度大致是𝒪(n/c×c2)=𝒪(nc),正比于n。实现时相当于头数为n/c、序列长度为c的多头注意力,可以充分地并行,
而如果想要做Decoder,那么mask掉注意力矩阵的上三角部分即可
在这里插入图片描述
全局注意力
注意,这个操作跟直接用完整矩阵Qlin,Klin∈ℝn×s与V做线性Attention是完全等价的,写成这样只是更好地体现跟分块的联系。
如果是做Decoder,那么要防止泄漏未来信息,所以要改为cumsum形式:
在这里插入图片描述
这种情况下,为了保持并行性,我们只需要b(n/c)se的空间复杂度,而如果不分块直接用线性Attention,那么是bns2(要是原始的用法还要加上多头,那就是bhns2),在当前参数设置下有e/c≪s,所以是更省显存了。
最终GAU:基于线性版本GAU搭建的Transformer模型
在这里插入图片描述

GAU与标准的多头注意力之间MHSA的比较,其实也就是FLASH-Quad和标准Transformer的比较了,如下图:
在这里插入图片描述
注意横轴是速度,纵轴是效果,这种图越靠近右上角的点意味着越理想(速度和效果都最优),
所以上图显示不管哪种规格的模型,GAU都比相应的多头注意力模型更有优势。

FLASH模型的实验表格在这里插入图片描述
1、尽管FLASH-Quad和Transformer都是二次复杂度,但FLASH-Quad效果更好、速度更快;
2、在序列足较长时,线性复杂度的FLASH比FLASH-Quad更快,并且效果相仿。
在这里插入图片描述

与 Transformer 层相比,每个 GAU 层更便宜。更重要的是,它的质量更少依赖于注意力精度。事实上,小单头、无 softmax 注意力的 GAU 与 Transformers 性能相近。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/35411.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTP响应详解

目录 一.状态码 小结&#xff08;记住&#xff09; 二.认识响应正文&#xff08;body&#xff09; 三.如何构造http请求 一.状态码 是一个数字&#xff0c;这个数字描述了当前这次请求的状态&#xff08;成功&#xff0c;失败&#xff0c;失败的原因&#xff09; http的状态…

Typora基础篇

Markdown基础 标题 #标题名字&#xff08;#号的个数代表标题的级数&#xff09; 文件-偏好设置-Markdown里面如果勾选了严格模式&#xff0c;那#与标题名称之间就需要加上一个空格一级标题用1个# 二级标题用2个# 三级标题用3个# 四级标题用4个# 五级标题用5个# ####### …

262-视口,布局视口,视觉视口,移动端适配,less语法,比哪里,DPR,RRI,less的弊端,运算,嵌套,混合,继承,混入,运算,

262-CSS中的单位 ◼ 前面编写的CSS中,我们经常会使用px来表示一个长度(大小),比如font-size设置为18px,width设置为100px。 ◼ px是一个长度(length)单位,事实上CSS中还有非常多的长度单位。 ◼ 整体可以分成两类:  绝对长度单位(Absolute length units);  相…

【uniapp】安装与使用uView组件库:

文章目录一、官网文档二、安装【1】进入控制台【2】初始化package.json【3】安装uView-ui【4】配置main.js【5】配置uni.scss【6】配置easycom组件模式【7】app.vue引入基础样式三、效果一、官网文档 https://www.uviewui.com/ 二、安装 【1】进入控制台 【2】初始化package…

基于sklearn的集成学习实战

集成学习投票法与bagging 投票法 sklearn提供了VotingRegressor和VotingClassifier两个投票方法。使用模型需要提供一个模型的列表&#xff0c;列表中每个模型采用tuple的结构表示&#xff0c;第一个元素代表名称&#xff0c;第二个元素代表模型&#xff0c;需要保证每个模型…

《计算机体系结构量化研究方法第六版》1.3 计算机体系结构的定义

1.3.1 指令集体系结构&#xff1a;计算机体系结构的近距离审视 1、这里通过指令集体系结构 ISA来指代程序员可以看到的实际指令集。ISA相当于软件和硬件之间的界限。 &#xff08;1&#xff09;ISA分类 几乎所有的ISA都被划分到了通用寄存器体系结构中&#xff0c;在这种体系…

能源消耗监测管理系统:实现企业用能定额、降低成本节能管理

现如今&#xff0c;很多企业还停留在安装各种节能产品或者是传统节能技术来达到节能目的&#xff0c;但是这些方法不能从根本上实现节能目标&#xff0c;从而导致企业效益。 在国家推动下&#xff0c;能源管理系统加入了互联网的技术以及数字化技术来协同管理&#xff0c;软硬…

二叉树链式结构的实现及简单操作(画图超详细解释)

二叉树链式结构的实现及简单操作前置说明前序遍历中序遍历后序遍历层序遍历如何判断一颗二叉树是完全二叉树通过前序遍历的数组构建二叉树销毁二叉树总结前置说明 由于我们要对二叉树进行操作&#xff0c;我们就得现有一个二叉树&#xff0c;而二叉树的构建又比较复杂&#xf…

李宏毅机器学习作业10——Adversarial Attack

目录 目标和方法 评价方法 导包 Global Settings Data transform Dataset 代理网络 评估模型在非攻击性图像上的表现 Attack Algorithm FGSM I-FGSM MI-FGSM Diverse Input (DIM) 攻击函数 Attack Ensemble Attack 集成模型函数 构建集成模型 进行攻击 FG…

【Node.js】第八章 express编写接口

目录 1. 编写接口 1.1 编写GET接口 2.2 编写POST接口 2. 接口跨域问题 2.1 跨域问题 2.2 使用cors中间件解决跨域问题 2.3 CORS ​2.4 JSONP接口 1. 编写接口 1.1 编写GET接口 2.2 编写POST接口 2. 接口跨域问题 2.1 跨域问题 2.2 使用cors中间件解决跨域问题 cor…

家里Win7电脑如何连接公司Win10电脑?快解析+远程桌面

什么是远程桌面&#xff1f;通俗地讲&#xff0c;就是可以在任何地点登陆位于其他地点的电脑&#xff0c;可以看到远程登陆电脑的一切东西&#xff0c;可以进行添加、改变、删除文件等任何操作&#xff0c;就像自己在那台电脑前操作一样。远程桌面有丰富的应用场景&#xff0c;…

如何在TIA博途中在线更新PLC的CPU固件版本?

如何在TIA博途中在线更新PLC的CPU固件版本? S7-1200PLC最新的V4.6.0版本的固件出来了,本次就以V4.6版本的固件为例,演示如何在博途中对PLC的固件版本进行更新。 (为防止更新过程中出现意外,强烈建议对PLC的程序进行备份!备份!备份!) 如下图所示,打开某个项目,选中PL…

nm命令使用详解,让你加快学习速度

nm 命令详解 符号是每个ELF文件的一个重要部分&#xff0c;因为它保存了程序实现或使用的所有(全局)变量和函数。符号表中保存了查找程序符号、为符号赋值、重定位符号所需要的全部信息。Linux中 nm用来列出目标文件的符号表;如果nm指令没有指出目标文件&#xff0c;则nm假定目…

模拟电路设计(34)---脉宽调制型开关电路

在开关稳压电源中&#xff0c;直流变换器中的功率晶体管工作在开关状态。目前开关电源的工作频率在几百kHz&#xff0c;有些甚至已经到了MHz量级。如下图所示是DC-DC开关变换器的原理框图&#xff1a; ​DC-DC开关变换器的原理框图 开关电源的实现方式有很多种&#xff0c;如最…

[附源码]Python计算机毕业设计二手图书回收销售网站

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Spring:AOP事务管理(14)

Sprin事务Spring事务简介相关概念介绍转账案例-需求分析转账案例-环境搭建事务管理Spring事务角色Spring事务属性事务配置转账业务追加日志案例事务传播行为Spring事务简介 相关概念介绍 事务作用&#xff1a;在数据层保障一系列的数据库操作同成功同失败。Spring事务作用&am…

电子作业票系统:消除安全管理漏洞,科技赋能企业业务洞察

电子作业票系统采用定位、物联网、人脸识别、大数据技术对现场作业进行严格管控&#xff1b;通过风险大数据风险辨识模型&#xff0c;实现作业风险辨识&#xff0c;对动火、高处、受限空间、临时用电、吊装、断路、管线打开、挖掘作业等特殊作业票证智能化管理。 在危化企业实际…

Excel VS BI,谁才是真正的大数据分析工具?

有人说&#xff0c;Excel能聚合运算&#xff0c;能分析&#xff0c;能做数据分析报表。而BI数据分析工具&#xff0c;看上去也就是做出来的报表更好看一些。事实真的是这样吗&#xff1f;当然不是。外行人看热闹&#xff0c;内行人看门道&#xff0c;BI数据分析工具比起Excel更…

访问权限控制

访问控制目的 在实际的组织中&#xff0c;为了完成组织的业务工作&#xff0c;需要在组织内部设置不同的职位&#xff0c;职位既表示一种业务分工&#xff0c;又表示一种责任与权利。根据业务分工的需要&#xff0c;职位被划分给不同群体&#xff0c;各个群体的人根据其工作任…

零代码极限封装的【接口自动化测试框架】震碎你的三观

随着互联网寒冬的到来&#xff0c;测试行业裁员的裁员&#xff0c;找工作的找工作&#xff0c;内卷越来越加剧&#xff0c;那么选择一个学习提升的平台尤为重要&#xff0c;接下来我要说的事情将震碎你的三观&#xff0c;震掉你的眼球&#xff0c;和每个测试人息息相关&#xf…