交差エントロピーを理解するための計算練習:天気予報で学ぶ情報量

こんにちは。ゆうせいです。

ディープラーニングの分類問題では、交差エントロピー誤差という損失関数が使われます。式を見ると、確率の対数にマイナスをつけて足し合わせるだけの、単純な形をしています。しかし、なぜこの形なのか、なぜこれが良い損失関数なのかは、式を眺めていても分かりません。この記事のゴールは、交差エントロピーを、公式の暗記ではなく、意味の分かるものとして理解することです。そのために、明日の天気を予測するという一つの題材を使い、自己情報量、エントロピー、そして交差エントロピーへと、計算を通じて段階的に進みます。問題と解答を交互に配置していますので、必ず自分で解いてから、解答を読み進めてください。電卓を用意すると、より確実です。

ゴールを先に示します

まず、この記事でたどり着きたい式を提示します。

H(p, q) = -\sum_{k} p_k \log_2 q_k

これが交差エントロピーです。

p は、実際に起きている確率分布です。天気予報の例で言えば、その地域で実際に晴れる割合、雨が降る割合です。

q は、予測した確率分布です。予報が出した、晴れの確率と雨の確率です。

この式が何をしているのか、一言で言えば、予測がどれだけ外れているかを測っています。

予測が実際と完全に一致していれば、値は最小になります。ずれが大きいほど、値は大きくなります。

なぜこの形が損失関数として優れているのか

損失関数に求められる性質は、二つあります。

第一に、値が常に0以上であること。そうであれば、値を小さくするという明確な目標が立てられます。

第二に、予測が正解から遠いほど大きく、近いほど小さくなること。そうであれば、値を小さくすることが、予測を良くすることと一致します。

交差エントロピーは、この二つを満たしています。

ここから何をするのか

しかし、上の式を見ただけでは、なぜ対数が出てくるのか、なぜ確率を掛けて足し合わせるのかが分かりません。

そこで、この式を三段階に分解して、順に積み上げていきます。

第一段階は、-\log_2 q_k という部分です。これを自己情報量と呼びます。1回の出来事が、どれだけ意外だったかを表します。

第二段階は、-\sum_k p_k \log_2 p_k という形です。これをエントロピーと呼びます。自己情報量の平均であり、その分布が持つ不確実さの大きさです。

第三段階が、交差エントロピーです。エントロピーの式の一部を、別の分布に差し替えたものになっています。

最後に、KLダイバージェンスという、ずれの大きさだけを取り出した指標にも触れます。

記号の約束

本記事で使う記号を、あらかじめ決めておきます。

X は、実際の天気を表す確率変数です。

p は実際の確率分布、q は予報が出した確率分布を表します。

情報量の単位は、ビットで統一します。そのため、底が2の対数を使います。

計算に使う対数の値

計算に必要な対数の値を、あらかじめ表にしておきます。

x\log_2 x
0.01-6.6439
0.05-4.3219
0.1-3.3219
0.125-3.0000
0.2-2.3219
0.25-2.0000
0.3-1.7370
0.4-1.3219
0.5-1.0000
0.6-0.7370
0.7-0.5146
0.75-0.4150
0.8-0.3219
0.9-0.1520
0.95-0.0740
0.99-0.0145
1.00.0000

計算結果は、小数点以下4桁で丸めてください。

第1節:自己情報量

定義

ある事象が起こる確率を p とするとき、その事象が持つ自己情報量は次のように定義されます。

I = -\log_2 p

確率が小さいほど、情報量は大きくなります。

めったに起こらないことが起きたときのほうが、驚きが大きく、得られる情報も多い、という直感に対応しています。

なぜマイナスがつくのか

確率は0から1の範囲にあります。この範囲では、対数は必ず0以下になります。

情報量は、負の値では扱いにくいものです。そこでマイナスをつけて、正の値にしています。

例題1

ある地域では、晴れる確率が0.8、雨が降る確率が0.2です。

晴れたときと、雨が降ったときの自己情報量を、それぞれ求めてください。

例題1の解答

晴れたときの自己情報量を計算します。

I = -\log_2 0.8 = -(-0.3219) = 0.3219

約0.3219ビットです。

雨が降ったときの自己情報量を計算します。

I = -\log_2 0.2 = -(-2.3219) = 2.3219

約2.3219ビットです。

雨の情報量は、晴れの情報量の約7.2倍です。

\frac{2.3219}{0.3219} \approx 7.21

この地域では、晴れることのほうが多いため、晴れたと聞いても大きな驚きはありません。一方、雨が降ったと聞けば、より多くの情報が得られたことになります。

交差エントロピーとのつながり

ここで、ゴールの式を思い出してください。

H(p, q) = -\sum_{k} p_k \log_2 q_k

この式に含まれる -\log_2 q_k が、まさに今計算した自己情報量です。

ただし、確率として使われているのは q 、つまり予測した確率です。

予測した確率が小さい事象が実際に起きてしまったら、その驚きは大きい。この構造が、損失の大きさに直結します。

練習問題1-1

