一、Tokenization 基础概念面试题

面试题1:序列长度很长,指的是每个 token 对应的序列很长吗?

答案
不是。序列长度很长指的是一句话被切分成的 token 数量变多,而不是单个 token 本身变长。token 是切分后的最小单元,序列长度是 token 的个数。


面试题2:UTF-8 是把所有句子都拆成 0~255 这 256 个值吗?

答案
是的。UTF-8 是一种字节编码,任何文本最终都会被编码成 0~255 范围内的字节,总共只有 256 种基础单元。


面试题3:相同的 token(字节)可以代表不同的语义吗?会有隐患吗?

答案
可以,而且一定会。单个 UTF-8 字节只是字符的碎片,同一个字节可能是中文、英文、表情的一部分,本身没有独立语义
隐患包括:

  1. 模型必须额外学习如何拼接字节成字符;
  2. 序列会变得极长,计算量爆炸;
  3. 语义密度极低,模型难以学习语言规律。

面试题4:token 切得越碎,为什么嵌入表就可以越小?

答案
切得越碎,重复出现的基础单元就越多,token 的种类就越少,词汇表(vocab)就越小,对应的嵌入矩阵也就越小。
例如:切到字节只有 256 种;切到整词则会有几十万种。


二、BPE 算法面试题

面试题5:什么是无分词(Tokenization-Free)?为什么要不分词?

答案
无分词指不使用任何分词器(BPE/Tokenizer),直接将文本作为原始字节流输入模型,让模型自己学习切分与理解。
不分词的原因:

  1. 避开分词器的多语言偏见、bug、安全隐患;
  2. 真正端到端建模,无需人工规则;
  3. 支持文本、音频、图像统一建模。

面试题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 为什么要用正弦余弦波做位置编码?

答案

  1. 提供绝对位置:每个位置对应唯一向量;
  2. 天然支持相对位置:sin/cos 可线性组合表示偏移位置;
  3. 固定无参数、泛化强:能处理比训练更长的序列;
  4. 不同频率叠加,可同时捕捉长短距离依赖。

面试题12:GPT-2 中位置嵌入为什么是可训练的?老师为什么特意强调?

答案
原始 Transformer 使用固定正弦余弦编码,而 GPT-2 将位置嵌入改为可学习参数
原因:

  1. 更灵活,能从数据中学到最优位置表示;
  2. 工程实现更简单;
  3. 效果在大规模语料上更优。

老师强调是因为:位置编码不一定非要固定,可训练是 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 会带来哪些实际隐患与坑?

答案

  1. 特殊 token(如<|endoftext|>)会截断文本;
  2. 空格、大小写敏感导致分词不一致;
  3. 多语言、代码分词效果差;
  4. 训练数据噪声会进入词汇表(如 SolidGoldMagikarp);
  5. 长文本分词后序列过长,影响效率。

面试题17:GPT-2 相比原始 Transformer,在位置编码上做了什么改动?

答案

  1. 放弃固定正弦余弦位置编码;
  2. 使用可学习的位置嵌入(nn.Embedding)
  3. 使用 Pre-LN(先归一化) 结构,训练更深更稳定。

五、体系总结题(面试高频)

面试题18:请完整描述从文本到 Transformer 输入的全过程

答案

  1. 文本 → UTF-8 字节;
  2. 用 BPE 分词成 token ID 序列;
  3. 通过词嵌入矩阵得到语义向量;
  4. 通过位置编码得到位置向量;
  5. 两者相加,送入 Transformer。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