Transformer 学习笔记(一):Embedding 原理详解 Transformer 学习笔记一Embedding 原理详解本笔记适合作为学习 Transformer、BERT、GPT、ViT 的第一部分内容。一、什么是 Embedding一句话概括Embedding 是把离散的 Token文字、单词、Patch 等映射成连续向量的过程。例如原始文本我 爱 AITokenizer 后我 → 5 爱 → 18 AI → 103神经网络不能直接理解这些 ID因此需要进一步转换成向量5 ↓ [0.13, -0.42, 0.56, ..., 768] 18 ↓ [-0.21, 0.88, ..., 768] 103 ↓ [0.37, -0.15, ..., 768]Transformer 后续处理的不是文字而是这些向量。二、为什么不能直接使用 Token ID例如TokenID猫0狗1汽车2如果直接输入猫 → 0 狗 → 1 汽车 → 2模型会错误地认为汽车 狗 猫甚至认为汽车 猫 × 2但这些数字只是编号没有任何语义。因此Token ID 只是索引不是特征。三、什么是 Vocabulary词表Tokenizer 会先统计训练语料中的所有 Token。例如我 爱 AI 我 学习 深度学习 AI 很 有趣最终得到TokenID我0爱1AI2学习3深度学习4很5有趣6假设共有Vocabulary Size 7每个 Token 都有唯一 ID。四、Embedding Matrix 是什么Embedding 本质就是一个可学习的查找表Lookup Table假设Vocabulary Size 7Embedding Dimension 4那么Embedding Matrix 4维 ┌────────────────────┐ 我 │0.1 0.5 -0.2 1.0│ 爱 │0.3 -0.1 0.8 0.2│ AI │0.7 0.9 -0.5 0.4│ 学习 │... │ 深度学习 │... │ 很 │... │ 有趣 │... │ └────────────────────┘矩阵大小Vocabulary Size × Embedding Dimension例如 GPT50000 × 768五、Embedding 是如何工作的输入我 爱 AITokenizer5 18 103Embedding 层只是查表Embedding[5] Embedding[18] Embedding[103]得到[ x1, x2, x3 ]因此Embedding 层本身几乎没有复杂计算只是查表。六、Embedding 的维度768到底是什么很多人误以为第1维颜色 第2维动物 第3维大小 ...实际上这是错误的。例如猫 ↓ [0.28, -1.31, 0.65, ... 768个数字]这里没有任何一维可以单独解释。真正的含义是整个768维向量共同表示猫这个概念。因此768维不是768个独立属性。而是768个数字共同组成一个语义表示。七、为什么选择768维Embedding 维度不是数据决定的。而是模型设计者设定的超参数Hyperparameter例如模型Embedding DimensionBERT Base768BERT Large1024GPT-2 Small768GPT-2 XL1600Llama2-7B4096GPT-312288模型越大通常Embedding 维度越大。因为表达能力更强。但参数量也更多。八、Embedding 为什么不能全部初始化成0训练开始时Embedding Matrix 是随机初始化Random Initialization例如我 ↓ [0.12 -0.45 0.67 0.21] AI ↓ [-0.52 0.06 0.94 -0.81]如果全部初始化为[0 0 0 0]那么所有 Token 完全一样。梯度完全一致。模型永远无法区分不同 Token。这就是神经网络中的对称性Symmetry问题。因此Embedding 必须随机初始化。九、Embedding 是如何学习的假设训练 GPT输入我 爱 AI真实答案很好训练过程文本 │ ▼ Tokenizer │ ▼ Token ID │ ▼ Embedding Lookup │ ▼ Transformer │ ▼ 预测下一个Token │ ▼ 计算Loss │ ▼ Backpropagation │ ▼ 更新EmbeddingEmbedding Matrix 中对应 Token 的向量会不断更新。更新公式New Embedding Old Embedding - Learning Rate × Gradient经过数十亿次训练Embedding 就逐渐具有了语义。十、为什么猫和狗越来越近例如训练数据猫 会 喵喵叫 狗 会 汪汪叫 猫 是 动物 狗 是 动物 猫 喜欢 鱼 狗 喜欢 骨头可以发现猫和狗总是出现在相似上下文。因此反向传播得到的梯度也十分相似。不断更新后猫 ↓ [1.31 -0.82 0.44 ...] 狗 ↓ [1.28 -0.79 0.47 ...]它们在高维空间越来越接近。汽车由于上下文完全不同汽车 发动机 轮胎 高速梯度方向不同。因此汽车会远离猫 狗 兔子最终形成语义空间Semantic Space十一、Embedding 与 YOLO 的类比对于做计算机视觉的人来说Embedding 的学习过程其实和卷积核训练非常相似。YOLO随机卷积核 ↓ 前向传播 ↓ Loss ↓ 反向传播 ↓ 卷积核逐渐学会 边缘 纹理 目标Embedding随机Embedding ↓ 前向传播 ↓ Loss ↓ 反向传播 ↓ Embedding逐渐学会 语义 上下文 关系本质完全一致。区别只是YOLO 学的是卷积核。Transformer 学的是 Token 向量。十二、是不是每次都会更新整个 Embedding Matrix答案不是。例如当前 Batch我 爱 AI对应5 18 103前向传播只查Embedding[5] Embedding[18] Embedding[103]反向传播也只有Embedding[5] Embedding[18] Embedding[103]会收到梯度。其他几万行根本没有参与计算。因此梯度为0。不会更新。这也是为什么Embedding 被称为Lookup Table查找表十三、Embedding 在 Transformer 中的位置整个流程如下原始文本 │ ▼ Tokenizer │ ▼ Token ID │ ▼ Embedding Lookup │ ▼ Token Embedding │ ▼ Position Embedding │ ▼ Transformer Encoder / Decoder │ ▼ Attention │ ▼ FFN │ ▼ 预测输出注意Transformer 从来没有直接处理文字。它处理的始终是Embedding 向量。十四、几个容易混淆的概念名称含义Vocabulary所有 Token 的集合Token一个词、子词或符号Token IDToken 在词表中的编号Embedding MatrixToken ID → 向量的查找表Embedding Vector某个 Token 对应的一行向量Embedding Dimension每个向量的长度如768Semantic SpaceEmbedding 构成的高维语义空间十五、核心总结一定要记住Embedding 的整个过程可以总结为大量文本 │ ▼ Tokenizer统计所有Token │ ▼ 建立Vocabulary词表 │ ▼ 为每个Token分配唯一ID │ ▼ 随机初始化Embedding Matrix Vocabulary Size × Embedding Dimension │ ▼ 根据Token ID查找对应向量 │ ▼ 送入Transformer进行计算 │ ▼ 计算Loss │ ▼ 反向传播更新Embedding Matrix │ ▼ 经过海量训练 │ ▼ 语义相近的Token在高维空间逐渐靠近十六、一句话理解 EmbeddingEmbedding 可以理解为一个可学习的语义字典每个 Token 在词表中有唯一编号ID编号对应 Embedding Matrix 中的一行向量。这个向量最初是随机的在训练过程中通过反向传播不断优化最终形成能够表达语义的高维表示使语义相近的 Token 在向量空间中彼此接近。