什么是Token-大模型是怎么理解文字的
大模型是怎么"思考"的》中提到:大模型把文本变成 Token,再变成数字。核心思想:把常见的组合合并成一个 Token,减少 Token 数量。如果你要为医疗领域训练一个专门的大模型,你觉得应该如何设计分词器?应该让哪些词成为一个 Token?中文的 Token 划分更复杂,因为没有天然的"空格"分隔。四、核心概念二:Token ≠ 字,Token ≠ 词。核心概念二:Token ≠ 字,Toke
什么是 Token?大模型是怎么理解文字的?
目录:
-
前文回顾 -
背景引入:大模型不识字? -
核心概念一:什么是 Token -
核心概念二:Token ≠ 字,Token ≠ 词 -
核心概念三:分词器是怎么工作的 -
核心概念四:词向量——数字才是大模型的母语 -
核心概念五:Token 的大小和限制 -
常见问题解答 -
本文小结 -
今日思考题
一、前文回顾
在前几篇文章中,咱们多次提到 Token 这个概念:
-
《大模型是怎么"思考"的》中提到:大模型把文本变成 Token,再变成数字 -
《大模型是如何训练出来的》中提到:训练数据需要先进行 Tokenization
但是!Token 到底是个啥?
今天咱们就把这个问题彻底讲清楚。
二、背景引入:大模型不识字?
先问大家一个问题:
大模型真的"认识"汉字、英文单词吗?
答案可能让你意外:它不认识!
在大模型的"眼里":
"我爱北京天安门" → [1534, 882, 3698, 7721, 5543]
它看到的只是一串数字编号,根本不知道啥叫"汉字"、啥叫"英文"。
大模型的世界里,只有 Token,没有文字。
那 Token 到底是啥?咱们接着往下看。
三、核心概念一:什么是 Token
3.1 Token 的定义
Token 是大模型处理文本的最小单位。
你可以把 Token 理解成**文本的"乐高积木":
一篇文章
↓
拆成很多小块
↓
每一小块就是一个 Token
3.2 Token 和咱们平时说的"词"一样吗?
不一样!
这是很多人的误解,咱们来对比一下:
| 对比项 | 咱们理解的"词" | Token |
|---|---|---|
| 定义 | 有意义的语言单位 | 模型处理的最小单位 |
| 划分 | 按语义划分 | 按训练规则划分 |
| 例子 | "人工智能"是一个词 | 可能被切成 1-3 个 Token |
| 固定吗 | 相对固定 | 不同模型不一样 |
3.3 举个例子感受一下
咱们来看同一个句子,在不同模型中可能被怎么切分:
句子:"Hello, world!"
GPT-2 的切分:
["Hello", ",", " world", "!"]
(4个Token)
GPT-3 的切分:
["Hello", ",", " world", "!"]
(4个Token)
Claude 的切分:
["Hello", ",", " world", "!"]
(4个Token)
中文模型的切分:
["你好", ",", "世界", "!"]
(4个Token)
看出来了吗?不同模型的切分方式可能不同。
四、核心概念二:Token ≠ 字,Token ≠ 词
这个概念非常重要,咱们详细讲讲。
4.1 一个 Token 可能是
| 情况 | 示例 | 说明 |
|---|---|---|
| 一个字 | "我"、"好"、"是" | 常见单字 |
| 一个词 | "苹果"、"北京" | 常见词 |
| 词的一部分 | "artificial"、"智能" | 长词被拆开 |
| 多个字 | "天安门"、"人工智能" | 常用组合 |
| 标点符号 | ","、"!"、"\n" | 各种符号 |
| 空格 | " " | 英文空格也是 Token |
4.2 举个例子:看看 "hamburger" 怎么切
"hamburger"
可能切分成:
["hamburger"] (1个Token,如果这个词很常见)
也可能切分成:
["ham", "burger"] (2个Token)
还可能切分成:
["h", "am", "bur", "ger"] (4个Token,少见)
具体怎么切,完全取决于分词器是怎么训练的。
4.3 中文的 Token 更有意思
"北京天安门"
可能切分:
["北京", "天安门"] (2个Token)
也可能切分:
["北", "京", "天安门"] (3个Token)
还可能切分:
["北京", "天", "安", "门"] (4个Token)
中文的 Token 划分更复杂,因为没有天然的"空格"分隔。
五、核心概念三:分词器是怎么工作的
负责把文本切成 Token 的东西叫 分词器(Tokenizer)。
5.1 分词器的工作流程
咱们用一张图来感受一下:
┌─────────────────────────────────────┐
│ 分词器工作流程 │
└─────────────────────────────────────┘
↓
┌─────────────────┐
│ 输入:文本 │
│ "我爱北京" │
└─────────────────┘
↓
┌─────────────────┐
│ 第一步:切分 │
│ 找到Token边界 │
└─────────────────┘
↓
┌─────────────────┐
│ 第二步:编码 │
│ 转成Token ID │
└─────────────────┘
↓
┌─────────────────┐
│ 输出:Token序列 │
│ [1534, 882, 3698] │
└─────────────────┘
5.2 分词器是怎么"学会"切分的?
分词器需要在大量文本上训练。
常用的一种方法叫 BPE(Byte Pair Encoding):
训练过程(简化版):
初始状态:每个字符都是一个Token
原文:"hamburger hamburger hang"
Token:["h", "a", "m", "b", "u", "r", "g", "e", "r", ...]
第一步:统计最常出现的字符对
"ha" 出现最多 → 合并成新Token
Token:["ha", "m", "b", "u", "r", "g", "e", "r", ...]
第二步:继续统计
"ham" 出现最多 → 合并
"bur" 出现最多 → 合并
...
最终状态:
["ham", "bur", "ger"] (高效的表达)
核心思想:把常见的组合合并成一个 Token,减少 Token 数量。
5.3 不同的分词策略
| 策略 | 特点 | 优点 | 缺点 |
|---|---|---|---|
| 按字切分 | 每个字一个 Token | 简单、覆盖全 | 序列太长、效率低 |
| 按词切分 | 每个词一个 Token | 序列短、语义好 | 未知词处理困难 |
| BPE | 常见组合合并 | 平衡、高效 | 实现复杂 |
| WordPiece | 类似 BPE | 更灵活 | 需要更多数据 |
主流大模型(GPT、BERT、Claude)都用 BPE 或其变种。
六、核心概念四:词向量——数字才是大模型的母语
Token 被切分出来后,还要转换成词向量(Embedding)。
这是大模型理解文字的关键!
6.1 什么是词向量?
简单来说,词向量就是用一串数字来表示一个 Token。
"苹果" 这个 Token
↓
转换成词向量
↓
[0.23, -0.56, 0.78, 0.12, -0.34, ..., 0.45]
(4096个数字,这就是 GPT-3 的词向量维度)
每个 Token 都对应一个唯一的向量。
6.2 为什么要转换成数字?
因为神经网络只能处理数字!
文本:"苹果"
↓ 计算机无法直接处理
Token ID:3698
↓ 只是编号,没有语义
词向量:[0.23, -0.56, ...]
↓ 有语义!可以计算!
6.3 词向量怎么来的?
有两种方式:
方式一:训练得到
在训练大模型的同时,词向量也被训练出来了。
初始状态:随机分配向量
"苹果" → [随机数字]
训练过程:
- "苹果" 和 "香蕉" 经常一起出现 → 它们的向量越来越接近
- "苹果" 和 "汽车" 很少一起出现 → 它们的向量差距很大
最终状态:
"苹果" → [有语义的向量]
方式二:预训练词向量
先单独训练词向量,再用到大模型中:
Word2Vec、GloVe、FastText...
(专门训练词向量的方法)
6.4 词向量的神奇之处
词向量最神奇的是:它能捕捉语义关系!
咱们来做个计算:
"国王" 的向量 - "男人" 的向量 + "女人" 的向量
≈ "女王" 的向量
这不是巧合,而是词向量真正学到了语义!
咱们用一张图来感受一下(想象在二维空间):
国王
↑
|
男 ──┼── 女
↓
王后
("国王" - "男" + "女" ≈ "女王")
6.5 词向量怎么表示语义?
通过向量之间的距离:
距离近 → 语义相似
"苹果" 和 "香蕉" 距离近(都是水果)
"苹果" 和 "汽车" 距离远(没啥关系)
距离远 → 语义不同
"开心" 和 "难过" 距离远(情感相反)
词向量把"意思"变成了"距离"。
七、核心概念五:Token 的大小和限制
了解了 Token 是啥,咱们再来说说使用中的实际问题。
7.1 Token 和字符数的换算
一个常见的疑问:
1 个 Token ≈ 多少个字符?
**没有固定答案,但有个经验值**:
| 语言 | 1 Token ≈ ? |
|---|---|
| 英文 | 约 4 个字符 |
| 中文 | 约 1.5-2 个汉字 |
| 代码 | 约 3-4 个字符 |
举个例子:
英文:"Hello, world!"
→ 4 个 Token,13 个字符
→ 1 Token ≈ 3.25 个字符
中文:"你好,世界!"
→ 4 个 Token(可能),6 个汉字
→ 1 Token ≈ 1.5 个汉字
7.2 上下文窗口限制
大家可能听说过:
GPT-3.5 支持 4096 个 Token GPT-4 支持 8192/32768 个 Token Claude 3 支持 200000 个 Token
这就是 上下文窗口(Context Window)——模型能"记住"的 Token 数量。
超过这个数量会怎样?
你的对话历史 + 当前输入 > 上下文窗口
↓
模型会"遗忘"最早的内容
↓
只保留最近的 N 个 Token
咱们用一张图来感受一下:
┌────────────────────────────────────┐
│ 上下文窗口(假设 8 个 Token) │
├────────────────────────────────────┤
│ 你好 │ 今天 │ 天气 │ 真 │ 好 │ 啊 │ 是 │ 的 │
└────────────────────────────────────┘
↑
新输入
┌────────────────────────────────────┐
│ 今天 │ 天气 │ 真 │ 好 │ 啊 │ 是 │ 的 │ 呢 │
└────────────────────────────────────┘
↑
"你好"被挤掉了
7.3 Token 的成本
很多 AI 服务是按 Token 收费的:
GPT-4 定价(示例):
- 输入:$0.03 / 1K Token
- 输出:$0.06 / 1K Token
一篇文章(约 5000 字):
- 中文:约 3000-4000 Token
- 英文:约 1200-1500 Token
费用计算:
输入 4000 Token → $0.12
输出 1000 Token → $0.06
总计 → $0.18(约 1.3 元人民币)
中文更贵,因为中文需要更多 Token
7.4 实用技巧:如何节省 Token
| 技巧 | 说明 |
|---|---|
| 压缩提示词 | 用简洁的表达代替冗长的说明 |
| 删除无关内容 | 对话中及时清理无关信息 |
| 用英文 | 同样的内容,英文 Token 更少 |
| 分段处理 | 超长文本分段后合并结果 |
八、常见问题解答
Q1:为什么中文比英文费 Token?
因为分词器主要针对英文优化。
英文:"I love you" → 3 个 Token
中文:"我爱你" → 可能 3-5 个 Token(取决于分词器)
大部分大模型的训练数据英文占主导,所以分词器对英文更友好。
Q2:可以自定义分词器吗?
可以!
如果你要训练自己的大模型,可以:
-
收集你的领域数据 -
在这些数据上训练专门的分词器 -
用这个分词器训练模型
这样可以在你的领域获得更高效的 Token 划分。
Q3:为什么有时候一个词被切得很碎?
可能的原因:
| 原因 | 说明 |
|---|---|
| 词太生僻 | 训练数据中少见,没机会合并 |
| 拼写错误 | 分词器不认识 |
| 特殊符号 | 某些符号被单独处理 |
| 混合语言 | 中英混合时可能切得奇怪 |
Q4:Token 和字节的区别?
| Token | 字节 |
|---|---|
| 逻辑单位 | 物理单位 |
| 模型处理的最小单位 | 计算机存储的最小单位 |
| 数量取决于分词器 | 数量取决于编码(UTF-8) |
| 1 Token ≈ 4 字节 | 1 汉字 = 3 字节(UTF-8) |
九、本文小结
咱们今天主要讲了以下几点:
1. Token 是什么
-
大模型处理文本的最小单位 -
不是字,也不是词,而是模型训练出来的"单位" -
可以是字、词、词的一部分、标点等
2. 分词器的工作原理
-
把文本切成 Token -
使用 BPE 等算法在大量文本上训练 -
不同模型的分词器可能不同
3. 词向量——数字才是大模型的母语
-
每个 Token 对应一个向量(一串数字) -
向量之间的距离表示语义相似度 -
通过训练获得语义表示
4. Token 的实际应用
-
上下文窗口限制 -
Token 计费 -
中文比英文费 Token
5. 关键公式
文本 → 分词 → Token → 词向量 → 神经网络处理
十、今日思考题
今天留一个思考题:
如果你要为医疗领域训练一个专门的大模型,你觉得应该如何设计分词器?
提示:医疗文本有什么特点?应该让哪些词成为一个 Token?
大家先思考思考,欢迎在评论区说说你的想法!
如果这篇文章对你有帮助,欢迎点赞关注,我会持续用大白话讲解复杂的技术概念!
系列文章进度:
-
✅ 微调 -
✅ Transformer -
✅ 思考原理 -
✅ 训练流程 -
✅ Token(本文)
下一期预告: 什么是幻觉?大模型为什么会"一本正经地胡说八道"?
本文由 mdnice 多平台发布
更多推荐

所有评论(0)