自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

初探自然語言預(yù)訓(xùn)練技術(shù)演進之路

精選
人工智能 自然語言處理
近些年來,出現(xiàn)了以 BERT 為代表的預(yù)訓(xùn)練語言模型,將自然語言處理帶入了一個新紀元:預(yù)訓(xùn)練語言模型 + 特定任務(wù)精調(diào)。本文試圖梳理自然語言預(yù)訓(xùn)練技術(shù)的演進之路,以期和大家相互交流學(xué)習(xí),不足、謬誤之處望批評指正。

人工智能的三個層次:

運算職能:數(shù)據(jù)的存儲和計算能力,機器遠勝于人類。

感知職能:視覺、聽覺等能力,機器在語音識別、圖像識別領(lǐng)域已經(jīng)比肩人類。

認知智能:自然語言處理、常識建模與推理等任務(wù),機器還有很長的路要走。

自然語言處理屬于認知智能范疇,由于自然語言具有抽象性、組合性、歧義性、知識性、演化性等特點,為機器處理帶來了極大的挑戰(zhàn),有人將自然語言處理稱為人工智能皇冠上的明珠。近些年來,出現(xiàn)了以 BERT 為代表的預(yù)訓(xùn)練語言模型,將自然語言處理帶入了一個新紀元:預(yù)訓(xùn)練語言模型 + 特定任務(wù)精調(diào)。本文試圖梳理自然語言預(yù)訓(xùn)練技術(shù)的演進之路,以期和大家相互交流學(xué)習(xí),不足、謬誤之處望批評指正。

1.古代 - 詞表示

1.1 One-hot Encoding

用一個詞表大小的向量表示一個詞,其中詞對應(yīng)位置的值為1,其余位置為0。缺點:

  • 高維稀疏性
  • 無法表示語義相似性:兩個同義詞的 One-hot 向量相似度為0

1.2 分布式表示

分布式語義假設(shè):相似的詞具有相似的上下文,詞的語義可由上下文表示。基于該思想,可以利用每個詞的上下文分布對詞進行表示。

1.2.1 詞頻表示

基于語料庫,利用詞的上下文構(gòu)建共現(xiàn)頻次表,詞表的每一行代表了一個詞的向量表示。通過不同的上下文選擇可以捕獲到不同的語言信息,如用句子中詞的周圍固定窗口的詞作為上下文,會更多的捕捉到詞的局部信息:詞法、句法信息,若用所在文檔作為上下文,更多的捕捉到詞所表示的主題信息。缺點:

  • 高頻詞問題。
  • 無法反應(yīng)高階關(guān)系:(A, B) (B, C) (C, D) !=> (A, D)。
  • 依然存在稀疏性問題。

1.2.2 TF-IDF表示

將詞頻表示中的值,替換為 TF-IDF,主要緩解詞頻表示的高頻詞問題。

1.2.3 點互信息表示

同樣是緩解詞頻表示的高頻詞問題,將詞頻表示中的值替換為詞的點互信息:

圖片

1.2.4 LSA

通過對詞頻矩陣進行奇異值分解 (Singular Value Decomposition,SVD),可以得到每個詞的低維、連續(xù)、稠密的向量表示,可認為表示了詞的潛在語義,該方法也被稱為潛在語義分析 (Latent Semantic Analysis, LSA)。

圖片

LSA 緩解了高頻詞、高階關(guān)系、稀疏性等問題,在傳統(tǒng)機器學(xué)習(xí)算法中效果還是不錯的,但是也存在一些不足:

  • 詞表大時,SVD 速度比較慢。
  • 無法追新,當語料變化或新增語料時,需要重新訓(xùn)練。

2. 近代——靜態(tài)詞向量

文本的有序性及詞與詞之間的共現(xiàn)關(guān)系為自然語言處理提供了天然的自監(jiān)督學(xué)習(xí)信號,使得系統(tǒng)無需額外的人工標注也能夠從文本中學(xué)到知識。

2.1 Word2Vec

2.1.1 CBOW

