LLM主要架構

牛犁heart發表於2024-10-19

LLM本身基於Transformer架構

自2017年,Attention is all you need誕生起,原始的Transformer模型不同領域的模型提供了靈感和啟發

基於原始的Transformer框架,衍生了一系列模型,一些模型僅僅使用encode或decoder,有些模型同時使用encoder + decoder。
image
Transformer 模型圖:
image

LLM 分類一般分為三種:自編碼模型(Encoder)、**自迴歸模型(decoder) **和 序列到序列模型(Encoder-decoder)

自編碼模型(AE, AutoEncoder model)

代表模型BERT

AE模型,代表作BERT,其特點為:Encoder-Only

基本原理:在輸入中隨機MASK掉一部分單詞,更精上下文預測這個詞

AE模型通常用於內容理解任務,比如自然語言理解(NLU)中的分類任務:情感分析、提取式問答

BERT 是2018年10月由Google AI研究院提出的一種預訓練模型

  • BERT全稱為:Bidirectional Encoder Representation from Transformers
  • BERT在機器閱讀理解頂級水平測試SQuAD1.1 中表現出驚人的成績:全部兩個衡量標準上全面超越人類,並且在11種不同NLP測試中創出SOTA表現,包括將GLUE基準推高至80.4%(絕對改進7.6%),MultiNLI準確度達到86.7%(絕對改進5.6%),稱為NLP發展史上里程碑式的模型成就

BERT架構

總體架構:如下圖所示,最左邊的就是BERT的架構圖,一個典型的雙向編碼模型。

image

從上面的架構圖中可以看到,宏觀上BERT分為三個主要模組:

  • 最底層黃色標記的Embedding模組
  • 中間層藍色標記的Transformer模組
  • 最上層綠色標記的預微調模組

Embedding模組

BERT中的該模組是由三種Embedding共同組成而成,如下圖:

image

  • Token Embeddings: 詞嵌入向量,第一個單詞是CLS標誌,可以用於之後的分類任務
  • Segment Embedding:句子分段嵌入張量,是為了服務後續的兩個句子為輸入的預訓練任務
  • Position Embedding: 位置編碼張量
  • 整個Embedding模組的輸出張量就是這三個張量的直接加和結果

雙向Transformer

image

BERT中使用了經典Transformer結構中的Encoder部分,完全捨棄了Decoder部分
兩大訓練任務也集中體現在訓練Transformer模組中

預微調模組

經過中間層Transformer的處理後,BERT的最後一層根據任務的不同需求而作不同的調整即可
image

比如對於sequence-level的分類任務,BERT直接取第一個[CLS] token的final hidden state,再加一個層全連線層後進行softmax來預測最終的標籤

BERT的預預測任務

  • Masked LM(帶mask的語言模型訓練),簡稱MLM

    在原始訓練文字中,隨機的抽取15%的token作為參與MASK任務的物件

    • 80%的機率下,用[MASK]標記替換該token
    • 在10%的機率下,用一個隨機的單詞替換token
    • 在10%的機率下,保持該token不變
  • Next Sentence Prediction(下一句話預測任務),簡稱NSP

    輸入句子對(A, B),模型來預測句子B是不是句子A的真實的下一句話。

    • 所有參與任務訓練的句子都被選中作為句子A
    • 其中50%的B是原始文字中真實跟隨A的下一句話(標記為IsNext,代表正樣本)
    • 其中50%的B是原始文字中隨機抽取的一句話(標記為NotNext,代表負樣本)

資料集與BERT模型的特點

資料集如下:

​ BooksCorpus (800M words) + English Wikipedia (2,500M words)

模型的一些關鍵引數為:
image

AE模型總結

  • 優點

​ BERT使用雙向Transformer,在語言理解相關的任務重表現很好

  • 缺點
    • 輸入噪聲:預訓練-微調存在差異
    • 更適合NLU(自然語言理解)任務,不適合用NLG(自然語言生成)任務

PS

  • 什麼是自編碼?
    答:在輸入中隨機MASK掉一部分單詞,根據上下文預測找個詞

  • BERT模型的核心架構?
    答:Transformer的Encoder模組

  • BERT的預訓練任務?
    答:MLM和NSP

自迴歸模型(AR, AutoRegresive model)

代表模型GPT

AR模型,代表作GPT,其特點為:Decoder-Only
基本原理:從左往右學習的模型,只能利用上文或者下文的資訊。
AR模型通常用於生成式任務,在長文字的生成能力很強,比如自然語言生成(NLG)領域的任務:摘要、翻譯或抽象問答

2018年6月,OpenAI公司發表論文"Improving Language Understanding by Generative Pre-training"(用生成式預訓練提高模型的語言理解力),推出了具有1.17億個引數的GPT(Generative Pre-training,生成式預訓練)模型

GPT模型架構

三個語言模型的對比架構圖,中間為GPT
image

從上圖可看到GPT採用的是 單向Transformer模型,例如給定一個句子\([u_1, u_2, ..., u_n]\) ,GPT在預測單詞\(u_i\)的時候只會利用\([u_1, u_2, ...,u_{(i-1)}]\) 的資訊,而BERT會同時利用上下文的資訊\([u_1, u_2, ...,u_{(i-1)}, u_{i+1},...,u_n]\)

GPT採用了Transformer的Decoder模組,但GPT的Decoder Block和經典Transformer Decoder Block 有所不同
GPT中取消了第二個encoder-decoder attention子層,只保留Masked Multi-Head Attention層和Feed Forward層
PS:
注意:對比於經典的Transformer架構,解碼器模組採用了6個Decoder Block;GPT的架構中採用了12個Decoder Block。

