Transformer 是目前 NLP 研究領域中特別重要的模型,也衍生出了很多基於 Transformer 的方法,例如 BERT、GPT,在很多 NLP 任務中有很好的效果。但是這些模型也存在一些局限,其中包括 Self-Attention 的複雜度問題 (其複雜度是輸入序列長度的平方)。Google 的研究人員提出了 Big Bird 模型,使用了稀疏注意力機制,將複雜度降到線性。

1.前言
Transformer 模型克服了 RNN 的限制,採用全局的 Attention,可以捕獲序列所有 token 的信息。對於 Transformer 不熟悉的童鞋可以參考一下Transformer 模型詳解。
由於使用了全局的 Attention,所以 Transformer 具有比較高的複雜度,其複雜度與序列長度的平方成正比,O(N^2)。導致 Transformer 不適合用於更長的序列 (原始的 Transformer 序列長度為 512),而 NLP 領域有一些任務需要採用更長的序列,例如文章摘要,問答。
Big Bird 出自論文《Big Bird: Transformers for Longer Sequences》。其借鑑了圖結構的稀疏化方法, 採用一種稀疏注意力機制,將複雜度下降到線性,即 O(N)。Big Bird 可以在 16 GB 內存下適應更長的序列 (Transformer 的 8 倍),並且得到更好的性能。
2.Big Bird

上圖是 Big Bird 稀疏注意力的示意圖,主要包括三個部分的注意力:Random Attention (隨機注意力),Window Attention (局部注意力),Global Attention (全局注意力)。這三部分注意力結合在一起就可以得到 Big Bird 注意力矩陣 A,如上圖 d 所示。如果 A(i,j) = 1 則表示 token i 需要和 token j 計算注意力值。
Random Attention: 如上圖 (a) 所示,對於每一個 token i,隨機選擇 r 個 token 計算注意力。
Window Attention: 用滑動窗口表示注意力計算的範圍,如上圖 (b) 所示,主要是捕獲 token i 的局部信息,窗口大小為 w。
Global Attention: 全局 Attention,如上圖 (c) 所示,Big Bird 將 g 個 token 設置為 global token,所有 token 都要和 global token 計算 Attention Score。global token有兩種定義的方式:
BIGBIRD-ITC,在原始序列中選擇 g 個 token 作為 global token。BIGBIRD-ETC,增加 g 個額外的 token,類似 BERT 中的 [CLS] token。Big Bird 的輸入序列為 X,包含 N 個 token,每個 token 的向量長度為 d,如下所示:
對於 token i,經過 Big Bird 稀疏注意力模塊輸出的向量用下面的公式計算:

3.實驗結果
Big Bird 包含三部分 Attention:Random,Window,Global。作者驗證了三種 Attention 對性能的影響,結果如下表所示,序列的長度為 512。使用全部三種 Attention 後,Big Bird 可以得到和 BERT-base 相近的性能。

然後作者在 MLM (masked languagemodeling) 任務上對比 Big Bird 和 RoBERTa 的性能,對 RoBERTa 不熟悉的童鞋可以參考一下RoBERTa 和 ALBERT。實驗結果如下表所示,Big Bird 使用更長的序列 (4096),取得更好的性能。

作者也在問答,文本分類,文本摘要等任務上對比了 Big Bird 的性能,具體的可以查看原論文。總的來說 Big Bird 在一定程度上減少了 Transformer 的複雜度,使模型可以更好地用於長序列。
4.參考文獻
Big Bird: Transformers for Longer Sequences