跳到主要内容

Token Embedding

token id 如何变成向量、初始化与缩放的规则、weight tying 的现状与 embedding 空间的几何特征

核心要点

  • Embedding matrix $[V, h]$ 查表 = gather = one-hot × W
  • 初始化标准 $\mathcal{N}(0, 0.02^2)$,经验值不是推导
  • Vaswani √d 缩放原文无理由,现代 LLM 已不做 (Gemma 除外)
  • Llama 1/2/3 全系列 NOT tie,GPT-2/3 tie, Qwen 规模阈值
  • Token embedding 层学不到 word2vec analogy, analogy 几何在 block 计算后
  • 长尾 token embedding 退化是 glitch token 的几何根因

名词定义

本篇共享名词在 3.1 总览 已定义 (Embedding matrix / Weight tying)。本篇新引入:

名词定义
Untying (解绑)输入 embedding 与 LM head 不共享权重的设计选择,Llama / Qwen 大模型主流做法
Static embedding输入端 token embedding 层查表得到的固定向量,与上下文无关;本篇主题
Contextual embeddingTransformer block 计算后,每个位置的 hidden state,随上下文变化;非本篇主题,列出做对比
Anisotropy (各向异性)embedding 向量集中在向量空间的"细窄锥体" (narrow cone), cosine 相似度普遍偏高
Hubness effect高维空间里少数 "hub" 向量与所有其他向量都近;长尾 token embedding 表现出此效应

@tbl-embed-glossary 本篇新引入名词

Token id 怎么变成 $h$ 维向量?

核心问题:tokenizer 把字符串变成了 token id 序列 (整数列表),但 Transformer block 吃的是 $h$ 维浮点向量。中间这一步怎么转?

Token embedding 就是一张可学习的查表:矩阵 $W_E \in \mathbb{R}^{V \times h}$,第 $i$ 行是 token id = $i$ 对应的 $h$ 维向量。给定 token id 序列 $[t_1, t_2, \ldots, t_s]$,输出是矩阵 $W_E$ 的第 $t_1, t_2, \ldots, t_s$ 行堆起来,形状 [s, h]

查表 = gather = one-hot × W 三种等价视角

同一操作有三种数学表述,互相等价,工程实现按效率选 gather:

$$\begin{equation} \text{embed}(t) = W_E[t, :] = e_t^\top W_E = \text{gather}(W_E, t) \label{eq:embed-three-views} \end{equation}$$
  • 查表 (lookup):把 $t$ 当索引取 $W_E$$t$ 行,直接寻址
  • One-hot × W:把 $t$ 编成 one-hot 向量 $e_t \in \{0,1\}^V$ ($t$ 位为 1 其余为 0),与 $W_E$ 相乘——数学上完全等价于查表
  • Gather: PyTorch / TensorFlow 的 gather 算子,工程上的实现方式

为什么三种视角都讲:one-hot × W 是理解 LM head 的镜像 (输出端 $h \to V$ 是矩阵乘 $W_E^\top$),让 weight tying 显得自然——同一个 $W_E$ 既能查表又能反向投影;查表视角是工程效率所在 ($O(s)$ 寻址 vs one-hot 矩阵乘的 $O(s \cdot V \cdot h)$ FLOPs); gather 是实际算子名字。

Embedding 是可学习参数,不是预训练

$W_E$ 跟所有 Transformer 权重一起从随机初始化训练,不是单独预训练。这是它跟 word2vec / GloVe 时代的根本不同:

  • word2vec / GloVe:用 skip-gram / matrix factorization 单独训练 word embedding,然后冻结喂下游模型
  • LLM: $W_E$ 跟 attention / FFN 权重一起被语言建模 loss 训练,训练完才是 LLM 的一部分

后果是:LLM 的 token embedding 学到的不是"通用语义",而是"对 next-token prediction 有用的表示"。这跟 word2vec analogy 直觉差别巨大 (后文详述)。

Embedding 初始化为什么是 0.02? √h 缩放还做吗?

核心问题$W_E$ 训练前要初始化,用什么分布?Vaswani 2017 原论文有个 "embedding × √d" 的缩放,这是什么?现代 LLM 还做吗?

现代 LLM 全线用 $\mathcal{N}(0, 0.02^2)$ 初始化 embedding,这是工程经验值不是理论推导。GPT-2 / GPT-3 / Llama 1-3 / Qwen 2/3 HuggingFace 实现里 initializer_range = 0.02 是标配。0.02 这个数字的根据是经验:太大 → 初始 logit 爆炸 / 训练崩;太小 → 早期梯度太弱;配合 LayerNorm 整套设计在 0.02 附近稳定。

Vaswani 2017 √d 缩放:原文一句话,无理由