次の確率で起こる事象について、それぞれ自己情報量を求めてください。

確率0.5

確率0.25

確率0.125

確率0.05

練習問題1-1の解答

確率0.5の場合。

I = -\log_2 0.5 = 1.0000

1ビットです。

確率0.25の場合。

I = -\log_2 0.25 = 2.0000

2ビットです。

確率0.125の場合。

I = -\log_2 0.125 = 3.0000

3ビットです。

確率0.05の場合。

I = -\log_2 0.05 = 4.3219

約4.3219ビットです。

解説

前半の三つは、いずれもきれいな整数になっています。これは、0.5、0.25、0.125が、それぞれ2の累乗の逆数だからです。

0.5 = 2^{-1}, \quad 0.25 = 2^{-2}, \quad 0.125 = 2^{-3}

確率が半分になるごとに、情報量が1ビットずつ増えることが確認できます。

練習問題1-2

コインの裏表、トランプの4種類のマーク、サイコロの目について、特定の結果が出たときの自己情報量をそれぞれ求めてください。いずれも、すべての結果が等確率で起こるものとします。

なお、サイコロの計算には \log_2 6 \approx 2.5850 を使ってください。

練習問題1-2の解答

コインの裏表は、確率が \frac{1}{2} です。

I = -\log_2 \frac{1}{2} = 1

1ビットです。

トランプのマークは、確率が \frac{1}{4} です。

I = -\log_2 \frac{1}{4} = 2

2ビットです。

サイコロの目は、確率が \frac{1}{6} です。

I = -\log_2 \frac{1}{6} = \log_2 6 \approx 2.5850

約2.5850ビットです。

解説

コインは1ビット、トランプのマークは2ビットと、きれいな整数になりました。これは、2種類、4種類が、それぞれ1ビット、2ビットで表現できることに対応しています。

情報量とは、その事象を特定するのに何ビット必要かという量である、と理解できます。

サイコロは6種類であり、2の累乗ではないため、整数になりません。2ビットでは4種類しか表せず、3ビットでは8種類まで表せます。6種類は、その中間に位置します。

練習問題1-3

自己情報量が3ビットである事象の確率を求めてください。

また、自己情報量が0.5ビットである事象の確率を求めてください。2^{-0.5} \approx 0.7071 を使ってください。

練習問題1-3の解答

自己情報量が3ビットである場合を求めます。

-\log_2 p = 3

\log_2 p = -3

p = 2^{-3} = 0.125

確率は0.125です。

自己情報量が0.5ビットである場合を求めます。

p = 2^{-0.5} \approx 0.7071

確率は約0.7071です。

解説

これまでの問題は確率から情報量を求めるものでしたが、この問題は逆向きです。

情報量が1ビット未満ということは、確率が0.5より大きい、つまり半分より起こりやすい事象である、と読み取れます。

練習問題1-4

ある地域で、晴れる確率が0.9、雨の確率が0.1です。

雨の自己情報量は、晴れの自己情報量の何倍でしょうか。

また、確率が0.8と0.2の地域と比べて、この倍率はどう変わったでしょうか。理由も考えてください。

練習問題1-4の解答

晴れの自己情報量を計算します。

I = -\log_2 0.9 = 0.1520

雨の自己情報量を計算します。

I = -\log_2 0.1 = 3.3219

倍率を計算します。

\frac{3.3219}{0.1520} \approx 21.86

約21.9倍です。

解説

確率が0.8と0.2の場合は約7.2倍でしたから、倍率が大きくなっています。

理由は、晴れがより当たり前になったためです。

確率0.9で晴れる地域では、晴れたと聞いてもほとんど情報がありません。情報量は0.152ビットしかありません。

一方、確率0.1の雨は、より珍しい出来事になります。情報量は3.32ビットに増えます。

分子が増え、分母が減るため、倍率が大きく開きます。

偏りが強いほど、珍しい事象の情報量が相対的に大きくなる、という関係です。

第2節:エントロピー

定義

ある確率分布に含まれるすべての事象について、確率で重み付けした情報量の平均を、エントロピーと呼びます。

H(X) = -\sum_{k} p_k \log_2 p_k

各事象の情報量に、その事象が起こる確率を掛けて、すべて足し合わせます。

平均情報量とも呼ばれます。

なぜ重み付けするのか

単純に情報量を足して個数で割るのでは、実態を表しません。

起こりやすい事象と、めったに起こらない事象では、実際に遭遇する頻度が違うためです。

起こりやすい事象の情報量には大きな重みをかけ、起こりにくい事象の情報量には小さな重みをかける。これが、確率で重み付けするという操作の意味です。

直感的な意味

エントロピーは、その確率分布が持つ不確実さの大きさを表します。

すべての結果が等確率であれば、何が起こるか予測できないため、エントロピーは最大になります。

一方、ほぼ確実に一つの結果が起こる分布であれば、予測が容易なため、エントロピーは小さくなります。

例題2

晴れる確率が0.8、雨の確率が0.2の地域について、天気のエントロピーを求めてください。

例題2の解答

