LoginSignup
16
4

More than 3 years have passed since last update.

【機械学習】Kullback-Leibler Divergence とは?

Last updated at Posted at 2020-05-10

2つの確率分布を比較するのに使われる、「Kullback-Leibler Divergence (カルバック・ライブラー情報量) 」について勉強してみました。

あるクラスの生徒の身長データを例とします。
下の図で、青い棒グラフが計測された生徒の身長の分布、オレンジのラインが推測モデルをそれぞれ表しているとします。
では、この測定データの分布と推測モデルでどれくらいズレがあるのでしょうか?
このズレ(error)を図るのに、それぞれの情報量の差を計算することができます。ここで Kullback-Leibler Divergence (KL Divergence) が登場します。

download (1).png

情報エントロピー

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) などで損失関数としてモデルの最適化に利用されています。


参照:

16
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
4