AI・機械学習
中級
BPEトークナイゼーション(Byte Pair Encoding)(ビーピーイートークナイゼーション)
LLM学習で最も広く使われるサブワードトークン化アルゴリズム。頻出するバイト/文字ペアを繰り返し結合してボキャブラリーを構築する。GPT-2/3/4・Llama・Mistralなど主要LLMで採用され、未知語を複数サブワードに分割する柔軟性が特徴。
0 回閲覧
0 いいね
2026/6/6 更新
関連タグ
tokenization
bpe
subword
vocabulary
llm-training
nlp
BPEトークナイゼーション(Byte Pair Encoding)
BPE(Byte Pair Encoding)はLLMのトークン化処理で最も広く採用されているサブワードアルゴリズム。1994年のPhilip Gageのデータ圧縮アルゴリズムが起源で、2016年にSennrichらがNMT(ニューラル機械翻訳)向けに転用。GPT-2での採用を経て、GPT-4・Llama-3・Mistral・Claude等の主要LLMの標準トークナイザーとして確立された。
BPEアルゴリズムの動作
- 初期化: 入力文字列をキャラクター(または文字)単位に分割
- 頻度カウント: 全テキストコーパスで隣接ペアの出現頻度を集計
- 最頻ペア結合: 最も頻出するペアを1つのトークンとしてボキャブラリーに追加
- 繰り返し: 目標語彙数(例: 50,000)に達するまで繰り返す
- 確定: 学習済みマージルールをトークナイザーとして保存
主要LLMのBPE語彙サイズ比較
| モデル | vocab size | トークナイザー | 備考 |
|---|---|---|---|
| GPT-2 | 50,257 | tiktoken BPE | バイトレベル |
| GPT-4/4o | 100,256 | tiktoken cl100k_base | 多言語強化 |
| Llama-2 | 32,000 | SentencePiece BPE | 日本語弱め |
| Llama-3 | 128,256 | tiktoken 互換 | 多言語大幅強化 |
| Mistral-7B | 32,000 | SentencePiece BPE | Llama-2互換 |
| Gemma-2 | 256,000 | SentencePiece BPE | 最大級vocab |
語彙サイズとトレードオフ
語彙サイズが大きいほど1トークンあたりの情報量が多くなり(高圧縮率)、同じテキストを少ないトークン数で表現できる。ただし大きすぎると埋め込み行列のメモリが増加(例: 256,000 × 4096次元 × fp16 = 2GB)、低頻度トークンの学習データが少なくなり品質低下、推論時のソフトマックス計算コストが増加する問題がある。100,000〜256,000が2024〜2025年の主流。日本語・中国語等CJK言語を扱う場合は大きめの語彙サイズが有利。
Byte-Level BPEとの違い
通常のBPEはUnicodeキャラクターから開始するが、Byte-Level BPE(GPT-2で導入)は256バイト値から開始する。これにより全Unicode文字をバイト列として表現でき、未知文字が存在しない(OOV問題が発生しない)利点がある。GPT-4/Llama-3はいずれもByte-Level BPEを採用している。