定義に従って計算します。

H(X) = -(0.8 \times \log_2 0.8 + 0.2 \times \log_2 0.2)

各項を計算します。

0.8 \times (-0.3219) = -0.2575

0.2 \times (-2.3219) = -0.4644

合計します。

-0.2575 + (-0.4644) = -0.7219

マイナスをつけます。

H(X) = 0.7219

約0.7219ビットです。

第1節で求めた自己情報量は、晴れが0.3219ビット、雨が2.3219ビットでした。

エントロピーの0.7219ビットは、この二つの中間にあります。

ただし、単純な平均ではありません。単純な平均であれば、次のようになったはずです。

\frac{0.3219 + 2.3219}{2} = 1.3219

実際の値0.7219は、これより小さくなっています。起こりやすい晴れの情報量が小さく、それに大きな重みがかかっているためです。

交差エントロピーとのつながり

ここで、二つの式を並べてみます。

エントロピーは次のとおりです。

H(X) = -\sum_{k} p_k \log_2 p_k

交差エントロピーは次のとおりです。

H(p, q) = -\sum_{k} p_k \log_2 q_k

違いは、対数の中身だけです。

エントロピーでは p_k 、交差エントロピーでは q_k になっています。

重み付けには、どちらも実際の分布 p を使います。しかし、情報量の計算には、交差エントロピーでは予測した分布 q を使うのです。

この一箇所の差し替えが、交差エントロピーの正体です。第3節で、この意味を確認します。

練習問題2-1

次の確率分布について、それぞれエントロピーを求めてください。晴れの確率と雨の確率を、この順に示します。

0.5と0.5

0.9と0.1

0.95と0.05

1.0と0.0

なお、四つ目については、0 \times \log_2 0 = 0 として扱う約束があります。

練習問題2-1の解答

0.5と0.5の場合。

H(X) = -(0.5 \times (-1.0) + 0.5 \times (-1.0)) = 1.0000

1ビットです。

0.9と0.1の場合。

0.9 \times (-0.1520) = -0.1368

0.1 \times (-3.3219) = -0.3322

H(X) = 0.4690

約0.4690ビットです。

0.95と0.05の場合。

0.95 \times (-0.0740) = -0.0703

0.05 \times (-4.3219) = -0.2161

H(X) = 0.2864

約0.2864ビットです。

1.0と0.0の場合。

1.0 \times \log_2 1.0 = 0

0 \times \log_2 0 = 0

H(X) = 0

0ビットです。

解説

例題2の結果も含めて、並べてみます。

分布エントロピー
0.5 と 0.51.0000
0.8 と 0.20.7219
0.9 と 0.10.4690
0.95 と 0.050.2864
1.0 と 0.00.0000

偏りが強くなるほど、エントロピーが小さくなっています。

確率1.0の場合、エントロピーは0です。必ず晴れると分かっているため、不確実さがまったくありません。天気を知らされても、新しい情報は得られません。

一方、0.5と0.5のとき、エントロピーは1ビットで最大です。まったく予測がつかない状態です。

練習問題2-2

三つの天気を考えます。晴れが0.5、曇りが0.3、雨が0.2という分布について、エントロピーを求めてください。

練習問題2-2の解答

三つの項を計算します。

0.5 \times (-1.0000) = -0.5000

0.3 \times (-1.7370) = -0.5211

0.2 \times (-2.3219) = -0.4644

合計します。

-0.5000 - 0.5211 - 0.4644 = -1.4855

マイナスをつけます。

H(X) = 1.4855

約1.4855ビットです。

解説

二値の場合の最大値が1ビットでしたが、三値になると1ビットを超えました。

選択肢が増えると、不確実さも増えるためです。

練習問題2-3

四つの天気を考えます。晴れ、曇り、雨、雪が、すべて確率0.25で起こるとします。

エントロピーを求めてください。

また、この結果が何を意味するか説明してください。

練習問題2-3の解答

四つの事象がすべて確率0.25です。

H(X) = -4 \times (0.25 \times (-2.0)) = -4 \times (-0.5) = 2.0000

2ビットです。

解説

この結果が意味することは、次のとおりです。

4種類の結果を区別するには、2ビットが必要です。00、01、10、11の4通りで表せます。

エントロピーが2ビットであることは、平均して2ビットの情報があれば、この天気を伝えられることを意味しています。

等確率の場合、エントロピーは、必要なビット数と一致します。

練習問題2-4

二値の分布において、エントロピーが最大になるのは、確率がいくつのときでしょうか。

練習問題2-1の結果から考えてください。

練習問題2-4の解答

練習問題2-1の結果を見ると、確率が0.5と0.5のとき、エントロピーが1.0で最大でした。

0.8と0.2、0.9と0.1、0.95と0.05と偏りが強まるにつれて、値が小さくなっています。

したがって、二値の分布でエントロピーが最大になるのは、両方の確率が0.5のときです。

解説

一般に、すべての事象が等確率であるとき、エントロピーが最大になります。

この状態が、最も予測しにくい状態であるという直感と一致します。

