Tokenization (NLP) — 令牌化

From Systems analysis wiki
Jump to navigation Jump to search

令牌化(Tokenization)在大型语言模型(LLM)的背景下,是一个基础的预处理过程,它将文本序列分解为更小、更易于管理的单元,称为令牌(token)。这些令牌随后被转换为模型可以处理的数字标识符。令牌化是至关重要的第一步,因为它直接影响模型的性能、效率、公平性以及语言理解的质量。

基本概念

令牌 (Token)

令牌(Token)是语言模型处理的离散文本单元。根据所选择的令牌化方法,一个令牌可以代表:

  • 一个完整的词(例如,“猫”)。
  • 词的一部分或子词(例如,“不-”、“-可思-”、“-议”)。
  • 单个字符(例如,“a”、“b”、“c”)。
  • 字节(对于字节级令牌化)。

每个唯一的令牌都会从分词器词汇表中被分配一个特定的索引号。

分词器词汇表 (Tokenizer Vocabulary)

词汇表(Vocabulary)是模型能够识别的所有可能令牌的完整集合。词汇表的大小是一个重要的超参数:

  • **大的词汇表**可以表示更多的完整单词,从而提高理解能力并缩短序列长度,但会增加模型大小和训练复杂性。
  • **小的词汇表**更加紧凑,但需要将稀有或复杂的单词分解为更多的子词,这可能会延长序列并使捕捉语义变得困难。

不同模型的词汇表大小差异很大:从GPT-2的约 50,000 个令牌,到现代模型如GPT-4(100,277)和LLaMA-3(128,000)的超过 100,000 个。

主要的令牌化方法

令牌化主要有三个粒度级别。

1. Word-level - 词级令牌化

  • 原理: 基于分隔符(空格、标点符号)将文本分割成单个单词。
  • 优点: 直观易懂;令牌序列较短,降低了计算负担。
  • 缺点:
    • 词汇外(Out-of-Vocabulary, OOV)问题:模型无法处理训练词汇表中未出现的单词,也无法处理拼写错误和新词。
    • 词汇表规模大:需要存储所有唯一的单词,这对于形态丰富的语言尤其成问题。

2. Character-level - 字符级令牌化

  • 原理: 将文本分解为单个字符。
  • 优点:
    • 无 OOV 问题:任何单词都可以表示为字符序列。
    • 词汇表小:规模受限于字母表和特殊字符的数量。
  • 缺点:
    • 序列过长:文本被转换为非常长的令牌序列,显著增加了计算成本。
    • 语义丢失:模型更难捕捉含义,因为它操作的是单个字符而非整个单词。

3. Subword Tokenization - 子词令牌化

这是一种折中方法,也是当今最流行的方法,它结合了前两种方法的优点。

  • 原理: 常用词保持为完整的令牌,而稀有或未知词则被分解为更小的、有意义的部分(子词)。
  • 优点:
    • 有效处理 OOV 单词和形态变体。
    • 词汇表大小可控。
    • 能够捕捉单词的形态结构。
  • 主要算法:
    • 字节对编码 (Byte Pair Encoding, BPE): 一种迭代算法,从字符集开始,逐步将最常出现的字符对合并成新的令牌。用于GPT模型。在 GPT-2 和 RoBERTa 中使用的字节级 BPE (Byte-level BPE)将单词视为字节序列,从而完全解决了 OOV 问题。
    • WordPiece: 一种与 BPE 类似的算法,但它选择能够最大化训练数据似然性的字符对进行合并。用于BERT模型。
    • Unigram LM: 与 BPE/WordPiece 不同,该方法从一个大的子词集合开始,通过移除对语料库整体概率影响最小的令牌来逐步缩减集合。这允许为同一个词生成多种可能的令牌化结果(子词正则化)。
  • SentencePiece 工具包: Google 推出的一个库,实现了 BPE 和 Unigram LM,并将文本作为连续的字符流处理,这使其能够通用地处理没有明确分词符的语言(如中文)。用于 LLaMA 和 T5 模型。

