精华内容
下载资源
问答
  • incorporating long term context 多头自注意力学习 时间复杂度是关于序列长度的 o(n^2)的,这就意味着使用vanilla ttransformers 去快速处理长序列变得非常棘手。...Transformer-XL Compressive Transfo

    多头自注意力学习 时间复杂度是关于序列长度的 o(n^2)的,这就意味着使用vanilla ttransformers 去快速处理长序列变得非常棘手。

    在过去的两年里,NLP社区已经开发出了一套真正的方法来对付这种有问题的复杂性,但是在这篇文章中,我们将集中讨论一些有前景的方法。
    原博客可以查看incorporating long term context
    这里我没有按照原博客来写,这里主要是一个简答的概括,每个模型都有对应的论文解读。可以点进去查看。(尚未更新完,持续更新)
    关于Transformer可以看以前的博客transformer - Google Brain

    1. Sparse Transformers Open AI
    2. Adaptive Span Transformers Face book AI research
    3. Transformer-XL Google Brain
    4. Compressive Transformers DeepMind
    5. Reformer UC Berkeley & Google Research
    6. Routing Transformer
    7. Sinkhorn Transformer
    8. Linformer
    9. Efficient Attention: Attention with Linear Complexities
    10. Transformers are RNNs
    11. ETC
    12. Longformer

    dense 多头注意力机制的时间和空间复杂度

    多头注意力机制 在处理序列长度方面 不够灵活,主要是由2个原因导致的。

    • 第一时间复杂度太大, 计算注意力矩阵的时间复杂度与序列长度的平方 成比例,时间复杂度为O(hdn2)O(hd n^2) ,其中h是the number of head (多少个头), d是key 和 query 的维度, n是序列长度。
    • 第二空间复杂度太大,dot-product自注意力机制的空间复杂度也是随着序列长度的平方而增大。计算注意力矩阵的空间复杂度为 O(hdn+hn)O(hdn+hn), 第一项是存储key和query所需的内存,第二项是每个头产生的注意力值占用的空间。

    让我们代入一些具体的数字从BERT-Base中看一下,哪些因素占主导。

    • BERT-Base使用序列长度512、hidden size768和12个head,也就是每个头的维度为64(768 / 12)。
    • 在这种情况下, 需要393216 floats (~ 1.5 mb)(12head * 64size* 512seqlen)来存储键和值, 而存储所有attention值所需的内存为 3145728 floats(12 * 512 * 512)或~ 12 mb——近10倍的内存存储key仅512标记上下文大小。

    由于在训练期间必须缓存激活以允许梯度计算(如果采用存储梯度checkpoint的话需要重新计算激活函数),因此每个实例仅仅存储 bert 12层的attention 矩阵就需要~150MB的内存。 当序列长度为1024时,就是~600MB, 当长度为2048时,单是注意力矩阵 每个example 就需要2.4GB 的内存。这意味着更小的批处理规模和更差的训练时间的并行性,进一步阻碍我们训练利用长上下文长度的模型的能力。

    改进模型总结

    下面截图来自于知乎一个问答的答案:transformer 魔改
    感觉很好直接截图贴过来了 另外还可以参考 那些悄悄拍了拍Transformer的奔涌的后浪们
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    参考:
    transformer 魔改

    展开全文
  • Transformer改进

    2020-12-21 11:53:57
    Transformer改进Transformer简介Efficient Transformer简介Fixed PatternsCombination of PatternsLearnable PatternsMemoryLow-RankKernelsRecurrence性能比较 Transformer简介 Transformer的核心是self-...

    Transformer简介

    Transformer的核心是self-attention,通过计算输入序列中元素与其他所有元素的相关性来获取加权得分。但是这一步骤需要 O(n2)O(n^2)的时间和空间复杂度,因为需要两个矩阵之间的每一项进行计算。
    标准Transformer结构如下,由编码器和解码器组成,其中最基本组成单位是Transformer-block.
    在这里插入图片描述
    Transformer-block可以由一下公式表达:
    X1=LayerNorm(MultiSelfAttention(X))+XX_1 = LayerNorm(MultiSelfAttention(X)) + X
    X2=LayerNorm(FFN(X1))+X1X_2 = LayerNorm(FFN(X_1)) + X_1
    这里MultiSelfAttention(X)=softmax(αQKT)VMultiSelfAttention(X)=softmax(\alpha QK^T) V
    FFN(X)=feedforwardF(ReLU(feedforwardF(X))FFN(X) = feedforwardF(ReLU(feedforwardF(X))

    使用方法包括单纯的编码器可用于分类,解码器用于语言模型,编码+解码可以用于机器翻译。
    其中self-attention包括编码器和解码器各自的self-attention(分别是Multi-head self-attention和Masked Multi-head self-Attention),以及利用编码器进行解码的Multi-Head Cross_attention。
    在约束限制上,multi-head self-attention和Cross_attention可以是无因果关系限制(预测只来源于过去和现在token),Masked Multi-head self-Attention必须由因果关系。
    因为:Masked Multi-Head Attention的key, query, value均来自前一层decoder的输出,但加入了Mask操作,即我们只能attend到前面已经翻译过的输出的词语,因为翻译过程我们当前还并不知道下一个输出词语,这是我们之后才会推测到的。
    Multi-Head Attention的query来自于之前一级的decoder层的输出,但其key和value来自于encoder的输出,这使得decoder的每一个位置都可以attend到输入序列的每一个位置。

    Efficient Transformer简介

    18年-20年提出的Efficient Transformer方法。这里每一个圈代表一种方法,圈里的黑字代表基于这种方法(或多种)提出的具体模型。下表是一个具体的展现。

    在这里插入图片描述
    在这里插入图片描述

    Fixed Patterns

    将attention矩阵简单稀疏化,将原来全输入attention改为设定attention范围(如local windows,block patterns of fixed strides),具体包括:1)blockwise patterns,按照固定block树木划分输入2)Strided patterns,根据固定具体划分3)Compressed Patterns,使用一些合并运算对序列长度进行下采样,使其成为固定模式的一种形式

    Combination of Patterns

    通过组合两个或多个不同的访问模式(access patterns)来提高覆盖范围

    Learnable Patterns

    利用学习的方法进行FP,基于相似度将token划分到不同block.Reformer利用哈希相似度,Routing Transformer利用在线k-means

    Memory

    Low-Rank

    将self-attention矩阵转化为低秩矩阵,改善存储复杂度,如Linformer。
    注意,Albert是对输入层进行因式分解,而不是对QKV

    Kernels

    核的使用使self attention机制能够进行巧妙的数学重写,避免显式地计算NxN矩阵。由于核是attention矩阵的一种近似形式,因此也可以视为Low Rank方法的一种。

    Recurrence

    Transformer-XL

    性能比较

    参考论文资料:Efficient Transformers: A Survey

    展开全文
  • Transformer是Google提出的用来解决LSTM建模长期依赖乏力的问题全新架构模型,同时其网络架构的设计全部考虑如何并行化,包括self-attenion机制、multi-head self-attention机制、FFW全部都是可以并行计算的,Add&...

    Transformer是Google提出的用来解决LSTM建模长期依赖乏力的问题全新架构模型,同时其网络架构的设计全部考虑如何并行化,包括self-attenion机制、multi-head self-attention机制、FFW全部都是可以并行计算的,Add&Norm中Add类似预ResNet的shortcut,是为了解决深层模型梯度消失的问题,LayerNorm可以加速计算,这全部都是在为后面的大规模预训练模型做准备。Transformer的提出在NLP中具有里程碑式的意义,现在取得成功的Bert系列基于Transforner Encoder,GPT系列基于Transformer Decoder。这篇文章将不再赘述Tranformer的架构,想必大家应该已经跟熟悉了,这方面有大量的文章可供阅读。本篇博客聚焦于Transformer的改进路线,也是NLP面试常见问题。

    Transformer

    Attention is all you need
    完全图解GPT-2:看完这篇就够了(一)
    BERT大火却不懂Transformer?读这一篇就够了

    Transformer-XL

    Transformer作为一种特征提取器,在NLP中有广泛的应用。但Trm需要对序列设置一个固定长度,如果序列超过该长度,需要将句子划分成多个segment,训练的时候每个segment单独处理,各segment之间没有联系,最长的依赖关系长度就取决于segment长度。

    预测的时候会对固定长度的segment做计算,一般取最后一个隐向量作为输出,为了充分利用上下文关系,每做一次预测,就对整个序列向右移动一个位置,在做一次计算,这导致效率非常低。
    在这里插入图片描述

    • Segment-Level Recurrence
      为了解决上面提到的问题,Transformer-XL提出一个改进,对当前Segment进行处理的时候,缓存并利用上一个segment中所有layer的隐向量序列,这些隐向量序列只参与前向计算,不再进行反向传播,这就是所谓的Segment-Level Recurrence。
      在这里插入图片描述

    • Relative Position Encodings
      Vanliia Trm使用position embedding或者正弦/余弦函数来对位置进行编码,这是一种绝对距离位置编码,而Transformer-XL使用相对位置编码。
      Atteention(Q,K,V)=softmax(QKTdkV)Atteention(Q, K, V) = softmax(\frac{QK^T}{d_k}V)
      QKTQK^T可以分解为以下:
      在这里插入图片描述
      在这里插入图片描述

    UiU_iUjU_j即为绝对距离,替换为相对距离,得到以下计算公式:
    在这里插入图片描述

    • RR表示相对距离,是一个sinsin函数,没有参数
    • uuvv都是可训练参数

    即对绝对距离做替换,一部分替换成sin函数,一部分替换成可训练参数。

    XL-Net

    在Transformer-XL的基础上,增加了排列语言模型和双流注意力机制,详见这里

    排列语言模型

    传统的自回归语言模型按文本顺序进行顺序建模,这无法充分利用上下文信息,所以才有了BERT这种双向模型。而XL-Net采用了排列语言模型来获取更多更丰富的信息。

    XL-NET最大化所有可能的序列的因式分解顺序的期望对数似然。
    在这里插入图片描述

    基于表征的双向注意力机制

    在这里插入图片描述

    • Content Representation内容表述,即hθ(xt)h_{\theta}(x_{\leq t}),下文本用hzth_{z_t}表示,该表述和传统的transformer一样,同样编码了自身。
      在这里插入图片描述
    • Query Representation查询表述,即gθ(xz<t,zt)g_\theta(x_{z<t}, z_t),下文用gztg_{z_t}表示,该表述包含上下文信息xz<tx_{z<t}(注意区别),和目标地位置信息ztz_t,但是不包括目标的内容信息xztx_{z_t}
      在这里插入图片描述
      在这里插入图片描述
    展开全文
  • Transformer模型的改进

    千次阅读 2018-11-07 11:50:16
  • 使用以下命令生成虚拟的改进Transformer模型: python THUMT/thumt/bin/trainer_ctx.py --inputs [source corpus] [target corpus] \ --context [context corpus] \ --vocabulary [source
  • Transformer介绍

    千次阅读 2020-02-18 23:31:44
    前言 谷歌推出的BERT模型在11项NLP任务中夺得STOA结果,引爆了整个NLP界。而BERT取得成功的一个关键因素是Transformer的强大作用。...Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-att...
  • Transformer结构

    2019-02-21 19:17:26
    Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。在本文中,我们将研究Transformer模型,把...
  • Transformer 模型

    2020-12-01 21:13:20
    转载:BERT大火却不懂Transformer?读这一篇就够了 大数据文摘与百度NLP联合出品 编译:张驰、毅航、Conrad、龙心尘 ...Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Tr.
  • References: [1] Karim Ahmed, Nitish Shirish Keskar, and Richard Socher. Weighted transformer network for machine. translation. arXiv preprint arXiv:1711.02132, 2017. [2] Shaw, P., Uszkor...
  • BERTand transformer.pptx

    2020-04-13 21:40:15
    台湾大学李宏毅老师的bert...Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。 ppt的23页是视频
  • 2019-11-27 05:02:16 作者 | 刘旺旺 编辑 | 唐里 TENER: Adapting Transformer Encoder for Name Entity Recognition ...Transformer 模型以其良好的并行性能力以及出色的效果,被广泛应用于n...
  • Transformer模型的改进-GPT

    千次阅读 2018-11-07 11:53:49
  • Transformer模型总结

    2019-03-28 15:01:00
    Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。 它是由编码组件、解码组件和它们之间的连接组成。 编码组件部分由一堆编码器(6个 encoder)构成。解码组件部分也是由...
  • Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。左半部分是 encoder 右半部分是 decoder。 Encoder: 由N=6个相同的layers组成, 每一层包含两个sub-layers. 第一个sub-layer ...
  • 3、看不到很远的单词 ELMO 单向 LSTM x2 XLNet的改进思路: 根据bert和lm的缺点,改进的点 具备生成能力 双向学习能力 不出现discrepancy LM+NADE:使得语言模型具备双向的能力 Transformer-XL:使得模型具备对于不...
  • Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。在本文中,我们将研究Transformer模型,把...
  • et将transformer 用在翻译上,提出来基于语言模型的transformer 改进。一个个移动预测下一个词,因为transformer 窗口大小是512,当预测513个词的时候 窗口移动到1-513,这样513 就可以利用1-512的信息来预测(但是...
  • 第十四课.Transformer

    2021-02-17 23:05:54
    Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率;Transformer由论文《Attention is All You ...
  • Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。在本文中,我们将研究Transformer模型,把...
  • 值得注意的是,这种新的位置表征方法并非仅限于改进BERT,而是可以推广且应用到所有利用Transformer结构进行预训练语言模型的工作中。 可以预见的是,作为第一篇研究Transformer输入片段多层次位置表征的论文,其...
  • Transformer模型中的位置编码 pos表示某个词在句子序列中的实际位置,i 表示词向量的第 i 个维度。在Transformer模型中取值为512。对于某个位置pos处的词向量,向量的偶数维采用正弦公式,向量的奇数维采用余弦...
  • 自然语言处理 | (27) Transformer详解1

    千次阅读 2019-03-07 12:50:00
    原文地址 前一段时间谷歌推出的BERT模型在11项NLP任务中夺得STOA结果,引爆了整个NLP界。...Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常...
  • Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。 本资源整理了至2021年transformer应用于...
  • Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。在本文中,我们将研究Transforme
  • BERT大火却不懂Transformer?读这一篇就够了

    千次阅读 多人点赞 2019-01-08 18:06:05
    大数据文摘与百度NLP联合出品编译:张驰、毅航、Conrad、龙心尘编者按:前一段时间谷歌推出的BERT模型在11项NLP任务中夺得STOA结果,引爆了整个...Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attent...
  • 大数据文摘与百度NLP联合出品 编译:张驰、毅航、Conrad、龙心尘 ... 编者按:前一段时间谷歌推出的BERT模型在11项NLP任务中夺得STOA结果,引爆了整个NLP...Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-at
  • SegaBERT,用以改进基于 Transformer 的预训练过程,在多种自然语言任务上全面超越 BERT。 预训练语言模型 语言模型(Language Modeling)作为自然语言领域经典的序列建模任务,已有数十年的研究历史。 近年来,因其...
  • 经典的mobile-transformer结构包括evolved tansformer、lite-transformer、mobile-bert、miniLM等模型,借助结构改进、知识蒸馏等策略实现了transformer模型的小型化、并确保精度鲁棒性。 The Evolved ...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 221
精华内容 88
关键字:

transformer改进