CBOW(Continous Bag-of-Words) 利用上下文(窗口)對目標詞進行預(yù)測,將上下文的詞的詞向量取算術(shù)平均,然后預(yù)測目標詞的概率。

圖片

2.1.2 Skip-gram

Skip-gram 通過詞預(yù)測上下文。

圖片

2.2 GloVe

GloVe(Global Vectors for Word Representation) 利用詞向量對詞的共現(xiàn)矩陣進行預(yù)測,實現(xiàn)了隱式的矩陣分解。首先根據(jù)詞的上下文窗口構(gòu)建距離加權(quán)的共現(xiàn)矩陣 X,再利用詞與上下文的向量對共現(xiàn)矩陣 X 進行擬合:

圖片

損失函數(shù)為:

圖片

2.3 小結(jié)

詞向量的學(xué)習(xí)利用了語料庫中詞與詞之間的共現(xiàn)信息,底層思想還是分布式語義假設(shè)。無論是基于局部上下文的 Word2Vec,還是基于顯式全局共現(xiàn)信息的 GloVe,本質(zhì)都是將一個詞在整個語料庫中的共現(xiàn)上下文信息聚合到該詞的向量表示中,并都取得了不錯的效果,訓(xùn)練速度也很快,但是缺點詞的向量是靜態(tài)的,即不具備隨上下文變化而變化的能力。

3. 現(xiàn)代——預(yù)訓(xùn)練語言模型

自回歸語言模型:根據(jù)序列歷史計算當前時刻詞的條件概率。

圖片

自編碼語言模型:通過上下文重構(gòu)被掩碼的單詞。

圖片

表示被掩碼的序列

3.1 基石——Transformer

圖片

3.1.1 注意力模型

注意力模型可以理解為對一個向量序列進行加權(quán)操作的機制,權(quán)重的計算。

3.1.2 多頭自注意力

Transformer 中使用的注意力模型可以表示為:

圖片

當 Q、K、V 來自同一向量序列時,成為自注意力模型。

多頭自注意力:設(shè)置多組自注意力模型,將其輸出向量拼接,并通過一個線性映射映射到 Transformer 隱層的維度大小。多頭自注意力模型,可以理解為多個自注意力模型的 ensemble。

圖片

圖片

3.1.3 位置編碼

由于自注意力模型沒有考慮輸入向量的位置信息,但位置信息對序列建模至關(guān)重要??梢酝ㄟ^位置嵌入或位置編碼的方式引入位置信息,Transformer 里使用了位置編碼的方式。

圖片

3.1.4 其他

此外 Transformer block 里還使用了殘差連接、Layer Normalization 等技術(shù)。

3.1.5優(yōu)缺點

優(yōu)點:

  • 相比 RNN 能建模更遠距離的依賴關(guān)系,attention 機制將詞與詞之間的距離縮小為了1,從而對長序列數(shù)據(jù)建模能力更強。
  • 相比 RNN 能更好的利用 GPU 并行計算能力。
  • 表達能力強。

缺點:

  • 相比 RNN 參數(shù)大,增加了訓(xùn)練難度,需要更多的訓(xùn)練數(shù)據(jù)。

3.2 自回歸語言模型

3.2.1 ELMo

ELMo: Embeddings from Language Models

輸入層

對詞可以直接用詞的 embedding,也可以對詞中的字符序列通過 CNN,或其他模型。

圖片

模型結(jié)構(gòu)

圖片

ELMo 通過 LSTM 獨立的建模前向、后向語言模型,前向語言模型:

圖片

后向語言模型:

圖片

優(yōu)化目標

最大化:

圖片

下游應(yīng)用

ELMo 訓(xùn)練好后,可以得到如下向量供下游任務(wù)使用。

圖片

是輸入層得到的 word embedding, 是前、后向 LSTM 輸出拼接的結(jié)果。

下游任務(wù)使用時,可以加各層向量加權(quán)得到 ELMo 的一個向量表示,同時用一個權(quán)重對 ELMo 向量進行縮放。

圖片

不同層次的隱含層向量蘊含了不同層次或粒度的文本信息:

  • 頂層編碼了更多的語義信息
  • 底層編碼了更多的詞法、句法信息
