Google综述:细数Transformer模型的17大高效变种

《论文阅读》AXIAL ATTENTION IN MULTIDIMENSIONAL TRANSFORMERS 留个笔记自用 AXIAL ATTENTION IN MULTIDIMENSIONAL TRANSFORMERS 做什么 点云的概念:点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,在获取物体表面每个采样点的空间坐标后,得到的是点的集合,称之为“点云”(Point Cloud)。 点包含了丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等,不一一列举。 一般的3D点云都是使用深度传感器扫描得到的,可以简单理解为相比2维点,点云是3D的采样 做了什么 这里又是一种trans 阅读详情

 

在开始学习之前推荐大家可以多在FlyAI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

摘要: 在NLP领域transformer已经是成功地取代了RNN(LSTM/GRU),在CV领域也出现了应用,比如目标检测和图像加注,还有RL领域。这是一篇谷歌2020年9月份在arXiv发表的综述论文 “Efficient Transformers: A Survey“,值得 ...

在NLP领域transformer已经是成功地取代了RNN(LSTM/GRU),在CV领域也出现了应用,比如目标检测和图像加注,还有RL领域。这是一篇谷歌2020年9月份在arXiv发表的综述论文 “Efficient Transformers: A Survey“,值得读读。

文章主要针对一类X-former模型,例如Reformer, Linformer, Performer, Longformer为例,这些对原版Transformer做了改进,提高了其计算和内存的效率。

论文题目:

Efficient Transformers: A Survey

论文链接:

https://arxiv.org/pdf/2009.06732

Transformer回顾图片

self-attention是Transformer模型的关键定义特征。该机制可以看作是类似graph的归纳偏差(inductive bias),它可将序列中的所有token与基于相关的pooling操作相联系。self-attention 的一个众所周知的问题是quadratic级别的时间和内存复杂度,阻碍许多设置的模型规模化(Scalability)。所以,最近提出了解决该问题的大量变型,这里将这类模型称为efficient Transformers。

efficient self-attention模型在长序列建模的应用中至关重要,例如文档、图像和视频通常都由相对大量的像素或token组成。因此,处理长序列的效率对于Transformers的广泛采用至关重要。

如图是一个标准的Transformer架构:

Transformer是通过将Transformer blocks彼此堆叠而形成的多层体系结构。Transformer blocks的特点包括multi-head self-attention机制、positionwise前馈网络(feed-forward network)、层归一化(LN)模块和残差连接器(residual connectors)。

Transformer模型的输入通常是形状为BxN的张量,其中B是批处理(batch)大小,N是序列长度。该输入先穿过一个嵌入层,该层将每个one-hot token表示转换为d-维的嵌入向量,即BxNxd。然后,新张量与位置编码相加,并通过一个multi-head self-attention模块。

位置编码可以是正弦输入形式或者可训练的嵌入方式。multi-head self-attention模块的输入和输出通过残差连接器和层归一化层(LN)模块连接。然后,将multi-head self-attention模块的输出传递到两层前馈网络(FFN),类似于以残差方式连接层归一化(LN)模块。

带层归一化模块的残差连接器定义为:

而在Multi-Head Self-Attention的单个head操作定义为:

Attention矩阵A = QK^T主要负责学习序列中token之间的校准分。这会推动self-attention的自我校准过程,从而token学习彼此之间的聚类。不过,这个矩阵计算是一个效率的瓶颈。

FFN的层操作定义为:

这样整个Transformer block的操作定义是:

下面要注意的是Transformer模块使用方式的不同。Transformer主要使用方式包括:(1)编码器(例如用于分类),(2)解码器(例如用于语言建模)和(3)编码器-解码器(例如用于机器翻译)。

在编码器-解码器模式下,通常有多个multi-head self-attention模块,包括编码器和解码器中的标准self-attention,以及允许解码器利用来自解码器的信息的编码器-解码器cross-attention。这影响了self-attention机制的设计。

在编码器模式中,没有限制或self-attention机制的约束必须是因果方式,即仅取决于现在和过去的token。

在编码器-解码器设置中,编码器和编码器-解码器cross-attention可能是无因果方式,但解码器的self attention必须是因果方式。设计有效的self attention机制,需要支持AR(auto-regressive)解码的因果关系,这可能是一个普遍的限制因素。

Efficient Transformers

