-
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 能够做到表达能力和计算复杂度的平衡
- Token 粒度会显著影响模型的能力,过粗和过细的 Token 粒度都会对模型的理解能力带来负面效果。