BPEとは
BPE(Byte Pair Encoding:バイトペアエンコーディング)とは、テキストをサブワード単位に分割するためのアルゴリズムです。元々はデータ圧縮のアルゴリズムですが、2015年にSennrichらによりニューラル機械翻訳に適用され、現在は大規模言語モデルの標準的なトークン化手法となっています。
BPEの学習アルゴリズム
BPEの学習は以下の手順で行われます。まず、コーパス中のすべての単語を文字に分解します。次に、隣接する文字ペアの中で最も頻度が高いペアを一つのトークンとして統合します。この統合操作を指定した語彙サイズに達するまで繰り返します。例えば「lo」と「w」が頻繁に隣接するなら「low」という新しいトークンが作られます。
BPEの適用
学習済みのBPEルールを新しいテキストに適用する際は、学習時と同じ順序で統合操作を適用していきます。頻出する文字列はそのまま一つのトークンになり、珍しい文字列は細かく分割されます。
BPEの採用例
GPTシリーズはBPEの変種を採用しています。GPT-2以降ではバイトレベルBPE(Byte-level BPE)が使われ、任意のUnicode文字列を処理できます。Llamaなどの他の主要なLLMでもBPEベースのトークナイザーが広く使用されています。