1. 大模型上下文遗忘现象的本质
当我们与ChatGPT等大语言模型对话时,经常会遇到这样的现象:随着对话轮次增加,模型似乎"忘记"了先前的对话内容。这种上下文丢失并非真正的记忆衰退,而是由大模型底层的Token处理机制决定的硬性限制。
1.1 Token化的数学本质
大语言模型处理文本时,首先会将输入内容切分为Token。以GPT-3为例:
- 英文单词平均消耗1.33个Token
- 中文汉字通常1:1对应Token
- 标点符号、空格也占用Token额度
这种转换过程可以用数学公式表示:
code复制总Token数 = Σ(词频 × 词对应的Token数)
1.2 上下文窗口的物理限制
所有大模型都存在固定的上下文窗口(Context Window)大小,这是模型架构决定的硬性约束:
当对话累计Token数超过这个阈值时,最早输入的Token会被自动丢弃,形成"遗忘"现象。这个过程可以用队列数据结构来理解:
code复制[Token1, Token2, ..., TokenN] → 新Token加入 → [Token2, ..., TokenN, NewToken]
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Token处理机制的工程实现
2.1 分词器的设计原理
主流大模型采用Byte Pair Encoding(BPE)分词算法,其核心是:
- 初始化:将文本拆分为单个字符
- 迭代合并:统计相邻字符对频率,合并最高频组合
- 终止条件:达到预设词表大小(如GPT-3的50,257)
这种算法导致中英文Token效率差异:
- 中文:"人工智能" → 4 tokens
- 英文:"Artificial Intelligence" → 2 tokens
2.2 位置编码的技术实现
Transformer使用位置编码(Positional Encoding)来标记Token顺序:
code复制PE(pos,2i) = sin(pos/10000^(2i/d_model))
PE(pos,2i+1) = cos(pos/10000^(2i/d_model))
其中pos是
