前置知识
阅读本文前,建议先了解 大模型基础理论,特别是输入部分。
一、什么是Token?
Token(词元) 是LLM处理文本的基本单位。就像英语中”单词”是基本单位,但在LLM世界里,Token可以是:
- 一个完整的词(如”苹果”)
- 一个词的一部分(如”苹果”可能分成”苹”+“果”)
- 一个字符(如”a”, “中”)
- 标点符号或特殊标记
Tokenizer(分词器)
把文字转换成Token的过程叫做”分词”(Tokenization),执行这个操作的程序叫分词器。
二、Token是如何变成数字的?
计算机只能处理数字,不能直接处理文字。所以LLM需要把文字转换成数字,这个过程有两步:
2.1 分词 —— 文字变成Token序列
分词器有一个词汇表(Vocabulary),里面收录了所有可能的Token,每个Token对应一个唯一的数字ID。
分词过程:
"今天天气很好"
↓ 分词器
[今天] [天气] [很好]
↓ 查词汇表
[1024] [567] [892]
2.2 嵌入 —— Token变成向量
Token ID只是一个索引,还不能直接被神经网络使用。LLM内部有一个嵌入矩阵,通过查表把Token ID转换成一个高维向量:
Token ID: 1024 ("今天")
↓ 查嵌入矩阵
向量: [0.12, -0.34, 0.56, 0.78, ...] ← 768维或更高
[!比喻] 词向量像什么? 想象把所有词都放在一个多维空间里。“国王”和“王后”的位置很近,“苹果”和“橘子”也很近。LLM通过这种方式“理解”词的含义。
2.3 完整流程
文字:"今天天气很好"
↓ 分词器
Token序列:[今天] [天气] [很好]
↓ 查词汇表
Token ID:[1024] [567] [892]
↓ 查嵌入矩阵
向量序列:[[0.12, -0.34, ...], [0.56, 0.78, ...], ...]
三、位置编码:让模型知道词的顺序
Token Embedding只包含了词的“含义”,但没有包含“位置”信息。Transformer的注意力机制本身不关心位置——“狗咬人”和“人咬狗”在它看来是一样的。
为了让模型理解词的顺序,需要加上位置编码(Position Embedding):
词向量 + 位置向量 = 带位置信息的词向量
↓
进入第一个Transformer层
位置编码的方式
常见的有:
- 绝对位置编码:每个位置有一个固定的向量
- 相对位置编码:关注词与词之间的距离
- RoPE / ALiBi:更先进的长上下文技术
四、嵌入矩阵是训练出来的吗?
是的! 嵌入矩阵是LLM的一部分,在预训练过程中和整个模型一起学习:
- 随机初始化:开始时,嵌入矩阵是随机填充的
- 反向传播:当模型预测错误时,会调整嵌入矩阵的参数
- 逐渐优化:训练足够长时间后,“猫”和”狗”的向量会变得很近(因为它们都是动物)
训练前:向量是随机的,"猫"和"狗"可能很远
训练后:向量是有意义的,"猫"和"狗"很近(语义相似)
五、嵌入层在Transformer中的位置
嵌入层是Transformer的入口。整个流程是:
输入文本
↓
分词器 → Token → Token ID
↓
嵌入层
├── Token Embedding(词向量)
└── Position Embedding(位置向量)
↓ 相加
带位置的词向量
↓
第一个Transformer层
↓
注意力机制处理
↓
输出预测
所以可以说:嵌入层就是Transformer的“输入编码器”,它把文字转换成模型能处理的向量形式。
六、Token与上下文的关系
Token是上下文的基本单位。当我们说“上下文窗口是4000个Token”时,意思是LLM一次最多能处理4000个Token。
上下文窗口 = 4000 Token
你的问题: 100 Token
LLM的回答: 500 Token
已用: 600 Token
剩余可用: 3400 Token ← 还能继续对话
| 模型 | 上下文窗口 | 大约能处理的中文 |
|---|---|---|
| GPT-3.5 | 4K | 约 3000 字 |
| GPT-4 | 8K / 32K / 128K | 约 6000 / 24000 / 96000 字 |
| Claude 2 | 100K | 约 75000 字 |
| Kimi | 128K / 200K+ | 约 96000+ 字 |
中英文差异
1个中文字符 ≈ 1.3 个 Token(中文信息密度高)
七、总结
- Token 是LLM处理文本的基本单位
- 转换过程:文字 → Token → Token ID → 向量(嵌入)
- 嵌入矩阵是模型的一部分,在预训练过程中学习
- 位置编码让模型理解词的顺序
- 嵌入层就是Transformer的”输入编码器”
- 上下文窗口限制了LLM一次能处理的Token数量
八、延伸阅读
- 02-上下文窗口 - 了解上下文窗口如何工作
- 03-Transformer 架构 - 深入理解Transformer的工作原理