从4篇论文看Transformer的局部信息建模
?PaperWeekly 原創 ·?作者|張一帆
學校|華南理工大學本科生
研究方向|CV,Causality
本文根據時間線整理了幾篇 transformer 相關的文章,如何更好地建模超長距離依賴以及其他優化問題。目前來看對于超長文本,我們大概有兩個選擇:
1)用一些啟發式的手段,比如丟棄掉長的部分,或者分段處理;
2)改進 transformer 的架構,利用局部信息替代全局信息。在研究過程中,眾多領域發現了局部信息的重要性,甚至每個注意力頭都被設計為關注局部信息的 transformer 在很多任務依舊表現良好。
HIBERT
論文標題:
HIBERT: Document Level Pre-training of Hierarchical BidirectionalTransformers for Document Summarization
收錄會議:
ACL 2019
論文鏈接:
https://arxiv.org/abs/1905.06566
代碼鏈接:
https://github.com/abisee/cnn-dailymail
文章的 motivation 很簡單,對于文章摘要抽取任務,傳統工作是使用層次化的 encoder(RNN,CNN)來提取文章的表示,本文嘗試了使用 transformer 來代替傳統 encoder 并提出了一種用于摘要提取的預訓練 encoder 的方式。
1.1 Document Representation
所謂層次化的 transformer,就是我們先對每個 sentence 抽取表示,然后將每個 sentence 的表示輸入上一層 transformer 從而得到整個文章的表示。具體過程如下,我們先用一個 transformer 對每一個單詞的 embedding 進行處理,我們選擇每個句子 EOS token 最終的表示作為這個句子的表示,接下來所有句子會被扔進文檔級別的 transformer 中。
這里需要注意的是,在處理每個單詞的時候,我們會加上單詞的 position encoding,同樣在文檔級別的 transformer 中我們會對每個 sentence 加上 position encoding。
1.2?Pre-Training
我們已經知道了 encoder 的設計,那么接下來的任務就是如何訓練他,最好是無監督的訓練。其實傳統的 Summarization 任務中也是沒有句子級別的 label 的,往往我們需要先對每個句子的 label 進行預測,然后用預測的 label 作為目標進行摘要抽取,這種自己預測的標簽本來就是不準確的,要用它來訓練這么復雜的層次化 encoder 是非常難以收斂的,因此文章更傾向于無監督的方式對 encoder 進行預訓練。
對摘要抽取任務而言,我們要學習的是整個文章的表達,它的基本單元是句子,因此預訓練應該以句子為單位,即將句子 mask 掉然后利用左,右側的信息來預測 mask 掉的整個句子。Mask 的方式與 BERT 一致。
隨機選擇文檔中 15% 的句子進行 mask,然后根據文檔中其他的句子表示向量來預測 mask 的部分
80% 使用 [MASK] 進行填充
10% 使用從文檔中隨機選擇的句子進行填充
10% 不改變選擇的句子
從上面的模型圖中可以看出,在預測 mask 的句子時同樣是進行逐詞預測,直到遇到 [EOS] 為止。特殊之處在于這里預測的每一步都會給當前預測詞的 embedding 上該句子的 embedding。預訓練的 loss 就是這些單詞預測結果的負對數似然。
1.3 摘要生成
這里主要就是如何定義句子的重要性,摘要生成就是選擇最重要的那些句子構成文章的摘要(給每個句子打上 True 或者 False 的標簽)。因為我們已經將最重要的分層 encoder 預訓練好了,所以直接 Linear projection 就能得到結果。
這時我們需要 sentence 真實的標簽來對全連接層進行訓練,文中是對每一個文章,選擇一個句子的子集,該子集使得 ROUGE 指標最大。子集中的句子都打上 true,其余句子為 false。
1.4 Experiments
HiBERT 的總體分為三個部分:
1. 在 GIGA-CM 數據集上預訓練(out-of-domain data)
2. 在 CNNDM(NYT50)數據集上預訓練(in domain data)
3. 在 CNNDM(或者 NYT50)fine-tune(即使用摘要生成的目標進行訓練)
在定量的分析上,HiBERT 擊敗了現有的方法。其中下標 S 表示模型使用上述提到的預訓練數據集,in-domain 表示只使用 CNNDM,M 表示使用更大的數據集進行訓練。
Transformer Based Models
論文標題:
On the Importance of Local Information in Transformer Based Models
論文鏈接:
https://arxiv.org/abs/2008.05828
目前已經有很多文章研究多頭注意力機制取得成功的本質原因,他們有一些共性的發現:少部分關注于局部信息或者語義信息的注意力比其他 head 更加重要。本文是一篇實驗性的文章,旨在在這個觀察下更進一步,文章得到的結論也很振奮:即使我們只保留局部注意力,transformer 的性能依舊不會收到影響。
2.1 Analysis of Locality in Transformerbased models
這一節主要論證了局部信息在當前基于 transformer 的模型中起到的重要性。文章針對兩組任務分別選擇了兩個基準模型
針對機器翻譯任務,選擇了 Transformer (標準的 transformer)作為基準模型,用在 WMT'14 的 En-Ru 和 En-De 兩個翻譯任務上。
針對自然語言理解任務,選擇 作為基準模型,用在 QQP, SST-2, MRPC, QNLI 四個數據集上。
2.2 Sensitivity analysis
作者首先使用梯度評估重要程度,使用如下三個公式度量局部,語義和無關信息在傳統模型中所占比重。 指的是輸出 對輸入 的梯度(梯度越大對結果的影響也越大,即對該位置比較敏感)。 指的是在第 i 個 token 附近距離小于 2 的 token 集合。
表示與第 i 個 token 有語義關系的 token 集合, 表示其他。以對局部信息重要性的度量為例,其實就是對每個 token,求出他臨近位置 4 個 token 的重要性的均值,然后在整個 sequence 上求均值。
我們隨機在數據集中抽取 100 個句子然后計算上面的指標,可以看到,基本上在所有數據集上局部信息的重要性都是 dominant 的。這也就證實了每一層的輸出對他的局部信息都要更為敏感。
除了梯度外,作者也通過注意力權重來評估了局部信息的重要性。評估方式如下 l:給定一整段 sentence 和其中一組 token 集合 , 表示計算第 i 個 token 的表示時對位置 j 的 token 的注意力權重,那么我們說一個 token 對 的注意力偏向比為:
如果 取上述的 ,那么我們就評估的是 model 對局部信息的注意力偏向程度,結果如下圖所示,我們知道一個完全隨機初始化的 transformer 他的偏向比應該為 1。下圖的橫坐標表示這個比例,縱坐標顯示了注意力偏向比大于該閾值的 head 占總體 head 的數目,可以看到非常多的 head 對局部信息有偏向。
那么我們不妨大膽一點,如果我們強制讓所有的注意力頭都學習局部信息會怎樣呢?
2.3 Transformers With Only Local Attention
文章通過兩個設計來 enforce 這個目標。
2.4 Applying Masks to Attention Heads
最簡單的方式就是給原本計算好的 attention map 乘上一個 mask,文中提出了好幾種 mask 的方式,無非就是限制一定距離內的 token 的注意力權重不變,其他的置為 0。雖然這樣的手段引入了歸納偏置,減小了感受野,但是因為 encoder 也是多層的,所有最終還是可以建模長距離依賴(參考 CNN)。
2.5 Parameter Sharing Across Heads
第二種方式稱為參數共享,也就是說我們能否在多個注意力頭中共享 ,但是給他們選擇不同的 mask,從而得到不同的激活結果。這里也有很多的問題值得討論:
1. 如何給每個注意力頭選擇合適的 mask?
2. 哪些注意力頭需要共享參數?
顯然,參數共享可以使得我們的參數量大大下降,但是這對我們的性能有什么影響呢,實驗部分會一一展開。
2.6 Results and Discussions
2.6.1 Intermixing Global and Local AttentionHeads
在第一個實驗中,作者嘗試了將傳統 attention 和完全局部的 attention 進行組合來觀察,一共有六種組合方式。如下圖(a-f)所示。
(a)就是傳統 transformer 沒變,(b)稱之為 2locHeads_All6(6 個 encoder 換 2 個位局部頭,這里應該是筆誤,一共 8 個 head),(d)稱之為 8LocaHeads_First3(前三層全部換為局部頭,同樣筆誤。
效果感人,即使全部用局部頭,性能也并沒有下降多少,甚至在 EN-DE 這里還有所上升。
2.6.2 Parameter Sharing Within Layer
共享參數作者一共實現了四種方式,對應圖四 (g-j),圖中淡藍色 head 共享其左側深藍色 head 的 query,key 參數矩陣。稱(g)為 4LocHeads4TiedLocAll6 (其余類推)。結果既然很驚艷,我們可以發現掉點其實很少,甚至在有些 setting 下還有所提升。
2.6.3 Parameter Sharing Across Layers
這一步做得更絕,整層 attention 都共享參數,或者說一半的 attention 共享參數,一般為原始。Again,效果基本不降甚至有所提升。
總結一下,這篇文章最突出的地方在于驗證了 局部注意力在翻譯以自然語言理解任務上的有效性,除此之外,還驗證了參數共享的可行性。
Longformer
論文標題:
Longformer: The Long-Document Transformer
論文鏈接:
https://arxiv.org/abs/2004.05150
代碼鏈接:
https://github.com/allenai/longformer
本文最大的亮點就在于:attention 機制對內存與算力的需求與序列長度呈線性關系,而不是原有的二次方。而且作者給出了不同的實現方式,在速度方面有些許的差異。
3.1 Background
我們知道,對 attention 機制進行改進的文章已經很多了,對長序列而言最暴力的就是我們只用它開頭的 個 token 強行處理,但是這樣顯然會丟失非常多的信息。
目前主要有如下兩種方式進行改進(i)ltr: left-to-right,我們從左到右依次處理小塊的 token,這種方式使得它在需要雙向信息的任務上表現不佳。
本文屬于第二種類型(ii)不去計算整個注意力矩陣,使其稀疏化。但是從下圖可以看到,作者 argue 他們的實驗都不完善,大多數只在 LM 的任務上進行驗證,作者做了 LM, 其他常見 NLP 的 tasks,還將模型進行預訓練然后微調再進行做對比。
3.2 LongFormer
文中給出了三種線性復雜度的 attention 實現方案:
1. (b) 滑動窗口為 即每一個 token 左右各取 個 token 計算局部注意力。假設窗口大小是 w,序列長度是 n,那么這個 pattern 的計算復雜度就是 。有點像卷積,多層堆疊同樣能得到較大的感受野。
2. (c) 窗口的縫隙大小是 (每兩個 window之間距離為 ),假設 window size 是 ,transformer 的層數是 ,那么窗口能覆蓋到的接受范圍就是 。在 mutilhead attention 中,作者設置允許一些沒有空洞的 head 專注于局部上下文,而其他具有空洞的 head 專注于較長的上下文,最終發現這樣的做法能提升整體的表現。
3. (d) 對于一些任務,比如說 QA,需要通過 question 去找 document 里的答案,因此局部注意力在這種情況下就不適用。因此,作者就在一些預先選擇的位置上添加了全局注意力。在這些位置上,會對整個序列做 attention。這些位置根據具體任務而定,比如在分類任務上,這個 global attention 就落在 [CLS] 標簽上,在 QA 任務上,就在整個問句上計算 global attention。global attention 是視具體任務而定的,顯然是引入了 inductive bias,換個任務可能之前的做法就不適用了,但作者認為,這仍然比現有的 trunk 或者 shorten 的做法要簡單很多。
3.3 Experiments
對于 LM 任務,作者選擇了 text8 和 enwik8 兩個數據集,在小的模型上,long former 比其他模型都要好。這也證明了這個模型的有效性。在大的模型上,比 18 層的 transformerxl 要好,跟第二個和第三個齊平,不如第四、五兩個。但作者說明,這兩個模型并不適用于 pretrain-finetune 的模式。
首先來看一下這幾種不同的 attention paradigm 效果如何,如下圖所示遞增窗口大小的表現最好,遞減窗口大小表現最差,使用固定窗口的表現介于兩者之間。表格的下半部分展示了使不使用空洞窗口的區別,可以看出對兩個 head 增加一些空洞比完全不使用空洞窗口表現要好一些。
作者從 RoBERTa 的 checkpoints 開始進行訓練,具體實施就不貼了,最終再 NLP 的多種 task 上都擊敗了前者。
Big Bird
論文標題:
Big Bird: Transformers for Longer Sequences
收錄會議:
NeurIPS 2020
論文鏈接:
https://arxiv.org/abs/2007.14062
代碼鏈接:
https://github.com/google-research/bigbird
當 graph 遇到 attention 會發生什么?這篇文章將注意力機制使用圖來建模,然后使用圖上的稀疏化技術將注意力機制的時空復雜度與輸入序列長度的依賴降到線性,與以往的工作不同,本文還給出了理論上的支撐。
4.1 BIG BIRD架構
往簡單來說,big bird 的注意力機制主要包含三部分:
個可以做全局注意力的 token(c)
所有的 token 可以訪問其兩邊長度為 的窗口內的所有 token(b)
所有 token 可以訪問任意 個隨機位置的 token(a)
我們都可以從直觀上想到這樣的方法,那有沒有一些觀察告訴我們為什么選擇這些方式呢?這就不得不說 big bird 有趣的建模了。
給定輸入序列 ,我們可以用圖來描述一個注意力機制。這個圖的點即序列中的每個 token,因此點集 ,圖中的邊其實就是 attention weight,用 表示 token ? 可以訪問的所有 token 的集合,那么 經過 attention 之后的輸出我們可以定義為:
其中 是注意力頭的數目, 即我們注意力機制的參數矩陣。 是 softmax 或者 hardmax。注意到這里計算 key 的集合 并不是全體 token,而是 可以訪問的鄰居節點。
對一個圖,我們可以用鄰接矩陣 來表示每個點的連接狀況,當 是全一矩陣的時候其實這就是傳統的 attention。使用圖的方式對注意力機制進行建模允許我們圖上稀疏化的方法來優化這一過程,接下來我們挨個本文為什么需要上述三種局部信息的獲取方式:
1. 隨機圖可以在很多不同情況下近似完全圖,而且它鄰接矩陣的二階特征值比一階特征值小得多,這個性質表明信息可以在任何一對節點之間快速流動。根據這一理論,作者也提出了一種完全隨機的稀疏關注,即一個 query 可以隨機的訪問 個任意位置的 key。
2. 現在 NLP 社區越來越多的人關注局部性這一性質,基于固定窗口的 attention 上文也講過,不過作者給出了局部性,相鄰節點在語言學,圖中的重要性。
3. 全局注意力的重要性是作者從理論分析中得到的,這里作者使用了兩種方法指定一部分 token 做全局注意力:1) internal transformer construction ?(ITC):在所有 token 中隨機的選一個子集 ,允許他們訪問其他所有 token;2) extended transformer construction (ETC):像 BERT 一樣手工添加 個類似于 CLS 這樣的 token 用于獲取全局信息。
理論部分比較長,這里就不列出來了。
4.2 Experiments
本文同樣創建了 base,large 兩個版本的模型,從 RoBERTa 的 checkpoint 開始進行預訓練。
在 QA 數據集上,big bird_base 超過相應的 base model:Roberta 以及 longformer,只是 ITC 和 ETC 兩種產生全局 token 的方式各有強弱。
雖然作者將 BIGBIRD-ETC 與當前以下數據集的 top 3 進行了比較:
計算效率的上升意味著處理長文本的能力得以增強,這類應用最典型的就要屬 Summarization了。可以看到,在各個數據集上 Big Bird 都取得了巨大的性能提升。
總結一下,越來越多的文章聚焦在局部/全局信息的 tradeoff 上,雖然大家得出的結論不全相同,但是如何更好地利用 attention map 的稀疏性來提高計算和存儲效率依然是一個熱點問題。隨著 transformer 應用在 image 上,這個問題變得更加多樣化。
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的从4篇论文看Transformer的局部信息建模的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Learning to Learn:图神
- 下一篇: 全球智能手表一季度出货量 华为超越三星