逆に、一つの事象の確率が1になれば、エントロピーは0です。何が起こるかが確定しているため、不確実さがありません。

練習問題2-5

n 種類の結果が、すべて等確率で起こる場合のエントロピーを、一般式で表してください。

また、n = 2, 4, 8, 16 の場合の値をそれぞれ求めてください。

練習問題2-5の解答

n 種類が等確率であれば、各事象の確率は \frac{1}{n} です。

H(X) = -\sum_{k=1}^{n} \frac{1}{n} \log_2 \frac{1}{n} = -\log_2 \frac{1}{n} = \log_2 n

一般式は次のとおりです。

H(X) = \log_2 n

各値を計算します。

n = 2 のとき、\log_2 2 = 1 ビット。

n = 4 のとき、\log_2 4 = 2 ビット。

n = 8 のとき、\log_2 8 = 3 ビット。

n = 16 のとき、\log_2 16 = 4 ビット。

解説

選択肢が2倍になるごとに、エントロピーが1ビットずつ増えることが確認できます。

これは、選択肢を2倍にするたびに、区別するために必要なビットが1つ増えることに対応しています。

第3節:交差エントロピー

いよいよ、この記事のゴールです。

定義の再確認

二つの確率分布があるとき、一方の分布で重み付けをして、もう一方の分布から情報量を取ってきて平均したものが、交差エントロピーです。

H(p, q) = -\sum_{k} p_k \log_2 q_k

p が重み付けに使う分布、q が情報量の計算に使う分布です。

天気予報の文脈では、p が実際の天気の分布、q が予報が出した確率です。

なぜこの組み合わせなのか

ここが、最も重要な点です。

重み付けに実際の分布を使う理由は、実際に起こる頻度に応じて評価したいからです。

めったに起こらない事象の予測を大きく外しても、影響は限定的です。しかし、頻繁に起こる事象の予測を外せば、影響が大きくなります。

情報量の計算に予測した分布を使う理由は、予測が外れたときの驚きを測りたいからです。

予報が晴れの確率を0.01としていたのに、実際にはよく晴れる。そうであれば、晴れるたびに大きな驚きが生じます。この驚きの大きさが、そのまま予報の悪さを表します。

つまり、実際に起こる頻度で重み付けしながら、予測が外れたときの驚きを平均している、という構造です。

例題3

実際の天気の分布が、晴れ0.8、雨0.2だとします。

ある予報システムは、晴れ0.7、雨0.3という確率を出しました。

この予報の交差エントロピーを求めてください。

例題3の解答

定義に従って計算します。

H(p, q) = -(0.8 \times \log_2 0.7 + 0.2 \times \log_2 0.3)

各項を計算します。

0.8 \times (-0.5146) = -0.4117

0.2 \times (-1.7370) = -0.3474

合計します。

-0.4117 - 0.3474 = -0.7591

マイナスをつけます。

H(p, q) = 0.7591

約0.7591ビットです。

実際の分布のエントロピーは、例題2で求めたとおり0.7219ビットでした。

交差エントロピーは0.7591ビットであり、これより大きくなっています。

差を計算します。

0.7591 - 0.7219 = 0.0372

この差が、予報のずれによって生じた余分なコストです。

重要な性質

交差エントロピーには、次の性質があります。

第一に、値は常にエントロピー以上になります。

H(p, q) \geq H(p)

第二に、等号が成立するのは、二つの分布が完全に一致するときだけです。

つまり、予測が正確であるほど、交差エントロピーは小さくなり、下限であるエントロピーに近づきます。

これが、損失関数として使える理由です。値を小さくすることが、予測を実際の分布に近づけることと一致します。

練習問題3-1

実際の分布が晴れ0.8、雨0.2であるとき、次の予報の交差エントロピーをそれぞれ求めてください。晴れの確率と雨の確率を、この順に示します。

予報Aは0.8と0.2

予報Bは0.9と0.1

予報Cは0.5と0.5

予報Dは0.2と0.8

練習問題3-1の解答

予報Aについて計算します。

0.8 \times (-0.3219) = -0.2575

0.2 \times (-2.3219) = -0.4644

H(p, q) = 0.7219

予報Bについて計算します。

0.8 \times (-0.1520) = -0.1216

0.2 \times (-3.3219) = -0.6644

H(p, q) = 0.7860

予報Cについて計算します。

0.8 \times (-1.0000) = -0.8000

0.2 \times (-1.0000) = -0.2000

H(p, q) = 1.0000

予報Dについて計算します。

0.8 \times (-2.3219) = -1.8575

0.2 \times (-0.3219) = -0.0644

H(p, q) = 1.9219

解説

計算の際、重み付けにはすべて実際の分布である0.8と0.2を使っている点を確認してください。

変わっているのは、対数の中身だけです。予報が出した確率を、そこに入れています。

予報Aは、実際の分布とまったく同じ確率を出しています。このとき、交差エントロピーの計算はエントロピーの計算と一致し、0.7219になります。

練習問題3-2

練習問題3-1の結果を、エントロピーの0.7219ビットと比較してください。

