- Perplexityは言語モデルが次の単語を予測する際の確信度を示す指標です。
- Perplexity値が小さいほど予測精度が高く、大きいほどモデルがデータセットに対して困惑している状態を表します。
- 訓練データと検証データのPerplexity値を比較することで、モデルの学習状態や過学習の有無を確認できます。
1. Perplexity値の計算
もともと「Perplexity」は「困惑」という意味の言葉です。
自然言語処理の分野では、言語モデルが次の単語を予測する際の確信度の指標として使われています。
Perplexity値(PP)は、次の単語を予測する際の確率分布のエントロピーの指数として計算します。
つまり、Perplexity値が小さいほど言語モデルは「自信を持って予測できている」ことを示し、大きいほど「困惑している」と言えます。
2. 言語モデルでのPerplexityの使われ方
Perplexityはトランスフォーマーベースの言語モデルの評価において、客観的で数値化された指標として重要な役割を果たしています。
言語モデルにデータセットを与えて、それぞれ次の単語を予測させます。
実際の単語を予測した確率を元に Perplexity を計算し、データセット全体で平均化します。
この値が小さければ、その言語モデルの予測精度が高いことになります。
- 各予測の確率を対数化
- それらの平均を取る
- 指数化してPerplexity値を得る
これは、異なる言語モデル間で性能を比較する際の指標としても使用できます。
入力:「今日は良い」
モデル予測:「天気」の確率が0.7, 「日」の確率が0.2, その他0.1
データセットの実際の次の単語が「天気」だった場合、正解の単語の予測確率のみ(この場合「天気」の0.7)を使用します。
3. 言語モデルのトレーニング
Perplexityは、言語モデルのトレーニングの中でも利用されます。
モデルが訓練データセット全体を1周処理することを1エポックと呼びます。
例えば、10万文のデータセットを用意していたら、全て学習し終わると予測確率を集計します。
「学習」では、この予測精度を上げていくことが目標になります。
PP値が下がっていけば、モデルの学習が順調に進んでいることを示します。
また、訓練データと検証データで別々に Perplexityを計算することで、適切に学習できているか検証することもできます。
もし、訓練データでのPerplexityが低いのに、検証データでのPerplexityが高いなら、その差分は訓練時だけ有効な精度です。
つまり、「過学習」ということになります。
ただし、これは技術的な評価指標の一つであり、実際のアプリケーションにおける有用性は他の要因も考慮する必要があります。