要解决的问题
分词器决定了文本如何被切分成 token。它直接影响多语言支持、代码与数字的处理、压缩率,以及上下文窗口实际能装下多少内容,是预训练中容易被忽视的隐性瓶颈。
核心方法
- BPE(字节对编码):从字符开始,反复合并语料中最常见的相邻片段,得到子词词表。
- SentencePiece:直接在原始文本上训练、不依赖空格预切分的分词工具,支持 BPE 和 Unigram 两种算法。Unigram 从一个大词表出发,按语言模型概率逐步删减。
- 字节级 BPE(byte-level BPE):在 UTF-8 字节上做 BPE,任何文本都不会出现未登录词,GPT-2 以来被广泛采用。
- 无分词器与字节级模型:直接在字节上建模,由模型自己学习如何分组,是前沿探索方向。
代表工作
- Neural Machine Translation of Rare Words with Subword Units(2015):把 BPE 引入神经机器翻译,开启子词分词。
- SentencePiece(2018):与语言无关的子词分词工具;同年的 Unigram 语言模型分词也由同一作者提出。
- GPT-2(2019):采用字节级 BPE。
- Byte Latent Transformer(2024):Meta 提出的无分词器架构,按字节的预测难度动态分组成「块」(patch)。
开放问题
- 数字与代码的鲁棒分词。
- 不同语言之间的公平性:同样的内容,某些语言需要多得多的 token。
- 动态分词、无词表方案在工程上是否可行。