# Token 概念详解
## 什么是Token?
**Token** 是语言处理的基本单元,类似于构成文本的"原子"。
Token可以是:
- 一个字符(如 "a")
- 一个子词(如 "ing")
- 一个完整单词(如 "apple")
- 一个短语或符号
## 什么是Tokenization?
**Tokenization(分词)** 是将文本字符串转换为Token序列的过程:
- 文本 → Token序列
- Token → 整数ID
- 可逆转换过程
- 模型输入预处理
## 为什么Tokenization如此重要?
Tokenization直接影响LLM的性能和行为,许多看似与模型架构相关的"奇怪现象"本质上源于分词逻辑。
### 影响概览
- **性能影响** - 分词策略直接影响模型的理解能力和处理效率
- **语言适配** - 不同语言的分词效果差异巨大,影响多语言能力
- **成本控制** - Token数量直接影响API调用成本和计算资源
### 问题示例
#### 1. 拼写与基础任务缺陷
- LLM可能拼错单词或无法反转字符串
- 原因:单词被拆分,模型难以理解完整含义
#### 2. 非英语语言表现
- 日语、中文等语言的分词更复杂
- 问题:Token序列更长,消耗更多上下文窗口
#### 3. 代码处理挑战
- Python代码的缩进空格被分割
- 问题:缩进空格成为独立Token,浪费计算资源
#### 4. 结构化数据格式
- JSON比YAML消耗更多Token
- 问题:JSON的符号更多,Token效率较低
## Tokenization核心流程
### 预训练阶段:构建词汇表
1. **收集语料库** - 获取大量文本数据(网页、书籍等)
2. **初始分词** - 用基础方法分割文本
3. **选择算法** - 选择分词算法(BPE、WordPiece等)
4. **生成词汇表** - 合并高频Token对
5. **分配ID** - 为每个Token分配唯一ID
### 实时分词过程
1. **文本输入** - 接收用户输入的文本
2. **文本转换** - 将文本拆分为词汇表中的Token
3. **ID映射** - Token转为对应的整数ID
4. **添加特殊Token** - 添加控制Token(如<|start|>, <|end|>)
## BPE算法
**Byte Pair Encoding (BPE)** 是现代分词的主流算法。
### BPE原理
1. **初始字符表** - 从基础字符开始,建立初始词汇表
2. **迭代合并** - 统计字符对频率,合并最常见的对
3. **优化压缩** - 平衡词汇表大小与文本压缩效果
### BPE示例
语料库:["hug", "pug", "hugs", "pugs", "huge", "hugging"]
迭代过程:
1. 初始化:[h, u, g, p, s, e, i, n]
2. 统计:u+g出现6次(最频繁)
3. 合并:u + g → ug
4. 继续:h + ug → hug
5. 继续:p + ug → pug
6. 最终词汇表:[h, u, g, p, s, e, i, n, ug, hug, pug]
### BPE优势
- **可逆无损** - 可以完整地将Token序列还原为原始文本
- **泛化性强** - 能处理未登录词(OOV),如"unhug"会被拆分为"un"+"hug"
## Token vs Embeddings
| 维度 | Tokenization | Embeddings |
|------|-------------|------------|
| 目的 | 将文本转为Token序列(离散ID) | 将Token ID转为语义向量(连续表示) |
| 阶段 | 预处理(模型输入前) | 模型内部处理(输入层) |
| 作用 | 结构化文本,降低计算复杂度 | 捕获语义关系(如"国王"与"王后"的向量距离近) |
| 输出示例 | "hello" → ID 123 | ID 123 → [0.1, 0.3, -0.2, ...] (128维向量) |
## 完整处理流程
输入文本 → Tokenization → Token IDs → Embeddings → 模型处理
## Token效率对比
### YAML格式
```yaml
name: John
age: 30
city: Shanghai
```
Token数量:29
### JSON格式
```json
{
"name": "John",
"age": 30,
"city": "Shanghai"
}
```
Token数量:46
**影响**:相同的配置信息,JSON格式比YAML多消耗59%的Token,直接影响API成本和模型的上下文窗口利用效率。
---
来源:Easy AI 学习平台 | 本教程为AI知识普及而制作
#EasyAI #AI教学 #教程 #Token #分词
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!