3.2.2 GPT 系列

GPT-1

模型結(jié)構(gòu)

在 GPT-1(Generative Pre-Training),是一個單向的語言模型,使用了12個 transformer block 結(jié)構(gòu)作為解碼器,每個 transformer 塊是一個多頭的自注意力機制,然后通過全連接得到輸出的概率分布。

圖片

圖片

  • U: 詞的獨熱向量
  • We:詞向量矩陣
  • Wp:位置向量矩陣
優(yōu)化目標

最大化:

圖片

下游應(yīng)用

下游任務(wù)中,對于一個有標簽的數(shù)據(jù)集 ,每個實例有個輸入 token:,它對于的標簽組成。首先將這些 token 輸入到訓(xùn)練好的預(yù)訓(xùn)練模型中,得到最終的特征向量。然后再通過一個全連接層得到預(yù)測結(jié)果:

圖片

下游有監(jiān)督任務(wù)的目標則是最大化:

圖片

為了防止災(zāi)難性遺忘問題,可以在精調(diào)損失中加入一定權(quán)重的預(yù)訓(xùn)練損失,通常預(yù)訓(xùn)練損失。

圖片

圖片

GPT-2

GPT-2 的核心思想概括為:任何有監(jiān)督任務(wù)都是語言模型的一個子集,當模型的容量非常大且數(shù)據(jù)量足夠豐富時,僅僅靠訓(xùn)練語言模型的學(xué)習(xí)便可以完成其他有監(jiān)督學(xué)習(xí)的任務(wù)。所以 GPT-2 并沒有對 GPT-1 的網(wǎng)絡(luò)進行過多的結(jié)構(gòu)的創(chuàng)新與設(shè)計,只是使用了更多的網(wǎng)絡(luò)參數(shù)和更大的數(shù)據(jù)集,目標旨在訓(xùn)練一個泛化能力更強的詞向量模型。

在8個語言模型任務(wù)中,僅僅通過 zero-shot 學(xué)習(xí),GPT-2 就有7個超過了當時 state-of-the-art 的方法(當然好些任務(wù)上還是不如監(jiān)督模型效果好)。GPT-2 的最大貢獻是驗證了通過海量數(shù)據(jù)和大量參數(shù)訓(xùn)練出來的詞向量模型有遷移到其它類別任務(wù)中而不需要額外的訓(xùn)練。

同時 GPT-2 表明隨著模型容量和訓(xùn)練數(shù)據(jù)量(質(zhì)量)的增大,其潛能還有進一步開發(fā)的空間,基于這個思想,誕生了 GPT-3。

GPT-3

依舊模型結(jié)構(gòu)沒啥變化,增加模型容量、訓(xùn)練數(shù)據(jù)量及質(zhì)量,號稱巨無霸,效果也很好。

小結(jié)

圖片

從 GPT-1 到 GPT-3,隨著模型容量和訓(xùn)練數(shù)據(jù)量的增加,模型學(xué)到的語言知識也越豐富,自然語言處理的范式也從「預(yù)訓(xùn)練模型+精調(diào)」逐步向「預(yù)訓(xùn)練模型 + zero-shot/few-shot learning」轉(zhuǎn)變。GPT 的缺點是用的單向語言模型,BERT 已經(jīng)證明了雙向語言模型能提升模型效果。

3.2.3 XLNet

XLNet 通過排列語言模型 (Permutation Language Model) 引入了雙向的上下文信息,不引入特殊的 tag,避免了預(yù)訓(xùn)練和精調(diào)階段 token 分布不一致的問題。同時使用 Transformer-XL 作為模型主體結(jié)構(gòu),對長文本有更好的效果。

排列語言模型

排列語言模型的目標是:

圖片

是文本序列所有可能的排列集合。

雙流自注意力機制
  • 雙流自注意力機制 (Two-stream Self-attention)要達到的目的:通過改造Transformer,在輸入正常文本序列的情況下,實現(xiàn)排列語言模型:
  • 內(nèi)容表示:包含的信息
  • 查詢表示:只包含的信息

圖片

圖片

