PTMs|2020最新NLP預訓練模型綜述

2020-12-06 科技洲

以下文章來源於蘑菇先生學習記 ,作者蘑菇先生

蘑菇先生學習記

本篇文章主要介紹邱錫鵬老師在2020年發表的一篇預訓練模型的綜述:「Pre-trained Models for Natural Language Processing: A survey」[1]。

該綜述系統地介紹了nlp中的預訓練模型。主要的貢獻包括:

1.深入盤點了目前主流的預訓練模型,如word2vec,ELMo,BERT等。2. 提出了一種預訓練模型的分類體系,通過四種分類維度來劃分目前已有的預訓練模型。包括:表徵的類型,即:是否上下文感知編碼器結構,如:LSTM、CNN、Transformer預訓練任務類型,如:語言模型LM,帶掩碼的語言模型MLM,排列語言模型PLM,對比學習等針對特定場景的拓展和延伸。如:知識增強預訓練,多語言預訓練,多模態預訓練和模型壓縮等3. 如何將PTMs學到的知識遷移到下遊的任務中。4. 收集了目前關於PTMs的學習資料。5. 指明PTMs未來的研究方向,如:局限、挑戰、建議。由於篇幅原因,本文主要針對前面兩點進行梳理,即「目前主流的預訓練模型」「預訓練模型的分類體系」

1. 背景

「nlp、cv領域的傳統方法極度依賴於手動特徵工程」。例如nlp中的log-linear、CRF模型等,cv中各種抽取特徵的模型,如sift特徵等。深度學習中本質上是一種表示學習,能夠一定程度上避免手動的特徵工程。究其原因,主要得益於深度學習中一系列很強大的特徵提取器,如CNN、RNN、Transformer等,這些特徵提取器能夠有效地捕獲原始輸入數據中所蘊含的特點和規律。

「nlp領域的發展比cv領域相對緩慢的原因是什麼呢」?相比於cv領域,「nlp領域的劣勢在於有監督數據集大小非常小」(除了機器翻譯),導致深度學習模型容易過擬合,不能很好地泛化。但是相反,nlp領域的優勢在於,存在大量的無監督數據集,如果能夠充分利用這類數據進行訓練,那麼勢必能夠提升模型的能力以及在下遊任務中的表現。nlp中的預訓練模型就是這樣一類能夠在大規模語料上進行無監督訓練,學習得到通用的語言表徵,有助於解決下遊任務的nlp模型。

「那麼什麼是好的語言表徵呢」?作者引用了Bengio的話,「好的表徵能夠表達非特定任務的通用先驗知識,能夠有助於學習器來解決AI任務.」

"a good representation should express general-purpose priors that are not task-specic but would be likely to be useful for a learning machine to solve AI-tasks."

「nlp領域好的文本表徵則意味著能夠捕捉蘊含在文本中的隱性的語言學規則和常識性知識.」

"capture the implicit linguistic rules and common sense knowledge hiding in text data, such as lexical meanings, syntactic structures, semantic roles, and even pragmatics."

目前主流的語言表徵方式採用的是「分布式表徵」(distributed representation),即低維實值稠密向量,每個維度沒有特定的含義,但是「整個向量表達了一種具體的概念」。預訓練模型是學習分布式表徵的重要途徑之一,它的好處主要包括:

在大規模語料上進行預訓練能夠學習到「通用的語言表示」,並有助於下遊任務。提供好的模型「參數初始化」,提高泛化性和收斂速度。「小數據集」上可以看作是一種「正則化」,防止過擬合。2. 預訓練分類體系

下面將圍繞四種分類方式來介紹目前主流的預訓練模型,這些分類方式包括:

「表徵的類型」,即:學習到的表徵是否是上下文感知的;「編碼器結構」,如:LSTM、Transformer;「預訓練任務類型」,如LM,MLM,PLM;「針對特定場景的拓展」,如跨語言預訓練,知識增強,多模態預訓練,模型壓縮等。這些分類方式是交叉的,也就是說同一個模型可以劃分到多個分類體系下。

先一睹為快,這幅圖是該綜述的精華之一。下面將圍繞上述4種分類體系來介紹預訓練任務的工作。

PTMs分類體系

2.1 表徵類型

根據表徵類型的不同可以分為:「非上下文感知的表徵」(Non-Contextual Representation)和「上下文感知的表徵」(Contextual Representation)。上下文可以從字面上來理解,即:這個詞所在的上下文,如句子,段落等。

「非上下文感知的詞嵌入」。缺點是:「靜態的」,不隨上下文變化而變化,不管這個詞位於哪個句子中,詞的表示都是唯一的,無法解決一詞多義問題。也無法解決「out-of-vocabulary」問題,這種情況下,一般只能通過character-level或者sub-word embedding來解決,即通過拆解詞粒度為字符粒度來解決泛化性問題。「上下文感知的詞嵌入」:詞嵌入會隨著詞所在的「上下文」不同而動態變化,能夠解決一詞多義問題。形式化的,給定文本,每個token 是個詞或子詞,為了形成上下文感知的嵌入,的表示需要「依賴於整個文本。」 即: 。稱為token 的上下文感知的詞嵌入或動態詞嵌入,因為其融入了整個文本中的「上下文信息」。可以稱之為「上下文感知的Encoder」

NLP通用Encoder架構

如上圖,將非上下文和上下文結合在一起。形成通用的NLP任務的架構。即:「非上下文感知的詞嵌入」(如word2vec訓練的embeddings),「輸入到上下文感知的Encoder」(例如:Transformer,能夠捕獲句子中詞之間的依賴關係),每個詞的表示都會融入句子中其它上下文詞的信息,得到「上下文感知的詞嵌入」。同一個詞在不同的語句中會得到不同的表示。

根據「表徵類型的不同」,作者將預訓練模型的發展「主要劃分為了兩代」

