在 Transformer 架構中,Embedding(嵌入/向量化) 是將離散符號(Token)轉化為連續、稠密、蘊含語義信息的向量表示的關鍵步驟。它不僅是模型理解語言的“詞典”,更是構建高層次語義抽象的基石。本文基于視頻內容,深入剖析 Transformer 中 Embedding 的原理、實現、優化及其深遠影響。
一、Embedding 的本質:從離散符號到連續語義空間
-
核心問題:為什么需要 Embedding?
-
離散性的困境:Token 化后的文本是整數 ID 序列(如
[101, 2054, 2003, 1037, 2307, 102])。這些 ID 本身是離散、無序、無內在語義關聯的(相鄰 ID 不代表語義相似)。模型無法直接從中學習規律。 -
One-Hot 編碼的局限:
-
每個 Token 用一個長度等于詞匯表大小
|V|的向量表示,僅在對應索引處為 1,其余為 0。 -
維度災難:
|V|通常巨大(數萬至數十萬),導致向量極其稀疏且高維。 -
語義隔離:任何兩個詞向量都是正交的,無法表達相似性(如 “貓” 和 “狗” 的相似度與 “貓” 和 “飛機” 一樣為 0)。
-
-
-
Embedding 的解決方案:稠密語義向量
-
核心思想:為詞匯表中的每個 Token 學習一個固定長度的稠密實數向量(如 768 維)。這個向量不再是稀疏的 0/1,而是每個維度都包含有意義的小數。
-
關鍵特性:
-
低維稠密:維度
d_model(如 128, 256, 768, 1024) 遠小于|V|,向量元素大部分非零。 -
語義編碼:向量空間中的幾何關系(距離、方向)編碼了語義和語法關系:
-
相似性:語義相近的詞(如 “貓”/“狗”、“高興”/“快樂”)向量距離較近(余弦相似度高)。
-
類比性:
vec(王) - vec(男人) + vec(女人) ≈ vec(王后)。 -
語法特性:動詞時態(“walk”/“walked”/“walking”)、單復數、詞性等模式可被向量運算捕捉。
-
-
可學習性:這些向量是模型參數的一部分,在訓練過程中通過反向傳播和梯度下降從海量數據中自動學習其數值,以最優地表征語義服務于下游任務。
-
-
二、Embedding 層的實現機制
-
核心操作:查表 (Lookup Table)
-
Embedding 矩陣 (
W_embed): 這是一個形狀為[|V|, d_model]的可學習參數矩陣。-
行數
|V|:詞匯表大小,每一行對應一個 Token 的嵌入向量。 -
列數
d_model:嵌入向量的維度(也是 Transformer 模型的主維度)。
-
-
前向傳播過程:
-
輸入:一個批次的 Token ID 序列 (形狀
[batch_size, seq_len])。 -
操作:對于序列中的每個 Token ID
i,從W_embed中取出第i行向量。 -
輸出:一個形狀為
[batch_size, seq_len, d_model]的 3D 張量。這就是 Transformer 編碼器/解碼的真正輸入。
-
-
-
數學表示:
-
設輸入序列為
X = [x_1, x_2, ..., x_L],其中x_t是第t個位置的 Token ID。 -
則其對應的詞嵌入向量為:
E_word = [W_embed[x_1], W_embed[x_2], ..., W_embed[x_L]]。 -
E_word的形狀為[L, d_model](忽略 batch 維度)。
-
-
關鍵點:
-
參數共享:同一個 Token 在任何位置、任何句子中都被映射到同一個向量(初始時),其語義會通過后續網絡層在不同上下文中動態調整。
-
初始化:通常使用較小的隨機值初始化(如從均值為 0,標準差為 0.02 的正態分布采樣)。
-
可訓練性:
W_embed是模型參數的一部分,會隨著訓練過程不斷更新優化。
-
三、Transformer 中的核心 Embedding 類型
Transformer 的輸入 Embedding 通常是三種嵌入向量的疊加:
-
詞嵌入 (Token Embeddings / Word Embeddings)
-
功能:捕獲 Token 本身的核心語義。
-
實現:如上所述,通過
W_embed查找表實現。 -
示例:
"apple"的向量應包含“水果”、“公司”、“電子產品”等潛在語義信息。
-
-
位置嵌入 (Positional Embeddings)
-
核心問題:Transformer 的自注意力機制本質上是置換不變 (Permutation Invariant) 的。它能看到序列中所有 Token 的關系,但天然地丟失了順序信息。然而,語言是時序依賴的(“貓追老鼠” ≠ “老鼠追貓”)。
-
解決方案:向模型顯式注入 Token 在序列中的絕對位置或相對位置信息。
-
主要方法:
-
絕對位置編碼 (Absolute Positional Encoding - APE) - 原始 Transformer 方案:
-
公式 (正弦/余弦函數):
PE(pos, 2i) = sin(pos / 10000^(2i / d_model)) PE(pos, 2i+1) = cos(pos / 10000^(2i / d_model))
-
pos:Token 在序列中的位置(0, 1, 2, ..., L-1)。 -
i:向量維度的索引(0, 1, ..., d_model/2 - 1)。
-
-
特性:
-
確定性:無需學習,預先計算好一個位置矩陣
[max_len, d_model]。 -
可外推:理論上可表示任意長的位置(雖然實際效果隨長度衰減)。
-
蘊含相對位置:位置
pos + k的編碼可以表示為位置pos編碼的線性變換(證明其能捕獲相對距離)。 -
奇偶維度交替使用 sin/cos:確保每個位置編碼是唯一的,且在不同維度上編碼不同頻率的信息。
-
-
實現:對于長度為
L的序列,生成一個形狀[L, d_model]的位置編碼矩陣E_pos,直接加到詞嵌入E_word上。
-
-
可學習的位置嵌入 (Learned Positional Embeddings) - BERT 等常用:
-
原理:將位置索引(0, 1, ..., max_len-1)也視為一種特殊的 “Token”,為其創建一個單獨的嵌入矩陣
W_pos(形狀[max_len, d_model])。 -
操作:根據位置索引
pos,從W_pos中查找對應的位置向量W_pos[pos],加到詞嵌入上。 -
優缺點:
-
優點:更靈活,可能學到更復雜的、任務特定的位置模式。
-
缺點:只能處理預定義的最大長度
max_len,無法外推;增加了少量參數。
-
-
-
相對位置編碼 (Relative Positional Encoding - RPE) - 如 T5, DeBERTa:
-
核心思想:不關注 Token 的絕對位置
pos,而是關注 Token 對(i, j)之間的相對距離i - j(或j - i)。 -
實現方式多樣:
-
將相對位置信息融入自注意力分數的計算中(修改
Q*K^T項)。 -
學習相對距離
k = i - j的嵌入向量a_{k}(或a_{k}^K,a_{k}^V),在計算 Key/Value 或注意力權重時加入。
-
-
優勢:對處理長序列、泛化到未見過的序列長度更友好;更符合自注意力關注關系的本質。
-
-
旋轉位置嵌入 (Rotary Position Embedding - RoPE) - 如 GPT-J, LLaMA, GLM:
-
創新點:將絕對位置信息通過旋轉矩陣融入到 Query 和 Key 向量中。
-
公式:對位置
m的 Token 的 Queryq_m和 Keyk_n進行旋轉變換:q?_m = R_Θ^m * q_m k?_n = R_Θ^n * k_n
其中
R_Θ^m是一個由位置m和預設旋轉角度Θ決定的旋轉矩陣。 -
特點:顯式引入位置信息,同時保持相對位置內積只依賴于相對距離
m-n的良好性質;在長文本任務中表現很好。
-
-
ALiBi (Attention with Linear Biases) - 如 BLOOM:
-
思想:不修改 Q/K/V 向量,直接在計算注意力分數
softmax(Q*K^T / √d_k)后,給距離遠的 Token 對添加一個負的線性偏置 (penalty):softmax(Q*K^T / √d_k + m * (i - j)),其中m是預設的斜率,(i - j)是相對距離(i > j)。距離越遠,懲罰越大,注意力越弱。 -
優勢:簡單高效,外推能力,能處理遠超訓練長度的序列。
-
-
-
-
段嵌入 (Segment Embeddings / Token Type Embeddings)
-
適用場景:處理成對輸入的任務(如句子對分類:NLI、問答;掩碼語言模型:下一句預測)。
-
功能:區分序列中屬于不同句子/片段的 Token。
-
實現:
-
定義少量段類型(通常是
0和1,分別代表第一句和第二句)。 -
創建一個小的嵌入矩陣
W_seg(形狀[num_seg_types, d_model],通常num_seg_types=2)。 -
為輸入序列中的每個 Token 生成一個段類型 ID 序列(如
[0,0,0, ..., 1,1,1])。 -
根據段類型 ID 查找對應的段嵌入向量
E_seg(形狀[seq_len, d_model])。
-
-
示例 (BERT):
[CLS] I love NLP [SEP] It is fascinating [SEP] Token: CLS I love NLP SEP It is fasc... SEP Seg ID: 0 0 0 0 0 1 1 1 1
-
輸入整合:最終輸入 Transformer 的嵌入是三者之和:
E = E_word + E_pos + E_seg
-
形狀均為
[batch_size, seq_len, d_model],直接相加。
-
-
四、Embedding 層的后續處理
-
層歸一化 (Layer Normalization - LayerNorm):
-
位置:通常在 Embedding 層之后、進入第一個 Transformer 編碼層之前應用。
-
目的:
-
穩定訓練:抵消 Embedding 求和可能帶來的數值范圍變化。
-
加速收斂:對每個 Token 的
d_model維向量進行歸一化(減均值,除以標準差,再縮放和移動),使其落入一個相對穩定的數值范圍。
-
-
公式:
y = γ * (x - μ) / √(σ² + ε) + β
-
x:Token 向量 (形狀[d_model])。 -
μ, σ:該 Token 向量在所有d_model個維度上的均值和標準差。 -
γ, β:可學習的縮放和偏移參數(形狀[d_model])。 -
ε:防止除零的小常數。
-
-
-
Dropout:
-
位置:常應用于 Embedding 輸出
E和 LayerNorm 之后。 -
目的:一種好的正則化技術,在訓練過程中隨機將一部分神經元輸出置零(比例由
dropout_rate控制,如 0.1),防止模型對特定 Embedding 特征過度依賴,提升泛化能力。
-
五、Embedding 的高級特性與影響
-
參數共享:
-
編碼器-解碼共享:在一些 Seq2Seq Transformer(如 T5、BART)中,編碼器和解碼可能共享同一個 Embedding 矩陣 (
W_embed) 和 Softmax 前的投影矩陣。這顯著減少了參數量,并迫使模型學習更通用的表示。 -
跨層共享?:通常不共享,每層有自己的參數。
-
-
跨語言 Embedding (Cross-lingual Embeddings):
-
目標:讓不同語言的詞在同一個向量空間中對齊。
-
方法:
-
共享詞匯表與 Embedding 矩陣:如多語言 BERT (mBERT)、XLM-R。使用 SentencePiece/BBPE 在混合多語料上構建共享詞匯表,所有語言共享同一個
W_embed。模型隱式語言間的對應關系(如 “dog” 和 “perro” 向量接近)。 -
映射 (Mapping):先訓練單語 Embedding(如 Word2Vec),再學習一個線性變換矩陣
W,將一種語言的 Embedding 空間映射到另一種(如W * vec_en(“king”) ≈ vec_es(“rey”))。
-
-
-
Embedding 可視化與分析:
-
降維技術:使用 t-SNE、PCA 將高維 Embedding 降至 2D/3D 進行可視化,觀察詞簇、語義/語法規律。
-
探針任務 (Probing Tasks):設計簡單分類器,測試 Embedding 中是否編碼了特定語言屬性(如詞性、句法樹深度、語義)。
-
-
對模型能力的影響:
-
語義表示基礎:Embedding 的質量直接決定了模型理解詞匯語義的起點。好的 Embedding 能極大加速模型學習復雜語義關系。
-
OOV 處理:子詞 Token 化結合 Embedding 允許模型為未知詞組合出合理的向量表示(基于其子詞 Embedding)。
-
信息瓶頸?:
d_model的維度限制了 Embedding 層能攜帶的信息量。更大的d_model通常能容納更豐富的語義,但也增加計算量和過擬合風險。 -
偏見來源:Embedding 向量從訓練數據中學習,會繼承數據中的社會文化偏見(如性別、種族刻板印象)。緩解偏見是重要研究方向。
-
六、總結與前瞻
Embedding 向量化絕非簡單的查表操作。它是 Transformer 將離散符號世界與連續語義空間相連接的魔法橋梁。通過融合詞嵌入、位置嵌入(及其各種變體如 APE、RoPE、ALiBi)和段嵌入,Transformer 獲得了理解語言序列的結構化、語義化、位置感知的起點。
詞嵌入承zai核心語義,位置嵌入賦予序列靈魂,段嵌入厘清結構邊界。LayerNorm 和 Dropout 則確保了這一輸入的穩定性和泛化性。參數共享、跨語言對齊、可視化分析等高級特性,進一步展現了 Embedding 層的厲害和靈活。
理解 Embedding 技術,是解鎖 Transformer 理解語言奧秘的第一把鑰匙。隨著模型向更大規模、更長上下文、多模態(文本+圖像/音頻/視頻)、更高效架構(如稀疏注意力、混合專家)發展,Embedding 技術也在持續演進:
-
動態/上下文感知 Embedding:Embedding 本身可能不再是靜態查找,而是受上下文影響(如 DeepSeek-V2 的 Multi-Head Latent Embeddings)。
-
更優的位置表示:針對超長文本(100K+ tokens)的新型位置編碼(如 NTK-aware 插值、YaRN)是研究熱點。
-
多模態統一 Embedding:將文本、圖像、語音等不同模態映射到同一語義空間是通用人工智能(AGI)的關鍵挑戰。