什么是 Token,为什么大模型必须用 Token?

7 阅读2分钟
  • Token的直觉解释

    • Token 就像是推荐系统中的 id,把信息转化成模型能够处理的形式。举个例子,对于句子 “I have an apple”,就可以 Token 化为 ["101", "8372", "2038", "0993", "1232", "102"]
    • 上面的例子每个字母对应了一个 Token(首尾默认填充101和102),但并不是所有的完整的单词都会对应一个 Token,例如 happily 可能会被拆成 “happ” 和 “ily” 然后分别对应一个token
  • Tokenizer的作用

    • Tokenizer 将输入转化成一组 Tokens,字节对编码(BPE)的方式可以使得 Tokenizer 几乎可以将不限语言的任何输入转化为一组 Tokens
    • 字节对编码(BPE)的方式一般将常见的子序列(例如happ、ily)放入字典,然后将其余部分按照单字母放入字典
  • 为什么大模型必须用 Token?

    • 基于 transformer 结构的大模型通常接收固定长度的输入,Token 化为将不定长度的文本转化为输入提供了方法
  • Token粒度与模型能力的关系

    • Token 粒度会显著影响模型的能力,过粗和过细的 Token 粒度都会对模型的理解能力带来负面效果。
      • 例子1: 过细的 Token 粒度,例如每个字母一个Token,那么对于输入 “hello” 会被拆分成 ["h", "e", "l", "l", "o"],模型需要学习大量字母间关系,会使得模型计算复杂度急剧增加
      • 例子2: 过粗的 Token 粒度,例如整个句子作为一个 Token,会导致模型表示所有语言的字典过大(因为要考虑各种语言组合),每一种句子不能得到充分训练
      • BPE 能够做到表达能力和计算复杂度的平衡