本文將從Transformer的本質(zhì)、Transformer的原理、Transformer架構(gòu)改進(jìn)三個(gè)方面,帶您一文搞懂Transformer。

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

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

Encoder-Decoder(編碼器-解碼器)
Encoder編碼器:
Transformer中的編碼器部分一共6個(gè)相同的編碼器層組成。
每個(gè)編碼器層都有兩個(gè)子層,即多頭自注意力層(Multi-Head Attention)層和逐位置的前饋神經(jīng)網(wǎng)絡(luò)(Position-wise Feed-Forward Network)。在每個(gè)子層后面都有殘差連接(圖中的虛線)和層歸一化(LayerNorm)操作,二者合起來稱為Add&Norm操作。
?
Encoder(編碼器)架構(gòu)
Decoder解碼器:
Transformer中的解碼器部分同樣一共6個(gè)相同的解碼器層組成。
每個(gè)解碼器層都有三個(gè)子層,掩蔽自注意力層(Masked Self-Attention)、Encoder-Decoder注意力層、逐位置的前饋神經(jīng)網(wǎng)絡(luò)。同樣,在每個(gè)子層后面都有殘差連接(圖中的虛線)和層歸一化(LayerNorm)操作,二者合起來稱為Add&Norm操作。

Decoder(解碼器)架構(gòu)

Transformer工作原理
Multi-Head Attention(多頭注意力):它允許模型同時(shí)關(guān)注來自不同位置的信息。通過分割原始的輸入向量到多個(gè)頭(head),每個(gè)頭都能獨(dú)立地學(xué)習(xí)不同的注意力權(quán)重,從而增強(qiáng)模型對(duì)輸入序列中不同部分的關(guān)注能力。

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

Scaled Dot-Product Attention(縮放點(diǎn)積注意力)
Query、Key和Value矩陣:
Query矩陣(Q):表示當(dāng)前的關(guān)注點(diǎn)或信息需求,用于與Key矩陣進(jìn)行匹配。
Key矩陣(K):包含輸入序列中各個(gè)位置的標(biāo)識(shí)信息,用于被Query矩陣查詢匹配。
Value矩陣(V):存儲(chǔ)了與Key矩陣相對(duì)應(yīng)的實(shí)際值或信息內(nèi)容,當(dāng)Query與某個(gè)Key匹配時(shí),相應(yīng)的Value將被用來計(jì)算輸出。
點(diǎn)積計(jì)算:
縮放因子:
Softmax函數(shù):
加權(quán)求和:
三、Transformer架構(gòu)改進(jìn)
BERT:BERT是一種基于Transformer的預(yù)訓(xùn)練語言模型,它的最大創(chuàng)新之處在于引入了雙向Transformer編碼器,這使得模型可以同時(shí)考慮輸入序列的前后上下文信息。

BERT架構(gòu)
輸入層(Embedding):
Token Embeddings:將單詞或子詞轉(zhuǎn)換為固定維度的向量。
Segment Embeddings:用于區(qū)分句子對(duì)中的不同句子。
Position Embeddings:由于Transformer模型本身不具備處理序列順序的能力,所以需要加入位置嵌入來提供序列中單詞的位置信息。
編碼層(Transformer Encoder):BERT模型使用雙向Transformer編碼器進(jìn)行編碼。
輸出層(Pre-trained Task-specific Layers):
MLM輸出層:用于預(yù)測(cè)被掩碼(masked)的單詞。在訓(xùn)練階段,模型會(huì)隨機(jī)遮蓋輸入序列中的部分單詞,并嘗試根據(jù)上下文預(yù)測(cè)這些單詞。
NSP輸出層:用于判斷兩個(gè)句子是否為連續(xù)的句子對(duì)。在訓(xùn)練階段,模型會(huì)接收成對(duì)的句子作為輸入,并嘗試預(yù)測(cè)第二個(gè)句子是否是第一個(gè)句子的后續(xù)句子。
GPT:GPT也是一種基于Transformer的預(yù)訓(xùn)練語言模型,它的最大創(chuàng)新之處在于使用了單向Transformer編碼器,這使得模型可以更好地捕捉輸入序列的上下文信息。

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