BPE算法

字节对编码 - 现代大模型的分词基础

概述

BPE(Byte Pair Encoding)是一种子词分词算法,通过迭代合并最频繁出现的字符对来构建词汇表。它平衡了词汇表大小和序列长度,是GPT、BERT等主流大模型的分词选择。

算法流程

训练阶段

# 初始化:将所有单词拆分为字符
"hello" → ["h", "e", "l", "l", "o"]
# 迭代合并
while vocab_size < target_size:
统计所有相邻字符对频率
合并最高频的字符对 → 新token

核心优势

开放词汇问题

通过子词组合表示任意单词,解决OOV问题

词汇表平衡

常用词完整保留,罕见词拆分为子词

跨语言适用

可以处理多种语言的文本

实际应用

模型词汇表大小变体
GPT-2/GPT-350,257Byte-level BPE
BERT30,000WordPiece
LLaMA32,000SentencePiece BPE
----