すべての交差エントロピーが、エントロピー以上になっていることを確認してください。

また、どの予報が最も良いかを判断してください。

練習問題3-2の解答

エントロピーの0.7219と比較します。

予報交差エントロピーエントロピーとの差
予報A(0.8と0.2)0.72190.0000
予報B(0.9と0.1)0.78600.0641
予報C(0.5と0.5)1.00000.2781
予報D(0.2と0.8)1.92191.2000

すべての差が0以上になっています。

最も良いのは予報Aです。差が0であり、実際の分布と完全に一致しています。

予報Dが最も悪く、実際とは正反対の予測をしています。差が1.2ビットもあります。

解説

交差エントロピーがエントロピーを下回ることはない、という性質が、数値として確認できました。

この性質があるからこそ、交差エントロピーは損失関数として使えます。

下限が決まっており、そこに近づけることが目標になるからです。

予報Bは、実際より晴れ寄りに偏った予測をしました。差は0.0641です。

予報Cは、まったく予測を放棄して五分五分としました。差は0.2781です。

予報Bのほうが、予報Cより良い結果です。多少ずれていても、実際の傾向をとらえているほうが有利である、と読み取れます。

練習問題3-3

実際の分布が晴れ0.5、雨0.5であるとき、次の予報の交差エントロピーを求めてください。

予報Eは0.5と0.5

予報Fは0.8と0.2

なお、この場合のエントロピーは1.0000ビットです。

練習問題3-3の解答

予報Eについて計算します。

0.5 \times (-1.0000) = -0.5000

0.5 \times (-1.0000) = -0.5000

H(p, q) = 1.0000

エントロピーと一致しています。差は0です。

予報Fについて計算します。

0.5 \times (-0.3219) = -0.1610

0.5 \times (-2.3219) = -1.1610

H(p, q) = 1.3219

差は 1.3219 - 1.0000 = 0.3219 です。

解説

前の問題と、状況が逆転している点に注目してください。

練習問題3-1では、実際が0.8と0.2で、五分五分の予報が悪い結果でした。

この問題では、実際が0.5と0.5であり、五分五分の予報が最良です。

つまり、五分五分という予報そのものが良いか悪いかではなく、実際の分布と一致しているかどうかが評価されている、ということです。

交差エントロピーは、予測の絶対的な良し悪しではなく、実際とのずれを測っているのです。

練習問題3-4

実際の分布が晴れ0.6、雨0.4であるとき、次の予報の交差エントロピーを求めてください。

予報Gは0.6と0.4

予報Hは0.7と0.3

予報Iは0.5と0.5

また、それぞれエントロピーからどれだけ大きいかを求め、最も良い予報を選んでください。

なお、この場合のエントロピーは0.9710ビットです。

練習問題3-4の解答

予報Gについて計算します。

0.6 \times (-0.7370) = -0.4422

0.4 \times (-1.3219) = -0.5288

H(p, q) = 0.9710

差は0です。

予報Hについて計算します。

0.6 \times (-0.5146) = -0.3088

0.4 \times (-1.7370) = -0.6948

H(p, q) = 1.0036

差は 1.0036 - 0.9710 = 0.0326 です。

予報Iについて計算します。

0.6 \times (-1.0000) = -0.6000

0.4 \times (-1.0000) = -0.4000

H(p, q) = 1.0000

差は 1.0000 - 0.9710 = 0.0290 です。

結果を表にまとめます。

予報交差エントロピーエントロピーとの差
予報G(0.6と0.4)0.97100.0000
予報H(0.7と0.3)1.00360.0326
予報I(0.5と0.5)1.00000.0290

最も良いのは予報Gです。実際の分布と完全に一致しています。

解説

興味深いのは、予報Hと予報Iの順位です。

予報Iは晴れと雨を五分五分と見ており、一見すると何も予測していないように思えます。

しかし、予報Hのように実際より晴れ寄りに偏った予測をするより、ずれが小さくなっています。

実際の分布が0.6と0.4であり、五分五分にかなり近いためです。0.7と0.3のほうが、かえって遠くなっています。

分布のずれという観点では、極端に偏った予測が必ずしも有利ではない、という点が読み取れます。

なお、練習問題3-2では、逆の結果でした。実際が0.8と0.2という強い偏りを持つ場合は、偏った予測のほうが有利だったのです。

実際の分布次第で、どの予報が良いかが変わる。この点が、交差エントロピーの本質です。

第4節:KLダイバージェンス

前節で計算した、交差エントロピーとエントロピーの差には、名前がついています。

定義

D_{KL}(p \parallel q) = H(p, q) - H(p)

これをKLダイバージェンス、あるいは相対エントロピーと呼びます。

式で書くと、次のようになります。

D_{KL}(p \parallel q) = \sum_{k} p_k \log_2 \frac{p_k}{q_k}

二つの分布のずれの大きさを、直接表す指標です。

交差エントロピーとの関係

三つの量の関係を、式で整理します。

H(p, q) = H(p) + D_{KL}(p \parallel q)