Efficient Transformers的分类如图,其对应的方法在近两年(2018-2020)发表的时间、复杂度和类别见表:

注:FP = Fixed Patterns/Combinations of Fixed Patterns, M = Memory, LP = Learnable Pattern, LR = Low Rank, KR = Kernel, RC = Recurrence.

除segment-based recurrence外,大多数模型的主要目标是对attention matrix做quadratic级别开销近似。每种方法都将稀疏的概念应用于原密集的attention机制。

Fixed patterns(FP):self attention的最早改进是将视场限制为固定的、预定义模式(例如局部窗和固定步幅的块模式)来简化attention matrix。

Blockwise Patterns这种技术在实践中最简单的示例是blockwise(或chunking)范式,将输入序列分为固定块,考虑局部接受野(local receptive fields)块。这样的示例包括逐块和/或局部attention。将输入序列分解为块可将复杂度从N^2降低到B^2(块大小),且B << N,从而显著降低了开销。这些blockwise或chunking的方法可作为许多更复杂模型的基础。

Strided patterns是另一种方法,即仅按固定间隔参与。诸如Sparse Transformer和/或Longformer之类的模型,采用“跨越式”或“膨胀式“视窗。

Compressed Patterns是另一条进攻线,使用一些合并运算对序列长度进行下采样,使其成为固定模式的一种形式。例如,Compressed Attention使用跨步卷积有效减少序列长度。

Combination of Patterns (CP):其关键点是通过组合两个或多个不同的访问模式来提高覆盖范围。例如,Sparse Transformer 将其一半的头部分配给模式,结合strided 和 local attention。类似地,Axial Transformer 在给定高维张量作为输入的情况下,沿着输入张量的单轴应用一系列的self attention计算。本质上,模式组合以固定模式相同的方式降低了内存的复杂度。但是,不同之处在于,多模式的聚集和组合改善了self attention机制的总覆盖范围。

Learnable Patterns (LP):对预定FP模式的扩展即可学习。毫不奇怪,使用可学习模式的模型旨在数据驱动的方式学习访问模式。LP的关键是确定token相关性,将token分配给buckets 或者clusters。值得注意的是,Reformer引入了基于哈希的相似性度量,有效地将token聚类为chunks。类似地,Routing Transformer在token上采用在线的k-means聚类。同时,Sinkhorn排序网络(Sorting Network)通过学习对输入序列的blocks排序来显露attention weight的sparsity。所有这些模型中,相似性函数与网络的其它部分一起进行端到端训练。LP的关键点仍然是利用固定模式(chunked patterns)。但是,此类方法学会对输入token进行排序/聚类,即保持FP方法效率优势的同时,得到更优的序列全局视图。

Memory:另一种表现突出的方法,用一个side memory模块,可以一次访问多个token。通用形式是全局存储器,能够访问整个序列。全局token充当记忆的一种形式,从输入序列的token中学习聚集。这是最早在Set Transformers中引入的inducing points方法。这些参数通常被解释为“memory”,并用作将来处理的临时上下文信息。这可以看作是parameter attention的一种形式。全局内存也用于ETC和Longformer。借着数量有限的内存(或者inducing points),对输入序列采用类似pooling操作进行压缩,这是设计有效的self attention模块时可以使用的技巧。

Low-Rank 方法:另一种新兴技术,利用self attention矩阵的低秩近似来提高效率。关键点是假设NxN矩阵的低秩结构。Linformer是此技术的经典示例,将keys和values的长度维投影到较低维的表示形式(N-》 k)。不难发现,由于NxN矩阵现在已分解为Nxk,因此该方法改善了self attention的存储复杂性问题。

Kernels:另一个最近流行的提高Transformers效率的方法,通过核化(kernelization)查看attention机制。核的使用使self attention机制能够进行巧妙的数学重写,避免显式地计算NxN矩阵。由于核是attention矩阵的一种近似形式,因此也可以视为Low Rank方法的一种。

Recurrence:blockwise方法的直接扩展是通过递归连接这些块。Transformer-XL提出了一种segment-level 递归机制,该机制将多个segment和block连接起来。从某种意义上说,这些模型可以看作是FP模型。

内存和计算复杂度分析

该综述对以下17个方法进行了内存和计算复杂度分析,即

1、Memory Compressed Transformer:“Generating wikipedia by summarizing long sequences” 如图

