要解决的问题

分词器决定了文本如何被切分成 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。
  • 动态分词、无词表方案在工程上是否可行。

参考资料

相关专题

  • 预训练:分词器在预训练前确定,之后很难更换。
  • 长上下文:压缩率决定同样的窗口能容纳多少内容。
  • 代码模型:代码对分词方案尤其敏感。