この記事では,パープレキシティ(Perplexity)とは何かについてお伝えしていきます。言語モデルの設計などでは,とりあえずクロスエントロピーを使っておけば良いというような風潮があります。しかし,頭でっかちなモデル設計者にならないためにも,しっかりとパープレキシティとクロスエントロピーの原理をおさえておきましょう。
パープレキシティって結局こんな概念で,クロスエントロピーとこんな関係にあるんだよ!
と堂々とお話し(自慢)できることを目標に執筆していきます。分かりやすさを重視しているため,正確性に欠ける表現もありますが大目にみてください。
パープレキシティとは
まずは結論からです。全く分からないと思いますが,まずは眺めてみてください。もう一度言いますが,
もう無理!!
となると思いますが,後から説明しますので,まずは全体像を掴んでください。モデル化の対象とする言語を$L$,その言語$L$における単語列を$w_1^n=w_1\cdots w_n$とします。
\begin{align}
H(L) &= – \sum_{w_1^n} \frac{1}{n} P(w_1^n)\log P(w_1^n)\\
PP &= 2^{H(L)}
\end{align}
●$H(L)$:1単語当たりのエントロピー
●$PP$:パープレキシティ
情報量とは
イメージを明確にするために,まずはエントロピーを噛み砕いて考えていきましょう。エントロピーとは,言語Lにおいてある単語列を特定するために必要な情報量の平均を表します。
は?
まだ噛み砕いたことになっていませんね。エントロピーは情報理論の分野で定義されている概念です。そもそも,情報理論の出発は「情報量」を定義することでした。情報量は,大まかに言えば確率の逆数の対数(底は$2$)として定義されます。
例えば,「コインを投げて表が出た」という事象に対する情報量は,確率$\frac{1}{2}$の逆数である$2$の対数をとった$\log_2 2 = 1$となります。一方,「8面サイコロを投げて5が出た」という事象に対する情報量は$\log_2 8 = 3$となります。
つまり,「コインを投げて表が出る」という情報よりも,「8面サイコロを投げて5が出る」という情報の方が貴重(現れにくい)なために,情報量が大きくなっています。
エントロピーとは
さて,エントロピーも情報量と同じノリで捉えることができます。端的に言えば,エントロピーは情報量の平均です。情報量はある個別の「事象」に対して定義されましたが,エントロピーは事象の集合に対して定義されます。
先ほどの例で考えましょう。ある単語列$w_1^n$の生成確率を$P(w_1^n)$とすれば,単語列$w_1^n$の情報量は$-\log P(w_1^n)$となります。これを言語$L$に含まれる単語列のうち対象とする単語列に対して計算して,生成確率で重み付けした値がエントロピーになります。まさに,平均情報量です。
\begin{align}
H(L) &= – \sum_{w_1^n} \frac{1}{n} P(w_1^n)\log P(w_1^n)
\end{align}
あとは簡単です。パープレキシティは「2のエントロピー乗」として定義されます。
は?
難しく考えなくてOKです。先ほどもお伝えしたように,エントロピーとは言語Lにおいてある単語列を特定するために必要な情報量の平均を表します。話を単純化して,エントロピーが1のときを考えましょう。エントロピーが1とは「言語$L$から生成される単語を特定するためには平均して1ビット必要だ」ということを示しています。
さらに分かりやすく,今回は情報量の単位をビットではなく,「二者択一」としてみましょう。すると,エントロピーが1であるとは「言語$L$から生成される単語を特定するためには平均して1回の二者択一が必要だ」ということになります。
つまり,ある単語を決めるためには,次の単語が平均して2単語必要だということになります。これこそが,巷で言われてる「パープレキシティは単語の平均分岐数を表す」という説明の正体です。
だから,エントロピーが$H(L)$のときには,平均して$H(L)$回の二者択一が必要になるということで,後続する単語(=パープレキシティ)は「2のエントロピー乗」として定義(説明)されるのです。
エントロピーとクロスエントロピー
さて,みなさんはエントロピーとクロスエントロピーの違いは説明できますか?多くのサイトや記事では,両者を区別せずに扱っており,分かりにくい印象を受けます。ここでは,明確に両者を区別したいと思います。
想定する場面としては,言語$L$に対するモデルとして言語$M$を考えます。そして,先ほどと同じように言語$L$から生成された単語列を$w_1^n=w_1\cdots w_n$とします。
【エントロピー】
\begin{align}
H_0(L) &= – \sum_{w_1^n}P(w_1^n)\log P(w_1^n)
\end{align}
【クロスエントロピー】
\begin{align}
H_0(L, M) &= – \sum_{w_1^n} P(w_1^n)\log P_{M}(w_1^n)
\end{align}
違いが分かりますか?$\log$の中身が$P$であるか$P_M$であるかという違いです。これは,クロスエントロピーがモデル$M$の近似の良さを表す評価値であることに注意すれば分かります。エントロピーは言語$L$の中で測る評価値であるのに対し,クロスエントロピーは言語$L$とそのモデルである$M$の差を測る評価値です。
こちらの記事でも解説していますが,クロスエントロピーの$\log$の前はラベル,$\log$の後ろは推定値になります。このアナロジーから考えても,上記定義は納得できると思います。
パープレキシティとクロスエントロピー
さて,本記事も大詰めです。パープレキシティとクロスエントロピーはどのような関係にあるのでしょうか。結論は「実質同じ」です。ここで再び,パープレキシティとクロスエントロピーの定義を考えます。
想定する状況としては,言語$L$における単語列$w_1^n=w_1\cdots w_n$の生成確率を$P(w_1^n)$とします。そして,ある学習データでモデル$M$を学習し,モデル$M$におけるテストデータの単語列$w_1^N=w_1\cdots w_N$の生成確率を$P_{M}(w_1^N)$とします。このときのパープレキシティを「テストセットパープレキシティ」と呼びます。
実際に数式で確認していきましょう。
【クロスエントロピー】
\begin{align}
H_0(L, M) &= – \sum_{w_1^N} P(w_1^N)\log P_{M}(w_1^N)
\end{align}
【テストセットパープレキシティ】
\begin{align}
PP &= 2^{H_0(L, M)}
\end{align}
結局,クロスエントロピーとテストセットパープレキシティは同じ指標であることが分かります。完全に等価ではありませんが,両者の大小は対応するため,モデル$M$をクロスエントロピー基準で学習している場合,パープレキシティも向上していくはずだといことです。
ある仮定
実は,クロスエントロピーの定義として以下のようなものも見られます。
【クロスエントロピー】
\begin{align}
H_0(L, M) &= – \frac{1}{N} \log P_{M}(w_1^N)
\end{align}
今までの定義とは少し異なりますよね。結論から言うと,これは「言語$L$がエルゴード的」である場合に導出される近似式でしかありません。あたかも,上の式がクロスエントロピーの定義として採り上げられているものが多いですが,実際には近似式であることに注意しましょう。
参考文献
[1] 確率的言語モデル 北研二 東京大学出版会(1999)
はじめまして。いつもわかりやすい説明すごく研究に役立たせていただいております。
H(L):1単語当たりのエントロピーと記載されていますが、1言語当たりではないでしょうか?私の理解が曖昧かもしれないのでご説明いただけますと必要に嬉しく思います。
キンタ様
ご質問・ご指摘ありがとうございます。
さて,$H(L)$についてですが,私の理解ではやはり「1単語あたりのエントロピー」になります。
また,まずい表記が混在(単語と単語列を同一視)していたため,本文を修正いたしました。
$H(L)$の式を再掲します。
\begin{align}
H(L)&=-\sum_{w_{1}^{n}} \frac{1}{n} P\left(w_{1}^{n}\right) \log P\left(w_{1}^{n}\right)
\end{align}
噛み砕きます。$w_1^n$は単語列を表します。$n$は単語列の長さです。$\sum_{w_{1}^{n}}$は言語$L$に含まれる単語列に関する和を表します。例えば,言語$L$に$w_1^m$という単語列が含まれるとすれば,$1/n$の項は$1/m$になります。ですので,$H(L)$は1単語あたりのエントロピーと理解しています。
普通,言語は対象とする言語$L$のみを考えます。その言語を近似しようとするのが言語モデル$M$の働きです。
1/nにすることから、「1単語あたり」で、H(L)は、「言語Lにおける」を意味します、ということですかね。(順列の違いを含む)とりうる単語列wn1が多ければ、エントロピーは増えるということですね。
sin様
おっしゃる通りだと思います。
$H(L)$は言語から生成される単語を特定するために必要な情報量(ビット)ですので,とりうる単語列が多ければ必要な情報量も増えるというのが直感的な理解だと思っています。