# サブワードトークン化
## 定義
サブワードトークン化(subword tokenization)とは、テキストを単語より細かく文字より粗い「サブワード」という単位に分割する手法である。バイト単位・文字単位・単語単位の分割手法のバランスを取ったものであり、言語非依存のシンプルなアルゴリズムを維持しつつ自然言語の事前知識を取り込め、分割後の系列長も長くなりすぎないという利点を持つ。代表的な構築アルゴリズムにバイト対符号化(Byte Pair Encoding, BPE)とサブワードユニグラム言語モデルがあり、これらをOSSとして実装したものがSentencePieceである。(Source: [[@2025__Gihyo__原論文から解き明かす生成AI - Chapter 2 入力データの特徴量化]] §2.2)
## トークン化の単位比較(バイト・文字・単語・サブワード)
テキストの分割単位は次のように整理できる(表2.3)。
| 分割単位 | 分割手法 | 語彙サイズ | 系列長 | 言語依存性 |
|---|---|---|---|---|
| バイト | バイト単位で区切る | 小(UTF-8で256) | 長い | なし |
| 文字 | 文字単位で区切る | 中〜大(Unicode全体で15万程度) | 中 | なし |
| 単語 | 言語依存の処理(空白区切り・形態素解析等) | 大(未知語に弱い) | 短い | 大きい |
| サブワード | BPEやユニグラム言語モデルなど | 調整可能 | 調整可能 | 小さい |
バイト単位は語彙サイズを抑えられるが分割後の系列が長くなり、マルチバイト文字の意味をモデルがゼロから組み立てる必要があり解釈性も低い。文字単位は語彙サイズが数万〜十数万に増え、依然として自然言語の事前知識に乏しい。単語単位は解釈性・系列長の面で優れるが、日本語・中国語のような単語区切りが明確でない言語では形態素解析が必要になるなど言語依存性が大きく、未知語・低頻度語への対応も難しい。サブワード分割はこれらの欠点を折衷する手法として、2025年時点で生成AIのテキスト分割手法のデファクトスタンダードになっている。(Source: [[@2025__Gihyo__原論文から解き明かす生成AI - Chapter 2 入力データの特徴量化]] §2.2)
## バイト対符号化(BPE)
BPEという名称は Gage, "A new algorithm for data compression" (1994) の圧縮アルゴリズムに由来する。頻出するバイトのペアを未使用のバイトに置き換える操作を、頻出バイトペアがなくなるか未使用バイトがなくなるまで繰り返す貪欲な圧縮手法である。この「頻出するペアを1つの記号に置き換える」アイデアを、Sennrich et al., "Neural Machine Translation of Rare Words with Subword Units" (2015) が「頻出する文字列をまとめて1つのトークンに置き換える」手法として自然言語処理に応用した。原論文の動機は、低頻度出現単語(稀な単語)への対応であり、例えばドイツ語の複合語 Abwasserbehandlungsanlage(廃水処理施設)を Abwasser(廃水)・Behandlungs(処理)・Anlage(施設)というサブワードに分割することで、語の構成や意味の対応関係が明確な翻訳を学習・汎化できるようにする。原論文の重要な前提は、単語分割をしてその頻度を数えやすい言語(スペース区切りの英語など)を念頭に置いていることであり、日本語・中国語のような言語にはそのまま適用できない。(Source: [[@2025__Gihyo__原論文から解き明かす生成AI - Chapter 2 入力データの特徴量化]] §2.2, §2.3)
## サブワードユニグラム言語モデルとSentencePiece
Kudo, "Subword Regularization" (2018) は、サブワード列の生成確率を各サブワードの出現確率の積としてモデル化するサブワードユニグラム言語モデルを提案した。BPEが貪欲法で分割を一意に決めるのに対し、ユニグラム言語モデルは確率モデルであるため、ビームサーチなどによる柔軟な分割探索や、分割を確率的にサンプリングして学習するサブワード正則化(過学習の抑制、機械翻訳の頑健性向上)が可能になる。原論文は、十分大きい語彙をヒューリスティックに準備した後、EMアルゴリズムで各サブワードの出現確率を求め、語彙から除いたときの尤度低下(損失)が小さい順に上位η%を残すというプロセスを繰り返して語彙と出現確率を最適化する。(Source: [[@2025__Gihyo__原論文から解き明かす生成AI - Chapter 2 入力データの特徴量化]] §2.4)
Kudo and Richardson, "SentencePiece" (2018) は、BPEとサブワードユニグラム言語モデルの両方を実装したOSSトークナイザーである。Normalizer(Unicode正規化)・Trainer(サブワード分割方法の学習)・Encoder(正規化とトークン化)・Decoder(トークン列から正規化テキストへの復元)の4機能を持ち、接尾辞配列と優先度付きキューを用いることで初期語彙の構築を計算量 $O(N\log N)$ で実施できる(ナイーブな実装では $O(N^2)$)。SentencePieceの最大の特徴は可逆トークン化であり、空白をUnicode文字▁に置き換えてトークンの一部として扱うことで $\mathrm{Decode}(\mathrm{Encode}(\mathrm{Normalize}(text)))=\mathrm{Normalize}(text)$ を保証し、脱トークン化が一意に定まらない問題(言語依存の空白挿入ルールが必要になる問題)を解消する言語非依存な設計を実現している。ただしこの設計により time と ▁time が異なるIDの語彙として登録されるなど、語彙サイズや埋め込みの効率という点では不利な側面もある。(Source: [[@2025__Gihyo__原論文から解き明かす生成AI - Chapter 2 入力データの特徴量化]] §2.5)
## バイトレベルBPEと可逆トークン化
Radford et al., "Language models are unsupervised multitask learners" (2019, GPT-2) は、標準的なBPE実装がUnicodeコードポイント単位で動作しバイト列そのものを扱っていないことを指摘し、UTF-8バイト単位でBPEを実施する手法を提案した。最初の語彙256トークン(1バイト)からBPEのマージで50,000トークンを追加し、最後に特殊トークン `<endoftext>` を追加する。トークン化の際に最終的にバイト単位までフォールバックできるため、原理的に未知トークンが発生しない。文字カテゴリー(Unicodeの句読点カテゴリーなど)をまたいだマージを禁止することで dog!・dog.・dog? のような語が個別に語彙登録されるのを防ぎつつ、空白のみは圧縮効率のため例外的にマージを許可している。GPT-2のトークナイザーもSentencePieceと同様に可逆であり、言語ごとの特別な扱いを避けられる一方、学習データの多くが英語であるため低資源言語は細かい単位に分割されがちという課題を残す。(Source: [[@2025__Gihyo__原論文から解き明かす生成AI - Chapter 2 入力データの特徴量化]] §2.6)
## トークナイザーは必要か:理論的根拠
Rajaraman et al., "Toward a Theory of Tokenization in LLMs" (2024) は、トークナイザーを $(Dict, DS, enc(\cdot), dec(\cdot))$ の4つ組として定式化し、その数理的性質を理論的に解析した。文字単位のk次Markov過程で単純化したデータ生成過程の下では、Transformerデコーダー型モデルはデータがMarkov過程に従うにもかかわらずユニグラム言語モデルのように振る舞うという経験則がある。この経験則を前提とすると、制限なしの最適な尤度モデルが達成するクロスエントロピー損失は真の分布のエントロピー $H(P)$ であるのに対し、文字単位のユニグラム言語モデルの損失は下から $mH(\pi)$($\pi$は文字の定常分布)で押さえられ、系列長 $m\to\infty$ の極限でこの下限は最適解に対して発散し得る。長さ $r$ の全ての部分文字列を語彙に持つ単純化トークナイザー(語彙サイズ $d=2^r$)で解析すると、$d$ が無限大の極限でクロスエントロピー損失は制限なしの最適解に近づくことが示される。この結果は、Transformerデコーダー型モデルが本質的にユニグラム言語モデルを学習する性質を持つとしても、文字単位を超えたトークン化によって理想的な性能に近づけることを理論的に裏付けており、実験(文字単位学習とトークナイザーありの学習の損失比較)とも整合する。(Source: [[@2025__Gihyo__原論文から解き明かす生成AI - Chapter 2 入力データの特徴量化]] §2.7)
## 横断的知見
- 本ページは現時点で単一ソース([[@2025__Gihyo__原論文から解き明かす生成AI - Chapter 2 入力データの特徴量化]])のみに基づく。横断的比較は今後の ingest で追加する。
## 未解決の問い
- SentencePiece(空白を▁として保持)とGPT-2のバイトレベルBPE(文字カテゴリーをまたいだマージを禁止)は、いずれも可逆トークン化を実現しているが設計の力点が異なる。両者の語彙効率・下流タスク性能を定量的に比較した研究はどうなっているか。
- Rajaraman et al.(2024)の理論解析は語彙サイズ $d\to\infty$ の極限で理想的な性能に近づくとするが、収束速度が対数的で巨大な語彙サイズを要する。BPEやユニグラム言語モデルのような現実的なアルゴリズムで構築された(有限で不均一な)語彙は、この理論的な上限にどれだけ近づけているか。
- トークナイザーを持たない手法(Byte Latent Transformerなど、動的に入力テキストを分割する手法)は、本ページで扱う固定語彙のサブワードトークン化と比べてどのようなトレードオフを持つか。
- サブワード単位への分割は、[[分布仮説]]が単語単位で示した「文脈による意味の予測可能性」をどこまで保持しているか。
## 関連
- [[分布仮説]] — サブワード分割の単位で埋め込みを学習する際の理論的前提
- [[テキスト埋め込み]] — サブワードトークン化の出力を入力として学習される特徴量表現
- [[文字レベル言語モデル]] — サブワード単位を使わない対照的なアプローチ
- [[言語モデル事前学習]] — サブワードトークナイザーで分割したトークン列を用いる事前学習の枠組み
## 出典
- [[@2025__Gihyo__原論文から解き明かす生成AI - Chapter 2 入力データの特徴量化]]