交差エントロピーは、二つの部分に分解できます。

第一の部分は H(p) 、つまり実際の分布が持つエントロピーです。これは、予測の良し悪しとは無関係に、もともと存在する不確実さです。

第二の部分が D_{KL} 、つまり予測のずれによって生じた余分なコストです。

前者は、どんなに予測を良くしても減らせません。減らせるのは、後者だけです。

重要な性質

KLダイバージェンスには、次の性質があります。

必ず0以上になります。

二つの分布が完全に一致するときだけ、0になります。

対称ではありません。D_{KL}(p \parallel q)D_{KL}(q \parallel p) は、一般に異なります。

三つ目の性質があるため、これは距離ではありません。ダイバージェンスという別の名前が使われるのは、このためです。

例題4

実際の分布を晴れ0.8、雨0.2とします。予報が晴れ0.7、雨0.3を出したとき、KLダイバージェンスを求めてください。

例題4の解答

例題3で、交差エントロピーが0.7591と求まっています。

例題2で、エントロピーが0.7219と求まっています。

D_{KL}(p \parallel q) = 0.7591 - 0.7219 = 0.0372

約0.0372ビットです。

練習問題4-1

練習問題3-1の各予報について、KLダイバージェンスを求めてください。

すでに練習問題3-2で差を計算していますので、その値を確認する形になります。

練習問題4-1の解答

練習問題3-2で求めた差が、そのままKLダイバージェンスです。

予報KLダイバージェンス
予報A(0.8と0.2)0.0000
予報B(0.9と0.1)0.0641
予報C(0.5と0.5)0.2781
予報D(0.2と0.8)1.2000

解説

いずれも0以上になっていることを確認してください。

KLダイバージェンスが負になることはありません。これは、交差エントロピーが必ずエントロピー以上になるという性質と、同じことを述べています。

予報Aだけが0です。予測が実際と完全に一致しているためです。

練習問題4-2

KLダイバージェンスが対称でないことを、数値で確認します。

分布 p を晴れ0.8、雨0.2とします。

分布 q を晴れ0.5、雨0.5とします。

D_{KL}(p \parallel q)D_{KL}(q \parallel p) を、それぞれ求めてください。

なお、D_{KL}(q \parallel p) の計算には、H(q, p) = -(0.5 \times \log_2 0.8 + 0.5 \times \log_2 0.2) を使ってください。H(q) = 1.0000 です。

練習問題4-2の解答

まず D_{KL}(p \parallel q) を求めます。

これは練習問題3-1の予報Cと同じ計算です。

D_{KL}(p \parallel q) = 1.0000 - 0.7219 = 0.2781

次に D_{KL}(q \parallel p) を求めます。

H(q, p) を計算します。

0.5 \times (-0.3219) = -0.1610

0.5 \times (-2.3219) = -1.1610

H(q, p) = 1.3219

D_{KL}(q \parallel p) = 1.3219 - 1.0000 = 0.3219

比較すると、0.2781と0.3219であり、一致しません。

解説

このように、KLダイバージェンスは順序を入れ替えると値が変わります。

なぜ変わるのでしょうか。

重み付けに使う分布が入れ替わるからです。

D_{KL}(p \parallel q) では、0.8と0.2で重み付けします。

D_{KL}(q \parallel p) では、0.5と0.5で重み付けします。

同じずれであっても、どちらの分布を基準に評価するかで、値が変わるのです。

もし距離であれば、AからBまでの距離とBからAまでの距離は等しくなければなりません。KLダイバージェンスはこの条件を満たさないため、距離ではないと言われます。

練習問題4-3

なぜ、機械学習ではKLダイバージェンスではなく、交差エントロピーを損失関数として使うのでしょうか。

H(p, q) = H(p) + D_{KL}(p \parallel q) という関係から考えてください。

練習問題4-3の解答

関係式を見てください。

H(p, q) = H(p) + D_{KL}(p \parallel q)

H(p) は、実際の分布だけで決まる値です。モデルのパラメータをどう変えても、この値は変わりません。定数です。

したがって、交差エントロピーを小さくすることと、KLダイバージェンスを小さくすることは、まったく同じ意味になります。定数の分だけずれているだけだからです。

解説

そのうえで、実務では交差エントロピーのほうが計算しやすいという事情があります。

KLダイバージェンスを計算するには、実際の分布のエントロピー H(p) も求める必要があります。交差エントロピーであれば、その計算が不要です。

同じ最適化の結果が得られるなら、計算が少ないほうを選ぶ。これが、交差エントロピーが使われる理由です。

なお、モデルの出力どうしを比較する場面などでは、KLダイバージェンスが直接使われることもあります。用途によって使い分けられている、と理解してください。

第5節:機械学習での交差エントロピー誤差

最後に、ディープラーニングでの使われ方を確認します。

分類問題での形

分類問題では、正解ラベルをOne-Hot表現で与えます。

正解のクラスだけが1、それ以外は0というベクトルです。

このとき、交差エントロピーの式は大きく単純化されます。

