Unigramモデルとは、言語モデルに基づくサブワード分割アルゴリズムで、大きな初期語彙から不要なトークンを確率的に削除(プルーニング)して最適な語彙を構築する手法である。BPEのボトムアップ方式とは逆のトップダウンアプローチを取り、GoogleのGemma/Gemini系で採用されている。
Unigramモデルは2018年に工藤拓氏(Google)が提案したサブワード分割手法で、BPEとは根本的に異なるアプローチを取る。BPEが小さな語彙から反復的にマージして拡大するボトムアップ方式であるのに対し、Unigramは大きな初期語彙から不要なトークンを削除して縮小するトップダウン方式である。
Unigramモデルの特徴は、各トークンに出現確率が割り当てられ、テキストの分割が確率モデルに基づいて行われる点にある。同じテキストに対して複数の分割候補が存在し、最も尤度(likelihood)が高い分割が選択される。
例:「unbreakable」の分割候補
最も尤度の高い分割が採用される。
Unigramの語彙構築(訓練)は以下のステップで行われる:
| ステップ | BPE | Unigram |
|---|---|---|
| 初期語彙 | 最小(文字/バイト) | 最大(全部分文字列) |
| 操作 | マージ(追加) | プルーニング(削除) |
| 方向 | ボトムアップ | トップダウン |
| 確率モデル | なし(決定的) | あり(確率的) |
| 分割の一意性 | 一意 | 複数候補(最尤選択) |
Unigramの確率的分割には独自の利点がある:
GoogleのGemma 2/4およびGemini 2.0では256,000語彙のUnigramトークナイザを採用している。この巨大語彙の背景:
256K語彙 vs 128K語彙のトークン数比較:
| テキスト種別 | 128K (Llama 3) | 256K (Gemma) | 差分 |
|---|---|---|---|
| 英語散文 | 100 | 92 | -8% |
| 日本語 | 55 | 48 | -13% |
| Python | 78 | 71 | -9% |
| アラビア語 | 70 | 55 | -21% |
Q1: UnigramとBPEはどちらが優れていますか? A: 性能面では大きな差はなく、モデル全体のアーキテクチャや訓練データの影響の方が支配的です。Unigramは確率的分割によるロバスト性、BPEは実装のシンプルさと高速性で優位です。2026年時点ではBPE採用モデルの方が多数派ですが、Googleの主要モデル(Gemma/Gemini)がUnigramを採用しており、品質の差は無視できるレベルです。
Q2: Unigramの語彙構築はBPEより時間がかかりますか? A: はい、一般的にUnigramの方が計算コストが高くなります。EMアルゴリズムの反復と、各プルーニングステップでの尤度計算が必要なためです。ただし語彙構築は一度だけの処理であり、推論時(エンコード時)の速度はSentencePieceライブラリのトライ構造最適化により実用的な速度が確保されています。
Q3: Unigramモデルで「サブワード正則化」を使うメリットは? A: 訓練時にテキストの分割をランダムにサンプリングすることで、モデルが特定のトークン境界に依存しなくなります。これはデータ拡張の一種として機能し、特に低リソース言語やドメイン外テキストでのロバスト性が向上します。Google T5の訓練でサブワード正則化が標準的に使用され、翻訳タスクでBLEUスコアが0.5-1.0ポイント改善した報告があります。