WordPieceトークナイザー(ワードピーストークナイザー)
Googleが開発したサブワード分割アルゴリズム。BPEと類似するが、マージ対象のペア選択に尤度最大化(言語モデル確率の向上量が最大のペア)を用いる点が異なる。BERTおよびその派生モデル(DistilBERT、ALBERT、ELECTRA等)の標準トークナイザー。
WordPieceトークナイザーとは
WordPieceは、Googleが2012年に日本語・韓国語の音声認識システム向けに開発し、その後2016年にGoogle Neural Machine Translation(GNMT)で自然言語処理に導入したサブワード分割アルゴリズムである。2018年にBERTが採用したことで広く知られるようになり、Transformerベースの理解系モデル(エンコーダーモデル)における事実上の標準トークナイザーとなった。
BPEとの違い:マージ基準
WordPieceとBPEの最も本質的な違いはマージペアの選択基準にある。
| 比較項目 | BPE | WordPiece |
|---|---|---|
| マージ基準 | 出現頻度が最大のペア | 尤度向上が最大のペア |
| 理論的根拠 | データ圧縮(頻度ベース) | 言語モデル最適化(確率ベース) |
| 計算量 | O(N) per step | O(N × V) per step |
| 分割の最適性 | 局所最適(貪欲法) | より大域的に最適 |
| 実装複雑度 | 低い | やや高い |
具体的には、BPEが「ペア(a,b)の出現回数」でソートするのに対し、WordPieceは「ペア(a,b)をマージした場合の言語モデルlog-likelihood増分」でソートする。log-likelihood増分は以下の式で計算される。
score(a,b) = log(P(ab)) - log(P(a)) - log(P(b))
この基準により、頻度は低いが言語的に重要なペア(形態素境界に沿ったマージ等)が優先される傾向がある。
WordPieceの特徴的な記法
WordPieceトークナイザーには、単語の途中に出現するサブワードに「##」プレフィックスを付与する慣習がある。
| 入力テキスト | WordPieceトークン列 |
|---|---|
| "embedding" | ["em", "##bed", "##ding"] |
| "tokenization" | ["token", "##ization"] |
| "unhappy" | ["un", "##happy"] |
| "playing" | ["play", "##ing"] |
「##」プレフィックスにより、デコード時にどのトークンが単語先頭で、どのトークンが単語途中かを区別できる。BPEのSentencePiece実装が「▁」(空白マーカー)を単語先頭に付与するのとは逆のアプローチである。
BERTにおけるWordPieceの実装
BERTのWordPieceトークナイザーは以下の処理パイプラインで動作する。
- BasicTokenizer: 空白分割、句読点分離、Unicode正規化、小文字化(uncasedモデル)
- WordPieceTokenizer: BasicTokenizerの出力をサブワードに分割
- 特殊トークン追加: [CLS], [SEP], [PAD], [MASK], [UNK]を挿入
BERTの語彙サイズは以下の通りである。
| モデル | 語彙サイズ | 対象言語 |
|---|---|---|
| bert-base-uncased | 30,522 | 英語 |
| bert-base-cased | 28,996 | 英語(大文字区別) |
| bert-base-multilingual-cased | 119,547 | 104言語 |
| bert-base-chinese | 21,128 | 中国語 |
| bert-base-japanese | 32,000 | 日本語 |
WordPieceを採用する主要モデル
| モデル | リリース年 | 語彙サイズ | 備考 |
|---|---|---|---|
| BERT | 2018 | 30,522 | WordPiece普及の契機 |
| DistilBERT | 2019 | 30,522 | BERTと同一語彙 |
| ALBERT | 2019 | 30,000 | パラメーター共有で軽量化 |
| ELECTRA | 2020 | 30,522 | 置換トークン検出で事前学習 |
| DeBERTa v3 | 2021 | 128,000 | 語彙拡大版 |
| CANINE | 2021 | - | 文字レベル(WordPiece不使用) |
注目すべきは、GPT系列の生成モデルがBPEを採用し、BERT系列の理解モデルがWordPieceを採用するという明確な棲み分けが存在する点である。これは歴史的経緯によるもので、アルゴリズムの性能差よりもエコシステムの慣性が大きい。
WordPieceの限界と後継
WordPieceの主な限界は以下の通りである。
- 学習コストの高さ: 尤度計算のために言語モデルの訓練が必要で、BPEより学習が遅い
- 公式実装の非公開: GoogleのWordPiece学習アルゴリズムの公式実装は長らく非公開だった(Hugging Faceのtokenizersライブラリで再実装)
- 生成モデルでの不採用: GPT系列がBPEを選択したことで、生成AI時代にシェアが縮小
FAQ
Q1: WordPieceとBPEで実際の分割結果は異なりますか?
同じ語彙サイズで学習した場合、分割結果の90%以上は一致します。差が出るのは頻度が低い単語で、WordPieceは言語的に意味のある境界(形態素境界)に沿った分割を選ぶ傾向があります。ただし実用上の精度差はモデル全体の学習で吸収されるため、トークナイザー単体での性能差は限定的です。
Q2: なぜGPT系列はWordPieceではなくBPEを選んだのですか?
主な理由は実装の単純さと学習速度です。BPEは頻度カウントのみで語彙を構築でき、言語モデルの学習が不要です。OpenAIがGPT-1開発時にBPEを選択し、その後のGPT-2/3/4でも互換性のために継続した経緯があります。性能面ではWordPieceの方が理論的に優位ですが、差はモデルスケールで相殺されます。
Q3: 新しいモデルを作る場合、どのトークナイザーを選ぶべきですか?
2026年時点では、BPE(SentencePieceまたはtiktoken)が最も無難な選択です。理由は、エコシステムの成熟度(ツール・ライブラリ・事例)がBPEで最も高く、主要LLMとの互換性も確保しやすいためです。WordPieceはBERT系列の微調整を行う場合に選択しますが、新規にゼロからモデルを構築する場合はBPEが推奨されます。