L = -\sum_{k} t_k \log_2 y_k

t_k が正解ラベル、y_k がモデルの予測確率です。

t_k が0である項は、掛け算によって消えてしまいます。

したがって、残るのは正解クラスの項だけです。

L = -\log_2 y_{correct}

正解クラスに対する予測確率の対数に、マイナスをつけただけの形になります。

例題5

3クラス分類で、正解が2番目のクラスだとします。

モデルの予測確率が0.1、0.7、0.2であるとき、交差エントロピー誤差を求めてください。

例題5の解答

正解は2番目のクラスですから、その予測確率0.7だけを使います。

L = -\log_2 0.7 = 0.5146

約0.5146ビットです。

1番目と3番目の予測確率は、計算に一切影響しません。正解ラベルが0であるため、項が消えるからです。

練習問題5-1

同じ設定で、モデルの予測確率が0.6、0.2、0.2であった場合の交差エントロピー誤差を求めてください。

例題5の結果と比較してください。

練習問題5-1の解答

正解である2番目のクラスの予測確率は0.2です。

L = -\log_2 0.2 = 2.3219

約2.3219ビットです。

例題5の0.5146と比べると、約4.5倍です。

\frac{2.3219}{0.5146} \approx 4.51

解説

このモデルは、正解ではない1番目のクラスに0.6という高い確率を割り当てています。

自信を持って間違えたため、大きな損失が生じています。

なお、計算に使ったのは正解クラスの0.2だけです。1番目に0.6を割り当てようが、0.4と0.4に分けようが、正解クラスが0.2であれば損失は同じになります。

ただし、確率の合計は1になるよう作られているため、他のクラスに高い確率を与えれば、正解クラスの確率は自動的に下がります。間接的には影響している、と理解してください。

練習問題5-2

正解クラスの予測確率が次の値である場合の損失を、それぞれ求めてください。

0.99、0.9、0.5、0.1、0.01

結果から、この損失関数の性質を説明してください。

練習問題5-2の解答

それぞれ計算します。

正解クラスの予測確率損失(ビット)状態
0.990.0145ほぼ完全に正解
0.90.1520自信を持って正解
0.51.0000迷っている
0.13.3219外している
0.016.6439自信を持って誤り

解説

この損失関数の性質は、次のとおりです。

第一に、値は常に0以上です。確率が0から1の範囲にある限り、対数は0以下になるため、マイナスをつけると必ず0以上になります。

第二に、正解の確率が1に近いほど、損失が小さくなります。完全に正解すれば、-\log_2 1 = 0 で損失は0です。

第三に、正解から遠ざかるほど、損失が急激に大きくなります。

冒頭で述べた、損失関数に求められる二つの性質を、すべて満たしています。

練習問題5-3

練習問題5-2の結果を使って、次の二つの変化を比較してください。

予測確率が0.9から0.99に改善したときの、損失の減少量。

予測確率が0.1から0.01に悪化したときの、損失の増加量。

この非対称性が、学習にどのような効果をもたらすか考えてください。

練習問題5-3の解答

0.9から0.99への改善では、損失が次のように変化します。

0.1520 - 0.0145 = 0.1375

約0.1375ビットの減少です。

0.1から0.01への悪化では、損失が次のように変化します。

6.6439 - 3.3219 = 3.3220

約3.3220ビットの増加です。

同じく10分の1という変化でありながら、後者の変化量は前者の約24倍です。

\frac{3.3220}{0.1375} \approx 24.2

解説

この非対称性がもたらす効果は、次のとおりです。

大きく間違えているとき、損失が急激に大きくなるため、パラメータの修正も大きくなります。間違えたときには大いに学習させる、という挙動です。

一方、正解に近づいた後は、損失の変化が緩やかになるため、修正も小さくなります。慎重に微調整する、という挙動です。

学習の初期には大胆に、後期には慎重に。この使い分けが、対数という関数の形によって、自動的に実現されています。

もし損失関数が予測確率に比例する単純な形であれば、この使い分けは起こりません。対数を使うことに、明確な意味があるのです。

練習問題5-4

第3節で学んだ交差エントロピーの式と、この節で使った分類問題の式が、同じものであることを確認してください。

3クラス分類で、正解が2番目のクラスであるとします。正解ラベルは0、1、0です。

モデルの予測確率が0.1、0.7、0.2であるとき、交差エントロピーの定義式に従って、すべての項を書き出して計算してください。

練習問題5-4の解答

定義式は次のとおりです。

H(p, q) = -\sum_{k} p_k \log_2 q_k

ここで、p は正解ラベルの0、1、0です。q はモデルの予測確率の0.1、0.7、0.2です。

三つの項をすべて書き出します。

1番目の項は、次のようになります。

0 \times \log_2 0.1 = 0 \times (-3.3219) = 0

2番目の項は、次のようになります。

1 \times \log_2 0.7 = 1 \times (-0.5146) = -0.5146

3番目の項は、次のようになります。

0 \times \log_2 0.2 = 0 \times (-2.3219) = 0

合計します。

0 + (-0.5146) + 0 = -0.5146