第一代預訓練模型由於「不是致力於解決下遊任務」,主要致力於「學習好word embeddings本身,即不考慮上下文信息(context-free),只關注詞本身的語義(semantic meanings),」,同時為了計算的考慮,這些模型通常非常淺。如「Skip-Gram, GloVe」等。由於是上下文無關的,這些方法通常無法捕獲高階的概念(high-level concepts),如一詞多義,句法結構,語義角色,指代消解。代表性工作包括:「NNLM」[2],「word2vec」[3],「GloVe」[4]。第二代預訓練模型致力於學習「contextual」 word embeddings。第一代預訓練模型主要是word-level的。很自然的想法是將預訓練模型拓展到「sentence-level」或者更高層次,這種方式輸出的向量稱為contextual word embeddings,即:依賴於上下文來表示詞。此時,預訓練好的「Encoder」需要在下遊任務「特定的上下文中」提取詞的表徵向量。代表性工作包括兩方面,「1. 僅作為特徵提取器」(feature extractor),

特徵提取器產生的上下文詞嵌入表示,在下遊任務訓練過程中是「固定不變」的。相當於只是把得到的上下文詞嵌入表示餵給下遊任務的模型,作為「補充的特徵」,只學習下遊任務特定的模型參數。代表性工作包括:(1) 「CoVe」[5]. 用帶注意力機制的「seq2seq」「機器翻譯任務」中預訓練一個LSTM encoder。輸出的上下文向量(CoVe)有助於提升一系列NLP下遊任務的性能。(2) 「ELMo」[6]. 用「兩層的Bi-LSTM」「雙向語言模型任務BiLM」(包括1個前向的語言模型以及1個後向的語言模型)中預訓練一個「Bi-LSTM Encoder」。能夠顯著提升一系列NLP下遊任務的性能。「2.微調」 (fine-tuning),

在下遊任務中,「上下文編碼器」的參數也會進行微調。即:把預訓練模型中的「encoder」模型結構都提供給下遊任務,這樣下遊任務可以對「Encoder」的參數進行fine-tune。代表性工作有:

(1) 「ULMFiT」[7] (Universal Language Model Fine-tuning):通過在文本分類任務上微調預訓練好的語言模型達到了state-of-the-art結果。這篇也被認為是「預訓練模型微調」模式的開創性工作。提出了3個階段的微調:在通用數據上進行語言模型的預訓練來學習「通用語言特徵」;在目標任務所處的領域特定的數據上進行語言模型的微調來學習「領域特徵;「在目標任務上進行微調。文中還介紹了一些」微調的技巧」,如區分性學習率、斜三角學習率、逐步unfreezing等。(2) 「GPT」[8](Generative Pre-training) :使用「單向的Transformer」預訓練「單向語言模型」。單向的Transformer裡頭用到了masked self-attention的技巧(相當於是Transformer原始論文裡頭的Decoder結構),即當前詞只能attend到前面出現的詞上面。之所以只能用單向transformer,主要受制於單向的預訓練語言模型任務,否則會造成信息leak。(3) 「BERT」 [9](Bidirectional Encoder Representation from Transformer):使用雙向Transformer作為Encoder(即Transformer中的Encoder結構),引入了新的預訓練任務,帶mask的語言模型任務MLM和下一個句子預測任務NSP。由於MLM預訓練任務的存在,使得Transformer能夠進行「雙向」self-attention。除此之外,還有些挺有意思的工作研究「上下文嵌入」「所融入的知識」,如語言知識、世界知識等[10][11][12]。2.2 上下文編碼器架構

對於上下文感知的Encoder,根據「架構」的不同,可以進一步分為「3種」

「卷積模型」 (convolutional models):通過卷積操作來匯聚目標詞的「鄰居的局部信息」,從而捕獲目標詞的語義。優點在於容易訓練,且能夠很捕獲「局部上下文信息」。典型工作是EMNLP 2014的文章TextCNN[13],卷積網絡應用於nlp中特徵提取的開創性工作。還比如Facebook在ICML2017的工作[14]。「序列模型」 (Sequential models):以序列的方式來捕獲詞的上下文信息。如LSTMs、GRUs。實踐中,通常採取bi-directional LSTMs或bi-directional GRUs來同時捕獲「目標詞雙向的信息」。優點在於能夠捕獲「整個語句序列」上的依賴關係,缺點是捕獲的「長距離依賴較弱」。典型工作是NAACL 2018的文章:「ELMo」[6]。「圖模型」 (Graph-based models):將詞作為圖中的結點,通過預定義的詞語之間的語言學結構(e.g., 句法結構、語義關係等)來學習詞語的「上下文表示」。缺點是,構造好的圖結構很困難,且非常依賴於專家知識或外部的nlp工具,如依存關係分析工具。典型的工作如:NAACL 2018上的工作[15]。作者還提到,「Transformer實際上是圖模型的一種特例」。這個觀點「醍醐灌頂」,也解釋了Transformer應用於圖神經網絡中的可行性。即:句子中的詞構成一張全連接圖,圖中任意兩個詞之間都有連邊,連邊的權重衡量了詞之間的關聯,通過「self-attention來動態計算」,目標是讓模型自動學習到圖的結構(實際上,圖上的結點還帶了詞本身的屬性信息,如位置信息等)。值得注意的是,Transformer在預訓練中的應用一般會拆解為3種方式,「單向的」 (即:Transformer Decoder,使用了masked self-attention防止attend到future信息),如GPT, GPT-2;「雙向的」 (即:Transformer Encoder,兩側都能attend),如Bert,XLBert等;或者「單雙向都使用」(即:Transformer)。這些編碼器的示意圖如下:

3種編碼器結構

卷積編碼器只能編碼「局部的信息」到目標詞上;序列模型能夠捕獲整個語句上的依賴關係,但「長距離依賴」較弱;圖編碼器任意兩個詞都有連接,能夠捕獲「任意詞之間的依賴關係」「不受距離影響。」

2.3 預訓練任務

預訓練任務對於學習通用的表徵非常重要。甚至可以說是「最重要的一環」,引導著表徵學習的整個過程。作者將預訓練任務分為了3種,

