AI・機械学習
中級

WordPieceトークナイゼーション(BERT)(ワードピーストークナイゼーションバート)

GoogleのBERTで採用されたサブワードトークナイゼーション手法。BPEと似た発想だが、最大尤度(Likelihood最大化)でマージを選択するため異なる語彙を構築する。サブワードには「##」プレフィックスを付け語中のピースであることを示す。BERT/RoBERTa/ALBERT/DistilBERTで標準採用。

0 回閲覧
0 いいね
2026/6/6 更新
関連タグ
tokenization
wordpiece
bert
subword
google
encoder-model

WordPieceトークナイゼーション(BERT)

WordPieceはGoogleのSchuster & Nakamura(2012年)が音声認識向けに開発し、BERTで採用されて自然言語処理の主要手法となったサブワードトークナイゼーションアルゴリズム。BPEと同じサブワード分割の発想を持つが、マージルールの選択基準に言語モデルの尤度(likelihood)最大化を使用する点が根本的な違いだ。

BPEとの根本的な違い

特性BPEWordPiece
マージ基準頻度(カウントベース)尤度増加(確率ベース)
学習方向ボトムアップ(結合)ボトムアップ(結合)
選択式count(AB) 最大count(AB)/(count(A)*count(B)) 最大
語中サブワード区別なし##プレフィックスで明示
主な採用モデルGPT系・LLaMA系BERT系

WordPieceの選択式は相互情報量に相当するlog P(AB) - log P(A) - log P(B)を最大化するペアを選ぶ。これにより単に頻出するだけでなく、結合することで新たな情報をもたらすペアが優先選択される。

##プレフィックスの仕組み

BERTのWordPieceトークナイザーは語中のサブワード(単語の先頭ではない部分)に##プレフィックスを付与する。これによりトークン列から元の単語境界を復元できる。

from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")

# 例: "tokenization"
tokens = tokenizer.tokenize("tokenization")
print(tokens)  # ['token', '##ization']

# 例: "embeddings"
tokens = tokenizer.tokenize("embeddings")
print(tokens)  # ['em', '##bed', '##ding', '##s']

print(tokenizer.vocab_size)  # 30,522 (bert-base-uncased)

BERT系モデルでの採用状況

モデルvocab size言語
BERT-base/large30,522英語
BERT-multilingual119,547104言語
RoBERTa50,265英語(GPT-2 BPEに変更)
ALBERT30,000英語
DistilBERT30,522英語(BERT互換)
Japanese BERT32,000日本語

RoBERTaがBPEに切り替えた(Liu et al. 2019年)ことで、エンコーダーモデルでもBPEとWordPieceの優劣が議論されるようになった。実験では明確な優劣はなく、学習データ量とモデル設計の方が性能に大きく影響するとされる。

Whole Word Masking

BERTのMasked Language Modeling(MLM)ではWordPieceで分割されたサブワード単位でマスクが適用されていた。2019年のWhole Word Masking(wwm)では同一単語のすべてのWordPieceサブワードを同時にマスクするよう改良され、事前学習の質が向上した。日本語BERT(cl-tohoku/bert-japanese)ではMeCabとWordPieceを組み合わせたwhole word maskingが採用されている。

この記事について
カテゴリーAI・機械学習
難易度中級
作成日2026/6/6