logo

クロスエントロピー 📂確率論

クロスエントロピー

概論

クロスエントロピーは、二つの確率分布を区別するために必要な平均ビット数であり、通常、真と仮定される(リファレンス)確率分布ppと、これを推定するための(予想される)確率分布qqの間で定義される。

定義 1

離散

二つの離散確率分布の確率質量関数p,qp,qが与えられたとする。二つの確率分布のクロスエントロピーH(p,q)H (p,q)は、以下のように定義される。 H(p,q):=p(x)log2q(x) H (p,q) := - \sum p(x) \log_{2} q(x)

連続

測度空間(Ω,F,m)( \Omega , \mathcal{F}, m)mm測度であるとする。f,gf,gがそれぞれ二つの確率測度P,QP,Qの測度mmに対して絶対連続な確率密度関数であるならば、二つの確率分布のクロスエントロピーH(P,Q)H (P,Q)またはH(f,g)H(f,g)は、以下のように定義される。 H(P,Q)=H(f,g)=f(x)log2g(x)dm(x) H (P,Q) = H(f,g) = - \int f(x) \log_{2} g(x) dm(x)

説明

連続型クロスエントロピーの定義が難解であることは、それほど神経質にならなくても良い。

マシンラーニング

2010年以降、クロスエントロピーは、特に分類器の学習過程で活発に使われている損失関数である。二つの確率分布の乖離を示すクルバック・ライブラー情報量DKL(pq)D_{\text{KL}} \left( p \| q \right)と、自己エントロピーH(p)H(p)に関して示せば H(p,q)=H(p)+DKL(pq) H(p,q) = H(p) + D_{\text{KL}} \left( p \| q \right) p=qp=qの時、DKL(pq)=0D_{\text{KL}} \left( p \| q \right) = 0を目指す目的関数(損失関数)として使われる。分類問題の文脈では、ppは実際のデータから出た確率―例えば、写真の中の被写体が犬か猫かを示すラベリングであり、qqは分類器が計算した結果―犬である確率70%、猫である確率20%、飛行機である確率5%…と考えれば良い。これがほぼ一致すること、つまりpqp \approx qであることは、分類器がラベリングをほぼ正確に予測し、クロスエントロピーが最小化されるという意味になる。

数学に詳しくて鋭い読者なら、ふと目的関数でDKL(pq)D_{\text{KL}} \left( p \| q \right)だけが重要ではないかと疑問に思うかもしれない。 H(p)H(p)が単独、(リファレンス)エントロピーであれば計算上に変わることがないので、ただDKL(pq)D_{\text{KL}} \left( p \| q \right)自体を損失関数として使う方が効率的に見える。しかし、コンピュータの立場から見れば H(p,q)=p(x)log2q(x)DKL(pq)=p(x)log2q(x)p(x) \begin{align*} H (p,q) =& - \sum p(x) \log_{2} q(x) \\ D_{\text{KL}} \left( p \| q \right) =& - \sum p(x) \log_{2} {{ q(x) } \over { p(x) }} \end{align*} 計算しやすい方は、明らかにクロスエントロピーだ。どっちにしろ、最適化(学習)結果は同じだから、わざわざq(x)/p(x)q(x) / p(x)を計算する必要はない。H(p)H(p)が変わることがないからDKL(pq)D_{\text{KL}} \left( p \| q \right)を使わないのではなく、その逆で、クロスエントロピーを使う理由になる。結論は「損失関数の文脈では、クロスエントロピーとクルバック・ライブラー情報量は概念的にまったく同じだ」ということだ。

もちろん、これはコンピュータの計算に関することであり、実際には、行列分解を扱う論文などでは、数式的な展開の便宜のために、クロスエントロピーではなくクルバック・ライブラー情報量を使うこともある。

表記

ちなみに、H(X,Y)H(X,Y)のような表現はジョイントエントロピーと重なるが、意外とクロスエントロピー自体が単独で使われることは、上で述べたマシンラーニングの文脈の時以外にはあまりないので、勉強している時を除いては特に混乱することはないだろう。しかし、二つの表現が重なることを知っておく価値はある。