人工智慧的三個層次:
運算職能:資料的儲存和運算能力,機器遠勝於人類。
感知功能:視覺、聽覺等能力,機器在語音辨識、影像辨識領域已經比肩人類。
認知智能:自然語言處理、常識建模與推理等任務,機器還有很長的路要走。
自然語言處理屬於認知智能範疇,由於自然語言具有抽象性、組合性、歧義性、知識性、演化性等特點,為機器處理帶來了極大的挑戰,有人將自然語言處理稱為人工智慧皇冠上的明珠。近年來,出現了以 BERT 為代表的預訓練語言模型,將自然語言處理帶入了一個新紀元:預訓練語言模型 特定任務精調。本文試圖整理自然語言預訓練技術的演進之路,以期和大家相互交流學習,不足、謬誤之處望批評指正。
用一個詞表大小的向量表示一個詞,其中詞對應位置的值為1,其餘位置為0。缺點:
分佈式語意假設:相似的字有相似的上下文,字的語意可由上下文表示。基於該思想,可以利用每個詞的上下文分佈對詞進行表示。
基於語料庫,利用詞的上下文來建立共現頻次表,詞表的每一行代表了一個詞的向量表示。透過不同的上下文選擇可以捕捉到不同的語言訊息,如用句子中詞的周圍固定窗口的詞作為上下文,會更多的捕捉到詞的局部信息:詞法、句法信息,若用所在文檔作為上下文,更多的捕捉到詞所表示的主題訊息。缺點:
將詞頻表示中的值,替換為 TF-IDF,主要緩解詞頻表示的高頻詞問題。
同樣是緩解詞頻表示的高頻詞問題,將詞頻表示中的值替換為詞的點互資訊:
透過對詞頻矩陣進行奇異值分解(Singular Value Decomposition,SVD),可以得到每個字的低維、連續、稠密的向量表示,可認為表示了詞的潛在語義,該方法也被稱為潛在語義分析(Latent Semantic Analysis, LSA)。
LSA 緩解了高頻詞、高階關係、稀疏性等問題,在傳統機器學習演算法中效果還是不錯的,但是也存在一些不足:
#文本的有序性及詞與詞之間的共現關係為自然語言處理提供了天然的自監督學習訊號,使得系統無需額外的人工標註也能夠從文本中學到知識。
CBOW(Continous Bag-of-Words) 利用上下文(視窗)對目標字進行預測,將上下文的字的詞向量取算術平均,然後預測目標字的機率。
Skip-gram 透過字預測上下文。
GloVe(Global Vectors for Word Representation) 利用詞向量對詞的共現矩陣進行預測,實現了隱式的矩陣分解。首先根據詞的上下文視窗建構距離加權的共現矩陣 X,再利用詞與上下文的向量對共現矩陣 X 進行擬合:
損失函數為:
詞向量的學習利用了語料庫中詞與詞之間的共現訊息,底層思想仍是分佈式語意假設。無論是基於局部上下文的Word2Vec,還是基於顯式全局共現資訊的GloVe,本質都是將一個詞在整個語料庫中的共現上下文資訊聚合到該詞的向量表示中,並都取得了不錯的效果,訓練速度也很快,但是缺點詞的向量是靜態的,即不具備隨上下文變化而變化的能力。
自迴歸語言模型:根據序列歷史計算當下時刻字詞的條件機率。
自編碼語言模型:透過上下文重構被遮罩的單字。
表示被遮罩的序列
注意力模型可以理解為對一個向量序列進行加權操作的機制,權重的計算。
Transformer 中使用的注意力模型可以表示為:
當Q、K、V 來自同一向量序列時,成為自註意力模型。
多頭自註意力:設定多組自註意力模型,將其輸出向量拼接,並透過一個線性映射映射到 Transformer 隱層的維度大小。多頭自註意力模型,可以理解為多個自註意力模型的 ensemble。
由於自註意力模型沒有考慮輸入向量的位置訊息,但位置資訊對序列建模至關重要。可以透過位置嵌入或位置編碼的方式引入位置訊息,Transformer 裡使用了位置編碼的方式。
此外 Transformer block 裡也使用了殘差連接、Layer Normalization 等技術。
優點:
缺點:
ELMo: Embeddings from Language Models
對詞可以直接用詞的embedding,也可以對詞中的字符序列通過CNN,或其他模型。
ELMo 透過LSTM 獨立的建模前向、後向語言模型,前向語言模型:
後向語言模型:
#最大化:
ELMo 訓練好後,可以得到如下向量供下游任務使用。
是輸入層得到的 word embedding, 則是前、後向 LSTM 輸出拼接的結果。
下游任務使用時,可以加各層向量加權得到 ELMo 的一個向量表示,同時用一個權重對 ELMo 向量進行縮放。
不同層次的隱含層向量蘊含了不同層次或粒度的文字訊息:
模型結構
在GPT-1(Generative Pre-Training),是一個單向的語言模型,使用了12個transformer block 結構作為解碼器,每個transformer 區塊都是一個多頭的自註意力機制,然後透過全連接得到輸出的機率分佈。
最大化:
下游應用
下游任務中,對於一個有標籤的資料集 ,每個實例都有一個輸入token:,它對於的標籤組成。首先將這些 token 輸入到訓練好的預訓練模型中,得到最終的特徵向量。接著再透過一個全連接層得到預測結果:下游有監督任務的目標則是最大化:
########### ##為了防止災難性遺忘問題,可以在精調損失中加入一定權重的預訓練損失,通常預訓練損失。 #####################GPT-2 的核心思想概括為:任何有監督任務都是語言模型的一個子集,當模型的容量非常大且資料量足夠豐富時,僅靠訓練語言模型的學習便可以完成其他有監督學習的任務。所以GPT-2 並沒有對GPT-1 的網路進行過多的結構的創新與設計,只是使用了更多的網路參數和更大的資料集,目標旨在訓練一個泛化能力更強的詞向量模型。
在8個語言模型任務中,僅僅透過zero-shot 學習,GPT-2 就有7個超過了當時state-of-the-art 的方法(當然好些任務上還是不如監督模型效果好)。 GPT-2 的最大貢獻是驗證了透過海量資料和大量參數訓練出來的詞向量模型有遷移到其它類別任務中而不需要額外的訓練。
同時 GPT-2 顯示隨著模型容量和訓練資料量(質量)的增大,其潛能還有進一步開發的空間,基於這個思想,誕生了 GPT-3。
依舊模型結構沒啥變化,增加模型容量、訓練資料量及質量,號稱巨無霸,效果也很好。
從GPT-1 到GPT-3,隨著模型容量和訓練資料量的增加,模型學到的語言知識也越豐富,自然語言處理的典範也從「預訓練模型精進」逐步轉向「預訓練模型zero-shot/few-shot learning」。 GPT 的缺點是用的單向語言模型,BERT 已經證明了雙向語言模型能提升模型效果。
XLNet 透過排列語言模型(Permutation Language Model) 引入了雙向的上下文信息,不引入特殊的tag,避免了預訓練和精調階段token 分佈不一致的問題。同時使用 Transformer-XL 作為模型主體結構,對長文字有更好的效果。
排列語言模型的目標是:
#是文字序列所有可能的排列集合。
此方法使用了預測詞的位置資訊。
下游任務應用程式時,不需要查詢表示,也不 mask。
掩碼語言模型(masked language model, MLM),隨機地屏蔽部分詞,然後利用上下文資訊進行預測。 MLM 有個問題,預訓練和 fine-tuning 之間不匹配,因為在 fine-tuning 期間從未看到 [MASK] token。為了解決這個問題,BERT 並不總是用實際的 [MASK] token 替換被“masked”的 word piece token。訓練資料產生器隨機選擇15%的 token,然後:
原生 BERT 裡對 token 進行 mask,可以對整字或片語(N-Gram)進行 mask。
下一句預測(NSP):當選擇句子A 和B 作為預訓練樣本時,B 有50%的可能是A 的下一個句子,也有50%的可能是來自語料庫的隨機句子。
#經典的「預訓練模型精調」的範式,主題結構是堆疊的多層Transformer。
RoBERTa(Robustly Optimized BERT Pretraining Approach) 並沒有大刀闊斧的改進 BERT,而只是針對 BERT 的每一個設計細節進行了詳盡的實驗找到了 BERT 的改進空間。
BERT 參數量相對較大,ALBERT(A Lite BERT) 主要目標是減少參數:
ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately) 引入了生成器和判別器的模式,把生成式的Masked language model (MLM) 預訓練任務改成了判別式的Replaced token detection(RTD) 任務,判斷當前token 是否被語言模型取代過,比較類似GAN 的想法。
產生器預測輸入文字中mask 位置的token:
##判別器的輸入是生成器的輸出,判別器預測各個位置的詞是否是被替換過的: 此外,還做了一些優化:
片段遞歸的另一個好處是帶來的推理速度的提升,對比Transformer 的自回歸架構每次只能前進一個時間片,Transfomer-XL 的推理過程通過直接復用上一個片段的表示而不是從頭計算,將推理過程提升到以片段為單位進行推理。
在Transformer 中,自註意力模型可以表示為:
的完整運算式為:
#Transformer 的問題是無論第幾個片段,它們的位置編碼 都是一樣的,也就是說Transformer的位置編碼是相對於片段的絕對位置編碼(absulate position encoding),與當前內容在原始句子中的相對位置是沒有關係的。
Transfomer-XL 在上式的基礎上做了若干變化,得到了下面的計算方法:
DistillBert 的學生模型:
教師模型: BERT-base:
#損失函數:
有監督MLM 損失:利用掩碼語言模型訓練得到的交叉熵損失:#https ://www.php.cn/link/6e2290dbf1e11f39d246e7ce5ac50a1e
#https://www.php.cn/link/664c7298d2b73b3c7fe2d1e81/664c7298d2b73b3c7fe2d1e81112d
https://www.php.cn/link/67b878df6cd42d142f2924f3ace85c78https://www.php.cn/link/f6a673f09493https://www.php.cn/link/f6a673f09493afhttps://www.php.cn/link/f6a673f09493afco
https://www.php.cn/link/82599a4ec94aca066873c99b4c741ed8
##https://www. php.cn/link/2e64da0bae6a7533021c760d4ba5d621
#https://www.php.cn/link/56d33021e640f5d#> #https://www.php.cn/link/4e38d30e656da5ae9d3a425109ce9e04
##https://www.php.cn/link/c055dcc749c2632fdhttps://www.php.cn/link/c055dcc749c2632fdhttps://www.php.cn/link/c055dcc749c2632fdhttps://www.php.cn/link/c055dcc749c2632fd4806301
https://www.php.cn/link/a749e38f556d5eb1dc13b9221d1f994f
#https://www.php.cn/link /8ab9bb97ce35080338be74dc6375e0ed
https://www.php.cn/link/4f0bf7b7b1aca9ad15317a0b4efdca14
https:/ /www.php.cn/link/b81132591828d622fc335860bffec150
#https://www.php.cn/link/fca758e52635df5a640f7063#https://www.php.cn/link/5112277ea658f7138694f079042cc3bb
https://www.php.cn/link/257deb66f5366ahttps://www.php.cn/link/257deb66f5366ahttps://www.php.cn/link/257deb66f5366a231d
##https://www.php.cn/link/b18e8fb514012229891cf024b6436526
##https://www.php. cn/link/836a0dcbf5d22652569dc3a708274c16
############' https://www.php.cn/link/831b342d8a83408e5960e9b0c5f31f0c##############https://www.php.cn/link/6b27e88fdd7269394bcaddf4bcn/link/6b27e88fdd7269394bcaddf4b. ######https://www.php.cn/link/682e0e796084e163c5ca053dd8573b0c#############https://www.php.cn/link/9739efc4f#######https://www.php.cn/link/9739efc4f0129276483c #############https://www.php.cn/link/b93e78c67fd4ae3ee626d8ec0c412dec#############https://www .php.cn/link/c8cc6e90ccbff44c9cee23611711cdc4#######以上是初探自然語言預訓練技術演進之路的詳細內容。更多資訊請關注PHP中文網其他相關文章!