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


和以上绝对位置编码的Attention计算对比:

  • 语义交互不变
  • 位置交互:绝对位置编码内积替换为相对位置编码对应的全局位置偏置, 在表征距离的同时加入了方向信息
  • query位置*key语义:因为交互是计算一个query token对全部key token的attention,所以这里的位置编码部分是个常量,作者替换为了trainable的参数u,于是这部分有了更明确的含义就是key对应的全局语义偏置
  • query语义*key位置: 替换为query语义 * query和key的相对位置编码,也就是语义和位置交互
结合片段递归和相对位置编码,Transformer-xl突破了Transformer对固定文本长度的限制 。同时片段递归和以下4种Transformer优化方案是正交的关系,可以在以下的四种方案中叠加使用片段递归去优化长文本建模
Longformer
  • paper: Longformer: The Long-Document Transformer
  • github:https://github.com/allenai/longformer
  • 中文预训练模型:https://github.com/SCHENLIU/longformer-chinese
  • Take Away: 滑动窗口稀疏注意力机制

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

文章插图
Longformer的3点主要创新是
  1. 滑动窗口attention(图b)
解决attention计算复杂度最简单直观的方案,就是把原本all-2-all的attention计算限制到适当的window size(w)内,这样对于长度为n的序列,原本O(n^2)的复杂度就缩减到了O(n*w) 。因为attention本质是引入当前token的上下文信息,但token其实很难和八丈远外的内容进行交互,所以合理的窗口选择并不会损失太多的信息,并且和stack-cnn相同更高的layer会拥有更大的感知野 。Longformer这里选择了512作为窗口大小,attention的复杂度和BERT相同 。
  1. 空洞滑窗attention(图C)
和Dilated-CNN相同,这里作者也采用了dilation来扩大相同计算量下的感知野 。不过感觉这里和CNN还是有些区别,图像使用Dilation因为单一像素本身信息有限,需要通过kernel来提取图片局部特征,而对文本序列来说,每个token就是最小粒度的信息元包含信息更多,因此dilation会带来更多的信息损失 。不过作者在使用过程中也加了一些tricks,包括对多头的不同头使用不同的dilation策略,以及底层layer不使用dilation保留更多信息,更高层使用更大的dilation扩大感知野 。不过在后面的消融实验中空洞滑窗的效果提升并不十分显著 。
  1. 任务导向全局attention(图d)
以上局部attenion在一些任务中存在不足,例如QA任务中可能问题无法和上下文进行完整交互,以及分类任务中CLS无法获得全部上下文信息 。因此作者在下游任务微调中加入了针对部分token的全局attention 。因此在下游微调时,需要进行全局交互的token,会用预训练的Q,K,V进行初始化,不过会用两套线性映射的参数分别对全局和滑动窗口的Q,K,V进行映射 。
Longformer的预训练是在Roberta的基础上用长文本进行continue train 。原始Roberta的position embedding只有512维,这里longformer把PE直接复制了8遍,得到4096维度的PE用于初始化,这样在有效保留原始PE局部信息的同时,也和以上512的window-size有了对应 。至于longformer的效果,可以直接看和下面BigBird的对比 。
Bigbird