機械学習

パープレキシティ

言語モデルの平均負の対数尤度を指数化した評価値で、低いほど次トークンを当てやすいことを表します。

  • C|周辺
  • 機械学習

数式の記号で止まったら 記号の読み方 (∂・⊙・転置・上付き添字を、読み方から)

ひとことで言うと

パープレキシティ(PPL)は、言語モデルが正解トークンをどれだけ予測しにくかったかを、平均して何個の選択肢で迷っているかのように読める値です。値は低いほど良く、言語モデルの評価で使われます。

毎回の四択問題で、正解に高い確率を置けたかを採点し、その平均的な迷いを「実質何択か」に戻した値です。

なぜ必要か

損失の平均値は改善していても、読者には尺度が直感的でないことがあります。PPLなら、モデルが正解トークンを平均して何通りほどに分散して予測しているか、と読み替えられます。ただし、この値は与えられたテキストの次トークン予測を測る指標です。要約や分類などの下流タスクの性能と、必ず同じ順位になるわけではありません。

PPLの順位をモデルの総合順位として扱わず、同じトークン化・データ・評価窓での言語モデル比較に限定して読みます。

仕組み

トークン列の長さを TT、時刻 tt の正解トークンを xtx_t、それ以前の列を x<tx_{<t}、モデルのパラメータを θ\theta とすると、PPLは平均負の対数尤度を指数化します。

PPL⁡(X)=exp⁡(−1T∑t=1Tlog⁡pθ(xt∣x<t))\operatorname{PPL}(X)=\exp\left(-\frac{1}{T}\sum_{t=1}^{T}\log p_{\theta}(x_t\mid x_{<t})\right)

つまり、交差エントロピーの指数です。比較時にトークナイザーや前処理が変わると、同じ文章でもトークン列と TT が変わるため、PPLをそのまま比べられません。固定長のモデルでは文脈窓の切り方も値を変えます。

試験でどう問われるか

問われ方正解に寄る条件引っかけ
値の読み方低いほど正解トークンの予測が良い高いほど良い
定義式平均負の対数尤度を指数化対数尤度をそのまま使う
モデル比較同じトークン化・評価条件で比べる文字単位とサブワード単位を直比較
指標の限界下流タスク性能とは別に確認するPPLだけで実用性能を断定

実装で確かめる

正解トークンに割り当てた確率から、平均負の対数尤度を作って指数化します。確率が 00 になると対数が定義できないため、実装では確率の扱いも確認します。

import numpy as np

prob = np.array([0.5, 0.25, 0.125])
avg_nll = -np.log(prob).mean()
ppl = np.exp(avg_nll)
print(ppl)

出力は 4.0 です。各位置の確率の算術平均を指数化するのではなく、対数を平均してから戻している点が要所です。

取り違えやすいもの

用語切り分け
交差エントロピーPPLはその値を指数化した尺度
正解率PPLは確率の大小を連続的に反映し、正解・不正解だけではない
下流タスク性能文章続きを当てる評価であり、別タスクの性能を保証しない
モデル比較トークン化、文脈窓、データが揃わない値は比較しにくい

想起チェック

PPLは何を指数化した値か

平均負の対数尤度、つまり交差エントロピーを指数化した値です。

PPLを比較する前に揃える条件は何か

少なくともトークン化、評価データ、文脈窓などの評価条件を揃えます。

出典