2つの確率分布を比較するのに使われる、「Kullback-Leibler Divergence (カルバック・ライブラー情報量) 」について勉強してみました。
あるクラスの生徒の身長データを例とします。
下の図で、青い棒グラフが計測された生徒の身長の分布、オレンジのラインが推測モデルをそれぞれ表しているとします。
では、この測定データの分布と推測モデルでどれくらいズレがあるのでしょうか?
このズレ(error)を図るのに、それぞれの情報量の差を計算することができます。ここで Kullback-Leibler Divergence (KL Divergence) が登場します。
情報エントロピー
KL divergence を計算するためには Entropy (エントロピー) の概念を知る必要があるので、軽くおさらいします。
情報エントロピーは以下の式で定義されます。
H=-\sum_{i=1}^{N} p\left(x_{i}\right) \cdot \log p\left(x_{i}\right)
=\sum_{i=1}^{N} p\left(x_{i}\right) \cdot \log 1/p\left(x_{i}\right)
p(x) をある事象が起こる確率とした時、1/p(x) はその事象が起きた時に得られる情報量を表します。例えば、ある生徒の身長は 150cm、160cm、170cmのいずれかであり、それぞれ確率が 1/2, 1/4, 1/4 だとします。この時、その生徒の身長が150cmであるとわかった時に得られる情報量は 1/(1/2) = 2となります。160cmであるとわかった時は、1/(1/4) = 4となります。このように、起こる確率が低い事象ほど、得られる情報量が大きくなります。エントロピーではこの情報量のlog2をとることで、その情報を表すために何ビット必要か という形に置き換えます。これを全ての事象に対する平均、つまり期待値をとったのが情報エントロピーになります。
エントロピーの損失
KL divergence では 観測データの分布 p(x)のエントロピーから と推定モデル q(x) のエントロピーを引くことで、どれくらい情報が失われたか を計算します。
D_{K L}(p \| q)=\sum_{i=1}^{N} p\left(x_{i}\right) \cdot\left(\log p\left(x_{i}\right)-\log q\left(x_{i}\right)\right)
=\sum_{i=1}^{N} p\left(x_{i}\right) \cdot \log \frac{p\left(x_{i}\right)}{q\left(x_{i}\right)}
身長の例を使うと、
D_{K L}(Original \|Estimated ) = 0.3
だった時、推定モデルでは、観測分布よりも 0.3 情報の損失があると言えます。
divergence は距離ではない
divergence は一見距離行列とも考えられそうですが、$D_{K L}(p | q)$ と $D_{K L}(q | p)$ では違う値をとるので、厳密には距離ではありません。
機械学習での応用
KL divergence は Variational Autoencoder (VAE) などで損失関数としてモデルの最適化に利用されています。