本文轉載自公眾號:高能AI, 作者:JayLou婁傑
預訓練模型(Pre-trained Models,PTMs)的出現將NLP帶入了一個全新時代。2020年3月18日,邱錫鵬老師發表了關於NLP預訓練模型的綜述《Pre-trained Models for Natural Language Processing: A Survey》,這是一篇全面的綜述,系統地對PTMs進行了歸納分類。本文以此篇綜述論文為主要參考,通過借鑑不同的歸納方法進行總結,以QA形式對PTMs進行全面總結歸納。
深度學習時代,為了充分訓練深層模型參數並防止過擬合,通常需要更多標註數據餵養。在NLP領域,標註數據更是一個昂貴資源。PTMs從大量無標註數據中進行預訓練使許多NLP任務獲得顯著的性能提升。總的來看,預訓練模型PTMs的優勢包括:
在龐大的無標註數據上進行預訓練可以獲取更通用的語言表示,並有利於下遊任務;為模型提供了一個更好的初始化參數,在目標任務上具備更好的泛化性能、並加速收斂;是一種有效的正則化手段,避免在小數據集上過擬合(一個隨機初始化的深層模型容易對小數據集過擬合);二、詞嵌入和分布式表示詞嵌入是自然語言處理(NLP)中語言模型與表徵學習技術的統稱。概念上而言,它是指把一個維數為所有詞的數量的高維空間嵌入到一個維數低得多的連續向量空間中,每個單詞或詞組被映射為實數域上的向量,這也是分布式表示:向量的每一維度都沒有實際意義,而整體代表一個具體概念。
分布式表示相較於傳統的獨熱編碼(one-hot)表示具備更強的表示能力,而獨熱編碼存在維度災難和語義鴻溝(不能進行相似度計算)等問題。傳統的分布式表示方法,如矩陣分解(SVD/LSA)、LDA等均是根據全局語料進行訓練,是機器學習時代的產物。
PTMs也屬於分布式表示的範疇,本文的PTMs主要介紹深度學習時代、自NNLM[2]以來的 「modern」 詞嵌入。
PTMs的發展經歷從淺層的詞嵌入到深層編碼兩個階段,按照這兩個主要的發展階段,我們歸納出PTMs兩大範式:「淺層詞嵌入」和「預訓練編碼器」。
淺層詞嵌入淺層詞嵌入,這一類PTMs範式是我們通常所說的「詞向量」,其主要特點是學習到的是上下文獨立的靜態詞嵌入,其主要代表為NNLM[2]、word2vec(CBOW[3]、Skip-Gram[3])、Glove等。這一類詞嵌入通常採取淺層網絡進行訓練,而應用於下遊任務時,整個模型的其餘部分仍需要從頭開始學習。因此,對於這一範式的PTMs沒有必要採取深層神經網絡進行訓練,採取淺層網絡加速訓練也可以產生好的詞嵌入。
淺層詞嵌入的主要缺陷為:
上圖給出了三種常見的淺層詞嵌入之間的對比,Glove可以被看作是更換了目標函數和權重函數的全局word2vec。此外,相關文獻也提出了句子和文檔級別的嵌入方式,如 Skip-thought[8]、Context2Vec[9]等。
預訓練編碼器第二類PTMs範式為預訓練編碼器,主要目的是通過一個預訓練的編碼器能夠輸出上下文相關的詞向量,解決一詞多義的問題。這一類預訓練編碼器輸出的向量稱之為「上下文相關的詞嵌入」。
上圖給出了NLP各種編碼器間的對比。PTMs中預訓練編碼器通常採用LSTM和Transformer(Transformer-XL),其中Transformer又依據其attention-mask方式分為Transformer-Encoder和Transformer-Decoder兩部分。此外,Transformer也可看作是一種圖神經網絡GNN[10]。
這一類「預訓練編碼器」範式的PTMs主要代表有ELMO[11]、GPT-1[12]、BERT[13]、XLNet[14]等。
四、PTMs按照任務如何分類?PTMs按照任務類型可分為2大類:監督學習 和 無監督學習/自監督學習。
監督學習在NLP-PTMs中的主要代表就是CoVe[15],CoVe作為機器翻譯的encoder部分可以應用於多種NLP下遊任務。除了CoVe外,NLP中的絕大多數PTMs屬於自監督學習。
自監督學習是無監督學習的一種方法[16],自監督學習[17]主要是利用輔助任務從大規模的無監督數據中挖掘自身的監督信息,通過這種構造的監督信息對網絡進行訓練,從而可以學習到對下遊任務有價值的表徵。因此,從「構造監督信息」這個角度來看,自監督也可看作是監督學習和無監督學習的一種融合[1]。嚴格地講,從是否由人工標註來看,自監督學習屬於無監督學習的範疇。
綜合各種自監督學習的分類方式,筆者將NLP-PTMs在自監督學習中分為兩種類型[17]:基於上下文(Context Based)和基於對比(Contrastive Based)。
基於上下文(Context Based)基於上下文的PTMs,主要基於數據本身的上下文信息構造輔助任務,在NLP中我們通常引入語言模型作為訓練目標。PTMs中的語言模型主要分為三大類:
優點:語言模型(language model,LM)聯合概率的無偏估計,即為傳統的語言模型,考慮被預測單詞之間的相關性,天然適合處理自然生成任務;
缺點:聯合概率按照文本序列順序拆解(從左至右分解),無法獲取雙向上下文信息表徵;
代表模型:ELMO、GPT-1、GPT-2[18]、ULMFiT[19]、SiATL[20];
第二類:自編碼語言模型(DAE)優點:本質為降噪自編碼(DAE)特徵表示,通過引入噪聲[MASK]構建MLM(Masked language model),獲取雙向上下文信息表徵(本文將自編碼語言模型統一稱為DAE,旨在採用部分損壞的輸入,旨在恢復原始的未失真輸入);如果當前token被預測,則
缺點:1) 引入獨立性假設,為語言模型聯合概率的有偏估計,沒有考慮預測token之間的相關性;2) 預訓練時的「MASK」噪聲在finetune階段不會出現,造成兩階段不匹配問題;為解決這一問題,在15%被預測的token中,80%被替換為「MASK」,10%被隨機替換,10%被替換為原詞。
代表模型:BERT、MASS [21]、T5[22]、RoBERTa[23]、UniLM[24]、XLM[25]、SpanBERT[26]、ERNIE-Baidu[27][28]、E-BERT[29]、ERNIE-THU[30]、BART[31]。
BERT[13]是自編碼語言模型的一個典型代表,但其採用的MLM策略和Transformer-Encoder結構,導致其不適合直接處理生成任務。為了解決這一問題,也可採用基於Seq2Seq MLM方法:encoder部分採取masked策略,而decoder部分以自回歸的方式預測encoder部分被mask的token。此外,還有很多基於自編碼語言模型的PTMs提出了不同的MLM增強策略,稱之為 Enhanced Masked Language Modeling (E-MLM) [1]。
第三類:排列語言模型(PLM)
排列語言模型綜合了LM和DAE-LM兩者的優點。嚴格來講,PLM和LM是標準的自回歸語言模型(註:PLM是一種廣義的自回歸方法[14]),而MLM不是一個標準的語言模型,其引入獨立性假設,隱式地學習預測token(mask部分本身的強相關性)之間的關係。如果衡量序列中被建模的依賴關係的數量,標準的自回歸語言模型可以達到上界,不依賴於任何獨立假設。LM和PLM能夠通過自回歸方式來顯式地學習預測token之間的關係。然而,LM無法對雙向上下文進行表徵,借鑑 NADE[32]的思想,PLM將這種傳統的自回歸語言模型(LM)進行推廣,將順序拆解變為隨機拆解(從左至右分解),產生上下文相關的雙向特徵表示。
PLM最為典型的代表就是XLNet[14],這是對標準語言模型的一個復興[33]:提出一個框架來連接標準語言模型建模方法和預訓練方法。
一個關鍵問題:為什麼PLM可以實現雙向上下文的建模?PLM的本質就是語言模型聯合概率的多種分解機制的體現,其將LM的順序拆解推廣到隨機拆解。PLM沒有改變原始文本序列的自然位置,只是定義了token預測的順序。PLM只是針對語言模型建模不同排列下的因式分解排列,並不是詞的位置信息的重新排列。
最後,我們對基於上述三類語言模型的PTMs進行總結:
基於對比(Contrastive Based),不同於Context Based主要基於數據本身的上下文信息構造輔助任務,Contrastive Based主要利用樣本間的約束信息構造輔助任務,這類方法也是 Contrastive learning[34](CTL)。CTL假設觀察到的文本對(正樣本)在語義上比隨機採樣的文本(負樣本)更相似。CTL 背後的原理是「在對比中學習」。相較於語言建模,CTL 的計算複雜度更低,因而在預訓練中是理想的替代訓練標準。
CTL通過構建正樣本(positive)和負樣本(negative),然後度量正負樣本的距離來實現自監督學習[17]:可以使用點積的方式構造距離函數,然後構造一個 softmax 分類器,以正確分類正樣本和負樣本。鼓勵相似性度量函數將較大的值分配給正例,將較小的值分配給負例:
相似性度量函數通常可採取兩種方式:
或
第一類:Deep InfoMax (DIM)
DIM方法來源於CV領域,對於全局的特徵(編碼器最終的輸出)和局部特徵(編碼器中間層的特徵),DIM需要判斷全局特徵和局部特徵是否來自同一圖像[17]。
InfoWord [35]將DIM引入到NLP中,用Mutual Information的一個下界InfoNCE來重新解釋BERT和XLNET的objective,並提出一個新的DIM objective以最大化一個句子的global representation和其中一個ngram的local representation之間的Mutual Information。
第二類:Replaced Token Detection (RTD)
噪聲對比估計(Noise-Contrastive Estimation,NCE)[36]通過訓練一個二元分類器來區分真實樣本和假樣本,可以很好的訓練詞嵌入。RTD與與 NCE 相同,根據上下文語境來預測token是否替換 。
word2vec[3]中的negative sampling可看作是RTD,負樣本從詞表中進行帶權採樣。ELECTRA[37]提出了一種新的預訓練任務框架,構建生成器-判別器,生成器通過MLM任務對被mask的token進行預測,迭代器判斷原始句子中的每個token是否被replace過。生成器相當於對輸入進行了篩選,使判別器的任務更難,從而學習到更好的表示。生成器-判別器共享embedding,生成器部分採用small-bert,判別器部分對每一個token採用sigmoid計算loss。finetune階段只採用判別器部分。RTD也被看作解決MLM中「MASK」在預訓練和finetune間差異的一種手段。WKLM[38]在實體level進行替換,替換為具有相同實體類型的實體名稱。第三類:Next Sentence Prediction (NSP)
NSP 區分兩個輸入句子是否為訓練語料庫中的連續片段,第二個句子50%為第一句子實際的連續片段,50%從其他語料隨機選擇。NSP可以引導模型理解兩個輸入句子之間的關係,從而使對此信息敏感的下遊任務受益,如QA任務。而RoBERTa[23]表明:NSP在對單個文檔中的文本塊進行訓練時,去除NSP任務或在下遊任務上可以稍微提高性能。
第四類:Sentence Order Prediction (SOP)
SOP 使用同一文檔中的兩個連續片段作為正樣本,而相同的兩個連續片段互換順序作為負樣本。NSP融合了主題預測和相關性預測,主題預測更容易,這使得模型進行預測時僅依賴於主題學習。與NSP不同,SOP使用同一文檔中的兩個連續段作為正樣本,但順序互換為負樣本。採取SOP任務的PTMs有ALBERT[39]、StructBERT[40]、BERTje[41]。
上圖對上述基於對比(Contrastive Based)的四類PTMs進行了總結。
PTMs通常從通用大型文本語料庫中學習通用語言表示,但是缺少特定領域的知識。PTMs中設計一些輔助的預訓練任務,將外部知識庫中的領域知識整合到PTMs中被證明是有效的[1]。
ERNIE-THU[30]將在知識圖譜中預先訓練的實體嵌入與文本中相應的實體提及相結合,以增強文本表示。由於語言表徵的預訓練過程和知識表徵過程有很大的不同,會產生兩個獨立的向量空間。為解決上述問題,在有實體輸入的位置,將實體向量和文本表示通過非線性變換進行融合,以融合詞彙、句法和知識信息。LIBERT[42](語言知識的BERT)通過附加的語言約束任務整合了語言知識。SentiLR[43]集成了每個單詞的情感極性,以將MLM擴展到標籤感知MLM(LA-MLM),ABSA任務上都達到SOTA。SenseBERT[44] 不僅能夠預測被mask的token,還能預測它們在給定語境下的實際含義。使用英語詞彙資料庫 WordNet 作為標註參照系統,預測單詞在語境中的實際含義,顯著提升詞彙消歧能力。KnowBERT[45] 與實體連結模型以端到端的方式合併實體表示。KG-BERT[46]顯示輸入三元組形式,採取兩種方式進行預測:構建三元組識別和關係分類,共同優化知識嵌入和語言建模目標。這些工作通過實體嵌入注入知識圖的結構信息。K-BERT[47]將從KG提取的相關三元組顯式地注入句子中,以獲得BERT的擴展樹形輸入。K-Adapter[48]通過針對不同的預訓練任務獨立地訓練不同的適配器來注入多種知識,從而可以不斷地注入知識,以解決注入多種知識時可能會出現災難性遺忘問題。此外,這類PTMs還有WKLM[38]、KEPLER[49]和[50]等。模型壓縮由於預訓練的語言模型通常包含至少數億個參數,因此很難將它們部署在現實應用程式中的在線服務和資源受限的設備上。模型壓縮是減小模型尺寸並提高計算效率的有效方法。
5種PTMs的壓縮方法為:
pruning(剪枝):將模型中影響較小的部分捨棄。如Compressing BERT[51],還有結構化剪枝 LayerDrop [52],其在訓練時進行Dropout,預測時再剪掉Layer,不像知識蒸餾需要提前固定student模型的尺寸大小。
quantization(量化):將高精度模型用低精度來表示;如Q-BERT[53]和Q8BERT[54],量化通常需要兼容的硬體。
parameter sharing (參數共享):相似模型單元間的參數共享;ALBERT[39]主要是通過矩陣分解和跨層參數共享來做到對參數量的減少。
module replacing(模塊替換):BERT-of-Theseus[55]根據伯努利分布進行採樣,決定使用原始的大模型模塊還是小模型,只使用task loss。
knowledge distillation (知識蒸餾):通過一些優化目標從大型、知識豐富、fixed的teacher模型學習一個小型的student模型。蒸餾機制主要分為3種類型:
從軟標籤蒸餾:DistilBERT [56]、EnsembleBERT[57]從其他知識蒸餾:TinyBERT[58]、BERT-PKD、MobileBERT[59] 、 MiniLM[60] 、DualTrain[61]蒸餾到其他結構:Distilled-BiLSTM[62]隨著PTMs在NLP領域的成功,許多研究者開始關注多模態領域的PTMs,主要為通用的視覺和語言特徵編碼表示而設計。多模態的PTMs在一些龐大的跨模式數據語料庫(帶有文字的語音、視頻、圖像)上進行了預訓練,如帶有文字的語音、視頻、圖像等,主要有 VideoBERT[63]、CBT[64] 、UniViLM[65]、 ViL-BERT[66] 、 LXMERT[67]、 VisualBERT [68]、 B2T2[69] 、Unicoder-VL[70] 、UNITER [71]、 VL-BERT[72] 、 SpeechBERT[73]。
領域預訓練大多數PTM都在諸如Wikipedia的通用語料中訓練,而在領域化的特定場景會收到限制。如基於生物醫學文本的BioBERT[74],基於科學文本的SciBERT[75],基於臨床文本的Clinical-BERT[76]。一些工作還嘗試將PTMs適應目標領域的應用,如醫療實體標準化[77]、專利分類PatentBERT [78]、情感分析SentiLR[79]關鍵詞提取[80]。
多語言和特定語言學習跨語言共享的多語言文本表示形式對於許多跨語言的NLP任務起著重要的作用。
Multilingual-BERT[81]在104種 Wikipedia文本上進行MLM訓練(共享詞表),每個訓練樣本都是單語言文檔,沒有專門設計的跨語言目標,也沒有任何跨語言數據,M-BERT也可以很好的執行跨語言任務。XLM [25]通過融合跨語言任務(翻譯語言模型)改進了M-BERT,該任務通過拼接平行語料句子對進行MLM訓練。Unicoder[82]提出了3種跨語言預訓練任務:1)cross-lingual word recovery;2) cross-lingual paraphrase classification;3) cross-lingual masked language model.雖然多語言的PTMs在跨語言上任務表現良好,但用單一語言訓練的PTMs明顯好於多語言的PTMs。此外一些單語言的PTMs被提出:BERT[83],ZEN[84],NEZHA[85], ERNIE-Baidu[27][28], BERTje[86], CamemBERT[87], FlauBERT[88], RobBERT [89]。
PTMs從大型語料庫中獲取通用語言知識,如何有效地將其知識適應下遊任務是一個關鍵問題。遷移學習的方式主要有歸納遷移(順序遷移學習、多任務學習)、領域自適應(轉導遷移)、跨語言學習等。NLP中PTMs的遷移方式是順序遷移學習。
如何遷移?1)選擇合適的預訓練任務:語言模型是PTM是最為流行的預訓練任務;同的預訓練任務有其自身的偏置,並且對不同的任務會產生不同的效果。例如,NSP任務可以使諸如問答(QA)和自然語言推論(NLI)之類的下遊任務受益。
2)選擇合適的模型架構:例如BERT採用的MLM策略和Transformer-Encoder結構,導致其不適合直接處理生成任務。
3)選擇合適的數據:下遊任務的數據應該近似於PTMs的預訓練任務,現在已有有很多現成的PTMs可以方便地用於各種特定領域或特定語言的下遊任務。
4)選擇合適的layers進行transfer:主要包括Embedding遷移、top layer遷移和all layer遷移。如word2vec和Glove可採用Embedding遷移,BERT可採用top layer遷移,Elmo可採用all layer遷移。
5)特徵集成還是fine-tune?對於特徵集成預訓練參數是freeze的,而fine-tune是unfreeze的。特徵集成方式卻需要特定任務的體系結構,fine-tune方法通常比特徵提取方法更為通用和方便。
fine-tune策略:通過更好的微調策略進一步激發PTMs性能
兩階段fine-tune策略:如第一階段對中間任務或語料進行finetune,第二階段再對目標任務fine-tune。第一階段通常可根據特定任務的數據繼續進行fine-tune預訓練。多任務fine-tune:MTDNN[90]在多任務學習框架下對BERT進行了fine-tune,這表明多任務學習和預訓練是互補的技術。採取額外的適配器:fine-tune的主要缺點是其參數效率低,每個下遊任務都有自己的fine-tune參數。因此,更好的解決方案是在固定原始參數的同時,將一些可fine-tune的適配器注入PTMs。逐層階段:逐漸凍結而不是同時對所有層進行fine-tune,也是一種有效的fine-tune策略。七、PTMs展望雖然 PTMs已經在很多 NLP 任務中顯示出了他們強大的能力,然而由於語言的複雜性,仍存在諸多挑戰。綜述論文給出了五個未來 PTMs發展方向的建議。
PTMs的上限目前,PTMs並沒有達到其上限。大多數的PTMs可通過使用更長訓練步長和更大數據集來提升其性能。目前NLP中的SOTA也可通過加深模型層數來更進一步提升。這將導致更加高昂的訓練成本。因此,一個更加務實的方向是在現有的軟硬體基礎上,設計出更高效的模型結構、自監督預訓練任務、優化器和訓練技巧等。例如,ELECTRA [37]就是此方向上很好的一個解決方案。
面向任務的預訓練和模型壓縮在實踐中,不同的目標任務需要 PTMs擁有不同功能。而 PTMs與下遊目標任務間的差異通常在於兩方面:模型架構與數據分布。儘管較大的PTMs通常情況下會帶來更好的性能表現,但在低計算資源下如何使用是一個實際問題。例如,對於 NLP 的 PTM 來說,對於模型壓縮的研究只是個開始,Transformer 的全連接架構也使得模型壓縮具有挑戰性。
PTMs的架構設計對於PTMs,Transformer 已經被證實是一個高效的架構。然而 Transformer 最大的局限在於其計算複雜度(輸入序列長度的平方倍)。受限於 GPU 顯存大小,目前大多數 PTM 無法處理超過 512 個 token 的序列長度。打破這一限制需要改進 Transformer 的結構設計,例如 Transformer-XL[92]。
finetune中的知識遷移finetune是目前將 PTM 的知識轉移至下遊任務的主要方法,但效率卻很低,每個下遊任務都需要有特定的finetune參數。一個可以改進的解決方案是固定PTMs的原始參數,並為特定任務添加小型的finetune適配器,這樣就可以使用共享的PTMs 服務於多個下遊任務。
PTMs 的解釋性與可靠性PTMs 的可解釋性與可靠性仍然需要從各個方面去探索,它能夠幫助我們理解 PTM 的工作機制,為更好的使用及性能改進提供指引。
(完)
註:JayJay同學做了一個腦圖,全方位展示所有的預訓練模型。感興趣的同學可以關注公眾號【高能AI】並回復【PTM】獲取全部腦圖。
Reference
[1] Pre-trained Models for Natural Language Processing: A Survey https://arxiv.org/abs/2003.08271v2由於微信平臺算法改版,公號內容將不再以時間排序展示,如果大家想第一時間看到我們的推送,強烈建議星標我們和給我們多點點【在看】。星標具體步驟為:
(1)點擊頁面最上方"AINLP",進入公眾號主頁。
(2)點擊右上角的小點點,在彈出頁面點擊「設為星標」,就可以啦。
感謝支持,比心。
進群請添加AINLP小助手微信 AINLPer(id: ainlper),備註預訓練模型推薦閱讀
這個NLP工具,玩得根本停不下來
徵稿啟示| 200元稿費+5000DBC(價值20個小時GPU算力)
完結撒花!李宏毅老師深度學習與人類語言處理課程視頻及課件(附下載)
從數據到模型,你可能需要1篇詳實的pytorch踩坑指南
如何讓Bert在finetune小數據集時更「穩」一點
模型壓縮實踐系列之——bert-of-theseus,一個非常親民的bert壓縮方法
文本自動摘要任務的「不完全」心得總結番外篇——submodular函數優化
Node2Vec 論文+代碼筆記
模型壓縮實踐收尾篇——模型蒸餾以及其他一些技巧實踐小結
中文命名實體識別工具(NER)哪家強?
學自然語言處理,其實更應該學好英語
史丹福大學NLP組Python深度學習自然語言處理工具Stanza試用
關於AINLP
AINLP 是一個有趣有AI的自然語言處理社區,專注於 AI、NLP、機器學習、深度學習、推薦算法等相關技術的分享,主題包括文本摘要、智能問答、聊天機器人、機器翻譯、自動生成、知識圖譜、預訓練模型、推薦系統、計算廣告、招聘信息、求職經驗分享等,歡迎關注!加技術交流群請添加AINLPer(id:ainlper),備註工作/研究方向+加群目的。
閱讀至此了,分享、點讚、在看三選一吧🙏