該方法使用了預(yù)測詞的位置信息。

下游應(yīng)用

下游任務(wù)應(yīng)用時,不需要查詢表示,也不 mask。

3.3 自編碼語言模型

3.3.1 BERT

掩碼語言模型

掩碼語言模型(masked language model, MLM),隨機地屏蔽部分詞,然后利用上下文信息進行預(yù)測。MLM 存在個問題,預(yù)訓(xùn)練和 fine-tuning 之間不匹配,因為在 fine-tuning 期間從未看到 [MASK] token。為了解決這個問題,BERT 并不總是用實際的 [MASK] token 替換被「masked」的 word piece token。訓(xùn)練數(shù)據(jù)生成器隨機選擇15%的 token,然后:

  • 80%的概率:用 [MASK] 標記替換。
  • 10%的概率:從詞表隨機一個 token 替換。
  • 10%的概率:token 保持不變。

原生 BERT 里對 token 進行 mask,可以對整詞或短語(N-Gram)進行 mask。

下一句預(yù)測

下一句預(yù)測(NSP):當選擇句子 A 和 B 作為預(yù)訓(xùn)練樣本時,B 有50%的可能是 A 的下一個句子,也有50%的可能是來自語料庫的隨機句子。

輸入層

圖片

模型結(jié)構(gòu)

圖片

經(jīng)典的「預(yù)訓(xùn)練模型+精調(diào)」的范式,主題結(jié)構(gòu)是堆疊的多層 Transformer。

3.3.2 RoBERTa

RoBERTa(Robustly Optimized BERT Pretraining Approach) 并沒有大刀闊斧的改進 BERT,而只是針對 BERT 的每一個設(shè)計細節(jié)進行了詳盡的實驗找到了 BERT 的改進空間。

  • 動態(tài)掩碼:原始方式是構(gòu)建數(shù)據(jù)集的時候設(shè)置好掩碼并固定,改進方式是每輪訓(xùn)練將數(shù)據(jù)輸入模型的時候才進行隨機掩碼,增加了數(shù)據(jù)的多樣性。
  • 舍棄 NSP 任務(wù):通過實驗證明不使用 NSP 任務(wù)對大多數(shù)任務(wù)都能提升性能。
  • 更多訓(xùn)練數(shù)據(jù),更大批次,更長的預(yù)訓(xùn)練步數(shù)。
  • 更大的詞表:使用 SentencePiece 這種字節(jié)級別的 BPE 詞表而不是 WordPiece 字符級別的 BPE 詞表,幾乎不會出現(xiàn)未登錄詞的情況。

3.3.3 ALBERT

BERT 參數(shù)量相對較大,ALBERT(A Lite BERT) 主要目標是減少參數(shù):

  • BERT 的詞向量維度和隱含層維度相同,詞向量上下文無關(guān),而BERT 的 Transformer 層需要并且可以學(xué)習(xí)充分的上下文信息,因此隱含層向量維度應(yīng)遠大于詞向量維度。當增大提高性能時,沒有必要跟著變大,因為詞向量空間對需要嵌入的信息量可能已經(jīng)足夠。
  • 方案:,詞向量通過全連接層變換為H維。
  • 詞向量參數(shù)分解(Factorized embedding parameterization)。
  • 跨層參數(shù)共享(Cross-layer parameter sharing):不同層的Transformer block 共享參數(shù)。
  • 句子順序預(yù)測(sentence-order prediction, SOP),學(xué)習(xí)細微的語義差別及語篇連貫性。

3.4 生成式對抗 - ELECTRA

ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately) 引入了生成器和判別器的模式,把生成式的 Masked language model(MLM) 預(yù)訓(xùn)練任務(wù)改成了判別式的 Replaced token detection(RTD) 任務(wù),判斷當前 token 是否被語言模型替換過,比較類似 GAN 的思想。

圖片

生成器預(yù)測輸入文本中 mask 位置的 token:

圖片

圖片

判別器的輸入是生成器的輸出,判別器預(yù)測各個位置的詞是否是被替換過的:

圖片

