AI・機械学習
上級

Unigram Tokenizer(ユニグラムトークナイザー)

SentencePieceに実装されたサブワードトークナイゼーションアルゴリズム。大きな初期語彙から確率モデルに基づいて不要なトークンを逐次削除し、最適な語彙を構築するトップダウン手法。T5・ALBERT・mBARTなどGoogleモデルが採用し、BPEにはないサブワードサンプリングによる訓練正則化が可能。

0 回閲覧
0 いいね
2026/6/20 更新
関連タグ
Unigram
トークナイゼーション
SentencePiece
サブワード
T5
確率モデル
語彙最適化

Unigram Tokenizerとは

Unigram Tokenizerは、テキストをサブワード単位に分割するトークナイゼーションアルゴリズムの一つである。BPE(Byte Pair Encoding)がボトムアップ(小さなトークンをマージして大きなトークンを構築)であるのに対し、Unigramはトップダウン(大きな初期語彙から不要なトークンを削除して最適化)のアプローチを取る。2018年にGoogleの工藤拓によってSentencePieceの一部として提案された。

アルゴリズムの仕組み

Unigramモデルの学習は以下のステップで進行する。

  1. 訓練コーパスから大きな初期語彙(通常100万〜200万トークン)を生成する
  2. 各トークンの出現確率をEMアルゴリズム(期待値最大化法)で推定する
  3. 各トークンを仮に除外した場合のコーパス全体の尤度低下量を計算する
  4. 尤度低下が最も小さいトークン(=最も不要なトークン)を語彙から除去する
  5. ステップ2-4を目標語彙サイズに達するまで繰り返す
比較軸BPEUnigram
アプローチボトムアップ(マージ)トップダウン(削減)
初期語彙文字/バイト(256〜数百)大量の候補(100万〜)
学習方向小→大(ペアをマージ)大→小(不要トークンを除去)
分割の確定性決定的(一意の分割)確率的(複数の分割候補)
計算コスト低い高い(EM推定が必要)

サブワードサンプリング

Unigramモデルの最大の特徴は、同一テキストに対して複数の分割候補を確率的にサンプリングできる点だ。

例えば「unbreakable」というテキストは以下のように複数の分割が可能:

  • un break able(確率 0.45)
  • un breakable(確率 0.30)
  • unbreak able(確率 0.20)
  • unbreakable(確率 0.05)

BPEでは訓練時のマージルールに基づいて常に同一の分割結果が得られるが、Unigramでは確率分布に従ってランダムに異なる分割を選択できる。これをモデル訓練時に利用すると、同じテキストが異なるトークン列として入力される効果(データ拡張 / 正則化)が得られ、過学習の抑制が期待できる。

サブワードサンプリングの訓練効果

SentencePieceのオリジナル論文(Kudo, 2018)では、Unigramのサブワードサンプリングが機械翻訳タスクでBLEUスコアを0.5〜1.0ポイント改善することが報告されている。

設定WMT英独 BLEUWMT英日 BLEU
BPE(決定的分割)27.828.5
Unigram(決定的分割)27.928.7
Unigram(サンプリングあり)28.529.3

サンプリング温度パラメータ α で確率分布の鋭さを調整する。α=1.0 で元の確率分布通り、α→0 で最尤分割(BPE的な決定的分割)に近づく。実用的には α=0.1〜0.5 が推奨される。

主要な採用モデル

モデル語彙サイズUnigramを選んだ理由
T5 / Flan-T532,000Googleの多言語対応標準
ALBERT30,000パラメータ効率最適化との親和性
mBART-50250,05450言語対応の多言語翻訳
XLNet32,000順列言語モデルの訓練安定化
DeBERTa V3128,000置換トークン検出の多様性確保

Google系のモデルはUnigramを好む傾向があり、Meta / OpenAI系はBPEを好む傾向がある。これは設計哲学の違いであり、両者の最終的な性能差は多くのタスクで統計的有意差がない程度に小さい。

実装と使用方法

SentencePieceでUnigramモデルを訓練する例:

# Unigramモデルを32000語彙で学習
spm_train --input=corpus.txt \
  --model_prefix=unigram_model \
  --vocab_size=32000 \
  --model_type=unigram \
  --character_coverage=0.9995

character_coverage パラメータは初期語彙に含める文字の網羅率を指定する。日本語や中国語など文字種が多い言語では0.9995程度に設定し、希少文字も初期語彙に含めることが推奨される。

FAQ

Q1. UnigramとBPEはどちらの方が性能が良いですか?

多くのベンチマークで両者の性能差は小さく、タスクやデータに依存します。Unigramはサブワードサンプリングによる訓練正則化効果がある点で理論的な優位性がありますが、BPEの方が実装がシンプルで広く採用されています。2026年時点ではBPEが業界標準の位置にあります。

Q2. なぜUnigramはBPEほど普及していないのですか?

主な理由は3つあります。第一にBPEが先にGPT-2で大規模に成功し業界標準となったこと、第二にUnigramの学習がEM推定を含むためBPEより計算コストが高いこと、第三にOpenAI/Metaの主要モデルがBPEを採用し続けたことでエコシステムがBPE中心に発展したことです。

Q3. サブワードサンプリングは推論時にも使うべきですか?

いいえ。サブワードサンプリングは訓練時のデータ拡張として使う手法で、推論時には最尤分割(Viterbiデコード)を使うのが標準です。推論時にサンプリングを使うと出力が非決定的になり、再現性が失われます。

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