「監督學習」 (supervised learning):從"輸入-輸出pair"監督數據中,學習輸入到輸出的映射函數。「無監督學習」 (unsupervised learning):從無標籤數據中學習內在的知識,如聚類、隱表徵等。「自監督學習」 (self-supervised learning):監督學習和無監督學習的折中。訓練方式是監督學習的方式,但是輸入數據的「標籤是模型自己產生的」。核心思想是,用輸入數據的一部分信息以某種形式去預測其另一部分信息(predict any part of the input from other parts in some form)。例如BERT中使用的MLM就是屬於這種,輸入數據是句子,通過句子中其它部分的單詞信息來預測一部分masked的單詞信息。在nlp領域,除了機器翻譯存在大量的監督數據,能夠採用監督學習的方式進行預訓練以外(例如CoVe利用機器翻譯預訓練Encoder,並應用於下遊任務),大部分預訓練任務都是使用「自監督學習」的方式。下面圍繞自監督學習,來介紹主流的預訓練任務。

2.3.1 語言模型 (LM)

最著名的預訓練任務是語言模型 (Language Modeling),語言模型是指一類能夠求解句子概率的概率模型,通常通過概率論中的鏈式法則來表示整個句子各個單詞間的聯合概率。

形式化的,給定文本序列,,其聯合概率可以被分解為:

其中,是特殊的token,用於標識句子的開頭 (此處應該也要有個標識句子結尾的特殊token)。是詞典。

上述式子是典型的概率論中的鏈式法則。鏈式法則中的每個部分是給定上下文條件下,當前要預測的詞在整個詞典上的條件概率分布。這意味著「當前的單詞只依賴於前面的單詞,即單向的或者自回歸的,這是LM的關鍵原理」,也是這種預訓練任務的特點。因此,LM也稱為auto-regressive LM or unidirectional LM。

對於上下文,可以採用神經編碼器來進行編碼,然後通過一個預測層來預測單詞的條件概率分布,形式化的:

其中,是預測層 (比如softmax全連接層),用於輸出當前單詞在整個詞典上的條件概率分布。目標損失函數為:

LM的「缺點」在於,除了本身的信息之外,每個單詞的編碼「只融入了其所在句子左側的上下文單詞的信息」。而實際上,每個單詞左右兩側上下文信息都是非常重要的。「為什麼不能同時融入左右兩側的單詞信息呢?「主要是因為我們的學習目標是預測下一個詞,如果讓當前詞同時融入兩側的信息,會造成」label的leak問題」。解決這個問題的方法是採用bidirectional LM (Bi-LM)即:分別考慮從左到右的LM和從右到左的LM,這兩個方向的LM是分開建模的。也就是說,訓練過程中,「不會在一個LM預測下一個詞的時候,用到另一個LM的encode的信息」。最後訓練完成後,每個單詞可以把兩個和的「輸出拼接」在一起來形成最終的表徵。

2.3.2 帶掩碼的語言模型(MLM)

MLM主要是從BERT開始流行起來的,能夠解決單向的LM的問題,進行雙向的信息編碼。MLM就好比英文中的完形填空問題,需要藉助語句/語篇所有的上下文信息才能預測目標單詞。具體的做法就是隨機mask掉一些token,使用特殊符號[MASK]來替換真實的token,這個操作相當於告知模型哪個位置被mask了,然後訓練模型通過其它沒有被mask的上下文單詞的信息來預測這些mask掉的真實token。具體實現時,實際上是個多分類問題,將masked的句子送入上下文編碼器Transformer中進行編碼,「[MASK]特殊token位置對應的最終隱向量」輸入到softmax分類器進行真實的masked token的預測。損失函數為:

其中,表示句子中被mask掉的單詞集合;是除了masked單詞之外的其它單詞。

「MLM的缺點有幾大點:」

會造成pre-training和fine-tuning之間的「gap」。在fine-tuning時是不會出現pre-training時的特殊字符[MASK]。為了解決這個問題,作者對mask過程做了調整,即:在隨機挑選到的15%要mask掉的token裡頭做了進一步處理。其中,80%使用[MASK] token替換目標單詞;10%使用隨機的詞替換目標單詞;10%保持目標單詞不變。除了解決gap之外,還有1個好處,即:「預測一個詞彙時」,模型並不知道輸入對應位置的詞彙是否為正確的詞 (10%概率),這就迫使「模型更多地依賴於上下文信息去預測目標詞」,並且賦予了模型一定的「糾錯」能力。MLM「收斂的速度比較慢」,因為訓練過程中,一個句子只有15%的masked單詞進行預測。MLM不是標準的語言模型,其有著自己的「獨立性假設」,即假設mask詞之間是相互獨立的。自回歸LM模型能夠通過聯合概率的鏈式法則來計算句子的聯合概率,而MLM只能進行「聯合概率的有偏估計」(mask之間沒有相互獨立)。MLM的變體有很多種。

「Sequence-to-Sequence MLM (Seq2Seq MLM)」: 將MLM分類任務變成seq2seq序列自回歸預測任務,採用encoder-decoder的方式。原始的語句中有一段「連續出現的單詞」被mask掉了。encoder的輸入是masked的句子,decoder以自回歸的方式來依次地預測masked tokens。這種預訓練任務很適合用於「生成式任務」。代表性工作有:微軟的 「MASS」[16] 和 Google的「T5」[17] 。這種預訓練認為能夠有效提高seq2seq類型的下遊任務的表現。其損失函數為:是句子被masked的n-gram span,是連續出現的單詞。基於encoder端的輸入序列以及decoder已經解碼的部分來自回歸地預測下一個時間步的單詞。「Enhanced MLM (E-MLM)」:增強版MLM。「RoBERTa」[18]:Facebook 2019提出的方法。改進了BERT種靜態masking的方法,採用了動態masking的方法。「UniLM」[19]:微軟提出的方法。UniLM拓展mask prediction任務到三種語言模型任務中,單向預測、雙向預測、「seq2seq預測。」「XLM」[20]: 將MLM應用到翻譯語言模型中,即「雙語料句子對「構成一個句子,然後使用MLM。「SpanBERT」[21]:Facebook提出的方法。改進了BERT中掩碼最小單元為token所導致的強相關字詞被割裂開來的問題,使用了span masking來隨機掩蓋一段連續的詞。同時額外提出了一種「邊界學習目標」 (Span Boundary Objective) ,希望被掩蓋的詞能夠融入邊界的信息,即基於邊界之外的兩個單詞的向量和masked單詞的位置向量來預測masked單詞。這個改進對於「抽取式問答」任務有很大的幫助。「ERNIE」[22]:百度提出的ERNIE,將外部知識融入到MLM中。引入了命名實體Named Entity外部知識來掩蓋實體單元,進行訓練。2.3.3 排列語言模型(PLM)

