情報理論:交差エントロピー
この記事では以下の疑問に答えます。
交差エントロピーとは何なのか。
情報エントロピーとどんな関連があるのか。
なぜ分類問題で使われるのか。
2項エントロピーについて
分類問題における機械学習で交差エントロピーを使った人は多いはず。「エントロピー」と呼ばれるからには情報エントロピーと関係があるのは察しが付く。
まずは、エントロピーを軽く復習しながら記述の仕方をいくつか紹介する。それによって交差エントロピーが導入しやすくなるので。
エントロピーの復習
情報エントロピーは以下のように定義される。
$$
\text{Entropy} = -\sum\limits_{i} P_i \log P_i
$$
ピンと来ない方は、情報エントロピーの記事を読んで欲しい。
変数が連続な場合は、
$$
\text{Entropy} = -\int_{-\infty}^{\infty} P(x) \log P(x) dx
$$
となる。積分する範囲は負の無限から正の無限になっている。煩雑になるので以後は範囲を省略する。
エントロピーは情報量の期待値なので、
$$
\text{Entropy} = \mathbb{E}_{x \sim P}[ -\log P(x)]
$$
とも書ける。ここで$${x \sim P}$$となっているのは$${x}$$が確率分布Pに従うとの意味になる。
もし、不安ならば、確率統計の記事で解説しているので一読を勧める。
以上より、エントロピーを以下のように定義する。
$$
H(P) = \mathbb{E}_{x \sim P}[-\log P(x)]
$$
これで簡潔になった。
このエントロピーH(P)は、理論上の最小平均圧縮データ長になる。
実際に通信などをしている場合、必ずしも理論上の最小値を達成しているとは限らない。
よって、どのくらいギャップがあるのかを知りたい。
エントロピーの予測
以前の記事で取り上げたように「東京の今日の天気をニューヨークに伝える」とする。
なるべく最小限のサイズで通信したいのだが、天気の確率分布だと固定されているわけでもなく、どうしても理想的な情報量の圧縮が行えない。
よって、あくまでも予想された確率分布Qでエントロピーを計算すると、
$$
\text{予測のEntropy} = H(Q) = \mathbb{E}_{x \sim Q}[- \log Q(x)]
$$
となる。
仮に、天気の情報を後からたどって正確に事後の確率分布Pを計算できるとすると、
$$
\text{事後のEntropy} = H(P) = \mathbb{E}_{x \sim P}[-\log P(x)]
$$
となる。
よって、H(Q)とH(P)の値が近いほど、予測された確率分布Qがより正しいことになる、と考えたくなる。
しかし、これは間違ったアプローチ。この二つを直接比べることはできない。
情報量$${−\log P(x)}$$や$${−\log Q(x)}$$の値はそれぞれの確率分布PとQに依存するので、予測した確率分布Qによっては、実際の分布Pによるエントロピーよりも低い値になる可能性がある。
エントロピーはある確率分布における最小平均圧縮データ長なので二つの異なる分布に従うエントロピーを比べることに意味はない。
フェアな比較をするためには、予測の情報量$${−\logP(x)}$$と実際の情報量$${−\log Q(x)}$$の期待値を実際の確率分布を使って比べる必要がある。
このように計算したものを交差エントロピー(Cross Entropy)と呼び、
$$
\text{CrossEntropy} = H(P, Q) = \mathbb{E}_{x \sim P}[-\log Q(x)]
$$
と記述する。
つまり、交差エントロピーとは予測された情報量の期待値を実際の確率にしたがって計算したもの。
これでエントロピーと交差エントロピーを直接比較することができる。
「交差エントロピー」対「エントロピー」
比較しやすいように、交差エントロピーとエントロピーを並べてみる。
$$
\begin{align*}
H(P, Q) &= \mathbb{E}_{x \sim P}[-\log Q(x)] \\
H(P) &= \mathbb{E}_{x \sim P}[-\log P(x)]
\end{align*}
$$
交差(cross)という言葉は、照合する(cross check)といった意味からきており、情報量を比べていることを意味する。
エントロピーは確率分布によって決まる最小平均圧縮データ長なので、交差エントロピーはエントロピーより小さくなることはない。
$$
H(P, Q) \ge H(P)
$$
交差エントロピーがエントロピーと同じ値であれば確率分布の予測が完璧だったことになる。
もう一つ重要なポイントとして、一般に、P≠Qならば、
$$
H(P, Q) \ne H(Q, P)
$$
となる。
期待値を求める確率分布が変わるので異なるので交差エントロピーの値も変わってくる。
もちろん、$${Q=P}$$ならば$${H(P,Q)=H(Q,P)=H(P)}$$なので、全く同じになる。
しかし、その場合は比べる意味がない。
損失関数としての交差エントロピー
では、なぜ交差エントロピーが分類問題の損失関数として使われるのか。
画像分類で具体的に考えてみる。
画像のデータセットとして5つのクラスあるものを訓練データとして使うとする。
正解データはone-hotエンコーディングで、
クラス1: [1 0 0 0 0]
クラス2: [0 1 0 0 0]
クラス3: [0 0 1 0 0]
クラス4: [0 0 0 1 0]
クラス5: [0 0 0 0 1]
となる。
各クラスを動物にしてみた。
この正解データを確率分布として捉える。
クラス1は「犬」なので、犬の画像に対する正解の確率分布はクラス1が100%で残りは0%になる。
正解: P = [1 0 0 0 0]
この場合、正解データの確率分布によるエントロピーは0になる。
これに対して機械学習モデルが予測する確率分布が、例えば以下のように、
予測: Q = [0.4 0.3 0.05 0.05 0.2]
だとする。
この二つを比べるために交差エントロピーを計算すると、
$$
\begin{align*}
H(P, Q) &= 1 \cdot (-\log 0.4) + 0 \cdot (-\log 0.3) + 0 \cdot (-\log 0.05) + 0 \cdot (-\log 0.2) \\
&= -\log 0.4 \\ &\approx 0.916
\end{align*}
$$
最低値が0なので、交差エントロピーをできるだけ小さくすることができれば予測精度が上がることになる。
例えば、予測が次のように、
予測: Q = [0.8 0.05 0.05 0.05 0.05]
だと、交差エントロピーは、
$$
H(P, Q) = -\log 0.8 \approx 0.223
$$
となり、予測がより正しくなっていると判断できる。
もし予測が完璧ならば交差エントロピーはエントロピーと同じになる。この例で言うと0になる。
まとめると、交差エントロピーでは正解の確率分布と予測の確率分布を比べることができる。
また、交差エントロピーが小さくなるほど予測が正解に近づくことになる。
これが交差エントロピーが損失関数として使われる理由だ。
ナットとビット
気づいたかもしれないが、上記の計算では対数の底は2ではなく、ネイピア数$${e}$$を使った。
つまり、自然対数で計算している。機械学習では自然対数を使うのが普通だ。
理由としては、微分の計算が楽になることを挙げられる。
また、対数には以下の関係があり、
$$
\log_2 x = \frac{\log_e x}{\log_e 2}
$$
大きさが変わるが比較する際にはどちらかの底で固定している限りは問題がない。
また、自然対数を使うときは$${\ln}$$と書いたり、底を省略して$${\log}$$と書くことが多い。
底が2の時の情報量は単位がビットだが、底がネイピア数の時の情報量の単位はナットと呼ぶ。
でも、正直なところあんまり耳にしないが。
直感的にはビットの方がわかりやすいので以前の記事でエントロピーを説明した時はそちらを使った。
例えば、ある事象が$${\frac{1}{2}}$$の確率で起きるとき、その情報量は$${−\log_2 \frac{1}{2} = \log_2 2 = 1}$$ビットとなる。
つまり、コインを振って裏か表かの確率で起きる事象を伝えるには1ビットあれば良いということ。
それに対し、1ナットは確率が$${\frac{1}{e}}$$で生じる事象を伝えるための情報量なので直感が伴わない。
$$
-\log \frac{1}{e} = \log {e} = 1
$$
エントロピーや交差エントロピーに関してはいったん理解してしまえば、その底が何であるべきかについて追求する必要はない。自然対数の方が微分などの計算が楽だし、多くの確率分布(正規分布など)はネイピア数を使うので都合が良い。
余談だが、多くの確率分布にネイピア数が使われているのは、それらの確率分布はエントロピーを最大化して求められているからなので偶然ではない。興味がある方は、最大エントロピー原理 - Wikipediaを参考にして欲しい。
2項エントロピー
2項エントロピー(Binary Cross Entropy)は交差エントロピーをクラスが2つの場合に使ったもの。
つまり、交差エントロピーと同じである。
$$
\begin{align*}
H(P, Q) &= -\sum\limits_{i=1}^2 P_i \log Q_i \\
&= -P_1 \log Q_1 -P_2 \log Q_2
\end{align*}
$$
変数を少し書き換えてみる。
$$
\begin{align*}
P_1 &= P \\
P_2 &= 1-P \\\\
Q_1 &= \hat{P} \\
Q_2 &= 1-\hat{P}
\end{align*}
$$
と置くと、
$$
H(P, \hat{P}) = -P\log \hat{P} \ – \ (1-P)\log (1-\hat{P})
$$
とよく見る2項エントロピーの公式になる。
交差エントロピーは不思議でも何でもないと感じてもらえれば幸いだ。
関連記事
この記事が気に入ったらチップで応援してみませんか?