WordPiece(ワードピース)
WordPieceはGoogleが開発したサブワードトークン化アルゴリズムで、BERTやDistilBERT等のTransformerモデルで標準的に採用されており、コーパスの尤度最大化を基準にサブワード語彙を構築する。
WordPieceとは
WordPieceは、Googleが2012年にSchusterとNakajima によって提案したサブワードトークン化アルゴリズムである。BERT(2018年)での採用により広く知られるようになり、DistilBERT、ELECTRA、MobileBERT等のBERT派生モデルで標準的に使用されている。BPEと同様にサブワード分割を行うが、マージ基準が「頻度」ではなく「コーパス尤度の最大化」である点が異なる。
アルゴリズムの仕組み
WordPieceの語彙構築プロセス:
- 初期化: 全文字を初期語彙として設定
- 候補ペア生成: 隣接トークンの全ペアを列挙
- 尤度評価: 各ペアをマージした場合のコーパス全体の対数尤度変化を計算
- 最良ペア選択: 尤度向上が最大のペアを語彙に追加
- 反復: 目標語彙サイズ(BERTでは30,522)に達するまで繰り返す
尤度ベースの選択により、単純な頻度ベースのBPEよりも統計的に最適な語彙構成が得られる。
「##」接頭辞による単語内位置表現
WordPieceの特徴的な記法として、単語の先頭以外のサブワードに「##」接頭辞を付ける:
embeddings→[em, ##bed, ##ding, ##s]unhappiness→[un, ##happi, ##ness]トークン化→[ト, ##ー, ##ク, ##ン, ##化]
この記法により、同一文字列でも単語先頭とそれ以外で別トークンとして区別され、形態素的な情報が保持される。
BERTファミリーでの採用状況
| モデル | 語彙サイズ | 対応言語 | パラメータ数 | リリース年 |
|---|---|---|---|---|
| BERT-base | 30,522 | 英語 | 110M | 2018 |
| BERT-multilingual | 119,547 | 104言語 | 179M | 2018 |
| DistilBERT | 30,522 | 英語 | 66M | 2019 |
| ELECTRA-base | 30,522 | 英語 | 110M | 2020 |
| MobileBERT | 30,522 | 英語 | 25.3M | 2020 |
| DeBERTa-v3 | 128,100 | 英語+多言語 | 304M | 2021 |
WordPieceとBPEの詳細比較
| 比較項目 | WordPiece | BPE |
|---|---|---|
| マージ基準 | コーパス尤度最大化 | ペア出現頻度最大 |
| 計算コスト | 高い(尤度計算が必要) | 低い(頻度カウントのみ) |
| 語彙品質 | 統計的に最適 | ヒューリスティック |
| 実装複雑度 | 高い | 低い |
| 分割記法 | ##接頭辞(非先頭) | なし(位置情報なし) |
| 主な採用先 | BERT系エンコーダモデル | GPT系デコーダモデル |
| ロスレス復元 | ##除去で復元可能 | トークン結合で復元 |
実装上の注意点
WordPieceトークナイザを使う際の実践的なポイント:
- HuggingFace Tokenizers:
tokenizers.models.WordPieceクラスで学習・推論可能。BERTのトークナイザはAutoTokenizer.from_pretrained('bert-base-uncased')で即座に利用できる - vocab.txtの構造: 1行1トークンのテキストファイル。
[PAD]、[UNK]、[CLS]、[SEP]、[MASK]の5特殊トークンが先頭に配置 - 小文字化:
bert-base-uncasedは入力を小文字化するが、bert-base-casedは大文字小文字を区別する。固有名詞認識タスクではcasedモデルが適切 - 最大トークン長: BERTは512トークン制限。長文は切り詰めるかスライディングウィンドウで処理
- [UNK]トークン: 語彙にないサブワードは
[UNK]に変換される。多言語テキストでは語彙カバレッジに注意
よくある質問(FAQ)
Q1: WordPieceが最新のLLMで使われなくなった理由は何ですか? A: WordPieceの尤度計算は語彙構築時の計算コストが高く、100K以上の大語彙構築に不向きである。また、エンコーダモデル(BERT系)からデコーダモデル(GPT系)への主流シフトに伴い、より実装がシンプルなBPEが標準となった。
Q2: WordPieceの「##」記法にはどのような利点がありますか? A: 単語内の位置情報を保持できるため、形態素解析的な情報が失われにくい。例えば「un##happy」と「happy」が異なるトークン列になり、接頭辞「un-」の意味的役割をモデルが学習しやすくなる。BPEにはこの位置情報がない。
Q3: WordPieceで日本語を扱う場合の注意点は? A: BERT-multilingual(119,547語彙)は日本語をカバーするが、語彙の大部分は欧米言語に割り当てられている。日本語特化が必要な場合はcl-tohoku/bert-base-japanese-whole-word-masking(32,000語彙・MeCab前処理)が推奨される。
まとめ
- WordPieceは尤度最大化ベースのサブワードトークン化アルゴリズム
- BERTファミリー(30,522語彙)で標準採用されている
- 「##」接頭辞で単語内位置情報を保持する独自記法を持つ
- BPEより統計的に最適な語彙を構築するが計算コストが高い
- 現在の大規模LLMではBPEが主流だが、エンコーダモデルでは依然重要