エントロピー・クロスエントロピー・正規化エントロピー


NE(Normalized Entropy)という言葉に仕事で出会い、今まで「クロスエントロピー」などで使っていた「エントロピー」ってそもそも何?と思い調べました。
Wikipedia「情報量」には以下の記載があります。ちょっとわかりにくいですね。個人的には「情報の価値の総和」と覚えました。

情報量(じょうほうりょう)やエントロピー(英: entropy)は、情報理論の概念で、あるできごと(事象)が起きた際、それがどれほど起こりにくいかを表す尺度である。

※もともとは熱力学や統計力学の言葉っぽいですが、今回は情報理論的な側面の焦点を当てています。

選択情報量(自己エントロピー)と平均情報量(エントロピー)

エントロピーに以下の2種類あるらしいです。単純に「エントロピー」と言うと「平均情報量(エントロピー)」を指すようです(あまり深く確認していません)。平均情報量(エントロピー)」が少しわかりにくいですが、コイン裏表が同確率の場合に、どちらが起こるかがわかっていると価値が高い、と理解しています。

種類 内容     計算式     
選択情報量
(自己エントロピー)
事象単体の情報量
確率が低い事象ほど高い
$- \log P(E)$
平均情報量
(エントロピー)
事象の情報量の平均値
同確率ほど高い
$- \sum_{A \in \Omega} P(A) \log P(A) $

logの底は計算しやすい2を使う場合が多いようですが、相対的な数値が重要なので何でもいいらしいです。いつもすぐに出てこないlog(対数関数)は以下を参照。

log(対数関数)のグラフ

画像はWikipediaから拝借。x=1は必ず0を通り、log(底の値)=1です。

各色の曲線の底

  • 緑: 10
  • 赤: ネイピア数 e
  • 紫: 1.7

以下は例です。

選択情報量 平均情報量
太陽は東から昇る (ゼロ): 必ず起こる事象だから (ゼロ): 必ず起こる事象だから
次に出るサイコロの目は1 : 1/6の確率を言い当てているから : 1/6と5/6確率の平均だから

先程の例で計算式にします(底は2で端数は雑に表現)。

Entropy 計算式             
選択情報量
100%
太陽は東から昇る
0 $- \log P(E) $
$= -\log 1$
平均情報量
100%
太陽は東から昇る
0 $-p(0)\log p(0)-p(1)\log p(1)$
$=0 \times \infty - 1 \times 0$
選択情報量
17%
次のサイコロの目は1
2.58 $- \log P(E) $
$= -\log \frac{1}{6}$
平均情報量
17%
次のサイコロの目は1
0.65 $-p(0)\log p(0)-p(1)\log p(1)$
$=- \frac{5}{6} \log \frac{5}{6} - \frac{1}{6} \log \frac{1}{6}$
$ = -\frac{5}{6} \times -0.3 - \frac{1}{6} \times -2.6$
$= 0.21+ 0.43 $

二値分類時平均情報量(エントロピー)の一覧

Excelで二値分類のときのエントロピーを一覧化しました。五分五分のときにエントロピーが最も高くなります。
確率からどちらが起こるかわからない場合に、それがわかると価値が高い」と理解しています。コインの裏か表か、わからない場合にそれがわかることが情報価値が高い、ということです。

クロスエントロピー(交差エントロピー)

馴染み深い「交差エントロピー」です。機械学習の分類問題で「クロスエントロピー誤差」としてよく出ます。真と予測の2つの確率分布を交差させてエントロピーを計算。はじパタのロジスティック回帰Courseraの機械学習入門コースでやっていますね。log loss やロジスティック損失とも呼ばれます
離散確率変数でも連続確率変数でも計算できますが、機械学習では離散確率変数目的で使うことも多いと思うので、離散確率変数だけを説明。
2つの離散確率変数p(x)とq(x)でのクロスエントロピーは以下の式。

H(p, q) = -\sum_{x} p(x) \log(q(x))

2値分類だと以下の式にできます。

H(p, q) = -y \log \hat{y} - (1-y) \log(1-\hat{y}) \\
p \in \{y, 1-y\}, q \in \{ \hat{y}, 1-\hat{y}\}

2値分類でのクロスエントロピー誤差の場合、真の確率は1/0なので、計算がわかりやすいです。
例えば有名なKaggleのタイタニックのように生死予測(生=1)だとして、以下の計算例です。
※対数関数の底は2で計算

正解(y) 予測($\hat(y)$) 誤差 計算式               
$-y \log \hat{y} - (1-y) \log(1-\hat{y})$
0 0 0 $-0 \log 0 - (1-0) log (1-0)$
0 1 $\infty$ $-0 \log 1 - (1-0) log (1-1)$
1 0 $\infty$ $-1 \log 0 - (1-1) log (1-0)$
1 0.25 2 $-1 \log 0.25 - (1-1) log (1-0.25)$
1 0.5 1 $-1 \log 0.5 - (1-1) log (1-0.5)$
1 0.75 0.42 $-1 \log 0.75 - (1-1) log (1-0.75)$
1 1 0 $-1 \log 1 - (1-1) log (1-1)$

正規化クロスエントロピー

先程のクロスエントロピー誤差を正規化したものを正規化エントロピーと呼びます。Normalized Cross-Entropy, Normalized Log Loss, Normalized Entropy(NE) などとも呼ばれます。CTR予測をしているときにPractical Lessons from Predicting Clicks on Ads at Facebookで学びました。
除算の線形変換をする点では、通常の正規化と変わりません。分母はエントロピー(平均情報量)です。すべての予測値を平均値にした場合に値が1です。
以下が計算式です。

\frac{LogLoss}{- (p * log (p) + (1-p) * log (1-p) )} 
= \frac{- \frac{1}{N} \sum_{i=1}^{N}  y_i log (p_i) + (1 - y_i) log (1 - p_i)}{- (p * log (p) + (1-p) * log (1-p) )}

参考リンク