【NLP面試QA】預訓練模型

自迴歸語言模型與自編碼語言

  • 自迴歸語言模型分佈式

    • 經過給定文本的上文,對下一個字進行預測
    • 優勢:對文本序列聯合機率的密度估計進行建模,使得該模型更適用於一些生成類的NLP任務,由於這些任務在生成內容的時候就是從左到右的,這和自迴歸的模式自然匹配。
    • 缺點:聯合機率是按照文本序列從左至右進行計算的,所以沒法提取下文信息;
    • 表明模型:ELMo/GPT1.0/GPT2.0/XLNet(XLNet 作了些改進使得可以提取到下文特徵)
  • 自編碼語言模型性能

    • 其經過隨機 mask 掉一些單詞,在訓練過程當中根據上下文對這些單詞進行預測,使預測機率最大化。其本質爲去噪自編碼模型,加入的 [MASK] 即爲噪聲,模型對 [MASK] 進行預測即爲去噪。
    • 優勢:可以利用上下文信息獲得雙向特徵表示
    • 缺點:其引入了獨立性假設,即每一個 [MASK] 之間是相互獨立的。這其實是語言模型的有偏估計,另外,因爲預訓練中 [MASK] 的存在,使得模型預訓練階段的數據與微調階段的不匹配,使其難以直接用於生成任務。
    • 表明模型:Bert/Roberta/ERNIE

Bert

Bert 中的預訓練任務
Masked Language Model

在預訓練任務中,15%的 Word Piece 會被 mask,這15%的 Word Piece 中,80%的時候會直接替換爲 [Mask] ,10%的時候將其替換爲其它任意單詞,10%的時候會保留原始Token學習

  • 沒有 100% mask 的緣由
    • 若是句子中的某個Token100%都會被mask掉,那麼在fine-tuning的時候模型就會有一些沒有見過的單詞
  • 加入 10% 隨機 token 的緣由
    • Transformer 要保持對每一個輸入token的分佈式表徵,不然模型就會記住這個 [mask] 是token ’hairy‘
    • 另外編碼器不知道哪些詞須要預測的,哪些詞是錯誤的,所以被迫須要學習每個 token 的表示向量
  • 另外,每一個 batchsize 只有 15% 的單詞被 mask 的緣由,是由於性能開銷的問題,雙向編碼器比單項編碼器訓練要更慢
Next Sentence Prediction

僅僅一個MLM任務是不足以讓 BERT 解決閱讀理解等句子關係判斷任務的,所以添加了額外的一個預訓練任務,即 Next Sequence Prediction。編碼

具體任務即爲一個句子關係判斷任務,即判斷句子B是不是句子A的下文,若是是的話輸出’IsNext‘,不然輸出’NotNext‘。spa

訓練數據的生成方式是從平行語料中隨機抽取的連續兩句話,其中50%保留抽取的兩句話,它們符合IsNext關係,另外50%的第二句話是隨機從預料中提取的,它們的關係是NotNext的。這個關係保存在圖4中的[CLS]符號中3d

但實際上這個任務是過於簡單了的,對於模型的預訓練並無太大的幫助,在 Roberta 的模型中將其去掉了orm

Bert 的 Embedding

BERT的輸入表徵由三種Embedding求和而成:對象

  • Token Embeddings:即傳統的詞向量層,每一個輸入樣本的首字符須要設置爲 [CLS],能夠用於以後的分類任務,如有兩個不一樣的句子,須要用 [SEP] 分隔,且最後一個字符須要用 [SEP] 表示終止
  • Segment Embeddings:爲 \([0, 1]\) 序列,用來在 NSP 任務中區別兩個句子,便於作句子關係判斷任務
  • Position Embeddings:與 Transformer 中的位置向量不一樣,BERT 中的位置向量是直接訓練出來的
BERT-wwm
  • Whole Word Masking 即全詞 Mask,打破了傳統 Bert 的獨立性假設,即每一個 [MASK] 之間是相互獨立的。這使得同一個詞中不一樣字符的預測的上下文語境是相同的,增強同一個詞不一樣字符之間的相關性。
Roberta 與 Bert 的區別
  • 訓練參數通過了仔細的挑參,訓練數據更大,訓練 Batch Size 更大
  • 認爲 Next Sentence Prediction 任務沒有太大幫助,將 NSP loss 去掉,輸入改成從一個文檔中連續抽取句子,當到達文檔末尾時,加一個分隔符再抽樣下一個文檔的句子。
  • Bert 的語料在預處理的時候就會被 Mask,在訓練階段保持不變;而 Roberta 中改成動態的 Mask,使得每次讀取到的數據都不同(具體是將數據複製10遍,統一隨機 Mask)