2、 Image Transformer:“Image Transformer” 如图

3、 Set Transformer:“Set transformer: A framework for attention-based permutation-invariant neural networks“ 如图

4、 Sparse Transformer:“Generating long sequences with sparse transformers”如图

5、Axial Transformer:“Axial attention in multidimensional transformers.“如图

 

6、 Longformer:“Longformer: The long-document transformer“如图

7、 Extended Transformer Construction (ETC):“Etc: Encoding long and structured data in transformers“如图

8、 BigBird:“Big Bird: Transformers for Longer Sequences“如图

9、 Routing Transformer:“Efficient content-based sparse attention with routing transformers“如图

10、 Reformer:“Reformer: The efficient transformer“如图

11、 Sparse Sinkhorn Transformer:“Sparse sinkhorn attention“如图

12、 Linformer:“Hat: Hardware-aware transformers for efficient natural language processing“如图

13、 Linear Transformer:“Transformers are rnns: Fast autoregressive transformers with linear attention“ 如图是其算法伪代码

14、 Performer:“Masked language modeling for proteins via linearly scalable long-context transformers“ 如图是Fast Attention via Orthogonal Random Features (FAVOR)的算法伪代码

15、 Synthesizer:“Synthesizer: Rethinking self-attention in transformer models.“如图

16、 Transformer-XL:“Transformer-xl: Attentive language models beyond a fixed-length context“如图

17、 Compressive Transformers:“Compressive transformers for long-range sequence modelling“如图

评估基准图片

尽管该领域忙于使用新的Transformer模型,但几乎没有一种简单的方法可以将这些模型比较。许多研究论文选择自己的基准来展示所提出模型的功能。再加上不同的超参数设置(例如模型大小和配置),可能难以正确地找到性能提升的原因。此外,一些论文将其与预训练相提并论,使区分这些不同模型相对性能的难度更大。考虑使用哪个基本高效的Transformer block,仍然是一个谜。

一方面,有多种模型集中在generative modeling,展示了提出的Transformer单元在序列AR(auto-regressive)建模上的能力。为此,Sparse Transformers, Adaptive Transformers, Routing Transformers 和 Reformers主要集中在generative modeling任务。这些基准通常涉及在诸如Wikitext、enwik8和/或ImageNet / CIFAR之类的数据集上进行语言建模和/或逐像素生成图像。而segment based recurrence模型(例如Transformer-XL和Compressive Transformers)也专注于大范围语言建模任务,例如PG-19。

一方面,一些模型主要集中于**编码(encoding only)**的任务,例如问题解答、阅读理解和/或从Glue基准中选择。例如ETC模型仅在回答问题基准上进行实验,如NaturalQuestions或TriviaQA。另一方面,Linformer专注于GLUE基准测试子集。这种分解是非常自然和直观的,因为ETC和Linformer之类的模型无法以AR(auto-regressive)方式使用,即不能用于解码。这加剧了这些编码器模型与其他模型进行比较的难度。

有些模型着眼于上述两者的平衡。Longformer试图通过在生成建模和编码器任务上运行基准来平衡这一点。Sinkhorn Transformer对生成建模任务和仅编码任务进行比较。

此外,还值得注意的是,尽管Seq2Seq任务的**机器翻译(MT)**是普及Transformer模型的问题之一,但这些有效的Transformer模型没有能对MT进行多些的评估。这可能是因为MT的序列长度不足以保证这些模型的使用。

尽管generative modeling、**GLUE(General Language Understanding Evaluation)**和/或question answering,似乎是这些应用的通用评估基准,但仍有一些基准可供小部分论文单独进行评估。首先,Performer模型会对masked language modeling进行评估,和其他有效的Transformer模型进行了正面对比。而且Linear Transformer还对语音识别进行评估,这是比较罕见的了。

效率方面的比较

另外,论文最后还对这些效率提高的方法做了分析比较,主要是几个方面:

Weight Sharing

Quantization / Mixed Precision

Knowledge Distillation (KD)

Neural Architecture Search (NAS)

Task Adapters

更多精彩内容请访问FlyAI-AI竞赛服务平台;为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台;每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

挑战者,都在FlyAI!!!

 

