Transformer 改进系列:incorporating long term context

多头自注意力学习 时间复杂度是关于序列长度的 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 ( h d n 2 ) O(hd n^2) O(hdn2) ,其中h是the number of head (多少个头), d是key 和 query 的维度, n是序列长度。
  • 第二空间复杂度太大,dot-product自注意力机制的空间复杂度也是随着序列长度的平方而增大。计算注意力矩阵的空间复杂度为 O ( h d n + h n ) 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 魔改

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值