【摘要】最近,預訓練語言模型BERT(及其經過穩健優化的版本RoBERTa)在自然語言理解(NLU)領域引起了廣泛關注,并在情感分類、自然語言推理、語義文本相似度和問答等各種NLU任務中達到了最先進的準確率。受到Elman [8] 線性化探索工作的啟發,我們在BERT的基礎上提出了一種新模型StructBERT,通過在預訓練過程中融入語言結構來提升表現。具體而言,我們為StructBERT設計了兩個輔助任務,以充分利用單詞和句子的順序信息,從而在詞級和句子級別上利用語言結構。這使得新模型能夠適應下游任務所需的不同層次的語言理解能力。在引入結構化預訓練后,StructBERT在多個下游任務上取得了出色的實驗結果。例如,在GLUE基準測試中達到89.0的分數(超越所有已發布模型),在SQuAD v1.1問答任務中F1分數達到93.0,在SNLI數據集上的準確率達到91.7。
1,引言
預訓練語言模型(LM)是許多自然語言理解(NLU)任務的關鍵組件,例如語義文本相似度 [4]、問答 [21] 和情感分類 [25]。為了獲得可靠的語言表示,神經語言模型利用自監督學習來定義文本中單詞序列的聯合概率分布。與傳統的基于單詞的嵌入方法不同(即為每個標記分配一個全局表示),近年來的研究(如 Cove [16]、ELMo [18]、GPT [20] 和 BERT [6])通過在大規模文本語料庫上訓練語言模型,生成上下文化的單詞向量。這些模型已被證明在許多下游NLU任務中具有良好的效果。
在上下文敏感的語言模型中,BERT(及其經過穩健優化的版本RoBERTa [15])席卷了NLP領域。BERT的設計旨在通過在所有層中同時考慮左右上下文來預訓練雙向表示,并僅通過上下文來預測被掩碼的單詞,以學習語言表示。然而,它并未充分利用潛在的語言結構。
根據 Elman [8] 的研究,循環神經網絡(RNN)在處理簡單句子時對單詞順序的規律性表現出敏感性。由于語言的流暢性取決于單詞和句子的排序,因此在許多自然語言處理(NLP)任務(如機器翻譯和自然語言理解 [9])中,找到一組單詞和句子的最佳排列方式是一個關鍵問題。近年來,單詞排序被視為基于語言模型(LM)的線性化任務,僅依賴語言模型進行處理 [24]。Schmaltz 的研究表明,即使沒有顯式的句法信息,帶有長短時記憶(LSTM)單元的循環神經網絡語言模型(RNN-LM)[17] 也能有效地完成單詞排序任務。
在本文中,我們介紹了一種新的上下文表示方式——StructBERT,它通過提出兩種新的線性化策略,將語言結構引入到BERT的預訓練中。具體而言,除了現有的掩碼策略外,StructBERT 還利用結構信息來擴展 BERT,包括詞級順序和句級順序。我們在模型預訓練過程中分別針對句內結構和句間結構引入了兩個新的結構化目標。通過這種方式,語言學特征在預訓練過程中得到了顯式捕捉。通過結構化預訓練,StructBERT 在上下文化表示中編碼了單詞之間以及句子之間的依賴關系,從而使模型具有更好的泛化能力和適應性。
我們提出了一種新穎的結構化預訓練方法,通過引入詞級結構目標和句級結構目標擴展 BERT,在上下文化表示中利用語言結構。這使得 StructBERT 能夠顯式建模語言結構,并通過強制模型重建正確的單詞和句子順序來進行準確預測。
StructBERT 在各種自然語言理解(NLU)任務上顯著超越了所有已發布的最新模型。該模型擴展了 BERT 的優勢,并在語義文本相似度、情感分析、文本蘊含和問答等語言理解應用中提升了性能。
2,StructBERT 模型預訓練
StructBERT 基于 BERT 架構,后者使用多層雙向 Transformer 網絡 [26]。給定一個單獨的文本句子或一對文本句子,BERT 將它們打包成一個令牌序列,并為每個令牌學習一個上下文化的向量表示。每個輸入令牌的表示是基于該詞、位置以及它所屬的文本片段。接下來,輸入向量被送入一堆多層雙向 Transformer 塊,這些塊使用自注意力機制,通過考慮整個輸入序列來計算文本表示。
原始的 BERT 引入了兩個無監督的預測任務來預訓練模型:即掩碼語言模型(Masked LM)任務和下一個句子預測任務。與原始 BERT 不同,我們的 StructBERT 通過在單詞掩碼后打亂一定數量的令牌并預測正確的順序,增強了掩碼語言模型任務的能力。此外,為了更好地理解句子之間的關系,StructBERT 隨機交換句子順序,并預測下一個句子和前一個句子,作為一種新的句子預測任務。通過這種方式,新的模型不僅顯式地捕捉了每個句子中細粒度的詞語結構,還以雙向的方式正確地建模了句間結構。一旦通過這兩個輔助任務預訓練了 StructBERT 語言模型,我們就可以在任務特定數據上進行微調,以適應廣泛的下游任務。
2.1,輸入表示
每個輸入
?是一系列詞元,可以是一個單獨的句子,也可以是兩個句子組成的對。輸入表示遵循 BERT [6] 中使用的方式。對于每個輸入詞元
,其向量表示
?是通過將對應的詞元嵌入、位置嵌入和段落嵌入相加來計算的。我們總是將一個特殊的分類嵌入([CLS])作為每個序列的第一個詞元,并在每個段落的末尾添加一個特殊的序列結束標記([SEP])。文本通過 WordPiece [30] 被分詞為子詞單元,絕對位置嵌入是通過支持的最大序列長度(最多 512 個詞元)進行學習的。此外,段落嵌入用于區分一對句子,就像 BERT 中一樣。
2.2,Transformer Encoder
我們使用多層雙向 Transformer 編碼器 [26] 來對輸入表示進行上下文信息編碼。給定輸入向量
,使用 L 層 Transformer 對輸入進行編碼,表示為:
其中:
,
,
。我們使用隱藏向量?
作為輸入詞元
的上下文化表示。
2.3,預訓練目標
為了充分利用語言中豐富的句內和句間結構,我們在原始 BERT 的預訓練目標基礎上進行了兩方面的擴展:
詞匯結構目標(主要用于單句任務)
句子結構目標(主要用于句子對任務)
我們將這兩個輔助目標與原始的掩碼語言模型(LM)目標一起,在統一的模型中進行預訓練,以利用語言的固有結構。
【詞匯結構目標】盡管原始 BERT 在各種自然語言理解(NLU)任務中取得了成功,但它無法顯式地建模自然語言中詞語的順序和高階依賴關系。給定一組隨機順序的詞匯,理想的語言模型應該能夠通過重構這些詞匯的正確順序來恢復原句。為了在 StructBERT 中實現這一想法,我們在 BERT 的訓練目標基礎上增加了一個新的詞匯結構目標,使模型具備了重構某些故意打亂順序的詞元正確順序的能力。這個新的詞匯目標與 BERT 的原始掩碼語言模型(LM)目標一起聯合訓練。
上圖展示了聯合訓練新的詞匯目標和掩碼 LM 目標的過程。在每個輸入序列中,我們首先像 BERT [6] 中一樣隨機掩碼 15% 的所有詞元。由雙向 Transformer 編碼器計算的掩碼詞元對應的輸出向量?
被輸入到 softmax 分類器中,以預測原始詞元。
接下來,新的詞匯目標開始發揮作用,考慮詞語順序。鑒于詞元洗牌的隨機性,詞匯目標相當于最大化將每個洗牌詞元放置到其正確位置的概率。更正式地,這個目標可以被表述為:
其中,
?表示 StructBERT 的可訓練參數集,
?表示每個打亂子序列的長度。從技術上講,較大的
會迫使模型能夠重建更長的序列,同時注入更多干擾的輸入。相反,當
較小的時候,模型獲得更多未受干擾的序列,但在恢復長序列方面的能力較差。我們決定使用三元組(即
= 3)進行子序列打亂,以平衡語言重建能力和模型的魯棒性。
具體來說,如上圖所示,我們隨機選擇一定比例的三元組來自未屏蔽的標記,并在每個三元組內打亂三個詞(例如圖中的 t2、t3 和 t4)。通過雙向 Transformer 編碼器計算的打亂標記的輸出向量,然后輸入到一個 softmax 分類器中,以預測原始標記。新的詞目標與掩蔽語言模型(LM)目標一起在統一的預訓練模型中共同學習,并賦予相等的權重。
【句子結構目標】原始 BERT 模型認為下一個句子預測任務比較簡單(BERT 在此任務中的預測準確率可以輕松達到 97%-98% [6])。因此,我們通過預測下一個句子和上一個句子,擴展了句子預測任務,以使預訓練語言模型以雙向的方式意識到句子的順序。如上圖所示,給定一對句子(S1,S2)作為輸入,我們預測 S2 是緊隨 S1 之后的下一個句子,還是在 S1 之前的上一個句子,或者是來自不同文檔的隨機句子。具體來說,對于句子 S1,1/3 的時間我們選擇緊隨 S1 之后的文本片段作為第二個句子 S2,1/3 的時間選擇 S1 之前的上一個句子,1/3 的時間則隨機從其他文檔中抽取一個句子作為 S2。這兩個句子被連接在一起,形成一個輸入序列,并在中間使用分隔符標記 [SEP],如同 BERT 中的做法。我們通過取對應于第一個標記 [CLS] 的隱藏狀態來匯聚模型輸出,并將 [CLS] 的編碼向量輸入到一個 softmax 分類器中進行三類預測。
2.4,預訓練設置
訓練目標函數是詞匯結構目標和句子結構目標的線性組合。對于掩蔽語言模型(Masked LM)目標,我們采用了與BERT [6] 相同的掩蔽率和設置,選擇5%的三元組進行隨機打亂。我們使用了來自英文維基百科(2,500M詞)和BookCorpus [35] 的文檔作為預訓練數據,遵循了[6]中的預處理和WordPiece分詞方法。輸入序列的最大長度設置為512。
我們使用Adam優化器,學習率設置為1e-4,β1 = 0.9,β2 = 0.999,L2權重衰減為0.01,前10%總步驟進行了學習率預熱,學習率采用線性衰減。每層設置了0.1的dropout概率。激活函數使用了gelu [10],與GPT [20]相同。
我們將Transformer塊的層數記為L,隱藏向量的大小記為H,自注意力頭數記為A。按照BERT的做法,我們主要報告兩種模型規模的實驗結果:
StructBERTBase:L = 12,H = 768,A = 12,參數數量 = 1.1億
StructBERTLarge:L = 24,H = 1024,A = 16,參數數量 = 3.4億
StructBERT的預訓練是在一個由64個Tesla V100 GPU卡組成的分布式計算集群上進行的。對于StructBERTBase,我們進行了40輪預訓練,耗時大約38小時;而StructBERTLarge的訓練大約花費了7天完成。
3,結論
在本文中,我們提出了一種新穎的結構化預訓練方法,將詞匯結構和句子結構納入BERT的預訓練中。我們引入了詞匯結構目標和句子結構目標,作為兩種新的預訓練任務,用于在不同粒度上深度理解自然語言。實驗結果表明,新的StructBERT模型在多種下游任務中取得了新的最先進的結果,包括流行的GLUE基準、SNLI語料庫和SQuAD v1.1問答任務。