令牌化解析:从令牌到输出
作者:Wendy Frey
在大型语言模型能够生成任何有用的内容之前,它需要先做一些更简单的事情:将你的文本拆分开。
这个过程称为令牌化,它是现代人工智能系统工作中最重要、也最常被忽视的部分之一。
大多数人认为模型是通过阅读单词来理解的,但其实并不是。
它们读取的是令牌:小块文本,可以代表完整的单词、单词的一部分、标点符号、空格,甚至是单独的符号。这些令牌随后被转换为模型可以内部处理的数字 ID。
理解令牌化可以帮助解释很多事情:
- 为什么提示会花钱
- 为什么上下文窗口有限
- 为什么某些语言比其他语言更昂贵
- 为什么模型有时会表现得很奇怪
令牌化位于人工智能管道的最开始, 并且它悄然影响着后面的所有内容。
什么是令牌?
令牌是模型处理的最小文本单元。
它不总是与单词相同。
例如:
| 文本 | 可能的令牌拆分 |
|---|---|
| hello | hello |
| tokenization | token + ization |
| unbelievable | un + believ + able |
| 2026! | 202 + 6 +! |
这很重要,因为模型计算的是令牌,而不是单词。
看似简单的句子可能会使用比预期更多的令牌,特别是使用不常见的单词、代码、表情符号或非英语语言时。
令牌化是如何工作的
在高层次上,令牌化遵循一个简单的管道。
第一步:拆分文本
令牌器根据其词汇规则将原始文本拆分为块。
现代大型语言模型通常依赖于子词令牌化,而不是全词令牌化。
这使它们能够灵活处理:
- 稀有单词
- 打字错误
- 名字
- 多语言输入
- 代码
第二步:将令牌转换为 ID
每个令牌映射到模型词汇中的一个数字。
示例:
| 令牌 | 令牌 ID |
|---|---|
| The | 791 |
| model | 4382 |
| works | 2921 |
模型从未“直接看到”文本。它只看到这些数字表示。
这就是人类语言与神经计算之间的桥梁。
第三步:将 ID 转换为嵌入
创建令牌 ID 后,它们被转换为向量嵌入。
在这一点上:
- 相似的令牌可以占据向量空间中的相邻位置
- 概念之间的关系变得可度量
- 上下文开始变得重要
令牌化将数据输入到系统中。嵌入使其可解释。
为什么子词令牌化成为标准
较旧的自然语言处理系统通常按单词拆分文本。
这种方法有效, 直到它们遇到从未见过的单词。
现代大型语言模型通常使用类似**字节对编码(BPE)**或其他子词策略的方法。
BPE 通过重复合并频繁的字符模式为可重复使用的单元。这改善了压缩和词汇效率。
为什么子词模型更好
| 方法 | 主要问题 |
|---|---|
| 单词级 | 太多未知单词 |
| 字符级 | 太慢,太长 |
| 子词级 | 灵活性和效率的最佳平衡 |
这就是为什么大多数现代模型使用某种形式的子词令牌化。
为什么令牌化影响成本
这就是令牌化变得实用的地方。
大多数人工智能 API 根据以下内容计费:
- 输入令牌
- 输出令牌
这意味着令牌化直接影响价格。
例如:
| 输入类型 | 大致令牌密度 |
|---|---|
| 简单英语 | 低 |
| 代码 | 中等-高 |
| 法律文本 | 高 |
| 中文/日文 | 通常更高 |
| 以表情符号为主的文本 | 意外的高 |
两个字符数相同的提示可能会有非常不同的令牌计数。
这是生产 AI 系统中最常见的隐藏成本驱动因素之一。
为什么令牌化影响模型行为
令牌化也解释了许多“奇怪”的模型行为。
例如:
- 为什么模型在字母计数时会挣扎
- 为什么稀有单词行为不可预测
- 为什么格式更改会影响输出
- 为什么提示顺序很重要
一个模型并不像人类那样在字母或语法上进行思考。它预测的是令牌序列。
这种差异造就了用户注意到的许多怪癖。
社区讨论通常指出令牌结构是模型在字符级推理上失败的一个原因。
令牌变成输出
一旦输入被令牌化:
- 令牌输入到变压器中
- 模型预测下一个令牌
- 该令牌被附加
- 该过程重复
这将继续直到:
- 出现停止令牌
- 达到令牌限制
- 系统中断生成
这意味着人工智能生成从根本上是一个逐令牌预测循环,而不是句子级推理。
最终要点
令牌化看似一个小的技术细节,但它几乎影响了现代大型语言模型系统中的一切。
它影响:
- 成本
- 速度
- 上下文限制
- 多语言表现
- 模型行为
- 输出质量
如果你正在构建人工智能,理解令牌化可以让你更好地直观理解系统为何以某种方式表现。
在得到嵌入、变压器或输出之前, 首先是令牌。
而一切始于此。
谨慎的提示设计、词汇选择和令牌预算有助于确保你的令牌使用和令牌计数与成本和质量目标一致。最终结果是更少意外的完成、更低的 API 成本,以及更好地理解用户写作方式的模型。




