NLP預訓練模型+模型蒸餾與壓縮


一、分布式詞表示(直接使用低維、稠密、連續的向量表示詞)(靜態的表示)

1、Word2Vec

  • 訓練方法:用中心詞預測周圍詞。
  • 局限性:Word2Vec產生的詞向量只有每個單詞獨立的信息,而沒有上下文的信息。

 2、Glove

  • Global Vector for Word Representation 利用全局統計信息,即共現頻次。
  • 構建共現矩陣:共現強度按照距離進行衰減。

二、詞向量(動態的表示)

1、Cove(Contextualized WordVectors)

  • 首次提出使用上下文相關的文本表示
  • 主要思想:將神經機器翻譯(NMT)的表示遷移到通用NLP任務上
  • 訓練階段:訓練一個神經機器翻譯模型(NMT)
  • 局限性:訓練依賴於雙語平行語料、單獨使用效果一般,性價比不高,需要搭配傳統靜態詞向量才能獲得較為顯著的性能提升

2、語言模型(BiLM、GPT、ELMo、BERT、XLNet、RoBERTa、ALBERT、Google T5、ELECTRA)

2.1、BiLM(雙向語言模型)

  • 從前向后兩個方向同時建立語言模型

2.2、ELMo

  • 三層雙向LSTM語言模型(與當時使用越來越復雜的模型來得到好一點效果的模型相比是非常簡單的模型)
  • 預訓練任務:雙向語言模型

2.3、GPT(Generative Pre-Training)

  • Transformer的decoder
  • 自回歸預訓練模型的代表
  • “生成式預訓練”+“判別式近精調”框架
  • “生成式預訓練”:在大規模文本數據上訓練一個高容量的語言模型;“判別式近精調”:將訓練好的模型適配到下游任務中,並使用由標注數據學習判別式任務。

2.4、BERT

  • Transformer的encoder(Encoded是可以並行計算的,LSTM是從左往右一步步計算的)
  • 自編碼預訓練模型代表
  • 模型層數更深:24層Transformer(每一層都有不同的參數)
  • 訓練數據量很大,TPU大算力加持
  • 預訓練任務:Masked Language Model(MLM,掩碼語言模型)、Next Sentence Prediction(NSP,下一個句子預測)
  • GPT:單向的從左至右的Transformer語言模型。
  • ELMo:將獨立的前向和后向的LSTM語言模型拼接所得。
  • BERT:雙向Transformer語言模型。

2.5、XLNet(Transformer-XL Net)

  • 雙流自注意力機制,可以捕獲雙向上下文的基於自回歸的語言模型建模方法。
  • 解決了BERT中存在的“預訓練-精調”不一致的問題

2.6、RoBERTa(加強版EBERT)

  • 加大訓練數據16GB->160GB,更大的batch size,更長的訓練時間
  • 不需要NSP Loss
  • 更長的訓練Sequence
  • Static -> Dynamic Masking (動態掩碼,每次是不同的單詞mask)

 2.7、ALBERT

  • 一個輕量級的BERT模型(A Lite BERT)
  • 主要技術:詞向量因式分解、跨層參數共享(24層用相同的參數,把參數量減小)
  • 詞向量因式分解:O(V * H)-> O(V*E+E*H)在BERT中,embedding_size==hidden_size;在ALBERT中,embedding_size<hidden_size.
  • 訓練時雖然參數共享,但每層的梯度是不同的,仍然需要額外的存儲空間存儲;推斷時,前向計算仍然一層層展開,並不能節省推斷時間。

 2.8、Google T5

  • 非常大規模且干凈的預訓練數據集 C4(745GB)
  • BERT的訓練目標
  • 隨機采樣15%的span作為mask
  • 更大的模型T5-11B

2.9、ELECTRA

  • 一個新的思路:使用GAN的訓練思路(一個生成器、一個判別器),把生成式的Masked language model(MLM)預訓練任務改成了判別式的Replaced token detection(RTD)任務,判斷當前token是否被語言模型替換過。

    

  • 對於一段文本,我們隨機Mask一些單詞。Generator會預測這些被Mask的位置。
  • Discrimnator的任務是預測測每個位置的單詞是來自於原文還是來自於Generator生成的文本。

3、長文本處理

3.1、Transformer-XL

  • Transformer中處理長文本的傳統策略是將文本切分成固定長度的塊,並單獨編碼每個塊,塊與塊之間沒有信息交互。
  • Transformer-XL提出兩種該進策略:狀態復用的塊級別循環、相對位置編碼。

3.2、Reformer

  • 引入了局部敏感哈希注意力(LSH)和可逆Transformer技術,有助於減少模型的內存占用,進一步提升了模型對長文本的處理能力。
  • LSH:高效計算與每個詞關聯度最高的n個詞。

3.3、Longformer

  • 基於稀疏注意力機制。最大可處理長度擴展至4096
  • 三種稀疏注意力模式:滑動窗口注意力、擴張滑動窗口注意力、全局+滑動窗口