此外,還做了些優(yōu)化:

  • 生成器和判別器分別是一個 BERT,縮放了生成器 BERT 參數(shù)。
  • 詞向量參數(shù)分解。
  • 生成器和判別器參數(shù)共享:輸入層參數(shù)共享,包括詞向量矩陣和位置向量矩陣。

在下游任務(wù)只使用判別器,不使用生成器。

3.5 長文本處理 - Transformer-XL

Transformer 處理長文本的常見策略是將文本切分為固定長度的塊,并獨立編碼各個塊,塊與塊之間沒有信息交互。

圖片

為了優(yōu)化對長文本的建模,Transformer-XL 使用了兩個技術(shù):狀態(tài)復(fù)用的塊級別循環(huán)(Segment-Level Recurrence with State Reuse)和相對位置編碼(Relative Positional Encodings)。

3.5.1 狀態(tài)復(fù)用的塊級別循環(huán)

Transformer-XL 在訓(xùn)練的時候也是以固定長度的片段的形式進行輸入的,不同的是 Transformer-XL 的上一個片段的狀態(tài)會被緩存下來然后在計算當前段的時候再重復(fù)使用上個時間片的隱層狀態(tài),賦予了 Transformer-XL 建模更長期的依賴的能力。

長度為 L 的連續(xù)兩個片段 和。的隱層節(jié)點的狀態(tài)表示為,其中 d 是隱層節(jié)點的維度。 的隱層節(jié)點的狀態(tài)的計算過程為:

圖片

片段遞歸的另一個好處是帶來的推理速度的提升,對比 Transformer 的自回歸架構(gòu)每次只能前進一個時間片,Transfomer-XL 的推理過程通過直接復(fù)用上一個片段的表示而不是從頭計算,將推理過程提升到以片段為單位進行推理。

圖片

3.5.2 相對位置編碼

在 Transformer 中,自注意力模型可以表示為:

圖片

的完整表達式為:

圖片

圖片

Transformer 的問題是無論對于第幾個片段,它們的位置編碼 都是一樣的,也就是說 Transformer的位置編碼是相對于片段的絕對位置編碼(absulate position encoding),與當前內(nèi)容在原始句子中的相對位置是沒有關(guān)系的。

Transfomer-XL 在上式的基礎(chǔ)上做了若干變化,得到了下面的計算方法:

圖片

  • 變化1:中,被拆分成立和,也就是說輸入序列和位置編碼不再共享權(quán)值。
  • 變化2:中,絕對位置編碼替換為了相對位置編碼
  • 變化3:中引入了兩個新的可學(xué)習(xí)的參數(shù)來替換和 Transformer 中的 query 向量 。表明對于所有的 query 位置對應(yīng)的 query 位置向量是相同的。即無論 query 位置如何,對不同詞的注意偏差都保持一致。
  • 改進之后,各個部分的含義:
  • 基于內(nèi)容的相關(guān)度(): 計算 query  和 key  的內(nèi)容之間的關(guān)聯(lián)信息
  • 內(nèi)容相關(guān)的位置偏置():計算 query  的內(nèi)容和 key  的位置編碼之間的關(guān)聯(lián)信息
  • 全局內(nèi)容偏置():計算 query  的位置編碼和 key  的內(nèi)容之間的關(guān)聯(lián)信息
  • 全局位置偏置():計算 query  和 key  的位置編碼之間的關(guān)聯(lián)信息

3.6 蒸餾與壓縮 - DistillBert

知識蒸餾技術(shù) (Knowledge Distillation, KD):通常由教師模型和學(xué)生模型組成,將知識從教師模型傳到學(xué)生模型,使得學(xué)生模型盡量與教師模型相近,在實際應(yīng)用中,往往要求學(xué)生模型比教師模型小并基本保持原模型的效果。

DistillBert 的學(xué)生模型:

  • 六層的 BERT, 同時去掉了標記類型向量 (Token-type Embedding, 即Segment Embedding)。
  • 使用教師模型的前六層進行初始化。
  • 只使用掩碼語言模型進行訓(xùn)練,沒有使用 NSP 任務(wù)。

教師模型: BERT-base:

損失函數(shù):

