AI・機械学習
上級

BPE (Byte Pair Encoding)(ビーピーイー(バイトペアエンコーディング))

テキストをサブワード単位に分割するトークナイゼーションアルゴリズム。最も頻出する隣接文字ペアを繰り返しマージして語彙を構築する。GPT系・LLaMA系など主要LLMの大半が採用する業界標準手法で、未知語への対応力とコンパクトな語彙サイズを両立する。

0 回閲覧
0 いいね
2026/6/20 更新
関連タグ
BPE
トークナイゼーション
サブワード
NLP
語彙
GPT
LLM

BPE(Byte Pair Encoding)とは

BPE(Byte Pair Encoding)は、テキストをサブワード(部分語)単位に分割するトークナイゼーションアルゴリズムである。単語単位の分割では未知語(OOV: Out-of-Vocabulary)が大量に発生し、文字単位の分割では系列長が爆発する。BPEはこの両極の中間に位置し、頻出するサブワードを1トークンに、稀な語は文字レベルに分解することで、語彙サイズと表現力のバランスを取る。

アルゴリズムの仕組み

BPEの学習は以下のステップで進行する。

  1. 訓練コーパスの全テキストをUTF-8バイト列(または文字列)に分解し、初期語彙とする
  2. コーパス中で最も頻出する隣接トークンペアをカウントする
  3. 最頻出ペアを新しい1トークンとしてマージし、語彙に追加する
  4. ステップ2-3を目標語彙サイズに達するまで繰り返す
ステップテキスト状態マージされるペア
初期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トークンあたりの情報量が増え系列長が短くなるが、埋め込みテーブルのメモリ消費も増加する。

Byte-Level BPE

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の利点は多言語対応の容易さだ。日本語・中国語・韓国語・アラビア語など非ラテン文字を含むテキストでも、バイト列として統一的に処理できる。ただしバイト単位の初期分割は系列長を増加させるため、十分な語彙サイズが必要になる。

主要LLMのBPE語彙サイズ比較

モデルトークナイザ語彙サイズベース手法
GPT-4ocl100k_base (tiktoken)100,256Byte-Level BPE
GPT-3.5cl100k_base (tiktoken)100,256Byte-Level BPE
GPT-2gpt2 (tiktoken)50,257Byte-Level BPE
LLaMA 3SentencePiece BPE128,256Byte-Level BPE
LLaMA 2SentencePiece BPE32,000Byte-Level BPE
Mistral 7BSentencePiece BPE32,000Byte-Level BPE
Qwen2.5カスタムBPE151,646Byte-Level BPE
Claude 3.5非公開非公開BPEベース推定

BPEと他のサブワード手法の比較

手法学習アプローチ採用モデル例特徴
BPEボトムアップ(マージ)GPT系, LLaMA, Mistral最頻出ペアを貪欲にマージ
WordPieceボトムアップ(尤度最大化)BERT, DistilBERTマージ候補を尤度で評価
Unigramトップダウン(語彙削減)T5, mBART, ALBERT大語彙から尤度の低いトークンを除去

BPEは実装がシンプルで高速な点が強みだ。WordPieceは各マージの言語モデル尤度を評価するため計算コストが高いが、理論的にはより最適な語彙を構築できる。Unigramは確率モデルに基づくトップダウンアプローチで、複数の分割候補から最適解を選ぶ柔軟性がある。

トークナイゼーションが性能に与える影響

トークナイザの設計はLLMの性能に直接影響する。

  • コンテキスト長: 同じテキストでも語彙サイズが大きいトークナイザの方が少ないトークン数で表現できる。LLaMA 2(32K語彙)では日本語テキストが英語の2〜3倍のトークン数になるが、Qwen2.5(151K語彙)では差が小さい
  • 推論コスト: トークン数が少ないほど自己回帰生成のステップ数が減り、推論が高速化する
  • 多言語性能: 訓練コーパスに含まれない言語はバイト単位に分解されトークン効率が悪化する。語彙に日本語サブワードを十分含むかがモデル選定の判断基準になる
  • コード生成: プログラミング言語の予約語やインデント記号がトークンとして学習されているかでコード生成精度が変わる

FAQ

Q1. BPEのトークナイゼーションはどのように日本語を処理しますか?

Byte-Level BPEでは日本語テキストをUTF-8バイト列に分解してからマージを進めます。漢字1文字は3バイト、ひらがな・カタカナも3バイトで表現されるため、頻出する日本語サブワードがマージ対象になります。語彙に日本語トークンが多く含まれるモデル(Qwen、日本語特化LLM)ほど日本語のトークン効率が良くなります。

Q2. 語彙サイズはどのくらいが最適ですか?

一般的に32,000〜150,000が実用的な範囲です。語彙が小さすぎるとトークン数が増えコンテキスト長を圧迫し、大きすぎると埋め込みテーブルのパラメータ数が増加します。多言語対応を重視するモデルでは100,000以上の語彙が推奨されます。

Q3. BPEトークナイザは訓練後に語彙を変更できますか?

原則としてできません。トークナイザの語彙はモデルの埋め込み層と密接に結びついており、語彙を変更すると埋め込みの再学習が必要です。新しい語彙でファインチューニングする「語彙拡張」手法は研究されていますが、実用上はトークナイザごとモデルを再訓練するのが一般的です。

この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/20