大模型中的 Token 是什么?为什么是 Token?Token 是怎么计算的?
近年来,以 ChatGPT、Claude、Gemini 等为代表的大语言模型(Large Language Model,LLM)快速发展。在使用这些模型时,我们经常会遇到一个概念:Token。
很多人会疑惑:
-
为什么大模型不直接按照“字”或者“词”来理解文本?
-
Token 到底是什么东西?
-
一句话有多少 Token 是怎么计算出来的?
-
为什么 Token 数量会影响模型成本、速度和上下文长度?
理解 Token,是理解大模型工作原理的重要入口。
一、Token 是什么?
简单来说:
Token 是大语言模型处理文本时使用的最小信息单位。
人类阅读文章时,会按照“字”“词”“句子”来理解:
例如:
我喜欢人工智能。
人类可能会拆成:
我 / 喜欢 / 人工智能
但大模型并不是直接看到这些文字,而是先经过一个叫 Tokenizer(分词器) 的程序,把文本转换成 Token。
例如:
我喜欢人工智能。
可能被拆成:
我
喜欢
人工
智能
。
对应:
Token 1
Token 2
Token 3
Token 4
Token 5
然后模型把每个 Token 转换成数字 ID:
我 → 2345
喜欢 → 7821
人工 → 5639
智能 → 9127
。 → 15
最终,大模型真正处理的是:
[2345, 7821, 5639, 9127, 15]
而不是文字本身。
因此,大模型的处理流程大致是:
文本
↓
Tokenizer 分词
↓
Token 序列
↓
Token ID
↓
向量表示(Embedding)
↓
神经网络计算
↓
生成新的 Token
↓
转换回文字
二、为什么不用“字”或者“词”,而要使用 Token?
这是理解 Token 最关键的问题。
如果让计算机理解语言,最自然的方式似乎应该是:
-
中文按照字切分
-
英文按照单词切分
但实际都存在严重问题。
1. 只按“词”切分,会导致词表巨大
假设按照英文单词切分:
I love artificial intelligence.
可以拆成:
I
love
artificial
intelligence
看起来很好。
但是英语中有大量变化:
run
running
runner
runs
如果每一个都作为独立词:
run
running
runner
runs
...
模型需要记住几十万个甚至更多词。
而对于中文:
人工智能
人工智能技术
人工智能领域
人工智能模型
如果全部作为词处理,组合数量会快速爆炸。
语言具有无限组合能力,但词表不可能无限扩大。
2. 只按“字符”切分,信息效率太低
另一种方法是:
每个字符一个单位。
例如:
人工智能正在改变世界
拆成:
人
工
智
能
正
在
改
变
世
界
优点:
-
简单
-
不需要巨大词表
但是缺点也明显:
一个长句可能需要大量字符。
比如一本书:
100万字
如果每个字都是一个 Token:
约100万个 Token
模型需要处理非常长的序列。
而 Transformer 模型的计算成本与序列长度高度相关,Token 太多会导致:
-
推理速度下降
-
显存需求增加
-
成本提高
3. Token 是一种折中方案
Token 的设计目标:
既不能太细,也不能太粗。
它希望做到:
-
常见词保持完整,提高效率
-
生僻词拆开,提高泛化能力
例如:
英文:
unhappiness
可能拆成:
un
happiness
模型不需要单独学习“unhappiness”,而可以理解:
un(否定)
+
happiness(快乐)
中文:
人工智能模型
可能拆成:
人工
智能
模型
或者:
人工智能
模型
具体取决于 Tokenizer 的训练结果。
这就是 Token 的核心价值:
用有限的词表表示无限的语言。
三、Token 是怎么生成的?
Token 并不是人工规定好的,而是通过算法训练出来的。
目前主流大模型通常采用类似:
-
BPE(Byte Pair Encoding)
-
WordPiece
-
SentencePiece
等方法。
其中 BPE 是最常见的一类。
1. 从字符开始
假设训练数据中有:
low
lower
lowest
最初可能拆成:
l o w
l o w e r
l o w e s t
模型发现:
l + o
经常一起出现。
于是合并:
lo
继续发现:
lo + w
经常出现。
合并:
low
最后形成:
low
成为一个 Token。
2. 高频组合形成 Token
训练过程中:
出现频率高的字符串组合,会更容易成为一个 Token。
例如:
英文:
computer
可能整体作为一个 Token。
但是:
electroencephalography
这种低频长词可能拆成:
electro
encephalo
graphy
中文也是类似:
高频词:
人工智能
可能成为一个 Token。
低频组合:
量子神经网络优化算法
可能拆成多个 Token。
四、Token 是怎么计算数量的?
很多人误认为:
一个中文字符 = 一个 Token
或者:
一个英文单词 = 一个 Token
实际上并不准确。
Token 数量取决于:
-
使用什么模型
-
使用什么 Tokenizer
-
文本语言
-
字符组合频率
1. 英文 Token 计算
英文通常比较接近:
1 Token ≈ 3~4 个英文字符
例如:
Artificial intelligence is amazing.
字符数量:
约36个字符。
可能对应:
Artificial
intelligence
is
amazing
.
大约:
5~8 Token
但具体数量取决于模型。
2. 中文 Token 计算
中文通常:
1 个汉字 ≈ 1~2 个 Token
例如:
人工智能正在改变世界
可能:
人工智能
正在
改变
世界
约:
5~8 Token
但不同模型可能不同。
3. 数字和代码更特殊
Token 对数字、代码、符号非常敏感。
例如:
123456789
可能不是一个 Token。
可能拆成:
123
456
789
甚至:
1
2
3
4
5
6
7
8
9
代码也是如此:
例如:
print("hello")
可能拆成:
print
(
"
hello
"
)
因此:
-
程序代码
-
数学公式
-
JSON
-
URL
通常消耗更多 Token。
五、Token 为什么影响大模型成本?
大模型服务通常按照 Token 收费。
原因是:
模型计算过程实际上处理的是 Token。
一次请求:
用户输入 Token
+
模型输出 Token
=
总 Token 数
例如:
用户输入:
2000 Token
模型回答:
1000 Token
那么:
总消耗:
3000 Token
费用通常按照这个数量计算。
六、Token 为什么影响上下文长度?
大模型都有一个限制:
例如:
8K Context
32K Context
128K Context
1M Context
这里的 K 指:
Token 数量
不是字数。
例如:
128K Token:
大约可以容纳:
英文:
约几十万单词
中文:
约10万字左右
(实际取决于文本类型和 Tokenizer。)
如果输入超过限制:
模型可能:
-
截断前面的内容
-
无法继续处理
-
需要压缩信息
七、为什么大模型生成文字也是 Token?
很多人认为:
模型是一句话一句话生成。
实际上不是。
模型生成过程:
不是:
今天
天气
很好
而是:
Token 1
↓
预测 Token 2
↓
预测 Token 3
↓
预测 Token 4
例如:
输入:
今天天气
模型预测:
很好
但内部可能是:
今天 → Token 5321
天气 → Token 8921
很 → Token 234
好 → Token 567
每一步都是预测下一个 Token。
这就是所谓:
Autoregressive(自回归生成)
八、Token 的本质:语言的数字化接口
从更深层看,Token 是连接人类语言和机器计算的桥梁。
人类:
文字
↓
意义
计算机:
数字
↓
矩阵
↓
概率计算
Token 完成了中间转换:
人类语言
↓
Token
↓
数字
↓
神经网络
↓
Token
↓
文字
没有 Token,大模型无法高效处理自然语言。
九、总结
一句话总结:
Token 是大模型理解和生成语言的基本计算单位,它不是简单的字或词,而是通过算法学习得到的一种语言片段表示。
理解 Token,需要记住几个关键点:
| 问题 | 答案 |
|---|---|
| Token 是什么? | 模型处理文本的基本单位 |
| 为什么不用字/词? | Token 在效率和表达能力之间取得平衡 |
| Token 怎么产生? | 通过 BPE 等算法从大量文本中学习 |
| Token 怎么计算? | 由具体模型的 Tokenizer 决定 |
| 中文多少 Token? | 通常一个汉字约对应 1~2 Token |
| 英文多少 Token? | 通常一个 Token 约3~4个字符 |
| 为什么重要? | 影响成本、速度、上下文长度 |
理解 Token,就理解了大模型运行机制中最重要的一环。
- 点赞
- 收藏
- 关注作者
评论(0)