3.4、BigBird

  • 同樣借鑒了稀疏注意力的方法:結合了三種不同注意力模式:隨機注意力、滑動窗口注意力、全局注意力。

 

三、模型蒸餾與壓縮

1、為什么需要蒸餾?

  預訓練模型通常需要占用很大的空間,並且訓練和推斷時間也很慢;直接在實際產品或應用中使用預訓練模型難以滿足時間和空間需求;知識蒸餾技術可以在不損失或少量損失性能的基礎上,將大模型的知識遷移到小模型,從而提升推斷速度。

2、DistilBERT

  • 通用、任務無關的BERT(6層),相比BERT-base,小40%,快60%,在NLU任務上可達到原模型的97%。
  • 使用MLM預訓練任務進行知識蒸餾(無NSP)。
  • 訓練目標:由數據集自帶的硬標簽計算的有監督MLM損失、由教師模型提供的軟標簽計算的蒸餾MLM損失、教師模型和學生模型隱層輸出之間的余弦相似度損失。
  • 總損失:有監督的MLM損失+蒸餾MLM損失+詞向量余弦損失。

3、TinyBERT

  • 對BERT不同層進行匹配的蒸餾策略。
  • 提出了兩階段蒸餾策略,在預訓練和精調階段均進行知識蒸餾。
  • TinyBERT能達到教師模型BERT-base的96%的效果(GLUE),大小只有教師的13.3%
  • 蒸餾的損失由三部分組成:詞向量損失、中間層損失、預測層損失。

4、MobileBERT

  • 在自注意力和前饋神經網絡的設計上也有一定的改進,與BERT-large深度相同但更“苗條”。
  • 蒸餾損失:MLM損失+隱含層匹配損失+注意力匹配損失。
  • 漸近式知識遷移:
  1. 詞向量層和最終分類輸出層的權重是直接從教師模型拷貝至學生模型的,始終不參與參數更新;
  2. 對於中間的Transformer層,采用了漸近式逐步訓練;
  3. 當學生模型學習教師模型的第X層時,學生模型中是所有小於X層的權重均不參與更新。

5、TextBrewer(An Open-Source Knowledge Distillation Toolkit)

  •  推出首個面向自然語言處理領域的基於Pythorch的知識蒸餾工具包。
  • 准備工作:訓練教師模型,定義並初始化學生模型。構造蒸餾用數據集的DataLoader.
  • 知識蒸餾:初始化Distiller,構造訓練配置和蒸餾配置。定義adaptors和callback,分別用於適配模型輸入輸出和訓練過程中的回調。調用Distiller的train方法開始蒸餾。

 

四、生成模型

1、BART

  • 采用了經過細微調整的基於Transformer的序列到序列結構。
  • 結合雙向的Transformer編碼器與單向的自回歸Transformer解碼器,通過對含有噪聲的輸入文本去噪重構進行預訓練,是一種典型的去噪自編碼器。
  • 訓練過程:雙向編碼器編碼帶噪音的文本,用單向自回歸編碼器重構文本。
  • 預訓練任務:單詞掩碼、單詞刪除、句子排列變換、文檔旋轉變換、文本填充
  • 模型精調:序列分類、序列標注、文本生成、機器翻譯

2、UniLM

  • 只用一個Transformer就可以同時完成語言表示和文本生成的預訓練。
  • 可同時應用於語言理解任務和文本生成任務。
  • 核心思想:使用不同的注意力掩碼矩陣,控制每個詞的注意力范圍,從而實現不同的語言模型對於信息流的控制。
  • 可以利用雙向語言模型,單向語言模型、序列到序列語言模型進行預訓練。

3、T5(Text-to-Text Transfer Transformer)

  • 提出了一種適用於各種類型的NLP任務的Encoder-Decoder框架。
  • 提供了非常細致的模型設計決策過程。
  • 提出了C4數據集,包含750G高質量英文數據。
  • 提出了一種基於span-corruption的無監督訓練任務。
  • input:對句子的若干文本片段進行mask;output:預測被mask的文本片段

4、GPT-3(Language Models are Few-Shot Learners)

  • 展示了超大規模語言模型在小樣本學習few-shot learning上的能力。
  • 模型參數量進一步擴展至175B,預示着預訓練進入到超大規模時代。
  • 傳統預訓練模型:直接在下游任務數據上精調。
  • GPT-3類超大規模模型:zero-shot、one-shot、few-shot

5、可控文本生成:CTRL

  • 可以根據指定的領域、風格、主題、實體和實體關系等屬性生成相應文本。結構上仍然是一個基於Transformer的自回歸語言模型。
  • 核心思想:從海量無標注數據中定位文章所在的領域或其他屬性,並作為控制代碼,放在輸入文本的頭部,以指導后續文本的生成。

6、可控文本生成:PPLM

  • 提供一種無需重新訓練,且即插即用的方法實現可控的文本生成。
  • 核心思想:對於預訓練語言模型(GPT-2)以及目標屬性a,利用當前的生成結果是否滿足屬性a,對生成進行修正,使其朝着滿足該屬性的方向變化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM