📕參考::2020-11-02,https://kns.cnki.net/kcms/detail/11.2127.tp.20201030.1952.017.html
主要是這篇文章的自己摘了點筆記。
預訓練模型的深度學目標是如何使預訓練好的模型處于良好的初始狀態,在下游任務中達到更好的性能表現。對預訓練技術及其發展歷史進行介紹,并按照模型特點劃分為基于概率統計的傳統模型和基于習的新式模型進行綜述。
1.預訓練技術的概述
預訓練技術是指預先設計網絡結構,并對編碼后的數據輸入到網絡結構中進行訓練,增加模型的泛化能力。
預訓練后的模型可以直接根據下游任務需求進行微調,免去了從零開始的過程。
語言模型可以看作是一串詞序列的概率分布,因此在早期,研究人員提出了N-gram模型,它是基于統計語言模型的算法,但是這種做法只能通過概率統計進行判斷,會使數據出現嚴重的稀疏性,無法考慮詞內部的關聯。
隨著深度學習技術的迅速發展,詞嵌入正式登上歷史的舞臺,Bengio等人在2003年提出NNLM模型[4],隨后出現了一系列詞向量技術(如Word2Vec、Glove、FastTest等)為文本提供了一種數值化的表示方法,但是無法解決一詞多義的問題。
于是ELMo應運而生,它采用雙向的長短期記憶網絡(Long Short-Term Memory,
LSTM)進行進行預訓練,將詞向量由靜態轉化為動態,使其可以結合上下文來賦予詞義。
GPT首次提出了無監督的預訓練和有監督的微調,使得訓練好的模型能夠更好地適應下游任務。BERT首次將雙向Transformer用于語言模型,使得該模型相對GPT對語境的理解會更加深刻。
2.預訓練技術模型簡介
在NLP領域上,其發展趨勢可以概括為三階段:規則-統計-深度學習。
基于規則的
????????一開始,研究人員的研究的重點放在如何設定語言規則上面,但是這個階段不能處理復雜
的語言問題,因此沒有太大的應用價值。
統計語言模型
????????統計語言模型是基于語料庫對語句進行預處理,然后對下游任務進行基于概率的判別。
????????N-gram是自然語言處理領域中具有顯著歷史意義的特征處理模型,基本思想是將文本內容按照字節大小為N的滑動窗口進行操作,形成長度是N的字節片段序列,然后對所有的序列的出現頻度進行統計,并且按照實現設定好的閾值進行過濾,形成了這個文本的特征向量空間。然后用訓練后的模型對語句進行概率評估,來判斷組成是否合理。
????????N-gram模型是對文本特征進行預處理,它是將相鄰的n個詞作為一組進行編碼,這就導致它過于依賴訓練語料的豐富程度,否則就很容易出現數據稀疏問題,并且計算復雜度會隨著n的增加而產生指數級的增長。
傳統預訓練模型
????????Word2Vec模型的計算復雜度和選取的窗口大小無關,而是由詞典大小和詞向量維度來決定。但是靜態的詞向量對一詞多義等問題仍然無法解決,仍然屬于淺層語言模型。
????????盡管Word2Vec極大改善了對文本的處理任務,但是難以捕獲上下文的高級概念,如多義詞消除、句法結構等問題。
????????Word2Vec提出了兩個新的模型體系結構:Skip-gram和CBOW,其中Skip-gram模型是通過輸入特定詞向量,輸出上下文對應的詞向量。CBOW是通過輸入某一特征詞的上下文對應詞向量來輸出特定向量。兩個模型基本思想相似,都是通過訓練學習得到權重矩陣,根據矩陣得到文本中詞所對應的詞向量,節省了再次訓練的時間和資源。
基于深度學習的預訓練模型
??ELMo
????????ELMo等動態預訓練模型的提出很好地解決了這些問題,比如ELMo中的詞向量不再是簡單的向量對應關系,而是通過前后語境對多義詞進行理解,用其內部函數來表達。
????????ELMo是基于特征的語言模型,可以結合上下文語境對詞進行建模。ELMo中詞向量表示的是內部網絡狀態函數,對于相同的詞它所展現出來的詞向量是動態變化的。
它首先采用雙向LSTM進行預訓練,這個模型包括前向LSTM模型和后向LSTM模型、
前向公式:前k-1個詞預測第k個詞。
后向公式:已知第k個詞后面的詞,預測第k個詞。
GPT模型
?
GPT首次無監督的預訓練和有監督的微調相結合,使得模型更加符合下游任務的需求。,GPT針對NLP下游任務采用統一框架,直接在Transformer[11]上的最后一層接上softmax作為任務輸出層,減少了計算復雜度。
GPT的訓練過程也包括兩個階段,第一階段是在大型文本語料庫上對模型進行預訓練,第二階段是微調階段,讓模型更好地適應下游任務。
無監督的預訓練階段:自回歸,已知幾個詞預測下一個詞的概率。
有監督訓練:對標簽,學習已知 x1 x2 x3....預測標簽為y的概率。并極大化似然函數來調參。
BERT
BERT證明了使用雙向預訓練效果更好,解決了GPT模型為了防止泄密,在進行預測時舍棄了下文信息的局限性。,它使用的是Transformer編碼器,由于self-attention機制,所以模型上下層直接全部互相連接的。
在模型輸入方面,BERT輸入的編碼向量是詞向量、位置向量、句子切分向量這三個嵌入特征的單位和。
在模型的預訓練上,BERT利用兩個監督任務進行預訓練。
第一個任務是Mask LM(MLM),為了解決GPT完全舍棄下文的問題,不再進行整個句子的預測而是對某個詞去做預測,首先屏蔽一定百分比的詞,然后通過模型實現對屏蔽詞的預測,來進行訓練。但是會存在兩點不足:一是由于屏蔽的詞在微調期間并不會出現,在進行微調時會出現與預訓練不匹配的問題。二是預測的是屏蔽掉的是詞而非句子,會使整個句子預訓練的收斂速度更慢。
針對第一個不足的解決辦法是在80%時間保持屏蔽的狀態,10%的時間里進行隨機詞替換,10%
的時間使用詞本身。對于第二個問題,作者認為收斂速度算是對模型效果提升的妥協。
第二個任務是Next Sentence Prediction(NSP),主要是為了實現基于上個句子對下個句子的預測,首先在50%的時間是拼接原始的上下句子,標簽設為正例。50%的時間里拼接原始句子與隨機的下一句,標簽設為負例,這樣做的目的是提取句子間的關系。在隨后發布的XLNet取消了這個任務,并且RoBERTa[38]和SpanBERT[39]通過測試發現,沒有NSP的話模型的效果會更好。
?
目前的研究表明,在大型無標注語料庫進行預訓練,可以在NLP任務上顯著提高模型性能。
目前主要有兩種常見的遷移學習方式:特征提取和微調,兩者的區別就是以ELMo等為代
表的模型使用的特征提取方法凍結了預訓練參數,而以BERT等為代表的模型采用的微調則是動態地改變參數,根據下游任務進行參數上的微調。特征提取需要更復雜的任務架構,并且就綜合性能來看,微調的方法更適合下游任務。
?
NLP常見的下游任務可以分為四大類:
第一類任務是序列標注,比如分詞、命名實體識別、語義標注等;
第二類任務是分類任務,比如文本分類、情感分析等;
第三類任務是句子關系判斷,比如句法分析、問答QA、自然語言推理等;
第四類是生成式任務,比如機器翻譯、文本摘要、閱讀理解、對話系統等。