トークナイザー語彙(トークナイザーゴイ)
LLMのトークナイザーが保持するサブワード・文字・特殊トークンの集合(語彙テーブル)。各トークンに一意のIDが割り当てられ、テキストとトークンID列の相互変換に使用される。語彙サイズはモデルのトークン効率・メモリ消費・多言語対応力を決定する重要なハイパーパラメーター。
トークナイザー語彙とは
トークナイザー語彙(Tokenizer Vocabulary)は、LLMがテキストを処理する際に使用するサブワード(部分文字列)の辞書である。各サブワードには0から始まる一意の整数ID(トークンID)が割り当てられ、テキストの入力(エンコード)と出力(デコード)の両方でこの語彙テーブルが参照される。語彙の設計はモデル性能に直接影響する基盤技術である。
語彙の構成要素
トークナイザー語彙は以下の要素で構成される。
| 要素 | 説明 | 例 |
|---|---|---|
| 通常トークン | 学習データから抽出されたサブワード | "the", "ing", "##tion", "東京" |
| 特殊トークン | モデルの制御用に予約されたトークン | [CLS], [SEP], [PAD], [MASK], [UNK] |
| バイトトークン | UTF-8バイトを表すフォールバックトークン | <0x00>〜<0xFF>(256個) |
| 未使用トークン | 将来の拡張用に確保された空きスロット | [unused0]〜[unused99] |
GPT系列の語彙はバイトトークンを含むByte-level BPEで構成され、BERT系列は特殊トークンとWordPieceサブワードで構成される。
語彙サイズの進化
LLMの語彙サイズは年々拡大する傾向にある。
| モデル | リリース年 | 語彙サイズ | トークナイザー |
|---|---|---|---|
| GPT-2 | 2019 | 50,257 | BPE |
| BERT base | 2018 | 30,522 | WordPiece |
| T5 | 2019 | 32,000 | Unigram |
| GPT-3 | 2020 | 50,257 | BPE |
| LLaMA 2 | 2023 | 32,000 | BPE |
| Mistral 7B | 2023 | 32,000 | BPE |
| GPT-4 | 2023 | 100,256 | BPE |
| LLaMA 3 | 2024 | 128,256 | BPE |
| Gemma 2 | 2024 | 256,000 | BPE |
| Qwen 2.5 | 2024 | 151,643 | BPE |
語彙拡大のトレンドは、多言語対応とトークン効率の改善が主な動機である。
語彙サイズとトークン効率の関係
語彙サイズがトークン効率(テキスト圧縮率)に与える影響は以下の通りである。
| 語彙サイズ | 英語圧縮率 | 日本語圧縮率 | embedding層パラメータ | メリット | デメリット |
|---|---|---|---|---|---|
| 32,000 | 約4.0 chars/token | 約1.5 chars/token | 小さい | メモリ効率が高い | 日本語のトークン効率が低い |
| 100,000 | 約4.5 chars/token | 約2.0 chars/token | 中程度 | バランスが良い | - |
| 256,000 | 約5.0 chars/token | 約2.5 chars/token | 大きい | 多言語で高効率 | embedding層が大きい |
トークン効率が高いと、同じコンテキスト長(例: 128Kトークン)でより多くのテキストを処理できるため、実質的なコンテキストウィンドウが拡大する。
語彙の多言語バランス
多言語LLMでは、語彙の言語バランスが性能を左右する。
- 英語偏重の問題: GPT-2/3は英語中心の学習データで語彙を構築したため、日本語1文字が平均2-3トークンに分割される
- 均等割当の問題: 全言語に均等に語彙を割り当てると、英語のトークン効率が低下する
- 適応的割当: 学習データの言語分布に比例して語彙を割り当てる方式が主流(例: mT5は101言語のデータ量に応じて250,000語彙を配分)
日本語特化モデル(ELYZA、Rinna、PLaMo等)は、日本語テキストの比率を高めた学習データで語彙を構築し、日本語のトークン効率を改善している。
語彙の拡張とマージ
既存モデルの語彙を後から拡張する手法も研究されている。
| 手法 | 概要 | 利点 | 課題 |
|---|---|---|---|
| 語彙追加+継続学習 | 新トークンを追加しembeddingを追加学習 | 既存性能を維持しつつ拡張可能 | 追加学習コストが必要 |
| 語彙マージ | 異なるモデルの語彙を統合 | 多言語対応の高速化 | embedding空間の整合性維持が困難 |
| アダプター挿入 | 語彙変換層を挿入 | 元モデルを変更不要 | 推論速度の低下 |
LLaMA 2→LLaMA 3で語彙が32,000→128,256に拡大された際は、新語彙でゼロからトークナイザーを学習し直す方式が採用された。
特殊トークンの設計
特殊トークンの設計はモデルの機能性に直接影響する。
| トークン | 用途 | 採用モデル |
|---|---|---|
| [CLS] | 文分類タスクの集約トークン | BERT系列 |
| [SEP] | 文間の区切り | BERT系列 |
| <|endoftext|> | テキスト終端 | GPT系列 |
| <|im_start|> / <|im_end|> | チャットメッセージの開始/終了 | ChatGPT, Qwen |
| [INST] / [/INST] | 命令の開始/終了 | LLaMA 2 Chat |
| <human> / <assistant> | ロール指定 | 各種Chatモデル |
FAQ
Q1: 語彙サイズが大きいほど良いモデルになりますか?
必ずしもそうではありません。語彙サイズの拡大はトークン効率を向上させますが、embedding層のパラメータ数が語彙サイズに比例して増加するため、小規模モデル(7B以下)では計算リソースの無駄が生じます。一般的に、モデルサイズに対して語彙が大きすぎると、embedding層のパラメータが全体に占める割合が増え、Transformerの表現力に回せるパラメータが相対的に減少します。
Q2: 同じモデルファミリーで語彙を変更できますか?
語彙を変更するとembedding層の重みが無効になるため、事前学習をやり直す必要があります。ファインチューニングだけでは対応できません。これがLLaMA 2からLLaMA 3への移行時に事前学習がゼロからやり直された理由の1つです。語彙は事前学習の最初期に決定される設計パラメーターであり、後から変更するコストは極めて高いです。
Q3: トークン数とコストの関係はどうなっていますか?
クラウドLLM APIの料金はトークン数に比例するため、語彙サイズの大きいモデルは同じテキストをより少ないトークンで表現でき、結果的にAPIコストが下がる場合があります。例えばGPT-4(100K語彙)はGPT-3(50K語彙)より同じテキストを約15-20%少ないトークンで表現できます。特に日本語テキストでは語彙サイズの差がコストに大きく影響します。