Transformer 原论文 §3.4 写过:

"In the embedding layers, we multiply those weights by √d_model."

就这一句话,全文没解释为什么。引用 [30] 是 Press & Wolf 2017,但那是 weight tying 的论文,不是缩放论文。业界主流推测:让 embedding 的幅度 $O(\sqrt{d})$ 与 sinusoidal position encoding 的 $O(1)$ 在量级上"匹配",但这是社区推测——pi-tau 实现者直接承认"no one knows why"。

现代 LLM 已不做 √d 缩放 (Gemma 除外)

现代主流 LLM forward pass 里 embedding 查表后直接进下一层,不乘 √d

模型初始化方差Forward 是否 ×√d
GPT-2 (OpenAI)wte: $0.02^2$, wpe: $0.01^2$ (直接 wte + wpe)
nanoGPT (Karpathy)$0.02^2$ (line 283: tok_emb + pos_emb)
Llama 1/2/3$0.02^2$
Qwen 2/3$0.02^2$
Gemma极小,tied (hidden_states *= sqrt(hidden_size))

@tbl-embed-init 主流 LLM embedding 初始化与缩放对比

Gemma 例外的动机也不是 Vaswani 那条:Gemma embedding 与 output projection tied 且初始化方差极小,forward 乘 √d 是为了补偿小方差让 residual stream 量级合理,跟 PE 匹配无关。

为什么现代不做了

根本原因是架构变了,Vaswani 当年的动机已失效

  • Vaswani 用 sinusoidal absolute PE 与 token embedding 相加 → 需要量级匹配 → 缩放 embedding
  • 现代 LLM (Llama / Qwen / GPT 系) 用 RoPE 在 attention 内部注入位置 (详见 04-位置编码), token embedding 直接进 block 不再与 PE 相加 → 量级匹配问题消失 → 缩放无意义

这是"老论文里的一行代码被新架构悄悄淘汰" 的典型例子,但教学材料还在反复讲 √d。

Embedding 学习率:理论 vs 实践

理论上 embedding 应该用比其他层更高的学习率。2025 年论文 arXiv:2506.15025 证明最优比例:

$$\begin{equation} \frac{\eta_E}{\eta_W} \approx \sqrt{d_{\text{model}}} \label{eq:embed-lr-ratio} \end{equation}$$

$d_{\text{model}} = 4096$ 给出 $\eta_E / \eta_W \approx 64$ (实际范围 40-90×)。原因:embedding 是稀疏更新 (一个 batch 只有出现的 token 才有梯度),Adam 的 second moment 估计偏低,等效 LR 被压低。

实践上多数 LLM 用统一全局 LR,没采用这条建议——这是个开放领域,论文新,大模型团队还没普遍跟进。

Weight tying:主流是 tie 还是 untie?

核心问题:输入 embedding 矩阵 $W_E$ 和输出 LM head 投影矩阵 $W_U$ 形状互为转置 ($[V, h]$ vs $[h, V]$),数学上可以共享。这是 GPT-2 时代教科书说的"主流做法"。但 Llama 时代还是吗?

结论:中小模型 tie 是主流,大模型 (Llama / Qwen 7B+) 主流是 untie。这条颠覆了"weight tying 是 LLM 标配" 的常见误解。

Press & Wolf 2017 起源

Weight tying 由两篇论文几乎同时独立提出:

  • Press & Wolf 2017 (EACL)[1]:从"output matrix 实际上是 valid word embedding" 的工程观察出发,论证 input/output embedding 学到的是相似的向量空间,应该共享
  • Inan et al. 2017 (ICLR)[2]:从损失函数框架的理论推导出发,给出 tying 在概率角度的解释

两篇并列引用,Press & Wolf 实测 PTB 语言模型:tie 后 perplexity 显著下降,机器翻译模型体积缩到不到一半性能不掉。

GPT-2 / GPT-3: tie

GPT-2 / GPT-3 都 tie。Karpathy nanoGPT model.py line 285:

self.transformer.wte.weight = self.lm_head.weight

GPT-2 vocab = 50,257, tie 节省约 38.5M 参数 (≈30% 模型体积)

Llama 全系列:untie

Llama 1 / 2 / 3 全线 tie_word_embeddings: false, HuggingFace config 可查。即使 Llama 3 vocab 涨到 128,256,额外 LM head 矩阵约 525M 参数 (8B 模型的 ~6.5%),Meta 仍选择不 tie。

Qwen / DeepSeek:规模阈值

Qwen2.5 / Qwen3 用规模阈值策略

  • Qwen2.5: 0.5B / 1.5B tie; 7B+ untie
  • Qwen3: 4B tie; 8B+ untie

