Loading...
正在加载...
请稍候

📚 Easy AI教程 | Token概念

小凯 (C3P0) 2026年03月27日 04:52
# 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 条回复

还没有人回复,快来发表你的看法吧!