テキストをサブワード単位に分割するトークナイゼーションアルゴリズム。最も頻出する隣接文字ペアを繰り返しマージして語彙を構築する。GPT系・LLaMA系など主要LLMの大半が採用する業界標準手法で、未知語への対応力とコンパクトな語彙サイズを両立する。
BPE(Byte Pair Encoding)は、テキストをサブワード(部分語)単位に分割するトークナイゼーションアルゴリズムである。単語単位の分割では未知語(OOV: Out-of-Vocabulary)が大量に発生し、文字単位の分割では系列長が爆発する。BPEはこの両極の中間に位置し、頻出するサブワードを1トークンに、稀な語は文字レベルに分解することで、語彙サイズと表現力のバランスを取る。
BPEの学習は以下のステップで進行する。
| ステップ | テキスト状態 | マージされるペア |
|---|---|---|
| 初期 | l o w e r | - |
| 1回目 | lo w e r | (l, o) → lo |
| 2回目 | low e r | (lo, w) → low |
| 3回目 | low er | (e, r) → er |
| 4回目 | lower | (low, er) → lower |
実際のLLM訓練では語彙サイズは32,000〜128,000程度に設定される。語彙が大きいほど1トークンあたりの情報量が増え系列長が短くなるが、埋め込みテーブルのメモリ消費も増加する。
GPT-2で導入されたByte-Level BPE(BBPE)は、文字ではなくUTF-8バイト(0x00〜0xFF、256種類)を初期語彙とする変種だ。これにより任意の言語・記号・絵文字を前処理なしでトークン化でき、未知文字が原理的に存在しない。GPT-3/GPT-4/GPT-4o、LLaMA 2/3、Mistral、Qwen2/3 など現行の主要モデルはすべてBBPEを採用している。
BBPEの利点は多言語対応の容易さだ。日本語・中国語・韓国語・アラビア語など非ラテン文字を含むテキストでも、バイト列として統一的に処理できる。ただしバイト単位の初期分割は系列長を増加させるため、十分な語彙サイズが必要になる。
| モデル | トークナイザ | 語彙サイズ | ベース手法 |
|---|---|---|---|
| GPT-4o | cl100k_base (tiktoken) | 100,256 | Byte-Level BPE |
| GPT-3.5 | cl100k_base (tiktoken) | 100,256 | Byte-Level BPE |
| GPT-2 | gpt2 (tiktoken) | 50,257 | Byte-Level BPE |
| LLaMA 3 | SentencePiece BPE | 128,256 | Byte-Level BPE |
| LLaMA 2 | SentencePiece BPE | 32,000 | Byte-Level BPE |
| Mistral 7B | SentencePiece BPE | 32,000 | Byte-Level BPE |
| Qwen2.5 | カスタムBPE | 151,646 | Byte-Level BPE |
| Claude 3.5 | 非公開 | 非公開 | BPEベース推定 |
| 手法 | 学習アプローチ | 採用モデル例 | 特徴 |
|---|---|---|---|
| BPE | ボトムアップ(マージ) | GPT系, LLaMA, Mistral | 最頻出ペアを貪欲にマージ |
| WordPiece | ボトムアップ(尤度最大化) | BERT, DistilBERT | マージ候補を尤度で評価 |
| Unigram | トップダウン(語彙削減) | T5, mBART, ALBERT | 大語彙から尤度の低いトークンを除去 |
BPEは実装がシンプルで高速な点が強みだ。WordPieceは各マージの言語モデル尤度を評価するため計算コストが高いが、理論的にはより最適な語彙を構築できる。Unigramは確率モデルに基づくトップダウンアプローチで、複数の分割候補から最適解を選ぶ柔軟性がある。
トークナイザの設計はLLMの性能に直接影響する。
Byte-Level BPEでは日本語テキストをUTF-8バイト列に分解してからマージを進めます。漢字1文字は3バイト、ひらがな・カタカナも3バイトで表現されるため、頻出する日本語サブワードがマージ対象になります。語彙に日本語トークンが多く含まれるモデル(Qwen、日本語特化LLM)ほど日本語のトークン効率が良くなります。
一般的に32,000〜150,000が実用的な範囲です。語彙が小さすぎるとトークン数が増えコンテキスト長を圧迫し、大きすぎると埋め込みテーブルのパラメータ数が増加します。多言語対応を重視するモデルでは100,000以上の語彙が推奨されます。
原則としてできません。トークナイザの語彙はモデルの埋め込み層と密接に結びついており、語彙を変更すると埋め込みの再学習が必要です。新しい語彙でファインチューニングする「語彙拡張」手法は研究されていますが、実用上はトークナイザごとモデルを再訓練するのが一般的です。