マイナスをつけます。

H(p, q) = 0.5146

例題5の結果と一致しました。

解説

この計算から、なぜ正解クラスの項だけが残るのかが、はっきり分かります。

正解ラベルが0である項では、対数の値がいくつであっても、0を掛けるため結果が0になります。

対数の値そのものは、1番目が-3.3219、3番目が-2.3219と、決して小さくありません。しかし、重みが0であるため、消えてしまうのです。

第3節で扱った天気予報の例では、重みが0.8と0.2でした。どちらの項も残ります。

分類問題では、重みが1と0という極端な形になっているため、片方だけが残る。この違いだけです。

同じ式が、極端な重み付けの場合として、単純な形に変わっている。そう理解してください。

全体のつながりを整理する

最後に、三つの概念の関係を整理します。

積み上げの構造

自己情報量は、1回の出来事がどれだけ意外だったかを表します。

I = -\log_2 p

エントロピーは、その平均です。確率で重み付けして足し合わせます。

H(X) = -\sum_{k} p_k \log_2 p_k

交差エントロピーは、エントロピーの式のうち、対数の中身だけを予測した分布に差し替えたものです。

H(p, q) = -\sum_{k} p_k \log_2 q_k

KLダイバージェンスは、交差エントロピーからエントロピーを引いた、ずれの分だけです。

D_{KL}(p \parallel q) = H(p, q) - H(p)

一つの表にまとめる

概念定義式意味タクシーでのたとえ
自己情報量I = -\log_2 p1回の出来事に対する「サプライズ感(驚きの大きさ)トラブルが起きたときの1回ごとのメーターの上昇幅
エントロピーH(X) = -\sum_k p_k \log_2 p_k自己情報量を発生確率で重み付けした平均値(期待値)いつも通りの道で発生する平均的な運賃(例: 1,000円)
交差エントロピーH(p, q) = -\sum_k p_k \log_2 q_kズレを含めたトータルコストの期待値(本来のコスト + ズレによる余計なコスト)勘違いした道順で進んでしまった時の支払総額(例: 1,300円)
KLダイバージェンスD_{KL}(p \parallel q) = H(p,q) - H(p)ズレによる余計なコストのみ道を間違えたせいで発生した余計な差額(例: 300円)

KLダイバージェンスの左辺にある二重の縦線は、二つの分布を隔てる記号です。カンマではなく縦線を使うのは、この指標が対称でないことを示すためだと考えて下さい。

交差エントロピーの左辺は2つの変数を区切るカンマです。第1引数が正解の分布、第2引数が予想の分布、という順序を、記号とセットで覚えてください。

覚え方

エントロピーは、正しい分布だけを使った平均です。

交差エントロピーは、重みは正しい分布、情報量は予測した分布から取ってきた平均です。

この違いは、対数の中身が pq か、という一点だけです。

そして、この二つの差が、予測のずれ、つまりKLダイバージェンスです。

まとめ

この記事のゴールは、交差エントロピーを意味の分かるものとして理解することでした。

交差エントロピーは、次の式で表されます。

H(p, q) = -\sum_{k} p_k \log_2 q_k

この式は、三段階で組み立てられています。

第一に、-\log_2 q_k という自己情報量です。ある事象がどれだけ意外だったかを表し、確率が半分になるごとに1ビットずつ増えます。ここで使われているのは、予測した確率です。

第二に、p_k による重み付けです。実際に起こる頻度に応じて評価するため、重みには実際の分布を使います。

第三に、これらを足し合わせて平均を取ります。同じ形で、対数の中身も p_k にしたものがエントロピーであり、その分布が持つ本来の不確実さを表します。

交差エントロピーは、必ずエントロピー以上になります。等号が成立するのは、予測が実際の分布と完全に一致するときだけです。したがって、交差エントロピーを小さくすることが、予測を良くすることと一致します。

交差エントロピーからエントロピーを引いた差が、KLダイバージェンスです。予測のずれによって生じた余分なコストだけを取り出したものであり、必ず0以上になります。ただし対称ではないため、距離ではありません。

機械学習で交差エントロピーが使われるのは、エントロピーの部分が定数であり、最適化の結果が変わらないうえに、計算が少なくて済むためです。

分類問題では、正解ラベルがOne-Hot表現であるため、正解クラスの予測確率の対数だけが残ります。これは、天気予報の例と別の式ではなく、重みが1と0という極端な形になった場合にすぎません。

この形は、正解に近いときは変化が緩やかで、大きく外したときは急激に大きくなるという性質を持ちます。間違えたときには大いに学習させ、正解に近づいたら慎重に調整する、という挙動が、対数の形によって自動的に実現されています。

次のステップとして、本記事の練習問題のうち、解けなかったものや計算が合わなかったものを、もう一度解き直してみてください。必要な対数の値は冒頭の表に揃えてあります。そのうえで、予測の確率を少しずつ変えながら交差エントロピーがどう動くかを表計算ソフトで試すと、この指標が何を測っているのかが、実感を伴って理解できるようになります。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。