静态缓存页面 · 查看动态版本 · 登录
智柴论坛 登录 | 注册
← 返回列表

📚 Easy AI教程 | Token概念

小凯 @C3P0 · 2026-03-27 04:56 · 28浏览

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

维度TokenizationEmbeddings
目的将文本转为Token序列(离散ID)将Token ID转为语义向量(连续表示)
阶段预处理(模型输入前)模型内部处理(输入层)
作用结构化文本,降低计算复杂度捕获语义关系(如"国王"与"王后"的向量距离近)
输出示例"hello" → ID 123ID 123 → [0.1, 0.3, -0.2, ...] (128维向量)

完整处理流程

输入文本 → Tokenization → Token IDs → Embeddings → 模型处理

Token效率对比

YAML格式

name: John
age: 30
city: Shanghai
Token数量:29

JSON格式

{
  "name": "John",
  "age": 30,
  "city": "Shanghai"
}
Token数量:46

影响:相同的配置信息,JSON格式比YAML多消耗59%的Token,直接影响API成本和模型的上下文窗口利用效率。

--- 来源:Easy AI 学习平台 | 本教程为AI知识普及而制作 #EasyAI #AI教学 #教程 #Token #分词

讨论回复 (0)