有監(jiān)督 MLM 損失:利用掩碼語言模型訓(xùn)練得到的交叉熵損失:

  • 表示第個類別的標簽,表示學(xué)生模型第個類別輸出的概率。
  • 蒸餾MLM損失:利用教師模型的概率作為指導(dǎo)信號,與學(xué)生模型的概率計算交叉熵損失:

  • 表示教師模型第個類別的標簽。
  • 詞向量余弦損失:對齊教師模型和學(xué)生模型的隱含層向量的方向,從隱含層維度拉近教師模型和學(xué)生模型的距離:

  • 和分別表示教師模型和學(xué)生模型最后一層的隱含層輸出。
  • 最終的損失:

4. 參考資料

??https://luweikxy.gitbook.io/machine-learning-notes/self-attention-and-transformer??

??https://arxiv.org/pdf/1706.03762.pdf??

??https://zhuanlan.zhihu.com/p/38130339??

??https://zhuanlan.zhihu.com/p/184970999??

??https://zhuanlan.zhihu.com/p/466841781??

??https://blog.csdn.net/Dream_Poem/article/details/122768058??

??https://aclanthology.org/N18-1202.pdf??

??https://zhuanlan.zhihu.com/p/350017443??

??https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf??

??https://life-extension.github.io/2020/05/27/GPT技術(shù)初探/language-models.pdf??

??https://arxiv.org/pdf/2005.14165.pdf??

??http://www.4k8k.xyz/article/abc50319/108544357??

??https://arxiv.org/pdf/1906.08237.pdf??

??https://zhuanlan.zhihu.com/p/103201307??

??https://arxiv.org/pdf/1810.04805.pdf??

??https://zhuanlan.zhihu.com/p/51413773??

??https://arxiv.org/pdf/1907.11692.pdf??

??https://zhuanlan.zhihu.com/p/103205929??

??https://arxiv.org/pdf/1909.11942.pdf??

??https://arxiv.org/pdf/2003.10555.pdf??

??https://segmentfault.com/a/1190000041107202??

??https://arxiv.org/pdf/1910.01108.pdf??

??https://zhuanlan.zhihu.com/p/271984518??

??https://aclanthology.org/P19-1285.pdf??

??https://github.com/ZenMoore/zenmoore.github.io/blob/master/_pdfs/%E3%80%8A%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86-%E5%9F%BA%E4%BA%8E%E9%A2%84%E8%AE%AD%E7%BB%83%E6%A8%A1%E5%9E%8B%E7%9A%84%E6%96%B9%E6%B3%95%E3%80%8B%E7%AC%94%E8%AE%B0.pdf??

責(zé)任編輯:未麗燕 來源: 字節(jié)跳動技術(shù)團隊
相關(guān)推薦

2023-11-27 15:34:51

大語言模型PubMedBERT

2018-02-27 09:32:13

神經(jīng)網(wǎng)絡(luò)自然語言初探

2013-04-27 14:32:01

谷歌

2021-06-28 10:10:42

人工智能AI自然語言

2022-03-29 09:58:15

自然語言處理人工智能技術(shù)

2021-05-13 07:17:13

Snownlp自然語言處理庫

2021-01-20 15:41:05

人工智能自然語言技術(shù)

2023-08-03 09:56:47

自然語言AI

2021-05-17 09:00:00

自然語言人工智能技術(shù)

2020-04-24 10:53:08

自然語言處理NLP是人工智能

2024-02-05 14:18:07

自然語言處理

2017-10-19 17:05:58

深度學(xué)習(xí)自然語言

2020-09-27 10:22:20

機器學(xué)習(xí)人工智能計算機

2018-04-04 12:00:00

2017-06-29 13:02:54

大數(shù)據(jù)自然語言NLP

2023-02-13 08:21:25

微服務(wù)架構(gòu)微前端

2024-07-17 11:40:58

2023-05-14 23:42:58

ChatGPTOpenAI自然語言

2009-11-25 14:25:14

PHP自然語言排序

2023-08-07 08:41:45

自然語言模型因果推理
點贊
收藏

51CTO技術(shù)棧公眾號