Big Bird:支持更長序列的 Transformer

2020-12-17 NLP學習筆記

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

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 稀疏注意力機制

上圖是 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,如下所示:

Big Bird 輸入序列

對於 token i,經過 Big Bird 稀疏注意力模塊輸出的向量用下面的公式計算:

Big Bird 注意力計算公式

3.實驗結果

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

Big Bird 三部分 Attention 對性能的影

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

在 MLM 任務上的實驗結果

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

4.參考文獻

Big Bird: Transformers for Longer Sequences

相關焦點

  • CVPR2021 | SETR: 使用 Transformer 從序列到序列的角度重新思考語義分割
    然而,編碼器有一個基本限制,即學習遠程依賴信息對於無約束場景圖像中的語義分割至關重要,由於仍然有限的感受野而變得具有挑戰性。為了克服上述限制,最近引入了許多方法。一種方法是直接操縱卷積操作。這包括大內核大小、多孔卷積和圖像/特徵金字塔。另一種方法是將注意力模塊集成到 FCN 架構中。
  • transformer-XL與XLNet筆記
    LSTM為了建模長距離依賴,利用門控機制和梯度裁剪,有paper驗證目前可編碼的最長平均距離在200左右。Transformer利用self-attention機制,允許詞之間直接建立聯繫,能更好地捕獲長距離依賴,其編碼能力超過了LSTM,但局限於固定長度的上下文。概覽Transformer編碼固定長度的上下文。
  • 這六大方法如何讓Transformer輕鬆應對高難度長文本序列?
    ,d 是鍵向量和查詢向量的維數,n 是序列的長度。因此,可能編碼在稀疏 transformer 注意模式中的歸納偏置是有積極作用的。如果想要開始將 Transformer-XL用於自己的項目,原始碼請參見 Kimi Young 的 github:https://github.com/kimiyoung/transformer-xl,或查看HuggingFace 的實現(https://huggingface.co/transformers/model_doc/transformerxl.html
  • 超細節解讀Transformer-XL與XLNet
    具體地,將一個長文本序列截斷為幾個固定長度的片段(segment),然後分別編碼每個片段,片段間沒有任何的信息交互(如BERT的預訓練模型中序列長度的極限為512)。如下圖所示實驗作者們將transformer-XL應用於詞級和字符級語言建模的各種數據集(WikiText-103[詞級長依賴-ppl]/enwik8[字符級-bpc]/text8[字符級-bpc]/One Billion Word[詞級短依賴-ppl]/PennTreebank[小數據集的詞級短依賴-ppl])。
  • 【transformer】 你應該知道的 transformer
    transformer為什麼需要用transformerencoderdecoderoutput layersummarytransformer的缺點transformer的應用refTransformer什麼是transformer首先我們先說結論:Attention Is
  • Transformer生成論文摘要方法已出
    如果將這個數據按序列格式化為文檔的不同方面(引言、正文、摘要),那麼就可以讓模型學習生成其中的一個方面。比如,通過在測試時提供相似格式的數據,可讓模型學會解決摘要任務;即語言模型可以基於文檔的引言和之後更長的正文生成一個摘要。具體而言,論文的研究者使用了單個類 GPT 的 transformer 語言模型,並在文檔及其摘要上進行訓練。
  • Transformer的七十二變
    第二部分介紹和比較的兩個模型(Transformer-XL 和 Compressivetransformer)試圖解決上面提出的第二個問題。對 Transformer 不了解的可先閱讀該博客:https://jalammar.github.io/illustrated-transformer/更高效的Transformer1.
  • 視覺Transformer綜述
    ViT將一個純粹的transformer直接用於圖像塊序列,並在多個圖像識別基準上獲得SOTA性能。除了基本的圖像分類,transformer還用於解決更多計算機視覺問題,例如目標檢測,語義分割,圖像處理和視頻理解。由於其出色的性能,提出了越來越多基於transformer的模型來改善各種視覺任務。
  • 利用 Universal Transformer,翻譯將無往不利!
    但是,現在這種轉換的次數(即循環步驟的數量)可以提前手動設置(比如設置為某個固定數字或輸入長度),也可以通過 Universal transformer 本身進行動態設定。 為了實現後者,我們在每個位置都添加了一個自適應計算機制,可以分配更多處理步驟給較模糊或需要更多計算的符號。
  • 視覺Transformer最新綜述
    上圖基本上就是本文的主要內容了,作者首先對 attention,transformer 做一個簡單介紹,然後介紹 transformer 在 NLP 中的應用,最後將其在 CV 中的應用分為四類加以介紹。
  • A Survey on Visual Transformer及引文理解
    而第二級decoder也被稱作encoder-decoder attention layer,即它的query來自於之前一級的decoder層的輸出,但其key和value來自於encoder的輸出,這使得decoder的每一個位置都可以attend到輸入序列的每一個位置。
  • 速度超快,字節跳動開源序列推理引擎LightSeq
    因此,今天給大家安利一款速度非常快,同時支持非常多特性的高性能序列推理引擎——LightSeq。它對以 Transformer 為基礎的序列特徵提取器(Encoder)和自回歸的序列解碼器(Decoder)做了深度優化,早在 2019 年 12 月就已經開源,應用在了包括火山翻譯等眾多業務和場景。
  • 【論文導讀】DLP-KDD2019|BST---使用Transformer進行序列推薦
    文章最主要的內容就是「通過Transformer模型在用戶行為序列中捕獲序列信息來進行推薦」。其餘內容與其他Embedding&MLP的模型沒有本質上的變化。本文主要聚焦於推薦系統中排序階段的任務,「即可以把它看作是一個CTR預估任務」。
  • 為什麼Transformer適合做多模態任務?
    那就是對序列的每個點(數組的每個值),計算這個點與序列裡其他點的所有特徵,這也是Vision Transformer成功的原因,既然是對序列建模,我就把一張圖片做成序列不就完了?有些任務transformer不見得是最優解吧!transformer敢拿出來在youtube8m上和nextvlad比比嗎?終究還是要看任務目標吧!
  • 飛槳教你用Transformer 一戰到底
    Transformer模型介紹Transformer是目前神經網絡翻譯中效果最好的模型,是在論文AttentionIs All You Need[1]中提出的針對序列到序列(sequence to sequence, Seq2Seq)學習任務的一種全新網絡結構。
  • 字節跳動開源序列推理引擎LightSeq
    因此,今天給大家安利一款速度非常快,同時支持非常多特性的高性能序列推理引擎——LightSeq。它對以 Transformer 為基礎的序列特徵提取器(Encoder)和自回歸的序列解碼器(Decoder)做了深度優化,早在 2019 年 12 月就已經開源,應用在了包括火山翻譯等眾多業務和場景。
  • Transformer變體層出不窮,它們都長什麼樣?
    Transformer-XL: Attentive Language Models Beyond a Fixed-Length Contexthttps://arxiv.org/abs/1901.02860https://github.com/kimiyoung/transformer-xl上圖上標的是「Recurrence」,首先看看這篇文章聚焦的 2 個問題:那麼如何學習更長語義聯繫
  • 帶你一文了解GPT-2模型(transformer語言模型可視化)
    GPT-2是通過transformer解碼器模塊構建的,而BERT是通過transformer的編碼器模塊構建的。下文會探討它們之間的差異,但其中最主要的一個就是GPT2會像傳統的語言模型一樣,每次輸出一個詞。我們可以試著激發一個訓練過的GPT2,令其背誦機器人第一定律:這些模型實際操作的流程就是每次生成詞(token)後,將其添加到輸入序列。
  • Transformer+self-attention超詳解(亦個人心得)
    :這裡的權重過分關注於自身的位置,即對於X*X^T來說,最終的權重過分關注X對其他詞向量的注意力而在一定程度上忽略了其他詞,故在後續的transformer中作者採取了多頭注意力機制來彌補至此self-attention的部分已經講解完畢,接下來我們回到transformer中,一起來庖丁解牛。二、Transformer部分2.1 整體結構首先來縱觀transformer整體結構(左半部分是encode,右半部分是decode):
  • 圖解OpenAI的秘密武器GPT-2:可視化Transformer語言模型
    Transformer架構的演變一個是encoder結構,如下圖所示:來自原始 transformer論文的encoder模塊可以輸入直到某個最大序列長度(例如512個token)。如果輸入序列短於此限制,我們可以填充序列的其餘部分。