多模态 LLM 中的令牌化

在处理文本以外数据的多模态模型中,令牌化的概念也扩展到其他数据类型:

  • 视觉令牌化: 图像被分割成小块(例如 16x16 像素的“patch”),然后转换为向量令牌,类似于文本令牌。
  • 音频令牌化: 连续的音频信号被转换为离散的令牌序列,每个令牌代表一小段声音。
  • 统一方法 (TEAL): 一种概念,其中任何模态的数据首先由相应的分词器进行令牌化,然后它们的嵌入在统一的联合空间中进行处理。

问题与局限性

令牌化虽然至关重要,但也是 LLM 操作中许多问题的根源:

  • 不一致性与敏感性: 输入数据的微小变化(如拼写错误、大小写、末尾空格)可能会彻底改变令牌化结果,导致模型行为不可预测。
  • 多语言问题: 用于多种语言的单一词汇表对于资源稀缺或形态丰富的语言通常效率低下,导致令牌序列过长。
  • 对推理能力的影响: 对数字(例如,将“25,000”分为“25”、“,”、“000”)或符号的不合逻辑的分割,会妨碍模型执行算术和符号任务。
  • “故障令牌”(Glitch Tokens): 训练数据中异常或罕见的令牌(例如,来自 Reddit 的用户名),可能引发模型不可预测或有害的行为。

发展格局与未来方向

令牌化领域的研究正在以下方向积极推进:

  • 无分词器模型: 开发直接在字节或字符级别上操作的模型(如 CANINE、ByT5),以完全消除显式的令牌化步骤及其相关问题。
  • 自适应和可学习的令牌化: 创建能够动态适应特定语言、领域甚至特定输入文本的分词器,或者与主模型共同训练的分词器。
  • 认知导向方法: 开发受人类语言处理认知科学启发的方(例如,“最省力原则”),以创建更具语义意义的令牌化方案。

链接

参考文献

  • Schuster, M.; Nakajima, K. (2012). Japanese and Korean Voice Search. PDF.
  • Sennrich, R.; Haddow, B.; Birch, A. (2016). Neural Machine Translation of Rare Words with Subword Units. arXiv:1508.07909.
  • Kudo, T.; Richardson, J. (2018). SentencePiece: A Simple and Language-Independent Subword Tokenizer and Detokenizer for Neural Text Processing. arXiv:1808.06226.
  • Kudo, T. (2018). Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates. arXiv:1804.10959.
  • Song, X. et al. (2021). Fast WordPiece Tokenization. ACL-Anthology.
  • Mielke, S. J.; Dalmia, S.; Cotterell, R. (2021). A Brief History of Open-Vocabulary Modeling and Tokenization in NLP. arXiv:2112.10508.
  • Xue, J. et al. (2022). ByT5: Towards a Token-Free Future with Pre-trained Byte-to-Byte Models. arXiv:2105.13626.
  • Clark, J. H. et al. (2022). CANINE: Pre-Training an Efficient Tokenization-Free Encoder for Language Representation. arXiv:2103.06874.
  • Limisiewicz, T.; Balhar, J.; Mareček, D. (2023). Tokenization Impacts Multilingual Language Modeling. arXiv:2305.17179.
  • Pourmostafa Roshan Sharami, J.; Shterionov, D.; Spronck, P. (2023). A Systematic Analysis of Vocabulary and BPE Settings for Optimal Fine-Tuning of NMT. arXiv:2303.00722.
  • Batsuren, K. et al. (2024). Evaluating Subword Tokenization: Alien Subword Composition and OOV Generalization Challenge. arXiv:2404.13292.
  • Chai, Y. et al. (2024). Tokenization Falling Short: On Subword Robustness in Large Language Models. arXiv:2406.11687.