Google综述:细数Transformer模型的17大高效变种 在NLP领域transformer已经是成功地取代了RNN(LSTM/GRU),在CV领域也出现了应用,比如目标检测和图像加注,还有RL领域。这是一篇谷歌2020年9月份在arXiv发表的综述论文 “Efficient Transformers: A Survey“,值得读读。 阅读详情

相关推荐

【仿真】Carla Python API实战:从零搭建自动驾驶测试环境

本文详细介绍了如何使用Carla Python API从零搭建自动驾驶测试环境。通过Carla仿真平台,开发者可以构建高度逼真的城市环境和车辆物理模型,利用Python API实现传感器配置、数据采集、场景构建及自动驾驶算法集成。文章还分享了实际项目中的调试技巧和性能优化经验,帮助读者快速掌握自动驾驶仿真测试的核心技术。

weixin_29050513的博客 213

Transformer 模型详解

本内容主要介绍 Transformer 模型的具体实现。

步入人工智能 37万+

若依框架整合Flowable:从零构建企业级流程中心

本文详细介绍了如何将若依框架与Flowable工作流引擎整合,构建企业级流程中心。通过环境配置、依赖添加、数据库设置等核心步骤,实现流程定义管理、任务处理服务等关键功能,并结合实际案例展示请假审批流程的实现与动态表单集成。文章还提供了性能优化和生产建议,帮助开发者高效构建稳定可靠的工作流系统。

weixin_28365523的博客 230

【超详细】【原理篇&实战篇】一文读懂Transformer

Transformer是一种用于自然语言处理(NLP)和其他序列到序列(sequence-to-sequence)任务的深度学习模型架构,它在2017年由Vaswani等人首次提出。Transformer架构引入了自注意力机制(self-attention mechanism),这是一个关键的创新,使其在处理序列数据时表现出色。

艰难困苦,玉汝于成。 68万+

从零搭建:基于Matlab/Simulink与FlightGear的飞行器实时可视化仿真平台

本文详细介绍了如何从零搭建基于Matlab/Simulink与FlightGear的飞行器实时可视化仿真平台。通过环境准备、模型部署、接口配置及联合仿真等步骤,帮助用户快速掌握飞行器仿真的核心技术,实现高效的三维可视化与实时数据交互。

weixin_29100399的博客 517

告别裸机:在FreeRTOS上为STM32移植SOEM 1.4.0的完整指南

本文详细介绍了在FreeRTOS环境下为STM32H7系列芯片移植SOEM 1.4.0的完整指南,涵盖环境准备、任务架构设计、OSAL层适配及网络驱动优化等关键步骤。通过EtherCAT主站解决方案的实现,帮助开发者构建稳定可靠的工业自动化系统,提升实时通信性能。

weixin_33582311的博客 363

进击的Transformer --- 一文介绍Efficient Transformers

文章目录Transformer的好处及复杂度Transformer变种的几大流派ReformerLongformer, Big bird, LinformerPerformer Transformer的好处及复杂度 Transformer今天多么的火这里就不用多说了。每个节点对每个节点的注意力机制保证了长程无损耗的信息传递。从图神经网络的观点来看,它是一个全连接的完全图。 为什么它在NLP领域中如此有效?这是因为它足够复杂,以至于满足了语言内生的复杂性。引用史蒂芬平克的对写作的定义:… the writer

triplemeng的博客 2629

论文理解【LLM-Clarification】—— 【QDrawer】Asking the Right Question at the Right Time: Human and Model Unce

本文基于 CoDraw 任务对 LLM 澄清提问的触发方式进行探索,发现模型内部不确定性与人类澄清决策相关性弱,使用不确定性阈值触发澄清提问相比模仿人类提问时机,性能和计算效率都更好

佚失的诗篇 770

优化与改进之Efficient Transformer - Transformer教程

Efficient Transformer是对经典Transformer模型的一系列优化和改进,旨在解决其计算复杂度高、模型参数多等问题。通过降低计算复杂度、模型压缩和改进注意力机制等方法,Efficient Transformer在自然语言处理、计算机视觉和语音处理等领域取得了显著进展。未来的发展方向包括更加高效的注意力机制、多任务学习和自动化模型设计,这些将进一步提升Transformer模型的性能和应用价值。

shandianfk_com的博客 775

