パープレキシティと言語モデルの評価
パープレキシティが低いのに賢くない、別モデルと数値が比べられない——その違和感は交差エントロピーとトークナイザ依存性から説明できます。指標の正体を数理で押さえれば、評価の落とし穴を踏まずに済みます。
- 1.パープレキシティは交差エントロピー(平均負対数尤度)の指数。底2の交差エントロピーが H ビット/トークンなら PPL=2^H で「平均何択で迷っているか」を表す。
- 2.PPL はトークナイザに強く依存し、語彙や分割が違うモデル間では直接比較できない。語彙非依存に正規化したいときは bits-per-byte(BPB)を使う。
- 3.MMLU など選択式ベンチマークは、プロンプト書式・採点方式・選択肢バイアス・データ汚染で数値が大きく動く。スコアは設定とセットでしか意味を持たない。
パープレキシティとは何を測っているか
パープレキシティ(perplexity, PPL) は言語モデルの「次トークン予測がどれだけ当たっているか」を1数値に圧縮した指標です。直観的には 「モデルが各位置で平均何択に迷っているか」 を表します。PPL が 10 なら、平均して10択の一様な迷いと同じ不確実性、ということです。定義の出発点は、テスト系列 w_1 ... w_T にモデルが与える確率です。
PPL = ( Π_t p(w_t | w_<t) )^(-1/T)
= exp( -(1/T) Σ_t ln p(w_t | w_<t) ) # 自然対数版
各トークンの条件付き確率の幾何平均の逆数、というのが素の定義です。確率を高く当てるほど積は大きく、逆数の PPL は小さくなります。完璧に当てれば(全 p=1)PPL は最小値 1、当てずっぽうの一様分布(語彙サイズ V)なら PPL は V になります。
交差エントロピーとの関係:PPL = 2^H
PPL の正体は 交差エントロピー(平均負対数尤度)の指数です。テスト系列に対する平均負対数尤度を H と置くと、両者は単なる対数・指数の関係で結ばれます。
H = -(1/T) Σ_t log_b p(w_t | w_<t) # 1トークンあたり平均負対数尤度
PPL = b^H # 底 b に対応する指数
ここがつまずきやすい核心です。底 b を 2 にすれば H の単位はビット/トークンで PPL = 2^H、自然対数 e にすれば単位はナットで PPL = e^H。どちらでも PPL の値は同じになります(底変換 2^H2 = e^He が成立)。つまり PPL は底に依存しませんが、途中の H を語るときは単位を必ず明示しないと話が噛み合いません。
学習で最小化する次トークン予測の交差エントロピー損失(nat 単位)を、検証データ全体で平均した値が、まさに上の H です。したがって PPL = exp(検証損失)。学習ログの loss から PPL を出すのはこの一行で済みます。両者は同じ量の別表現にすぎず、PPL は損失を「迷いの選択肢数」という直観に翻訳しただけだと理解するのが正確です。
「平均何択か」という直観もここから出ます。H ビットの不確実性は 2^H 通りの一様な選択肢と等価なので、PPL = 2^H は 実効的な分岐数(effective branching factor) を意味します。PPL 8 のモデルは、平均的に「8択の一様な迷い」と同じ不確実性で次トークンを予測している、ということです。
ビット/トークンと bits-per-byte:単位の換算
PPL は「1トークンあたり」の量なので、トークンの切り方が変わると基準が変わるという厄介さを持ちます。比較の土台を揃えるため、3つの単位を区別します。
| 指標 | 定義 | 依存するもの |
|---|---|---|
| パープレキシティ | 2^(bits/token) = exp(平均負対数尤度) | トークナイザ(語彙・分割) |
| bits-per-token | 1トークンあたりの交差エントロピー(ビット) | トークナイザ(語彙・分割) |
| bits-per-byte (BPB) | コーパス全体の総ビット数 ÷ 総バイト数 | トークナイザに非依存(語彙非依存) |
換算は総ビット数を介します。あるテストコーパスでモデルが要した 総ビット数は、トークン数によらず系列全体に対して定まる量です。これをバイト数で割れば BPB、トークン数で割れば bits-per-token になります。
総ビット数 = Σ_t ( -log2 p(w_t | w_<t) )
BPB = 総ビット数 / 総バイト数(UTF-8 など固定のバイト基準)
bits-per-token = 総ビット数 / 総トークン数
PPL = 2^(bits-per-token)
要点は、BPB は「テキストを符号化するのに1バイトあたり何ビット要したか」で、トークンの切り方に左右されないことです。総ビット数(分子)とバイト数(分母)はどちらもトークナイザを変えても不変なので、BPB は語彙の異なるモデル同士を比べる共通通貨になります。
トークナイザ依存性:PPL は単独で比較できない
ここが評価の最大の落とし穴です。PPL はトークナイザに強く依存し、語彙や分割方式の異なるモデル間では直接比較できません。理由は分母の T(トークン数)にあります。同じ文章でも、トークナイザのアルゴリズム が違えばトークン数が変わるからです。
同じ100バイトの文章を符号化するのに必要な総ビット数が同じ X ビットでも、
語彙が大きく1文を 20 トークンに分割(粗い) → bits/token = X/20(大きい → PPL 高い)
語彙が小さく1文を 40 トークンに分割(細かい) → bits/token = X/40(小さい → PPL 低い)
このように「トークンあたりの情報量」は粗い分割ほど大きくなり、PPL の見かけも上がる
つまり トークンを長く(粗く)取るほど1トークンが担う情報が増え、bits-per-token と PPL の見かけが変わる。極端には、文字単位トークナイザの PPL とサブワードの PPL は、桁が違っても優劣を語れません。だから論文で PPL を比較する際は 同一トークナイザ・同一テストコーパスが大前提です。これを満たせないときに登場するのが、先の BPB です。総ビット数とバイト数という不変量で割るので、語彙が違っても土俵が揃います。
別モデルの PPL を並べる前に必ず確認すべきは——(1) 同じトークナイザか(語彙・分割が一致するか)、(2) 同じテストセットか(文書・前処理・正規化が一致するか)、(3) 同じ文脈長・スライディング窓か(長文を分割評価する際の重なりの扱い)、(4) 同じ底か(ビットかナットか)。一つでも食い違えば数値は比較不能です。語彙非依存に揃えたいなら BPB に統一するのが安全です。
長文評価の窓のとり方も無視できません。文脈長を超えるテキストを分割評価するとき、各チャンクの先頭トークンは短い文脈しか見られず予測が不利になります。重なり付きスライディング窓で先頭側の不利なトークンを採点から除く(ストライド評価)と PPL は下がります。評価手続き自体が数値を動かすため、手続きの明示が必須です。
ベンチマーク評価の落とし穴:MMLU を例に
PPL は流暢さ・予測精度の指標であって、知識や推論能力を直接は測りません。そこで MMLU(多肢選択の知識試験)のような下流ベンチマークが使われますが、ここにも数理的な落とし穴が潜みます。
多肢選択の採点には主に2方式があり、同じモデル・同じ問題でもスコアが変わります。
| 採点方式 | やり方 | クセ・落とし穴 |
|---|---|---|
| 尤度ベース(cloze) | 各選択肢 A〜D を続けたときの確率を比較し最尤を選ぶ | 選択肢の長さ・トークン数で確率が偏る(長さ正規化が必要) |
| 生成ベース | モデルに「A」等の記号を生成させ一致を見る | 書式に従えないと不正解化。指示追従能力に依存 |
| 長さ正規化 | 選択肢の対数尤度を文字数やトークン数で割る | 正規化の基準で順位が入れ替わりうる |
尤度ベースでは、長い選択肢ほど確率の積が小さくなりがちで、長さで割って正規化しないと短い選択肢が機械的に有利になります。生成ベースでは、答えは知っていても「A」という書式で返せないモデルが取りこぼします。同じ MMLU でも実装が違えば数ポイント動くため、スコアは採点方式とセットでしか意味を持ちません。
(1) データ汚染:テスト問題が事前学習コーパスに混入していると、暗記で点が出る(真の汎化ではない)。(2) プロンプト感度:few-shot 例の数・順序・書式で数ポイント動く。(3) 選択肢バイアス:正解が常に同じ記号位置にあると位置を学習してしまう(記号をシャッフルして頑健性を測る)。(4) 多数決・自己無撞着などの推論時テクニックの有無で見かけが上がる。スコアを比べるなら few-shot 数・採点方式・汚染検査の有無まで揃える必要があります。
さらに本質的な乖離として、PPL(交差エントロピー)の改善が下流タスク性能と線形には対応しません。スケーリング則 で損失が滑らかに下がっても、ベンチマーク精度は閾値を境に跳ねる(創発的に見える)ことがあり、その「跳ね」自体が離散的な採点指標の副作用であることも指摘されています。連続な対数尤度を「正解/不正解」の0-1に丸める段階で、滑らかな改善が階段状に見えてしまうのです。
まとめ:指標は設定とセットで読む
パープレキシティは魔法の数値ではなく、交差エントロピーの指数表現にすぎません。PPL = 2^H の一行を握れば、loss と PPL は同じ量の別表現、BPB はそれを語彙非依存に正規化した版、と一枚の絵に収まります。評価で踏むべき作法は明快です。第一に、PPL は 同一トークナイザ・同一テストセット・同一評価手続きでしか比較できず、跨ぐなら BPB に揃える。第二に、PPL は流暢さの指標であって知識・推論ではないので、下流ベンチマークで補うが、その数値も 採点方式・few-shot 設定・汚染検査とセットでしか意味を持たない。指標を単独の数値として崇めず、「どのトークナイザで、どの底で、どう採点したか」まで添えて読む——これが評価で騙されないための核心です。生成側の確率の使い方は デコード戦略、分類指標との接続は モデル評価 を併せて読むと、評価の地図が立体的になります。
AI/機械学習 Article
パープレキシティと言語モデルの評価を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
パープレキシティ
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 6
導入後に効く点
PPL はトークナイザに強く依存し、語彙や分割が違うモデル間では直接比較できない。語彙非依存に正規化したいときは bits-per-byte(BPB)を使う。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 6
判断チェックリスト
- 自社の用途が「パープレキシティ / 交差エントロピー」に近いか確認する。
- 強みである「パープレキシティは交差エントロピー(平均負対数尤度)の指数。底2の交差エントロピーが H ビット/トークンなら PPL=2^H で「平均何択で迷っているか」を表す。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。