1:什么是词元(Token)?为什么要把文本拆成词元?
词元(Token)是将文本拆分后,用于模型处理的最小单位。可以是汉字、词片(subword)、英文单词、标点符号等。
拆分原因:
- 模型无法直接处理文本,只能处理数字向量
- Token 是从"文本 → 向量"的桥梁
- BPE/subword 让模型能处理新词、多语言、罕见词
- 便于构建 embedding lookup
- 让模型能理解语义与上下文
**2:什么是嵌入向量(Embedding)?
为什么同一词元在不同上下文中表示不同?**
嵌入向量(Embedding)是词元映射到高维连续向量空间的初始表示。
同一词元在不同上下文会呈现不同表示,因为:
- Embedding 是静态的
- Transformer 在每一层会通过自注意力融合上下文
- 动态隐藏向量(hidden states)会随上下文变化
因此最终形成"上下文相关向量(contextual embedding)"。
**3:什么是前向传播(Forward Pass)?
为什么生成一个新的词元要做一次前向传播?**
前向传播是将输入依次通过所有 Transformer 层和输出层,得到下一 token 概率分布的完整计算过程。
生成新词元要重新前向传播,因为:
- 自回归模型每次都把新 token 拼到输入末尾
- 输入序列改变 → 必须重新计算所有层
- 整个模型要重新理解新的上下文
**Q4:什么是相关性评分(Relevance Score)?
它在注意力中起什么作用?**
相关性评分 = Q·Kᵀ(点积),表示当前词元应关注其他词元的程度。
它的作用:
- "决定关注谁"
- 经过 softmax 变成注意力权重
- 权重用于给 V(内容)加权融合
5:为什么注意力机制需要 Q、K、V?它们分别负责什么?
- Q(Query):"我要找什么?"
- K(Key):"我有什么信息?"
- V(Value):"我的实际内容是什么?"
只有用 Q/K 计算匹配度,才能决定如何从 V 获取信息。
注意力的本质是分离"找关系"和"取内容"两部分。
6:为什么 Transformer 使用多头注意力?单头有什么局限?
单头注意力只能在一个向量子空间里建模关系,表达能力有限。
多头注意力的优势:
- 每个头学习不同类型的关系
- 多视角理解上下文
- 捕获句法、语义、远距关系
- 最终 concat 得到丰富的语义表示
多头注意力是为了增强表达能力,不是为了加速。
7:什么是自注意力?它和传统注意力有什么区别?
自注意力(Self-Attention)是同一序列内部所有词元互相关注的机制。Q/K/V 都来自同一个序列。
传统注意力:
- Q 来自 decoder
- K、V 来自 encoder
区别:
- 自注意力:建模句子内部关系
- 传统注意力:跨序列建模
8:为什么 Transformer 不需要循环结构也能处理上下文?
因为自注意力可以一次性(并行)计算所有词元的关系,拥有全局感受野,不需要像 RNN 那样依赖逐步传递。
- Attention 可以直接看到整个序列
- 矩阵运算可完全并行
- 天然支持长距离依赖
9:没有位置编码会怎样?为什么必须加入位置信息?
没有位置编码,Transformer 将无法区分词序。
结果:
- 自注意力是对称的(交换不变)
- "我爱你" = "你爱我"
加位置编码是为了给每个词元添加顺序,使模型成为序列模型而不是"词袋模型"。
10:为什么位置编码(RoPE)只加在 Q/K,不加在 V?
Q/K 决定注意力权重 → 需要包含位置关系。
V 只承载语义内容 → 不应该被位置影响。因此:
- 给 Q/K 加位置编码 = 位置影响"关注谁"
- 不给 V 加编码 = 不污染内容本身
11:什么是 KV Cache?为什么能让推理速度提升几十倍?
KV Cache 是缓存之前所有 token 的 K/V,避免重复计算。
自回归生成中:
- 旧 token 的 K/V 永不改变
- 新 token 只需要算自己的 Q/K/V
推理复杂度从 O(N²) → O(N),大幅加速。
12:前馈网络(FFN)有什么作用?为什么Attention后一定要接FFN?
FFN 对每个词元做独立、非线性变换,是模型主要计算能力所在。
注意力负责:信息融合
FFN 负责:语义加工
结构:升维 → 激活 → 降维
若只有注意力,模型会缺乏非线性能力。
13:为什么只用"最后一个词元"的输出预测下一个 token?
因为语言模型是自回归的:
给定前缀,预测下一个。
- 最后一词元代表"当前语义总结"
- 前面词元的语义已写入最后词元
- LM Head 只对"当前位置"的向量做预测
14:Transformer 生成一个 token 的完整流程是什么?(终极整合题)
Token → Embedding → Position → 多层(Attention + FFN)→ 最终隐藏向量 → LM Head → Softmax → 采样出 token → 拼回继续生成。
详细链路:
-
分词
-
Embedding
-
加位置编码
-
多层 Transformer:
- 自注意力(Q/K/V → 权重 → V 加权)
- FFN
- 残差 + LayerNorm
-
取最后词元 hidden state
-
LM Head → Softmax
-
生成 token
-
拼回,重复步骤 1~7(自回归循环)