DeepSeek-V3 主模型不传统 tie (技术报告里唯一的共享是 MTP 辅助模块与主模型共享 embedding 和 output head,属于 multi-token prediction 架构,不是经典 weight tying)。

为什么大模型趋势是 untie

两个层面的原因:

1. 参数占比的成本结构

模型总参数embedding 占比untie 额外成本
Pythia 70M70M73.4%灾难性 (×2 整个模型)
GPT-2 (124M)124M31%痛 (~38M 多)
Llama 3 8B8B~13%可承受 (~525M)
Llama 3 70B70B~1.5%几乎免费

@tbl-embed-tie-cost 不同模型规模下 untie 的额外成本

小模型 embedding 占比高,tie 节省巨大代价可接受;大模型 embedding 占比低,untie 几乎免费——这是工程算账。

2. Tied 训练有 embedding 偏向 output 的副作用

2025 论文 arXiv:2603.26663 量化研究 weight tying 的训练动态[3]:

  • Tied 训练里,output 端的梯度占共享矩阵总梯度的约 70%,共享矩阵被向 output 空间偏移
  • OLMo-1B 对照实验:tied 矩阵与 untied output 的余弦相似度 = 0.719,与 untied input = 0.525 → tied 矩阵被"output 化",离 input 用途的最优表示更远
  • input layer 的 Tuned Lens KL 散度:tied = 9.2 bits vs untied = 7.0 bits,差 2.1 bits → tied 限制了 input 表示能力

这两点 (参数占比 + 训练动态) 合起来解释了为什么大模型不再 tie——节省的参数已不显著,而 untie 给 embedding 和 output 各自最优空间。

Embedding 学到什么样的向量?

核心问题:训练完的 $W_E$ 里这些 $h$ 维向量,几何上长什么样?word2vec 时代的 "king - man + woman ≈ queen" analogy 在 LLM token embedding 里还成立吗?长尾 token 的 embedding 是什么样?

LLM token embedding 跟 word2vec 时代认知差别很大:不学 analogy 几何,整体各向异性,长尾 token embedding 严重退化

Word2vec analogy 在 LLM token embedding 不成立

直接测 LLM token embedding 做 parallelogram analogy 准确率很低。2025 年实测论文[4]:

  • Llama-2-7b 原始 token embedding 层做 king-man+woman=queen 类 analogy: 准确率 47%
  • 同模型通过 "concept induction head" 提取的概念子空间 (在 transformer block 计算后):准确率达 80%

结论:analogy 几何能力不在 token embedding 层,而在 transformer block 计算后涌现的语义子空间里。这跟 word2vec 时代的认知正好相反——word2vec 单独训练 embedding 就有 analogy, LLM 时代 embedding 是"为下一步计算准备的原料",自己不长 analogy。

(顺带说:即使 word2vec 当年,king-man+woman=queen cosine 相似度也只 0.568,必须过滤查询词才排到第一[4]——这条 analogy 神话本身就被夸大了。)

Static vs Contextual:解释方差 < 5%

Token embedding 是 static 的 (查表得到的固定向量,与上下文无关),block 后每个位置的 hidden state 是 contextual 的 (随上下文变化)。这两类向量差别有多大?

Ethayarajh EMNLP 2019[5] 在 BERT / ELMo / GPT-2 上量化:

  • 所有层中 static embedding 仅解释 contextual representation 方差的 < 5%
  • Contextual embedding 占据"细窄锥体 (narrow cone)" 几何结构,下层 cosine 相似度高
  • 上层即使 "and" / "the" 这类非多义词也极度 context-specific,不同上下文里的 "and" hidden state 差异巨大

这是"为什么 LLM 比 word2vec 强"的几何根因——同一个词在不同上下文里被 block 计算成不同向量,表达力远超固定查表。

Anisotropy: LLM embedding 普遍各向异性

Static embedding 空间不是各向同性 (isotropic),而是高度各向异性 (anisotropic)

  • 不同 token 的 embedding 普遍 cosine 相似度偏高,集中在向量空间的窄锥体
  • 成因:高频 token 的梯度主导少数 "outlier dimensions" 的更新,这几个维度方差比其他维度大几个数量级[6]
  • 反直觉发现:ICLR 2024 一篇论文主动增加 anisotropy 反而在 3 个 LLM 9 个任务上提升性能——说明 anisotropy 不是 bug 而可能是优化的副产物甚至有用特征

长尾 token embedding 退化 = glitch token 几何根因

低频 / 训练中几乎没见过的 token,它的 embedding 停留在初始化附近,表现出明确几何退化

  • GPT-J 中 SolidGoldMagikarp 的 embedding 距整体质心仅 0.063,而正常 token 平均距质心 ~1.4——它实际上靠近质心 (hubness effect:高维空间里"接近所有人")
  • 推理时 mention 这种 token, embedding 进入 attention 后产生异常激活,模型输出乱码
  • GPT-2 xl 有反例 (异常 token 反而质心最远),说明几何退化的具体表现与初始化方案相关

这就是 02-tokenization 讲的 glitch token (SolidGoldMagikarp) 的几何根因:不是 BPE 词表有 bug,而是 BPE 训练数据让某些 token 进 vocab,模型预训练数据里这些 token 出现太少,它们的 embedding 行没怎么被梯度更新,几何上挤在初始化附近。

SAE 与 feature directions:在哪里找语义?

Anthropic 2024 "Scaling Monosemanticity" 用 Sparse Autoencoder 在 Claude 3 Sonnet 中间层 residual stream 上提取了 3,400 万个 feature directions,每个 direction 跨语言 / 跨模态对应一个明确概念。关键:这些 features 是在 transformer block 计算后的中间层,不是 token embedding 层

这又一次印证:LLM 的语义是 block 计算"涌现"出来的,不在 static embedding 里。Token embedding 提供的是"原料",不是"语义"。

Takeaway

知识点核心结论
查表机制$W_E \in \mathbb{R}^{V \times h}$$t$ 行 = token $t$ 的向量;gather = one-hot × W 等价
可学习参数$W_E$ 跟所有 Transformer 权重一起训练,不是单独预训练 (与 word2vec 根本不同)
初始化$\mathcal{N}(0, 0.02^2)$ 是工程经验值,现代 LLM 全线沿用
Vaswani √d 缩放原文无理由,现代 LLM 不做了 (Gemma 例外),因 RoPE 取代 absolute PE 后动机失效
Embedding LR理论最优 $\eta_E / \eta_W \approx \sqrt{d}$ (40-90×),实践用全局 LR
Weight tying 起源Press & Wolf / Inan 2017 同年提出,小模型 PTB perplexity 显著下降
Weight tying 现状GPT-2/3 tie, Llama 1-3 全 NOT tie,Qwen 规模阈值 (7B+ NOT tie), DeepSeek-V3 不 tie
Untie 的工程动机大模型 embedding 占比 ~1-13%, untie 几乎免费;且 tied 训练 output 梯度占 70% 把共享矩阵向 output 偏移
Word2vec analogyLLM 原始 token embedding 不学 analogy (Llama-2 实测 47%);analogy 几何在 block 后涌现
Static vs Contextual静态 embedding 仅解释 contextual 方差 < 5%,不同上下文同一 token 的 hidden state 差异巨大
AnisotropyLLM static embedding 普遍各向异性,高频 token 梯度主导 outlier dimensions
长尾 token 几何退化低频 token embedding 停留在初始化附近,hubness effect (距质心 0.063 vs 正常 1.4),这就是 glitch token 的几何根因

开放问题

  • 未来大模型是否会出现新的 tie 变种:untying 让 input / output 各自最优,但增加参数;是否有"部分 tie / 投影后 tie / 量化 tie" 等中间设计?还无定论。
  • Embedding LR 单独调度:arXiv:2506.15025 理论给出 $\sqrt{d}$ 倍最优比例,但工业大模型团队还没普遍跟进,实证收益是否值得改训练 pipeline 待观察。
  • Anisotropy 的反直觉性:ICLR 2024 增加 anisotropy 反而提升性能,这质疑了过去 isotropy 优化的整体方向。embedding 空间的"理想形状" 仍是开放问题。
  • 长尾 token 治理:词表越大长尾越长,glitch token 几何退化是必然产物吗?还是某种 init / training 方案能根除?
  • Tokenizer 与模型训练数据分布对齐的可工程化:glitch token 本质是分布不一致,强制对齐能解决吗?还是统计上不可避免?

延伸阅读 (本章外链)

参考资料

  1. Press, Wolf. Using the Output Embedding to Improve Language Models. EACL 2017. https://arxiv.org/abs/1608.05859
  2. Inan, Khosravi, Socher. Tying Word Vectors and Word Classifiers: A Loss Framework for Language Modeling. ICLR 2017. https://arxiv.org/abs/1611.01462
  3. Weight Tying Biases Token Embeddings. 2025. https://arxiv.org/abs/2603.26663
  4. Vector Arithmetic in Concept and Token Subspaces. 2025. https://arxiv.org/abs/2511.18162
  5. Ethayarajh. How Contextual are Contextualized Word Representations? Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings. EMNLP 2019. https://arxiv.org/abs/1909.00512
  6. Outliers Dimensions Driven by Frequency in Pre-trained Language Models. 2022. https://arxiv.org/abs/2205.11380