GPT 分词器与位置编码常见面试题
一、Tokenization 基础概念面试题
面试题1:序列长度很长,指的是每个 token 对应的序列很长吗?
答案:
不是。序列长度很长指的是一句话被切分成的 token 数量变多,而不是单个 token 本身变长。token 是切分后的最小单元,序列长度是 token 的个数。
面试题2:UTF-8 是把所有句子都拆成 0~255 这 256 个值吗?
答案:
是的。UTF-8 是一种字节编码,任何文本最终都会被编码成 0~255 范围内的字节,总共只有 256 种基础单元。
面试题3:相同的 token(字节)可以代表不同的语义吗?会有隐患吗?
答案:
可以,而且一定会。单个 UTF-8 字节只是字符的碎片,同一个字节可能是中文、英文、表情的一部分,本身没有独立语义。
隐患包括:
- 模型必须额外学习如何拼接字节成字符;
- 序列会变得极长,计算量爆炸;
- 语义密度极低,模型难以学习语言规律。
面试题4:token 切得越碎,为什么嵌入表就可以越小?
答案:
切得越碎,重复出现的基础单元就越多,token 的种类就越少,词汇表(vocab)就越小,对应的嵌入矩阵也就越小。
例如:切到字节只有 256 种;切到整词则会有几十万种。
二、BPE 算法面试题
面试题5:什么是无分词(Tokenization-Free)?为什么要不分词?
答案:
无分词指不使用任何分词器(BPE/Tokenizer),直接将文本作为原始字节流输入模型,让模型自己学习切分与理解。
不分词的原因:
- 避开分词器的多语言偏见、bug、安全隐患;
- 真正端到端建模,无需人工规则;
- 支持文本、音频、图像统一建模。
面试题6:BPE encode 阶段为什么要合并 token?
答案:
合并是为了缩短序列长度、提高语义密度。BPE 会把高频出现的字节/ token 对合并成一个新 token,既保留小词汇表,又不让序列过长。
面试题7:BPE 编码时为什么用 min 取 pair,而不是取频率最高的?
答案:
这里的 min 不是取频率最低,而是取 合并顺序最早(优先级最高) 的 pair。
merges 字典记录了训练时的合并顺序(数字越小越早合并),编码时必须按训练顺序执行,否则会出现解码错误。
面试题8:BPE 中 if pair not in merges 这个判断作用是什么?
答案:
这是循环终止条件。当当前序列中没有可合并的 token 对时,退出循环,编码完成。
面试题9:BPE 编码时用什么 idx 替换频率最高的 pair?怎么来的?
答案:
idx 来自训练阶段生成的 merges 字典。
训练时每合并一对,就分配一个新的唯一 ID(从 256 开始递增),编码时直接查表使用该 ID。
面试题10:什么是码点(Code Point)?
答案:
码点是 Unicode 给每个字符分配的唯一数字编号,格式为 U+XXXX。
例如:A → U+0041,你 → U+4F60。它是字符的逻辑编号,与存储无关。
三、嵌入矩阵与位置编码面试题
面试题11:Transformer 为什么要用正弦余弦波做位置编码?
答案:
- 提供绝对位置:每个位置对应唯一向量;
- 天然支持相对位置:sin/cos 可线性组合表示偏移位置;
- 固定无参数、泛化强:能处理比训练更长的序列;
- 不同频率叠加,可同时捕捉长短距离依赖。
面试题12:GPT-2 中位置嵌入为什么是可训练的?老师为什么特意强调?
答案:
原始 Transformer 使用固定正弦余弦编码,而 GPT-2 将位置嵌入改为可学习参数。
原因:
- 更灵活,能从数据中学到最优位置表示;
- 工程实现更简单;
- 效果在大规模语料上更优。
老师强调是因为:位置编码不一定非要固定,可训练是 GPT 系列的关键设计。
面试题13:嵌入矩阵和位置编码的区别是什么?
答案:
- 嵌入矩阵(Token Embedding):编码 token 本身的语义,解决“这是什么词”;查表来源是词汇表。
- 位置编码(Positional Encoding):编码 token 在句子中的位置,解决“它在第几个位置”;来源是固定公式或可学习向量。
最终输入 = token 嵌入 + 位置嵌入。
面试题14:初始化的嵌入向量为什么也可以训练?特殊在哪里?
答案:
可学习位置嵌入的初始化只是起点,在训练中会通过反向传播不断更新。
特殊点:
- 固定编码:初始化 = 最终值,不改变;
- 可学习嵌入:初始化只是开始,模型会自动优化为最适合数据的表示。
四、综合理解面试题
面试题15:词汇表大小(vocab_size)如何选择?大小各有什么优劣?
答案:
- 词汇表大:token 更大、序列更短、计算更快,但 embedding 层参数量变大;
- 词汇表小:序列更长、计算更贵,但 embedding 更紧凑。
常见选择:小模型 3万~5万,中型模型 10万~20万,GPT-4 约 10万。
面试题16:Tokenization 会带来哪些实际隐患与坑?
答案:
- 特殊 token(如
<|endoftext|>)会截断文本; - 空格、大小写敏感导致分词不一致;
- 多语言、代码分词效果差;
- 训练数据噪声会进入词汇表(如 SolidGoldMagikarp);
- 长文本分词后序列过长,影响效率。
面试题17:GPT-2 相比原始 Transformer,在位置编码上做了什么改动?
答案:
- 放弃固定正弦余弦位置编码;
- 使用可学习的位置嵌入(nn.Embedding);
- 使用 Pre-LN(先归一化) 结构,训练更深更稳定。
五、体系总结题(面试高频)
面试题18:请完整描述从文本到 Transformer 输入的全过程
答案:
- 文本 → UTF-8 字节;
- 用 BPE 分词成 token ID 序列;
- 通过词嵌入矩阵得到语义向量;
- 通过位置编码得到位置向量;
- 两者相加,送入 Transformer。
更多推荐

所有评论(0)