PLM在XLNet[23]中被提出。動機來源主要在於上文闡述的MLM的幾大缺點,如預訓練和微調階段的gap,mask詞之間的獨立性假設等。在傳統的單向自回歸語言模型LM中,句子的聯合概率因子分解是按照從左到右或者從右到左的方式分解成條件概率的鏈式乘積的,這可以看作是其中兩種聯合概率的因子分解序。實際上,句子的聯合概率的因子分解序還可以有很多種,可以任意的排列組合進行因子分解。PLM就是對聯合概率進行因子分解得到排列,分解得到的排列只決定了模型自回歸時的預測順序,不會改變原始文本序列的自然位置。即:PLM只是針對語言模型建模不同排列下的因子分解排列,並不是詞的位置信息的重新排列。

「那麼為什麼這種方式每個位置能夠編碼原始語句中雙向的上下文信息呢?」首先,前提是,模型的參數在所有的分解序下是共享的。其次,在每種因子分解序對應的排列語句下,對某個位置,會編碼排列句子中出現在該位置前面的其它詞的信息;那麼在所有的因子分解下,每個詞都有機會出現在該位置的左側,那麼總體上該詞就會編碼所有詞的信息。

理想優化的目標是所有因子分解序得到的排列上的期望對數似然。

其中,是所有的因子分解序集合。代表某種因子分解序中,第個位置的序號對應的原序列中的詞。比如,原始句子,某個因子分解序,即,則,因此,這個因子分解序對應的排列句子為。實際實現的時候,作者沒有預測所有的個詞,只把每個排列句的尾部的詞進行預測來減少計算量。

進一步,強調下實現上的亮點。實際實現的過程中,仍然採用原始輸入語句,即保持原始句子的自然序,而模型內部會自動進行排列操作,對transformer進行適當的「attention mask」操作就能達到在因子分解序上進行自回歸預測的目的。然而,預測的時候如果沒有考慮「目標詞在原始序列中的位置信息」的話,會導致預測的目標詞不管在排列句子中的哪個位置,其分布都是一樣的(「雖然輸入語句自然序不變,但是建模的時候不進行考慮的話,相當於對隨機擾動的序列進行建模預測,直觀上感覺這樣顯然無效」)。作者做了改進,在預測詞本身時,要利用到其在原始句子的「位置編碼信息」,即: ,即「這樣就能在排列句上預測過程中,時刻兼顧原始輸入語句序)」。但是為了實現自回歸預測,transformer在編碼的時候「不能把目標預測詞本身的內容」編碼進目標詞對應位置的隱狀態中,而只能使用目標預測詞的「位置信息」;而目標預測詞之前的「其它詞就要考慮其本身」的內容信息。每個位置的詞都有兩種隱狀態向量,因此需要做這兩種區分,是使用位置信息還是其對應的內容信息。為了方便實現該操作,作者採用了two-stream self-attention。

2.3.4 降噪自編碼器(DAE)

DAE在原始文本上加了噪聲,即corrupted input作為輸入,目標是基於corrupted input來恢復原始的文本。MLM屬於DAE的一種形式,除此之外「DAE還有其它的形式」。下面的這些細類別,綜述參考的是Facebook2019的文章BART[24]。

「Token masking」:隨機抽樣token,並用[MASK] 特殊字符替換。BERT屬於這種。「Token Deletion」:隨機刪除token。和masking的區別在於,模型還需要預測「被刪除的單詞的真實位置。」「Text Infilling」「連續的一些token」被替換為單一的[MASK],模型需要進行缺失文本的填充。和SpanBERT比較像,區別在於SpanBert mask 掉幾個詞就填上幾個mask ,在這裡作者mask掉的span 都只是填上一個mask, 目的是為了讓模型自己去學習多少個token被mask了。「Sentence Permutation」:對文檔的「語句順序」進行隨機擾動。「Document Rotation:」 隨機選擇某個token,然後讓文檔進「行rotation」從而使得被選中的詞作為第一個詞(例如:12345,選中3時,變成34512),這樣是為了讓模型能夠識別文檔的真正起始詞。2.3.5 對比學習(CTL)

前面介紹的方法主要是基於上下文的PTMs,即:基於數據本身的上下文信息構造輔助任務。這裡作者介紹的另一大類的預訓練方法是基於對比的方法,即:通過「對比」來進行學習。很像learning to rank中的pairwise方法。CTL全稱:Contrastive Learning,假設了「觀測文本對」之間的語義比「隨機採樣的文本對」之間的語義更近。因此優化的目標是:

是觀測的文本相似對,是負樣本對。上述損失實際上是二路的softmax,實際上又等價於learning to rank中的BPR Loss,只需要把分子除到分母上,就可以整理成類似BPR的形式了,即:

得分函數可以使用神經網絡編碼器來構造。通常有兩種方式:各自編碼後求點擊相似性作為分數,或者逐元素操作後送入到編碼器進行打分,

基於「對比的方法」主要包括如下一些具體的預訓練任務類型,只不過下面這些對比的方法和上面的優化目標在形式上差異挺大的。

