モデル・技術

BPEとは?頻出ペアを育てる——語彙を分割で組み立てるトークン化

読み:びーぴーいー / 英:BPE(Byte Pair Encoding)

更新日: 読了目安:約6分

BPE(Byte Pair Encoding)は、コーパス内で最も頻繁に現れるペアを繰り返し統合し、語彙(トークンの一覧)を構築するサブワード・トークン化手法です。トークンが「LLMが処理する最小単位」なら、BPEは「その単位をどう切るか」の設計図。本記事はマージ回数の暗記ではなく、「なぜ単語を丸ごと持たず、分割で語彙を育てるか」に焦点を当てます。

単語単位の限界

もし語彙を「辞書に載る単語だけ」に限定すると、次の問題が起きます。

  • 未知語 — 学習時に見なかった語をどう扱うか
  • 語彙の爆発 — 複合語・固有名詞・造語で辞書が際限なく膨らむ
  • 言語差 — 日本語など、単語境界が曖昧な言語での分割

BPEはサブワード——語の一部や文字のまとまり——を語彙の素片にします。「unhappiness」を一語として覚えるのではなく、「un」「happi」「ness」のような頻出パーツを組み合わせて表現するイメージです。

ペア統合の直感

試験向けの手順イメージは次のとおりです。

  1. 初期 — 文字(またはバイト)単位からスタート
  2. カウント — コーパス内で最も頻繁な隣接ペアを探す
  3. 統合 — そのペアを新しいシンボル(サブワード)として語彙に追加
  4. 繰り返し — 目標の語彙サイズに達するまでマージを続ける

名前の Byte Pair は、元々バイト列に対してペア統合を行う発想に由来します。結果として、よく使われる文字列ほど長いトークンになり、まれな語は短い断片の組み合わせで表現されます。

G-347のfastTextが「文字n-gramで部分語情報を使う」と説明されるのと同様、語の内部構造を活かす発想の一族です(fastText自体はBPEではありませんが、サブワード思想は近い)。

LLMのTokenizerとの関係

現代のLLMGPT系列など)は、学習前にテキストをトークン列に変換します。この分割器がTokenizer(トークナイザ)で、BPEやその改良(SentencePiece、WordPieceなど)が広く使われます。

段階何が起きるか
事前学習前コーパスからBPEで語彙を構築
推論時入力テキストを語彙に沿ってトークンID列に変換
生成時モデルが次のトークンを1つずつ予測(TF-0178

だから「1単語=1トークン」とは限りません(トークン記事参照)。BPEの語彙次第で、英単語の一部や日本語の数文字が1トークンになります。

似た用語との区別

用語役割BPEとの違い
トークン処理・生成の単位BPEはトークンを作る手法
BoW文書の特徴ベクトル古典的な文書表現。トークン化とは別目的
n-gram連続語列のモデル言語モデル。BPEは語彙構築
ワンホット1語の疎な符号化単語の符号化。BPEはサブワード語彙の構築

試験で押さえるポイント

  • 定義 — 頻出ペアを統合して語彙を構築するトークン化(サブワード)
  • 目的 — 未知語対応・語彙サイズの抑制・多言語対応
  • 位置づけトークンを作るTokenizerの中核手法の一つ
  • すり替え回避 — BoW、埋め込み、Transformerそのものではない

演習で確認する

生成AIパスポート:TF-0156TF-0178 G検定:G-244G-347

すり替えに注意

誤った説明正しい理解
BPE=BoWトークン化 vs 文書の出現回数ベクトル
BPE=トークンそのものトークンを定義する手法
BPE=word2vec語彙構築 vs 意味ベクトルの学習
BPE=Transformer前処理 vs モデルアーキテクチャ
1単語=必ず1トークンサブワード分割されうる

よくある質問

BPEは何をする手法ですか?

コーパス内で最も頻繁に現れる文字やサブワードのペアを繰り返し統合し、語彙(トークンの一覧)を構築するトークン化手法です。単語を一塊とみなさず、頻出部分をサブワードとして学習する点が特徴です。

BPEとトークンは同じですか?

違います。BPEはテキストをトークン列に分割するための語彙構築・トークン化の手法です。トークンは分割後の処理単位そのものを指します。GPTなどのTokenizerはBPE系の手法を採用していることが多いです。

BPEとBoWは同じですか?

いいえ。BPEはLLM向けのサブワードトークン化です。BoW(Bag of Words)は文書を単語の出現回数ベクトルで表す古典的な文書表現手法であり、目的も時代も異なります。