image image

GPT訓練過程

GPT的訓練包括兩個階段過程:1.無監督的預訓練語言模型2.有監督的下游任務fine-tunning
無監督的預訓練語言模型

  • 給定句子\(U = [u_1, u_2, ..., u_n]\),GPT訓練語言模型時的目標是最大化下面的似然函式:

\[L_1(U) = \sum_i{logP(u_i|u_{i-k, ..., u_{i-1};\Theta})} \]

  • 上述公式具體來說是要預測每個詞\(u_i\)的機率,這個機率是基於它前面\(u_{i-k}\)\(u_{i-1}\)個詞,以及模型\(\Theta\),這裡的k代表上文的視窗大小,理論上,k取的越大,模型所能獲取的上文資訊越充足,模型的能力越強。

  • GPT是一個單向語言模型,模型對輸入U進行特徵嵌入得到Transformer第一層的輸入\(h_0\),再經過多層Transformer特徵編碼,使用最後一層的輸出即可得到當前預測的機率分佈,計算過程如下:

\[h_0 = UW_e + W_p \]

$W_p$代表單詞的位置編碼,形狀是[max_seq_len, embedding_dim],
$W_e$的形狀為$[vocab\_size, embedding\_dim]$
  • 得到輸入張量\(h_0\)後,要將\(h_0\)傳入GPT的Decoder Block中,依次得到\(h_t\):

\[h_t = transformer\_block(h_{l-1}) l \in [1, t] \]

  • 最後透過得到的\(h_t\)來預測下一個單詞:

\[P(u) = softmax(h_tW_e^T) \]

有監督的下游任務fine-tunning

  • GPT預訓練後,會針對具體的下游任務隊模型進行微調
    微調採用的是 有監督學習,訓練樣本包括單詞序列\([x_1, x_2, ..., x_n]\)和label y
    GPT微調的目標任務:根據單詞序列\([x_1, x_2, ..., x_n]\)預測標籤y

\[P(y|x^1, ..., x^m) = softmax(h_l^mW_y) \]

其中,\(W_y\)表示預測輸出的矩陣引數,微調任務的目標是最大化下面的函式:

\[L_2 = \sum_{(x,y)}log{P(y|x^1, ..., x^m)} \]

綜合兩個階段的目標任務函式,可知GPT的最終最佳化函式為:

\[L_3 = L_2 + \lambda L_1 \]

整體訓練過程架構圖
根據下游任務適配的過程分兩步:

    1. 根據任務定義不同輸入
    1. 對不同任務增加不同的分類層
      具體定義可以參見下圖:
      image

GTP資料集

GPT使用了BooksCorpus資料集,文字大小約5GB,包含7400W+的句子。這個資料集由7000本獨立的、不同風格型別的書籍組成,選擇該部分資料集的原因:

    1. 書籍文字包含大量高質量長句,保證模型學習長距離資訊依賴
    1. 書籍未開源公佈,所以很難在下游資料集上見到,更能體驗模型的泛化能力

GPT模型的特點

模型的一些關鍵引數為:
image

優點

  • GPT在9個任務上的表現sota
  • 更易於並行化

缺點

  • GPT語言模型是單向的
  • 針對不同的任務,需要不同資料集進行模型微調,相對比較麻煩

PS

  • 什麼是自迴歸模型?
    答:從左往右學習的模型,只能利用上文或下文的資訊

  • GPT模型的核心架構?
    答:transformer 的Decoder模組(去除中間的第二個子層)

  • GPT的預訓練任務?
    答:無監督的預訓練 和 有監督任務的微調

序列到序列模型(Sequence to Sequence Model)

代表模型T5

encoder-decoder模型同時使用編碼器和解碼器,它將每個task視作序列到序列的轉換/生成(比如,文字到文字,文字到影像或影像到文字的多模態任務)。Encoder-decoder模型通常用於需要內容理解和生成的任務如機器翻譯

T5由谷歌提出,該模型的目的是構建任務統一框架:將所有NLP任務都視為文字轉換任務
image
透過這樣的方式就能將NLP任務轉換為Text-to-Text形式,也就可以用同樣的模型,同樣的損失函式,同樣的訓練過程,同樣的解碼過程來完成所有NLP任務。

T5模型架構與訓練過程

T5模型結構與原始的Transformer基本一致,除了做了以下幾點改動:

  • 採用了簡化版的Layer Normalization,去除了Layer Norm的bias;將Layer Norm放在殘差連線外面

  • 位置編碼:T5使用了一種簡化版的相對位置編碼,即每個位置編碼都是一個標量,被加在logits上用於計算注意力權重。各層共享位置編碼,但是在同一層內,不同的注意力頭的位置編碼都是獨立學習的。

自監督預訓練
採用類似於Bert模型的MLM預訓練任務

多工預訓練
除了使用大規模資料進行無監督預訓練,T5模型還可以利用任務的標註資料進行有監督的多工預訓練,例如SQuAD問答和機器翻譯等任務

T5資料集與模型的特點

  • T5 資料集
    作者對公開爬取的頁面資料集Common Crawl進行過濾,去掉一些重複的、低質量的、看起來像程式碼的文字等,並且最後只保留英文文字,得到資料集 C4:the Colossal Clean Crawled Corpus
  • 模型的一些關鍵引數:
    image

PS

  • 什麼是序列到序列模型?
    答:同時使用編碼器和解碼器,它將每個task視作序列到序列的轉換/生成

  • T5模型的核心架構?
    答: Transformer

  • T5的預訓練任務?
    答: 採用類似於Bert模型的MLM預訓練任務和多工預訓練

相關文章