「Deep InfoMax」:最大化整體表示和局部表示之間的互信息。代表性工作是ICLR2020的 「InfoWord」[25]: 最大化一個句子的全局表徵和其中一個ngram的局部表徵之間的Mutual Information。「Replaced Token Detection (RTD):」 給定上下文條件下,預測某個token是否被替換。這裡頭,可能「對比體現在要讓模型去學習替換前和替換後的區別。在RTD任務中,和MLM不同的是,輸入序列中所有的token都能夠得到訓練和預測,因此比較高效,同時能解決[MASK] token帶來的預訓練和fine-tuning之間的gap。代表性方法google在ICLR2020提出的「ELECTRA」[26]。ELECTRA利用基於MLM的generator來對句子的某些token進行合理的替換,然後用discriminator來判斷這些token「是真實的」「還是被generator替換了」。最後預訓練完,只保留discriminator進行下遊任務的fine-tuning。另一個代表性工作是facebook在ICLR2020提出的「WKLM」[27],替換的時候是entity-level而不是token-level。具體而言,將entity替換為同類型的其它entity,然後訓練模型進行判斷。「Next Sentence Prediction (NSP):」 判斷文檔中的兩個句子是不是連在一起的。即連貫性判斷任務。採樣的時候,對某個句子,50%的時候其真實的句子作為下一句;50%的時候隨機選擇某個句子作為下一句,模型需要理解句子之間的關係。出發點是希望能夠理解句子對之間的關係,這也是BERT中的第二個預訓練任務。可惜的是,「這個任務被其它工作懟的很慘」,基本上的結論都是用處不大。可能的原因在「ALBERT」中有解釋,大概就是隨機選擇句子太trivial了,只需要基於句子對之間的主題是否一致就能夠把負樣本判斷出來,而不是句子間的連貫性判斷。相當於,只需要判斷句子對是來自同一篇文檔裡頭(相同主題)的還是來自不同篇文檔裡頭的,而我們的目的是對同一篇文檔裡頭,句子之間的連貫性也能夠很好的判斷。顯然,NSP任務需要做一定的改進。「Sectence Order Prediction (SOP):」「ALBERT」[28] 中提出的預訓練任務。具體而言,將同一篇文檔裡頭的連貫句子對作為正樣本,而把連貫的句子對的順序顛倒後作為負樣本。這樣就能強迫模型真正的學習到句子之間的連貫性,而不僅僅是通過句子之間的主題差異來判斷的。另外,阿里的「StructBERT」[29] 也採用了該任務。再總體看下不同模型在架構和預訓練任務上的區別,「本篇綜述的精華總結之二:」

主流預訓練模型的區別總結

還給了不同模型在GLUE上的綜合表現,可以看到google出品的XLNet,T5,ELECTRA以及Facebook提出的RoBERTa綜合實力上是最強的。不過除這些之外,截止至2020.11.27號,最新榜單[30] 裡頭,排名是這樣的,可以看出技術迭代速度之驚人。

GLUE榜單:截止2020.11.27

2.4 預訓練的延伸方向

預訓練模型延伸出了很多新的研究方向。包括了:

基於「知識增強」的預訓練模型,Knowledge-enriched PTMs「跨語言或語言特定的」預訓練模型,multilingual or language-specific PTMs「多模態」預訓練模型,multi-modal PTMs「領域特定」的預訓練模型,domain-specific PTMs「壓縮」預訓練模型,compressed PTMs2.4.1 基於知識增強的預訓練模型

PTMs主要學習通用語言表徵,但是缺乏領域特定的知識。因此可以考慮把外部的知識融入到預訓練過程中,讓模型同時捕獲「上下文信息」「外部的知識」。早期的工作主要是將知識圖譜嵌入和詞嵌入一起訓練。從BERT開始,湧現了一些融入外部知識的預訓練任務。代表性工作如:

「SentiLR」[31] : 引入word-level的語言學知識,包括word的詞性標籤(part-of-speech tag),以及藉助於SentiWordNet獲取到的word的情感極性(sentiment polarity),然後將MLM拓展為label-aware MLM進行預訓練。包括:給定sentence-level的label,進行word-level的知識的預測 (包括詞性和情感極性); 基於語言學增強的上下文進行sentence-level的情感傾向預測。作者的做法挺簡單的,就是把sentence-level label或word-level label進行embedding然後加到token embedding/position embedding上,類似BERT的做法。然後,實驗表明該方法在下遊的情感分析任務中能夠達到state-of-the-art水平。「ERNIE (THU)」[32] : 將知識圖譜上預訓練得到的entity embedding融入到文本中相對應的entity mention上來提升文本的表達能力。具體而言,先利用TransE在KG上訓練學習實體的嵌入,作為外部的知識。然後用Transformer在文本上提取文本的嵌入,將文本的嵌入以及文本上的實體對應的KG實體嵌入進行異構信息的融合。學習的目標包括MLM中mask掉的token的預測;以及mask文本中的實體,並預測KG上與之對齊的實體。類似的工作還包括KnowBERT, KEPLER等,都是通過實體嵌入的方式將知識圖譜上的結構化信息引入到預訓練的過程中。「K-BERT」[33] : 將知識圖譜中與句子中的實體相關的三元組信息作為領域知識注入到句子中,形成樹形拓展形式的句子。然後可以加載BERT的預訓練參數,不需要重新進行預訓練。也就是說,作者關注的不是預訓練,而是直接將外部的知識圖譜信息融入到句子中,並藉助BERT已經預訓練好的參數,進行下遊任務的fine-tune。這裡頭的難點在於,異構信息的融合和知識的噪音處理,需要設計合適的網絡結構融合不同向量空間下的embedding;以及充分利用融入的三元組信息(如作者提到的soft position和visible matrix)。2.4.2 跨語言或語言特定的預訓練模型

這個方向主要包括了跨語言理解和跨語言生成這兩個方向。

對於「跨語言理解」,傳統的方法主要是學習到多種語言通用的表徵,使得同一個表徵能夠融入多種語言的相同語義,但是通常需要對齊的弱監督信息。但是目前很多跨語言的工作不需要對齊的監督信息,所有語言的語料可以一起訓練,每條樣本只對應一種語言。代表性工作包括:

「mBERT」[34] :在104種維基百科語料上使用MLM預訓練,即使沒有對齊最終表現也非常不錯,沒有用對齊的監督信息。「XLM」[20]:在mBERT基礎上引入了一個翻譯任務,即:目標語言和翻譯語言構成的雙語言樣本對輸入到翻譯任務中進行對齊目標訓練。這個模型中用了對齊的監督信息。「XLM-RoBERTa」[35]:和mBERT比較像,沒有用對齊的監督信息。用了更大規模的數據,且只使用MLM預訓練任務,在XNLI, MLQA, and NER.等多種跨語言benchmark中取得了SOA效果。對於「跨語言生成」,一種語言形式的句子做輸入,輸出另一種語言形式的句子。比如做機器翻譯或者跨語言摘要。和PTM不太一樣的是,PTM只需要關注encoder,最後也只需要拿encoder在下遊任務中fine-tune,在跨語言生成中,encoder和decoder都需要關注,二者通常聯合訓練。代表性的工作包括:

