【論文翻譯】NLP—CogLTX: Applying BERT to Long Texts(使用BERT解決長文本問題)

摘要

BERT不能處理長文本,因爲它的內存和時間消耗呈二次增長。解決這個問題的最自然的方法,如用滑動窗口對文本進行切片,或者簡化transformer,使用不充分的長範圍attention,或者需要定製的CUDA內核。。BERT的最大長度限制提醒我們人類工作記憶的容量是有限的(5個∼9個區塊),那麼人類是如何認知長文本的呢?本文提出的CogLTX 框架基於Baddeley提出的認知理論,通過訓練一個判斷模型來識別關鍵句子,並將其串接進行推理,並通過排練和衰減實現多步驟推理。由於相關性註釋通常是不可用的,我們建議使用干預來創建監督。作爲一種通用算法,CogLTX在不依賴於文本長度的內存開銷情況下,在各種下游任務上優於或獲得與SOTA模型相當的結果。

 

介紹

由BERT開創的Pretrained語言模型已經成爲處理許多NLP任務(例如機器閱讀理解-問答和文本分類)的靈丹妙藥。研究人員和工程師可以輕鬆地按照標準精細化範式構建最先進的應用程序,但最終可能會失望地發現一些文本的長度超過BERT的限制(通常是512個符號),這種情況在標準化基準測試中可能很少見,例如SQuAD【38】和GLUE【47】,但在更復雜的任務[53]或真實的文本數據中很常見。對於長文本,一個簡單的解決方案是滑動窗口【50】,BERT處理連續的512個標記跨度。這種方法犧牲相距過遠字符“相互映射(pay attention)”,這成爲BERT在複雜任務(例如圖1)顯示其功效的瓶頸。因爲問題的根源在高時間O (L2)和空間複雜性在transformers[46](L是文本的長度),另一條線的研究試圖簡化的結構transformers【20,37,8,42】,但目前他們已經成功地應用於BERT【35,4】。

圖一 圖1:來自HotpotQA的一個例子(distractor設置,連接)。回答這個問題的關鍵句子是第一個和最後一個,彼此之間的距離超過512個符號。在滑動窗口方法中,它們從來沒有出現在同一個BERT輸入窗口中,因此我們無法回答這個問題。

BERT的最大長度限制很自然地提醒了我們有限容量的工作記憶[2]:一種人類的認知系統,用來存儲邏輯推理和決策的信息。實驗【27,9,31】已經表明,在閱讀過程中,工作記憶僅能容納5個~ 9個條目/單詞,那麼人類到底是怎麼理解較長的文本的呢?正如Baddeley【2】在其1992年的經典著作中指出的那樣,“中央執行器——(工作記憶)系統的核心,負責協調(多模式)信息”,然後,“功能類似於一個有限容量的注意力系統,能夠選擇和操作控制過程和策略”。後來的研究詳細說明了工作記憶中的內容會隨着時間的推移而衰減,除非是通過排演【3】來保存,即注意並刷新頭腦中的信息。然後通過檢索比較【52】,用長期記憶中的相關條目不斷更新被忽略的信息,在工作記憶中收集足夠的信息進行推理。BERT和工作記憶之間的類比啓發我們用CogLTX框架像人類一樣認知長文本。CogLTX背後的基本哲學是相當簡潔的——對關鍵句子的串聯進行推理(圖2)——而緊湊的設計則需要在機器和人的推理過程之間架起橋樑。

1111 圖2:BERT任務的主要類型的CogLTX推理。MemRecall是從長文本x中提取關鍵文本塊z的過程,然後將z發送給BERT,稱爲reasoner,以完成特定的任務。A (c)任務轉換成多個(b)任務。BERT輸入w.r.t. z用z+表示。

CogLTX的關鍵步驟是MemRecall,即通過將文本塊視爲情景記憶來識別相關文本塊的過程。 MemRecall模擬了工作記憶的檢索競賽、預演和衰退,便於多步驟推理。另一個BERT,稱爲judge,被引入來評分塊的相關性,並與最初的BERT reasoner一起訓練。此外,CogLTX還可以通過干預將面向任務的標籤轉換爲相關性註釋,以訓練判斷人員。我們的實驗表明,CogLTX在包括NewsQA[44]、HotpotQA[53]、20個NewsGroups[22]和Alibaba在內的四個任務上優於或達到了相當的性能,無論文本長度如何,內存消耗都是恆定的。

 

背景

長文本的挑戰。長文本的挑戰。對長文本的直接和表面障礙是在BERT[12]中預先訓練的最大位置嵌入通常爲512。然而,即使提供了更大位置的嵌入,內存消耗也是難以承受的,因爲所有的激活都存儲在訓練期間的反向傳播。例如,一個1500-token文本需要大約14.6GB的內存才能運行bert -即使批量大小爲1,也很大,超過了普通gpu的容量(例如,1個token文本)。11GB的RTX 2080ti)。此外,O(L2)空間複雜度意味着隨着文本長度L的增加而快速增加。

相關的工作。如圖1所示,滑動窗口法缺乏遠距離關注。以前的工作[49,33]試圖通過均值池、max-池或額外的MLP或LSTM來聚合每個窗口的結果;但這些方法在長距離交互時仍然很弱,需要O(5122·L/512) = O(512L)空間,這在實踐中仍然太大,無法在批量大小爲1的RTX 2080ti上訓練2500令牌文本的BERT-large。此外,這些晚聚合方法主要是對分類進行優化,而其他任務,如廣度提取,輸出L BERT值,需要O(L2)空間進行自注意聚合。

在對transformer進行長文本改造的研究中,很多隻是壓縮或重複使用了之前步驟的結果,無法應用到BERT中,如Transformer- xl[8]、compression Transformer[37]。Reformer使用位置敏感的散列來實現基於內容的羣組關注,但它對GPU不友好,仍然需要對BERT的使用進行驗證。BlockBERT[35]砍掉不重要的注意力頭,將BERT從512令牌提升到1024。最近的里程碑長前[4],定製CUDA內核,以支持窗口注意和全局注意的特殊令牌。然而,由於數據集大多在longformer窗口大小的4倍範圍內,對後者的有效性的研究還不夠充分。“輕量級BERTs”的方向很有前途,但與CogLTX是正交的,這意味着它們可以結合CogLTX來處理較長的文本,因此本文將不再對它們進行比較或討論。詳細的調查可以在[25]中找到。

圖3:用於回答問題的MemRecall插圖。長文本x被分成塊[x0…x40]。在第一步中,將排練後的x0和x8保留在z中。x8中的“老學派”將有助於在下一個步驟中檢索答案塊x40。詳見附錄。

 

方法

CogLTX方法:

CogLTX的這個基本假設是“對於大多數NLP任務來說,文本中的幾個關鍵句子存儲了足夠和必要的信息來完成任務”。更具體地說,我們假設存在一個由長文本x中的一些句子組成的短文本z,滿足

其中x+和z+是推理機BERT w.r.t的輸入,文本x和z如圖2所示。

我們通過動態編程(見附錄)將每個長文本分割成塊[x0 ... x(T-1],這將塊長度限制爲最大B,在我們的實現中,如果BERT長度限制爲L = 512,則B = 63。關鍵短文本z應該由x中的若干塊組成,即z = [xz0…xznn 1],滿足len(z+)≤L且z0 <…< znn 1。我們用zi表示xzi。z中的所有塊都會自動排序,以保持x中的原始相對順序。

關鍵塊假設與潛變量模型密切相關,潛變量模型通常用EM[11]或變分貝葉斯[19]求解。但是,這些方法估計z的分佈,需要多次採樣,對BERTs來說不夠有效。我們將它們的精髓融入到CogLTX的設計中,並在§3.3中討論了它們之間的聯繫。

在CogLTX中,MemRecall和兩個BERTs的聯合訓練是必不可少的。如圖2所示,MemRecall是利用判斷模型檢索關鍵塊的算法,在推理過程中將關鍵塊送入推理機完成任務

MemRecall

當大腦回憶與工作記憶中當前信息相關的過去事件時,MemRecall的目的是從長文本x中提取關鍵塊z(見圖3)。

輸入。儘管其目的是提取關鍵塊,但三種任務類型的具體設置有所不同。在圖2 (a) (c)中,問題Q或子序列x[i]作爲查詢,用於檢索相關塊。但是,(b)中沒有查詢,相關性僅由訓練數據隱式定義。例如,包含“唐納德·特朗普”或“籃球”的句子在新聞話題分類方面比時間報道句子更相關。那麼如何無縫地統一這些案例呢?

MemRecall通過接受初始的z+作爲x之外的附加輸入來回答這個問題。z+是在MemRecall期間維護的簡短“關鍵文本”,用來模擬工作記憶。任務(a)(c)中的查詢成爲z+中的初始信息,以引發回憶。然後,判斷模型在z+的幫助下學習預測任務特定的相關性。

模型。MemRecall使用的唯一模型是上面提到的 judge,一個BERT來爲每個標記評分相關性。假設z+ = [[CLS] Q [SEP]z0[SEP]…znn1),

區塊zi的分數記爲judge(z+)[zi],是該區塊中token分數的平均值。

過程。MemRecall始於一場檢索比賽。每個塊xi分配一個粗關聯評分judge([z+[SEP]xi])[xi]。得分最高的“勝者”塊插入z, len(z+)≤l。向量空間模型[40]優於向量空間模型[40]的優勢在於xi通過變壓器與電流z+完全相互作用,避免了嵌入過程中的信息丟失。

接下來的排演衰減期賦予每個zi一個良好的相關性評分judge(z+)[zi]。只有得分最高的區塊會被保存在z+中,就像工作記憶中的排演衰減現象一樣。細分值的動機是,沒有分塊之間的交互和比較,粗分值的相對大小不夠準確,類似於重新計算[7]的動機。

MemRecall本質上支持多步驟推理,通過使用新的z+重複這個過程。CogQA[13]強調了迭代檢索的重要性,因爲在多跳閱讀理解中,答案句不能被問題直接檢索。值得注意的是,如果z+中新塊的更多信息證明它們的相關性不夠強(得分較低),上一步保留的塊也會衰減,而之前的多步推理方法忽略了這一點[13,1,10]。

訓練

下流式任務的多樣性對在CogLTX訓練BERTs提出了挑戰。

算法1總結了不同設置下的解。


Algorithm 1: The Training Algorithm of CogLTX (算法1:CogLTX的訓練算法)


對judge進行監督培訓。。《自然》中的跨度提取任務(圖2(a))建議使用相應的答案塊。即使是多跳數據集,例如HotpotQA[53],通常也會對支持句進行註釋。在這些情況下,judge自然是在監督下接受訓練的:

 

其中訓練樣本z要麼是從x中採樣的連續塊Zrand序列(對應檢索比賽的數據分佈),要麼是所有相關和隨機選擇的不相關塊Zrelv的混合(近似於排練的數據分佈)。

對reasoner進行監督培訓。reasoner面臨的挑戰是如何在訓練和推理過程中保持數據分佈的一致性,這是監督學習的一個基本原則。理想情況下,reasoner的輸入也應該由MemRecall在訓練期間生成,但並不能保證所有相關塊都能被檢索到。例如在回答問題時,如果MemRecall漏掉了答案塊,訓練就不能進行。最後,近似地發送檢索競賽中所有相關塊和“優勝者”塊來訓練reasoner

對judge進行無監督培訓。不幸的是,許多任務(圖2 (b)(c))沒有提供相關性標籤。因爲CogLTX假設所有相關的塊都是必要的,所以我們通過干預推斷出相關標籤:通過從z中刪除塊來測試塊是否是不可缺少的。

假設z是“oracle relevant blocks”,根據我們的假設,

其中Z-zi是z去除了zi的結果,t是一個閾值。在訓練reassoner的每一次迭代後,我們切割z中的每個塊,根據損失的增加調整其關聯標籤。不顯著的增加表明區塊是不相關的,它可能不會再次“贏得檢索比賽”來訓練推理機在下一個時代,因爲它將被貼上不相關的標籤來訓練裁判。然後真正相關的塊可能進入z下一個紀元並被檢測出來。在實踐中,我們將t分爲up和down兩部分,留出緩衝區域,以防止頻繁更換標籤。我們在圖4中的20News文本分類數據集上展示了一個無監督訓練的示例。

圖4:CogLTX在20News數據集上的無監督訓練示例。所有塊都被BM25初始化爲“irrelevant”(沒有帶soci . religious .christian標籤的常見單詞)。
在第一階段,judge幾乎沒有經過訓練,隨機選擇一些方塊。其中,(7)對正確分類貢獻最大,標記爲“relevant”。
在第二個時代,經過訓練的judge發現(1)有強有力的證據證明“prayers”和(1)立刻被標記爲“relevant”。那麼在下一個時代,(7)就不再是分類的必要條件,被標記爲“irrelevant”。

與潛在變量模型的連接。無監督CogLTX可以看作是(條件)潛變量模型p(y|x;θ)∝p (z | x) p (y | z;θ)。EM[11]推斷z的分佈爲後驗p(z|y, x;E-step中的θ),而變分bayes方法[19,3]使用一個估計友好的q(z|y, x)。然而,在CogLTX中z是一個離散分佈,其可能值高達Cnm,其中n, m分別是塊數和z的容量。在某些情況下,爲了訓練BERTs,可能需要進行數百次抽樣,其昂貴的時間消耗迫使我們轉向z的點估計2,例如,我們基於干涉的方法。

干預解決方案維護每個x的z估計,本質上是一個特定於CogLTX的本地搜索。z是通過比較附近的值(替換不相關塊後的結果)而不是Bayesian規則來優化的。Judge採用歸納判別模型來幫助推斷出z。

 

實驗

我們在四個不同任務的長文本數據集上進行了實驗。token-wise(圖2 (c))任務不包括從相鄰的句子,因爲他們大多僅僅需要信息並最終轉化爲多個sequence-level山姆 pl。圖5中的箱線圖顯示了數據集中文本長度的統計信息。

圖5:數據集中文本長度分佈的箱線圖。

在所有實驗中,judge和reasoner由Adam[18]優化,學習速率分別爲4×1005和1004。在前10%的步驟中,學習率開始升溫,然後線性衰減到最大學習率的1/10。常用的超參數爲batch size = 32, strides= [3, 5], tup = 0.2,當count =0.05。

在本節中,我們將分別介紹每一項任務以及相關的結果、分析和消融研究。

閱讀理解

數據集和設置。給定一個問題和一段話,任務是預測在這段話中的回答跨度。我們評估了CogLTX在NewsQA[44]上的性能,NewsQA[44]包含119,633個人工生成的問題,在12,744篇長新聞文章中提出。3由於之前的SOTA[43]在NewsQA中不是基於BERT的(由於文本較長),爲了保持相同的參數規模進行公平比較,我們在CogLTX中對RoBERTa[26]的基礎版本進行了4個時期的調整。

結果。表1顯示,CogLTX-base優於已經建立的QA模型,例如BiDAF [41] (+17.8% F1),先前的SOTA DECAPROP[43](包含精心的自我注意和RNN機制(+4.8%F1),甚至是帶滑動窗口的RoBERTa-large (+4.8%F1)。我們假設第一句話(導語)和最後一句話(結論)通常是新聞文章中信息量最大的部分。CogLTX可以聚合它們進行推理,而滑動窗口不能。

Multi-hop question answering

數據集和設置。在複雜的情況下,答案是基於多個段落。以前的方法通常利用段落中關鍵實體之間的圖結構[13,36]。然而,如果我們可以使用CogLTX處理較長的文本,那麼通過將所有段落作爲BERTs的輸入連接起來,就可以很好地解決這個問題。

HotpotQA[53]是一個包含112,779個問題的多跳QA數據集,其distractor設置爲每個問題提供了2個必要的段落和8個distractor段落。答案和支持性事實都是評估所需要的。在CogLTX中,我們將每個句子視爲一個塊,並直接輸出分數最高的2個塊作爲支持事實。

結果。表2顯示,CogLTX優於之前的大多數方法和排行榜上的所有7個BERT變體解決方案。

SOTA模型HGN[14]利用了維基百科中額外的超鏈接數據,數據集是基於這些超鏈接數據構建的。SAE[45]的思想與CogLTX類似,但不太通用。它通過BERTs的注意層對段落進行評分,選擇得分最高的兩段,並將它們一起提供給BERT。支持事實是由另一個複雜的圖表注意模型決定的。由於定向設計良好,SAE比CogLTX(2.2%聯合F1)更適合HotpotQA,但不能解決較長段落的內存問題。CogLTX像普通QA一樣直接解決多跳QA問題,得到sota可比的結果,無需額外努力就能解釋支持事實。

Ablation的研究。我們還總結了表2中的消融研究,表明

(1)多步推理確實有效(+3.9%關節F1),但不是必要的,可能是因爲HotpotQA中的許多問題本身與第二跳句子足夠相關,可以檢索它們。

(2)在未進行預演的情況下,支持事實的指標顯著下降(-35.7% Sup F1),這是因爲最高句之間的相關性得分不具有可比性。

(3)如§3.3所述,如果推理機採用隨機選擇的塊進行訓練,則訓練和測試過程中數據分佈的差異會影響性能(-2.3%聯合F1)。

文本分類

數據集和設置。文本分類是自然語言處理中最常見的任務之一,它對主題、情感、意圖等進行分析是必不可少的。我們在經典的20個新聞組[22]上進行實驗,該新聞組包含來自20個類的18,846個文檔。我們給羅伯塔安排了6個時代的CogLTX。

結果。表3表明,CogLTX的相關性標籤是由Glove[34]初始化的,它的性能優於其他基線,包括先前嘗試從滑動窗口[33]聚合[CLS]池結果的結果。此外,基於MLP或LSTM的聚合既不能對長文本進行端到端訓練。

Ablation的研究。

(1)由於20個新聞組中的文本長度差異很大(見圖5),我們只在大於512的文本上進一步測試性能

(2)基於Glove的初始化雖然提供了較好的相關性標籤,但由於沒有進行干預調整,仍然導致準確率下降了2.2%。

(3) Bm25初始化基於常用語,由於標籤名較短,只初始化了14.2%的訓練樣本,如sports.baseball。通過干預和逐步訓練推理器推斷相關句子,準確率達到86.1%。

Multi-label classifification

數據集和設置。在許多實際問題中,每個文本可以同時屬於多個類別。多標籤分類通常通過爲每個標籤訓練一個單獨的分類器來轉化爲二分類。由於BERT容量大,我們共享所有標籤的模型,方法是在文檔開頭添加標籤名作爲輸入,即[[CLS] label [SEP] doc],用於二進制分類。阿里巴巴是從一個大型電子商務平臺的行業場景中提取的3萬篇文章的數據集。每篇文章都有67個類別的幾個項目的廣告。上述類別的檢測被完美地建模爲多標籤分類。爲了加快實驗速度,我們分別抽樣8萬對和2萬對標籤-條目對進行訓練和測試。爲了完成這個任務,我們在CogLTX找到了RoBERTa。

結果。表4顯示了CogLTX優於普通的強基線。TextCNN[17]和Bi-LSTM使用的單詞embeddings來自RoBERTa,爲了公平比較。即使CogLTX-tiny (7.5M參數)也優於TextCNN。但是,RoBERTa-large滑動窗口的max-pooling結果卻不如CogLTX (7.3% Macro-F1)。我們假設這是由於在max-pooling中傾向於給非常長的文本分配更高的概率,突出了CogLTX的效力。

內存和時間消耗

內存。CogLTX的內存消耗在訓練期間是恆定的,優於香草BERT的O(L2)複雜性。我們還比較了longformer[4],如果全局注意令牌的數量相對於L較小且不依賴於L,則其空間複雜度大致爲O(L)。圖6(左)總結了詳細的比較。

時間。爲了加快推理機的訓練,我們可以在訓練判斷時緩存分塊的分數,這樣每個epoch只需要2倍的單bert訓練時間。由於CogLTX和滑動窗口在訓練中直到收斂的epochs數目相似,CogLTX主要關注推理的速度。圖6(右)顯示了處理10萬例不同文本長度的合成數據集的時間。CogLTX的時間複雜度爲O(n),在L > 2048之後比香草BERT快,並隨着文本長度L的增長接近滑動窗口的速度。

圖6:不同文本長度的內存和時間消耗。關於內存的數據是特斯拉V100上批量大小= 1測量的。在推理時間消耗的度量中,批大小爲8,CogLTX進行單步推理。

 

結論與討論

我們提出了CogLTX,一種將BERT應用於長篇文本的認知啓發框架。在訓練中,CogLTX只需要固定的記憶,可以在遙遠的句子之間進行關注。類似的想法也在DrQA[6]和ORQA[23]的文檔級進行了研究,之前也有以非監督方式提取重要句子的工作,如基於結構[24]的元數據。在4個不同的大數據集上的實驗表明了該算法的有效性。CogLTX有望成爲許多複雜NLP任務的一個通用的、強有力的基線。

CogLTX在“關鍵句子”假設下定義了一個用於長文本理解的管道。非常困難的序列級任務可能會違反它,因此高效的變分貝葉斯方法(估計z分佈)與負擔得起的計算仍然值得研究。此外,CogLTX在塊前遺漏前件的缺點是,在我們的HotpotQA實驗中,在每個句子前添加實體名稱來緩解這一問題,未來可以通過位置感知檢索競賽或共指解析來解決。

 

 

備註:請結合原論文踐行閱讀,本博客僅涉及翻譯,初次讀論文可能有些地方翻譯的不正確,請提出來呢,論文詳解會在後續進行補充

論文地址:http://keg.cs.tsinghua.edu.cn/jietang/publications/NIPS20-Ding-et-al-CogLTX.pdf

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章