本文將從Transformer的本質、Transformer的原理、Transformer架構改進三個方面,帶您一文搞懂Transformer。

Transformer架構:主要由輸入部分(輸入輸出嵌入與位置編碼)、多層編碼器、多層解碼器以及輸出部分(輸出線性層與Softmax)四大部分組成。

Transformer架構
輸入部分:
源文本嵌入層:將源文本中的詞匯數字表示轉換為向量表示,捕捉詞匯間的關系。
位置編碼器:為輸入序列的每個位置生成位置向量,以便模型能夠理解序列中的位置信息。
目標文本嵌入層(在解碼器中使用):將目標文本中的詞匯數字表示轉換為向量表示。
編碼器部分:
由N個編碼器層堆疊而成。
每個編碼器層由兩個子層連接結構組成:第一個子層是一個多頭自注意力子層,第二個子層是一個前饋全連接子層。每個子層后都接有一個規范化層和一個殘差連接。
解碼器部分:
由N個解碼器層堆疊而成。
每個解碼器層由三個子層連接結構組成:第一個子層是一個帶掩碼的多頭自注意力子層,第二個子層是一個多頭注意力子層(編碼器到解碼器),第三個子層是一個前饋全連接子層。每個子層后都接有一個規范化層和一個殘差連接。
輸出部分:
線性層:將解碼器輸出的向量轉換為最終的輸出維度。
Softmax層:將線性層的輸出轉換為概率分布,以便進行最終的預測。
Encoder-Decoder(編碼器-解碼器):左邊是N個編碼器,右邊是N個解碼器,Transformer中的N為6。

Encoder-Decoder(編碼器-解碼器)
?
Encoder(編碼器)架構

Decoder(解碼器)架構

Transformer工作原理
Multi-Head Attention(多頭注意力):它允許模型同時關注來自不同位置的信息。通過分割原始的輸入向量到多個頭(head),每個頭都能獨立地學習不同的注意力權重,從而增強模型對輸入序列中不同部分的關注能力。

Multi-Head Attention(多頭注意力)
輸入線性變換:對于輸入的Query(查詢)、Key(鍵)和Value(值)向量,首先通過線性變換將它們映射到不同的子空間。這些線性變換的參數是模型需要學習的。
分割多頭:經過線性變換后,Query、Key和Value向量被分割成多個頭。每個頭都會獨立地進行注意力計算。
縮放點積注意力:在每個頭內部,使用縮放點積注意力來計算Query和Key之間的注意力分數。這個分數決定了在生成輸出時,模型應該關注Value向量的部分。
注意力權重應用:將計算出的注意力權重應用于Value向量,得到加權的中間輸出。這個過程可以理解為根據注意力權重對輸入信息進行篩選和聚焦。
拼接和線性變換:將所有頭的加權輸出拼接在一起,然后通過一個線性變換得到最終的Multi-Head Attention輸出。
Scaled Dot-Product Attention(縮放點積注意力):它是Transformer模型中多頭注意力機制的一個關鍵組成部分。

Scaled Dot-Product Attention(縮放點積注意力)
Query、Key和Value矩陣:
Query矩陣(Q):表示當前的關注點或信息需求,用于與Key矩陣進行匹配。
Key矩陣(K):包含輸入序列中各個位置的標識信息,用于被Query矩陣查詢匹配。
Value矩陣(V):存儲了與Key矩陣相對應的實際值或信息內容,當Query與某個Key匹配時,相應的Value將被用來計算輸出。
點積計算:
縮放因子:
Softmax函數:
加權求和:
BERT:BERT是一種基于Transformer的預訓練語言模型,它的最大創新之處在于引入了雙向Transformer編碼器,這使得模型可以同時考慮輸入序列的前后上下文信息。

BERT架構
輸入層(Embedding):
Token Embeddings:將單詞或子詞轉換為固定維度的向量。
Segment Embeddings:用于區分句子對中的不同句子。
Position Embeddings:由于Transformer模型本身不具備處理序列順序的能力,所以需要加入位置嵌入來提供序列中單詞的位置信息。
編碼層(Transformer Encoder):BERT模型使用雙向Transformer編碼器進行編碼。
輸出層(Pre-trained Task-specific Layers):
GPT:GPT也是一種基于Transformer的預訓練語言模型,它的最大創新之處在于使用了單向Transformer編碼器,這使得模型可以更好地捕捉輸入序列的上下文信息。

GPT架構
輸入層(Input Embedding):
編碼層(Transformer Encoder):GPT模型使用單向Transformer編碼器進行編碼和生成。
輸出層(Output Linear and Softmax):
該文章在 2025/6/18 9:02:38 編輯過