「MASS」[16]:微軟的工作,多種語言語料,每條訓練樣本只對應一種語言。在這些樣本上使用Seq2seq MLM做預訓練。在無監督方式的機器翻譯上,效果不錯。「XNLG」[36]:使用了兩階段的預訓練。第一個階段預訓練encoder,同時使用單語言MLM和跨語言MLM預訓練任務。第二個階段,固定encoder參數,預訓練decoder,使用單語言DAE和跨語言的DAE預訓練任務。這個方法在跨語言問題生成和摘要抽取上表現很好。2.4.3 多模態預訓練模型

多模態預訓練模型,即:不僅僅使用文本模態,還可以使用視覺模態等一起預訓練。目前主流的多模態預訓練模型基本是都是文本+視覺模態。採用的預訓練任務是visual-based MLM,包括masked visual-feature modeling and visual-linguistic matching兩種方式,即:視覺特徵掩碼和視覺-語言語義對齊和匹配。這裡頭關注幾個關於image-text的多模態預訓練模型。這類預訓練模型主要用於下遊視覺問答VQA和視覺常識推理VCR等。

「雙流模型」:在雙流模型中文本信息和視覺信息一開始先經過兩個獨立的Encoder(Transformer)模塊,然後再通過跨encoder來實現不同模態信息的融合,代表性工作如:NIPS 2019, 「ViLBERT」[37]和EMNLP 2019, 「LXMERT」[38]。「單流模型」:在單流模型中,文本信息和視覺信息一開始便進行了融合,直接一起輸入到Encoder(Transformer)中,代表性工作如:「VisualBERT」 [39],「ImageBERT」[40]和「VL-BERT」 [41]。2.4.4 模型壓縮方法

預訓練模型的參數量過大,模型難以部署到線上服務。而模型壓縮能夠顯著減少模型的參數量並提高計算效率。壓縮的方法包括:

「剪枝」(pruning):去除不那麼重要的參數(e.g. 權重、層數、通道數、attention heads)「量化」(weight quantization):使用佔位更少(低精度)的參數「參數共享」(parameter sharing):相似模型單元間共享參數「知識蒸餾」(knowledge diistillation):用一些優化目標從原始的大型teacher模型中蒸餾出一個小的student模型。通常,teacher模型的輸出概率稱為soft label,大部分蒸餾模型讓student去擬合teacher的soft label來達到蒸餾的目的。蒸餾之所以work,核心思想是因為「好模型的目標不是擬合訓練數據,而是學習如何泛化到新的數據」。所以蒸餾的目標是讓學生模型學習到教師模型的泛化能力,理論上得到的結果會比單純擬合訓練數據的學生模型要好。當然,模型壓縮通常還會結合上述多種方法,比如剪枝+蒸餾的融合方法。常見的知識蒸餾的 PTMs如下表所示。

模型壓縮方法

想深入了解BERT蒸餾原理的話,推薦參考rumor大神的文章,BERT蒸餾完全指南|原理/技巧/代碼,裡面詳細介紹了上表中涉及到的各種蒸餾方法,同時對蒸餾做了很多細緻的總結。如:蒸餾的提升來源:一方面來源於從「精調階段蒸餾->預訓練階段蒸餾」,另一方面則來源於「蒸餾最後一層知識->蒸餾隱層知識->蒸餾注意力矩陣」;溫度參數以及soft label和hard label的loss比例的設置;蒸餾的代碼實戰等。

總結

本文是對邱錫鵬老師2020年的一篇預訓練模型survey的簡單梳理。主要針對survey中提到的四大類預訓練模型的分類體系做了梳洗,「這四大類預訓練模型分類體系為:」

表徵的類型,即:是否上下文感知;編碼器結構,如:LSTM、CNN、Transformer;預訓練任務類型,如:語言模型LM,帶掩碼的語言模型MLM,排列語言模型PLM,對比學習等。針對特定場景的拓展和延伸。如:知識增強預訓練,多語言預訓練,多模態預訓練和模型壓縮等。這篇綜述文章信息量非常足,關於其他部分,如下遊任務中的應用,預訓練的技巧,未來方向等將在以後的文章中進行分享。

參考

