Bert不完全手册9. 长文本建模 BigBird & Longformer & Reformer & Performer( 三 )



Bert不完全手册9. 长文本建模 BigBird & Longformer & Reformer & Performer

文章插图
又是一个非常清新脱俗的模型起名~ 大鸟模型和longformer相比增加了随机注意力机制,不过感觉主要的创新是对全局注意力机制进行了改良,提出了固定注意力patten的ETC全局注意力机制 。
  1. 随机注意力机制
在滑动窗口注意力之外,模型会每行随机采样r个token来进行交互,不过这里的随机注意力并不和以下的ETC全局注意力一同使用~
  1. 全局注意力
只使用滑动窗口注意力+随机注意力,作者发现效果和BERT相比还是有所损失,因此加入了全局注意力 。和longformer的区别在于,Bigbird除了支持对部分已有token(一般是序列的第一个和最后一个字符)进行全局attention之外,简称Bigbird-ITC 。还支持加入额外token(类似CLS)来做全局注意力,简称Bigbird-ETC,ETC不和随机注意力一同使用 。从下游任务效果上来看ETC的效果略好于ITC+随机注意力,效果对比基本是用的BigBird-ETC,不过这也限制了BigBird只能用在NLU场景~
整体效果,在QA和长文本摘要任务上上Bigbird基本是新SOTA
Reformer
  • paper: REFORMER: THE EFFICIENT TRANSFORMER
  • github: https://github.com/google/trax/tree/master/trax/models/reformer
  • Take Away: LSH搜索序列中的高权重token,做固定长度局部注意力计算
先来看下原始Transformer的空间复杂度: \(max(b*l* d_{ffn}, b *n_{h} * l^2)*n_{l}\) 。其中b是batch,l是文本长度,\(d_{ffn}\)是Feed Forward层大小,\(n_{h}\)是多头的head size,\(n_l\)是层数 。Reformer引入了三个方案来降低Transformer的计算和内存复杂度
  • LSH Attention:近似计算,针对l,只计算注意力中高权重的部分
  • 可逆网络:时间换空间,针对\(n_l\),只存储最后一层的参数
  • 分块计算:时间换空间,针对\(d_{ffn}\),对FFN层做分块计算
后两个方案和长文本无关这里我们简单过,重点是LSH Attention部分的创新~
Bert不完全手册9. 长文本建模 BigBird & Longformer & Reformer & Performer

文章插图
  1. LSH Attention
Local Sensitentive Hashing Attention是Reformer的主要贡献,也就是最初分类中的可学习pattern注意力机制 。考虑Attention的结果是被高权重的key主导的,因此每个token的注意力权重可以被部分高权重的token近似,只计算局部注意力从而避免计算\(L^2\)的注意力矩阵 。难点转换成了如何更高效的找到高权重的key,也就是和query token向量空间更相似的key token来进行局部交互,这里作者使用了LSH,一种在高维数据中快速近似查找的算法 。
LSH使用哈希函数对高位空间的向量x计算哈希函数h(x),\(h(x)\)满足在高维空间中更近的向量有更高的概率落在相同的哈希桶中,反之在高维空间中距离更远的向量有更低的概率会落在相同的哈希桶中 。LSH有很多种算法,这里作者使用的是基于角距离的局部敏感哈希算法 。随机初始化向量R维度是\(d_{model} * bucket/2\),哈希结果为旋转(xR)之后最近的一个正或者负的单位向量\(h(x) = argmax([xR;-xR])\)
使用LSH计算Attention会存在几个问题