機械学習を行うときのロス関数の定義については、いろいろと考えることが多いだろうと思います。
分類などを行うとき、クロスエントロピー(交差エントロピー)とKLダイバージェンスというロス関数がしばしば登場しますが、理解しないまま使っていましたので、その意味について調べてみました。
エントロピー
まずは、エントロピーとは何か、ということからです。
wikipediaでは、以下のように記述されています。
情報理論においてエントロピーは確率変数が持つ情報の量を表す尺度で、それゆえ情報量とも呼ばれる。 確率変数Xに対し、XのエントロピーH(X)は
wikipedia
\(H(X)=-\sum _{i}P_{i}\log P_{i}\) (ここでPiはX = iとなる確率)
情報量とはざっくり言うと、ある確率に基づいて発生する事象に対して、発生した事象をどの程度絞り込みができるかを表したもので、つまり、情報の有益度合いを示すものです。
例えば、サイコロを振って出た目を推測する場合、以下の2つの情報を比較すると、(2)のほうが目を当てやすくなっています。
(1) 偶数が出た:1/6 -> 1/3
(2) 2以下の目が出た: 1/6 -> 1/2
なので、(2)のほうが情報量が多いということができます。
また、エントロピーとは「予測できなさ」とも言うことができます。
これは、情報量と逆を表していることはすぐにわかるのではないでしょうか。情報量が多くて、推定のための材料が多ければ、予測も容易になりますが、情報量が少なければ、予測は当然、困難になります。
では、サイコロの目を予測する場合、それぞれの目が出る(\(X=X_1, X_2, …, X_6\))確率を、\(P=P_1, P_2, …, P_6\)とすると、
事象Xのエントロピーは、
$$H(x)=-\sum_{n=1}^6 P_n log P_n$$
と定義されます。
どれだけランダム性があるかを表す指標で、サイコロの例の場合、6面がそれぞれ1/6の確率で出る場合が最もエントロピーが大きくなります。
例えば、
(1) すべてが1/6の確率で出るサイコロ
(2) 1の目が1/2、他が1/10の確率で出るサイコロ
のエントロピーを計算してみると、(1) \(H(x) = 0.778\)、(2) \(H(x) = 0.651\)となります。
つまり、(2)の方がエントロピーが小さい=予測しやすいということになります。とりあえず、1を予測しておけば、50%の確率で当たるわけですから、感覚的にも納得です。
交差エントロピー
続いて、交差エントロピーについてみていきます。
交差エントロピーは、正解値と推定値の比較を行うときによく使用されます。
正解の確率分布を\(p(x)\)、推定した確率分布を \(q(x)\)としたとき、交差エントロピーは、
$$H(p, q) = -p(x) log q(x) $$
で表されます。
元のエントロピーの式のlogの中を、推定した分布に変えたものになります。
これが何を意味するのか、式の導出は遡っていかないと分からないため、今回は書き(書け)ませんが、 \(p(x)\)の分布を想定したときに、 \(q(x)\)がどのくらい予測しにくいかを表す指標だと理解しています。
\(p(x)\)の分布それ自体にも、エントロピーはあるのですが、\(q(x)\)は \(p(x)\)と一致しません。そのため、一致しない分だけ \(q(x)\)のほうがより予測しにくくなっていると考えられます。
なお、 \(p(x)=q(x)\)の時、交差エントロピーとエントロピーは一致します。
バイナリクロスエントロピー
ちなみに、2値分類に限定したものとして、バイナリクロスエントロピーという指標もあります。
下の式で表され、これを見れば、交差エントロピーの\(N=2\)の場合を取りだしたものであることが分かります。
$$D_{BC}=−P(x=0)log Q(x=0)−(1−P(x=0))log(1−Q(x=0))$$
なお、\(P(x=0)\)、\(Q(x=0)\)は共に、\(x=0\)となる確率を指します。
KLダイバージェンス
交差エントロピーは \(p(x)\)を前提としたときに、 \(q(x)\)の予測しにくさを表す指標でした。
しかし、正解分布である \(p(x)\) と推定分布 \(q(x)\)がどのくらい似ているかについては、交差エントロピーではよく分かりません。そこで、KLダイバージェンスの指標が登場します。
KLダイバージェンスは、
$$D_{KL}(p||q)=\int_{-\infty}^{\infty} p(x)log{\frac{p(x)}{q(x)}} dx $$
$$D_{KL}(P||Q)=\sum_x P(x) log{\frac{P(x)}{Q(i)}}$$
で表されます。
上が連続関数、下が離散関数の場合です。(意味合いとしては同じですので、以降では離散関数の式だけ使います)
ぱっと見、何を意味しているのか分かりにくいですが、logの中身を展開してみると理解しやすいと思います。
$$ D_{KL}(P||Q)=\sum_x {P(x) log P(x) – P(x) log Q(i)}$$
右辺の第1項は、\(P(x)\)のエントロピー、第2項は\(P(x)\)と\(Q(x)\)の交差エントロピーであることが分かります。
つまり、KLダイバージェンスとは、 確率分布\(P(x)\)をベースとしたとき、 \(Q(x)\)はどれだけエントロピーがあるかを示すものになります。当然、 \(P(x)=Q(X)\)の場合は、 \(D_{KL}(P||Q) =0\)です。
また、\(D_{KL}(P||Q) \neq D_{KL}(Q||P)\)のため、注意が必要です。
交差エントロピーは、予測のしにくさそのものを表していた一方、KLダイバージェンスは、 \(P(x)\)から\(Q(x)\)の“相対的”な予測のしにくさを表します。
言い換えれば、 \(P(x)\)から\(Q(x)\)がどれだけ似ているかを意味します。
ロス関数として扱うときは、交差エントロピーもKLダイバージェンスも、数値を最小とするという点では共通していますが、KLダイバージェンスのほうが感覚的に分かりやすい気がします。