[1] Qiu X, Sun T, Xu Y, et al. Pre-trained models for natural language processing: A survey[J]. arXiv preprint arXiv:2003.08271, 2020.[2] NNLM:Yoshua Bengio, Rejean Ducharme, Pascal Vincent, and Christian Jauvin. A neural probabilistic language model. Journal of machine learning research, 3(Feb):1137–1155, 2003.[3] Tomas Mikolov, Ilya Sutskever, Kai Chen, Gregory S. Corrado, and Jerey Dean. Distributed representations of words and phrases and their compositionality. In NeurIPS, 2013.[4] Jerey Pennington, Richard Socher, and Christopher D. Manning. GloVe: Global vectors for word representation. In EMNLP, 2014.[5] Bryan McCann, James Bradbury, Caiming Xiong, and Richard Socher. Learned in translation: Contextualized word vectors. In NeurIPS, 2017.[6] Matthew E. Peters, Mark Neumann, Mohit Iyyer, Matt Gardner, Christopher Clark, Kenton Lee, and Luke Zettlemoyer. Deep contextualized word representations. In NAACL-HLT, 2018.[7] Jeremy Howard and Sebastian Ruder. Universal language model ne-tuning for text classication. In ACL, pages 328339, 2018.[8] Alec Radford, Karthik Narasimhan, Tim Salimans, and Ilya Sutskever. Improving language understanding by generative pre-training. 2018.[9] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. BERT: pre-training of deep bidirectional transformers for language understanding. In NAACL-HLT, 2019.[10]ICLR 2019: What do you learn from context? probing for sentence structure in contextualized word representations.[11] NIPS 2019: Visualizing and measuring the geometry of BERT.[12] ACL 2019: How can we know what language models know?[13] Yoon Kim. Convolutional neural networks for sentence classication. In EMNLP, pages 1746–1751, 2014.[14] Jonas Gehring, Michael Auli, David Grangier, Denis Yarats, and Yann N Dauphin. Convolutional sequence to sequence learning. In ICML, pages 1243–1252, 201728015059046.[15] Diego Marcheggiani, Joost Bastings, and Ivan Titov. Exploiting semantics in neural machine translation with graph convolutional networks. In NAACL-HLT, pages 486–492, 2018.[16] Kaitao Song, Xu Tan, Tao Qin, Jianfeng Lu, and Tie-Yan Liu. MASS: masked sequence to sequence pre-training for language generation. In ICML, volume 97 of Proceedings of Machine Learning Research, pages 5926–5936, 2019.[17] Colin Rael, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, and Peter J. Liu. Exploring the limits of transfer learning with a unied text-to-text transformer. arXiv preprint arXiv:1910.10683, 2019.[18] Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. RoBERTa: A robustly optimized BERT pretraining approach. arXiv preprint arXiv:1907.11692, 2019.[19] NIPS 2019, Unied language model pre-training for natural language understanding and generation.[20] NIPS 2019, Cross-lingual language model pretraining[21] ACL2020, SpanBERT: Improving pretraining by representing and predicting spans.[22] 2019, ERNIE: enhanced representation through knowledge integration[23] NIPS2019, XLNet: Generalized Autoregressive Pretraining for Language Understanding[24] 2019, BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension[25] ICLR 2020, A mutual information maximization perspective of language representation learning[26] ICLR 2020, ELECTRA: Pre-training text encoders as discriminators rather than generators.[27] ICLR2020, WKLM, Pretrained encyclopedia: Weakly supervised knowledge-pretrained language model.[28] ICLR2020, ALBERT: A lite BERT for self-supervised learning of language representations[29] ICLR 2020, StructBERT: Incorporating language structures into pre-training for deep language understanding.[30] GLUE Leaderboard:https://gluebenchmark.com/leaderboard[31] 2020, SentiLR: Linguistic knowledge enhanced language representation for sentiment analysis.[32] ACL 2019, ERNIE: enhanced language representation with informative entities.[33] AAAI2020, K-BERT: Enabling language representation with knowledge graph.[34] Multilingual BERT: https://github.com/google-research/bert/blob/master/multilingual.md[35] 2019. Unsupervised cross-lingual representation learning at scale.[36] AAAI2020:Cross-lingual natural language generation via pre-training.[37] NIPS 2019:ViLBERT: Pretraining task-agnostic visiolinguistic representations for vision-and-language tasks.[38] EMNLP 2019:LXMERT: learning crossmodality encoder representations from transformers.[39] 2019 VisualBERT: A simple and performant baseline for vision and language[40] 2020 ImageBERT: Cross-modal pre-training with large-scale weak-supervised image-text data[41] 2019 VL-BERT: Pre-training of Generic Visual-Linguistic Representations[42] NLP算法面試必備!史上最全!PTMs:NLP預訓練模型的全面總結:https://zhuanlan.zhihu.com/p/115014536[43] BERT蒸餾完全指南|原理/技巧/代碼:https://mp.weixin.qq.com/s/rxwHFjl0FEPWEcfMcwXL8w