ERNIE 與 Bert 的區別

因爲 Bert 僅對單個的字符進行 Mask 很容易使得模型提取到字搭配的低層次的語義特徵,而對於短語和實體層次的語義信息抽取能力較弱。所以將外部知識引入到預訓練任務中,主要有三個層次的預訓練任務blog

  • Basic-Level Masking: 跟bert同樣對單字進行mask,很難學習到高層次的語義信息;
  • Phrase-Level Masking: 輸入仍然是單字級別的,mask連續短語;
  • Entity-Level Masking: 首先進行實體識別,而後將識別出的實體進行mask。

XLNet

XLNet 針對自迴歸語言模型單向編碼以及 BERT 類自編碼語言模型的有偏估計的缺點,提出了一種廣義自迴歸語言預訓練方法。
遞歸

排列語言模型(Permutation Language Model,PLM)

經過引入一個排列語言模型,但願語言模型用自迴歸的方法從左往右預測下一個字符的時候,不只要包含上文信息,同時也要可以提取到對應字符的下文信息,且不須要引入Mask符號。

首先將句子進行重排列,重排列後的末尾幾個字就可以看見其以後的一些詞,根據可以看到的對象進行相應的 Mask 便可。在實現上是經過對 Attention 矩陣增長掩碼來選擇哪些詞可以被看見哪些詞不可以被看見的。

雙流注意力機制(Two-Stream Self-Attention)

因爲咱們有多層的 Transformer,須要在最後一層預測最末尾的幾個字,好比最大長度爲 512,最後一層只須要預測最後 10 個詞,咱們須要全部字的信息都能傳輸到最後一層,但又但願最後在預測某個字的時候看不到這個字的信息,所以引入了雙流注意力機制

Query Stream 的掩碼矩陣中僅傳輸位置信息,用於代表預測順序是什麼樣的;Content Stream 與傳統的 Transformer 一致,包括內容信息和位置信息,確保全部的字信息都能傳輸到最後一層。個 Attention Stream 的區別僅在於掩碼是否能看見本身,以及輸入一個是僅有位置信息,另外一個是包括位置和內容信息。

部分預測(Partial Prediction)

若是重排列以後對全部字都進行預測的話模型難以收斂(多是前幾個字看到的字的個數太少),計算量也大。所以僅對最後 15% 的字進行預測

Transformer-XL

傳統的 Transformer 的輸入長度限制在 512,更長的文本信息模型是學不到的。

  • 片斷遞歸機制(segment-level recurrence mechanism):指的是當前時刻的隱藏信息在計算過程當中,將經過循環遞歸的方式利用上一時刻較淺層的隱藏狀態(上一時刻的隱藏狀態均存儲到一個臨時存儲空間中),這使得每次的計算將利用更大長度的上下文信息,大大增長了捕獲長距離信息的能力。
  • 相對位置編碼(Relative Positional Encodings):採用了片斷遞歸機制以後,不一樣片斷的位置信息是同樣的而後疊加在了一塊兒,這是不合適的,所以提出了相對位置編碼的方式來替代絕對位置編碼

ALBERT

ALBERT 貢獻在於,其提出了兩種模型參數縮減的技術,使得在減少模型重量的同時,模型性能不會受到太大的影響。

對Embedding因式分解

採用了一個因式分解的方式對 Embedding 層的矩陣進行壓縮。簡單來講,就是先將 one-hot 映射到一個低維空間 \(E\),而後再將其從低維空間映射到高維空間 \(H\),即參數量的變化爲 \(O(V \times H) => O(V \times E + E \times H)\),且論文也用實驗證實,Embedding的參數縮減對整個模型的性能並無太大的影響

跨層參數共享

多層 Transformer 共享參數,提升參數利用率,使得參數量獲得有效的減小。(參數共享的對象爲 Transformer 中的 feed-forward layer 參數和 self-attention 的參數)

句間連貫性損失

ALBERT 針對預訓練任務中的 NSP 任務進行改進,即句間連貫性判斷。NSP 任務僅需判斷兩個文段是不是一個主題便可,該任務太簡單了。句間連貫性判斷任務須要判斷兩個文段的順序是否顛倒,強迫模型去學習文段的語意,這相比於 NSP 任務更加巧妙。

相關文章
相關標籤/搜索