华为OD机考双机位C卷 - 斗地主之顺子 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 斗地主之顺子(OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 9694

QGIS将经纬度坐标转成点

QGIS绘制一张地图

weixin_46713695的博客 6056

transformer理解

Transformer 是 Google 的团队在 2017 年提出的一种 NLP 经典模型,现在比较火热的 Bert 也是基于 Transformer。Transformer 模型使用了 Self-Attention 机制,不采用 RNN和LSTM 的顺序结构,使得模型可以并行化训练,而且能够拥有全局信息。 1.Transformer 结构 首先介绍 Transformer 的整体结构,下图是 Transformer 用于中英文翻译的整体结构。 ...

qq_22613769的博客 8005

Cilium动手实验室: 精通之旅---5.Mutual Authentication with Cilium

在Cilium 入门实验室中,您将在受《星球大战》启发的场景中实施高级第 3-7 层网络策略。在实验结束时,您将实施强大的网络策略,并通过微分段保护 Empire 免受来自叛乱的攻击。在本实验中,您将重新部署《星球大战》演示应用程序,但除了网络策略之外,您还将了解如何在工作负载之间实施相互身份验证。

Q先生 1398

【自然语言处理】Transformer 模型:概述及分类(综述)

在过去的数年里,基于 Transformer 的相关模型层出不穷。本文将对当下最流行的 Transformer 模型做一个简单全面的介绍。

Data · Model · Agent · Repeat 9863

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

神经网络算法 - 一文搞懂 Transformer(总体架构 & 三种注意力层)

本文将从三个方面,带您一文搞懂**输入嵌入:将输入的文本转换为向量,便于模型处理。位置编码:给输入向量添加位置信息,因为Transformer并行处理数据而不依赖顺序。多头注意力:让模型同时关注输入序列的不同部分,捕获复杂的依赖关系。残差连接与层归一化:通过添加跨层连接和标准化输出,帮助模型更好地训练,防止梯度问题。带掩码的多头注意力:在生成文本时,确保模型只依赖已知的信息,而不是未来的内容。前馈网络:对输入进行非线性变换,提取更高级别的特征。

xxue345678的博客 3万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

自然语言处理Transformer模型最详细讲解(图解版)

近几年NLP较为流行的两大模型分别为Transformer和Bert,其中Transformer由论文《Attention is All You Need》提出。该模型由谷歌团队开发,Transformer是不同与传统RNN和CNN两大主流结构,它的内部是采用自注意力机制模块。

优快云 精品推荐 4万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Transformer模型解析(附案例应用代码)

自注意力机制是Transformer模型的核心,它允许模型在编码每个单词时同时关注序列中的其他单词,从而捕捉到单词之间的依赖关系。位置编码的生成使用了正弦和余弦函数的不同频率,以确保编码在不同维度上具有不同的模式,从而使模型能够区分不同位置的单词。这样,每个头可以学习到序列的不同方面,最终的输出是所有头输出的连接和线性变换的结果。通过结合残差连接和层归一化,Transformer模型能够有效地训练深层网络,同时保持稳定的梯度流动和良好的特征分布,这对于理解和生成复杂的序列数据至关重要。

LIUMAO99的博客 7594

Transformer 大模型详解——transformer模型

解码器栈的输出是一个 float 向量。我们怎么把这个向量转换为一个词呢?通过一个线性层再加上一个 Softmax 层实现。线性层是一个简单的全连接神经网络,其将解码器栈的输出向量映射到一个更长的向量,这个向量被称为 logits 向量。现在假设我们的模型有 10000 个英文单词(模型的输出词汇表)。因此 logits 向量有 10000 个数字,每个数表示一个单词的分数。然后,Softmax 层会把这些分数转换为概率(把所有的分数转换为正数,并且加起来等于 1)。

zhishi0000的博客 1万+

Transformer模型

Transformer模型是一种在自然语言处理(NLP)及其他序列到序列(Seq2Seq)任务中广泛使用的深度学习模型框架。其基本原理和核心组件,尤其是自注意力机制(Self-Attention Mechanism),对于理解该模型的工作方式至关重要。以下是对Transformer模型基本原理和自注意力机制的详细解释。

m0_70066267的博客 2506
上一篇: 深度学习之参数初始化
下一篇: 【最新赛事】心理卡牌目标检测算法大赛(奖金池11000元+V100GPU资源+证书)
iFlyAI
博客等级 码龄9年 238粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值