相關焦點

  • NLP領域預訓練模型的現狀及分析
    預訓練的方法最初是在圖像領域提出的,達到了良好的效果,後來被應用到自然語言處理。預訓練一般分為兩步,首先用某個較大的數據集訓練好模型(這種模型往往比較大,訓練需要大量的內存資源),使模型訓練到一個良好的狀態,然後下一步根據不同的任務,改造預訓練模型,用這個任務的數據集在預訓練模型上進行微調。
  • AI資訊|分析現階段最有效的NLP預訓練模型!
    最新語言預訓練可以說是在自然語言處理領域帶來了很可觀的收益,其中包括最先進的模型如BERT,RoBERTa,XLNet,ALBERT和T5等。可以在幾天內在單個GPU上進行訓練,其準確性要高於GPT(該模型使用30倍以上的計算能力)。ELECTRA已作為TensorFlow之上的開源模型發布,其中包括許多易於使用的預訓練語言表示模型。
  • 一文讀懂最強中文NLP預訓練模型ERNIE
    基於飛槳開源的持續學習的語義理解框架ERNIE 2.0,及基於此框架的ERNIE 2.0預訓練模型,在共計16個中英文任務上超越了BERT和XLNet, 取得了SOTA效果。本文帶你進一步深入了解ERNIE的技術細節。
  • 復旦邱錫鵬超全NLP預訓練模型綜述論文:兩張圖帶你梳理完整脈絡
    復旦的這篇綜述性論文非常豐富,它以 25 頁的篇幅展示了預訓練語言模型的方方面面,不論是新奇的預訓練任務,還是各種模型針對領域知識的擴展,我們都能快速 Get 到。什麼是預訓練語言模型為了確保所有讀者對預訓練語言模型有一定的了解,我們先簡要介紹一下,如果讀者已經比較熟悉了,那麼可以直奔下一部分的「預訓練語言模型大全」。
  • 性能媲美BERT,參數量僅為1/300,谷歌最新的NLP模型
    大多數模型對每個 token 使用固定數目的參數,而 PRADO 模型使用的網絡結構只需要很少的參數即可學習與任務最相關或最有用的 token。論文連結:https://www.aclweb.org/anthology/D19-1506.pdf在最新的博客文章中,谷歌的研究者宣布它們改進了 PRADO,並將改進後的模型稱為 pQRNN。
  • ImageNet 帶來的預訓練模型之風,馬上要吹進 NLP 領域了
    這些工作無一例外都成為了新聞頭條,因為它們都證明了自己的預訓練語言模型可以在各種自然語言處理任務中取得最佳的結果。這些方法的出現預示著一個分水嶺時刻的到來了:這些預訓練語言模型有可能會在自然語言處理領域造成巨大而廣泛的影響,正如 ImageNet 預訓練模型在計算機視覺中所造成的影響一樣。從淺層到深度預訓練預訓練的詞向量已經統治了自然語言處理領域相當長一段時間。
  • 斯坦福發布重磅NLP工具包StanfordNLP,支持中文等53種語言
    新智元報導 來源:stanfordnlp.github.io編輯:肖琴【新智元導讀】斯坦福團隊最新發布一個NLP任務的軟體包StanfordNLP,通過Python接口為53種語言提供標記、依存句法分析等NLP任務的重要工具
  • NLP歷史突破!谷歌BERT模型狂破11項紀錄,全面超越人類!
    谷歌人工智慧團隊發布的新伯特模型在squad1.1(一種機器閱讀理解的頂級測試)上的表現出奇的好:它在所有兩項測試中的表現都優於人類,在11種不同的nlp測試中表現最好。毫無疑問,伯特模型已經迎來了NLP的一個新時代!記住今天伯特模型的名字。
  • 超越BERT、GPT,微軟提出通用預訓練模型MASS
    2018年開始,預訓練(pre-train) 毫無疑問成為NLP領域最熱的研究方向。藉助於BERT和GPT等預訓練模型,人類在多個自然語言理解任務中取得了重大突破。然而,在序列到序列的自然語言生成任務中,目前主流預訓練模型並沒有取得顯著效果。
  • 基於Bert和通用句子編碼的Spark-NLP文本分類
    文本分類問題中使用了幾個基準數據集,可以在nlpprogress.com上跟蹤最新的基準。以下是關於這些數據集的基本統計數據。簡單的文本分類應用程式通常遵循以下步驟:文本預處理和清理特徵工程(手動從文本創建特徵)特徵向量化(TfIDF、頻數、編碼)或嵌入(word2vec、doc2vec、Bert、Elmo、句子嵌入等)用ML和DL算法訓練模型。
  • 谷歌研究院出品:高效 Transformer 模型最新綜述
    為了幫助對這一領域感興趣的研究者在繁多的模型中梳理出一條脈絡,谷歌研究院撰寫了最新高效 Transformer 模型研究綜述,介紹了近年來該領域的最新進展。    本文旨在提供一種對這類模型最新進展的全面概述。我們主要關注的是通過解決自注意力機制的「平方階複雜度」問題來提升 Transformer 模型效率方面的建模進展與架構創新,本文還簡要討論了一般的改進以及其它的效率提升。
  • 資源| 史丹福大學NLP組開放神經機器翻譯代碼庫(附論文)
    除此之外,「為了鼓勵再現和增加透明」,他們還放出了他們用於訓練模型的處理過的數據以及可以通過他們的代碼庫使用的預訓練好的模型。發布地址:http://nlp.stanford.edu/projects/nmt/參與成員:Christopher D.
  • 預訓練圖像處理Transformer:華為諾亞、北大等提出IPT模型,刷榜多...
    Transformer 等模型在自然語言處理任務上展現出了強大的特徵學習能力,使用大量數據進行預訓練的策略獲得了成功。因此,很多研究都在考慮如何在計算機視覺領域發揮 Transformer 模型與預訓練的潛力。
  • 微軟亞研院提出通用預訓練模型MASS
    5月10日消息,微軟亞洲研究院的研究員在ICML 2019上提出了一個全新的通用預訓練方法MASS(Masked Sequence to Sequence Pre-training),在序列到序列的自然語言生成任務中全面超越BERT和GPT。在微軟參加的WMT19機器翻譯比賽中,MASS幫助中-英、英-立陶宛兩個語言對取得了第一名的成績。
  • OpenCV+深度學習預訓練模型,簡單搞定圖像識別 | 教程
    而OpenCV最近一次版本更新,為我們帶來了更好的深度學習支持,在OpenCV中使用預訓練的深度學習模型變得非常容易。當然,我們不能、也不該用OpenCV訓練深度學習模型,但這個新版本讓我們能把用深度學習框架訓練好了的模型拿來,高效地用在OpenCV之中。這篇文章就展示了如何用ImageNet上預訓練的深度學習模型來識別圖像。
  • 中文最佳,哈工大訊飛聯合發布全詞覆蓋中文BERT預訓練模型
    機器之心報導參與:一鳴昨日,機器之心報導了 CMU 全新模型 XLNet 在 20 項任務上碾壓 BERT 的研究,引起了極大的關注。而在中文領域,哈工大訊飛聯合實驗室也於昨日發布了基於全詞覆蓋的中文 BERT 預訓練模型,在多個中文數據集上取得了當前中文預訓練模型的最佳水平,效果甚至超過了原版 BERT、ERINE 等中文預訓練模型。
  • 1.6萬億參數的語言模型:谷歌大腦提出Switch Transformer,預訓練...
    Kaplan 等人(2020)已經對擴展的效益進行了詳盡的研究,揭示了隨模型、數據集大小以及計算預算變化的冪定律縮放。重要的是,該研究提倡在相對較少數據上訓練大型模型,將其作為計算最優方法。基於這些,研究者在增加參數量的同時保持每個示例的 FLOP 不變。他們假設參數量與執行的總計算量無關,是可以單獨縮放的重要組件。
  • 面向認知,智源研究院聯合阿里、清華等發布超大規模新型預訓練模型...
    來源:中國網科技日前,北京智源人工智慧研究院(以下簡稱智源研究院)聯合阿里、清華等多家單位發布超大規模新型預訓練模型「文匯」,旨在探索解決當前大規模自監督預訓練模型不具有認知能力的問題。與傳統AI訓練需要人工標註數據不同,面向認知的預訓練語言模型提供了一種全新的學習思路,即AI首先自動學習大量語言文字和圖像數據,記憶和理解其中的信息以及人類語言表述的規律後,再進一步學習專業領域知識,從而讓AI同時掌握常識和專業知識。此次發布的「文匯」是目前國內規模最大的預訓練模型,參數量級達113億。
  • NLP入門+實戰必讀:一文教會你最常見的10種自然語言處理技術
    (https://ronxin.github.io/wevi/)預訓練詞向量:這裡有一份facebook的預訓練詞向量列表,包含294種語言。(https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md)這裡可以下載google news的預訓練詞向量。
  • 23個系列分類網絡,10萬分類預訓練模型,這是飛槳PaddleClas百寶箱
    先說伺服器端的預訓練模型,如圖 3 所示,圖中記錄了在 V100,FP32 和 TensorRT 環境下一些最新的面向伺服器端應用場景的模型的效果和性能對比圖,通過該圖用戶可以直觀的快速選擇出需要的網絡結構。