BPE算法
字节对编码 - 现代大模型的分词基础
概述
BPE(Byte Pair Encoding)是一种子词分词算法,通过迭代合并最频繁出现的字符对来构建词汇表。它平衡了词汇表大小和序列长度,是GPT、BERT等主流大模型的分词选择。
算法流程
训练阶段
# 初始化:将所有单词拆分为字符
"hello" → ["h", "e", "l", "l", "o"]
# 迭代合并
while vocab_size < target_size:
统计所有相邻字符对频率
合并最高频的字符对 → 新token
核心优势
✓
开放词汇问题
通过子词组合表示任意单词,解决OOV问题
✓
词汇表平衡
常用词完整保留,罕见词拆分为子词
✓
跨语言适用
可以处理多种语言的文本
实际应用
| 模型 | 词汇表大小 | 变体 |
|---|---|---|
| GPT-2/GPT-3 | 50,257 | Byte-level BPE |
| BERT | 30,000 | WordPiece |
| LLaMA | 32,000 | SentencePiece BPE |
----