情報量からKLダイバージェンスまでのお話

# はじめに
私が最後にこの概念を用いたのが 2 年前であった．(某方角) + 京大学のサマーセミナーに出席した時に，授業の内容理解のために必要な概念だったので，学部時代のテキストを引っ張り出して復習していたのを思い出す．**にもかかわらず，また忘れてしまったので，いい加減備忘録として Qiita に記すことにした．**

# 情報量ってなんだったっけ？
## 情報量とは「ありがたさ」
情報量は情報エントロピーとも呼ばれることがあるが，物理学的~~だったりきゅうべぇ的~~な「エントロピー」を考えない方がいいだろう．それらは「乱雑さ」とか「不規則性」を示す時に使われる指標であった．しかし，情報学においては「どれだけ貴重な情報か？」を表す指標となっている．
すなわち，
```math
\mbox{(貴重な情報)} = \mbox{(発生確率が低い)} = \mbox{(ありがたい)}
```
ということになる．
抽象的にこれを表現すると，ある事象 $E$ が発生する確率が $P(E)$と表現されたとする．この $E$ が発生したと知った時の情報量は，$P(E)$ が大きければ **別にどうってことない情報** なので，**ありがたくない** のである．逆に，$P(E)$ が小さければ **貴重な情報** なので，**ありがたい** のである．
そして何よりも，**必ず情報を得ている時点で損をすることはありえないので，必ず正になるという特徴を持っている．**

## 「ありがたい」けど「ありがたくない」情報
ただ，学部時代の指導教員に教えてもらったことで今も覚えているのだが，その **「ありがたさ」に私情を挟んではいけないのである．** 
例えば，毎朝快便の友人が珍しく腹を壊していたとする．そして彼はいつものように私に報告してくるのである．**「今日はなんかいつもと違って "ファンシー" だった！」** と．
情報エントロピーの概念で考えると，毎朝快便な友人にとって "ファンシー" は低確率で発生する事象なので，これは情報エントロピー的に **「ありがたい」** のである．ただ，本当はそんな報告など受けたくないので「ありがたくない」と思ってしまう人も多いだろう．だが，情報エントロピーには決して **私情を挟んではならない** のである．ただ単に確率だけを考えればいいのである．

# 情報量の計算方法
実はここまで「情報量」と呼び続けていたのだが，具体的に情報量といっても定義によって正式な呼び方が異なる．本章では主に使われるものを紹介する．
あまりにも名前が多すぎてどれを使っていいのかわからなくなるが，混乱を招いてしまうことを覚悟で章題に羅列をしてみた．

## 情報量・自己エントロピー・自己情報量・選択情報量
事象 $E$ に対する情報量 $I(E)$ は以下の式によって計算される．
```math
I(E) = \log \frac{1}{P(E)} = - \log P(E)
```
## 平均情報量・エントロピー・シャノンのエントロピー
実際に確率を計算する場合，おそらくは他の事象の確率がわかっている場合が多いのではないだろうか？サイコロを振る時，赤と青のボールが入った謎の箱から取り出す時，ソシャゲでガチャを引く時 etc...
このとき，施行の結果得られる情報量の平均を知ることで，全体としてのありがたさを知ることができるのである．
平均情報量は以下の式によって計算される．
```math
\begin{align}
H(\Omega) &= \sum^{E}_{\Omega\in E}P(E)\log \frac{1}{P(E)} \\ &= - \sum^{E}_{\Omega\in E}P(E)\log P(E) \\ &= \sum^{E}_{\Omega\in E}P(E) I(E)
\end{align}
```
この式を見てパッと計算できるならすばらしいのだが，この平均情報量が最大になるのは **全ての事象が等確率だった場合** である．事象ごとに確率の偏りが大きくなると小さくなってしまう．

## 交差エントロピー・クロスエントロピー
損失関数の定義の箇所で CrossEntropyLoss を見かけたことがある人も多いのではないだろうか？あれは簡単に言うと **学習の過程で推定した確率分布と教師データに基づく真の確率分布の違いを損失関数として用いている** ということなのである．
交差エントロピーは以下の式によって計算される．
```math
\begin{align}
H(P, Q) &= \sum^{e}_{\Omega\in e}P(e)\log \frac{1}{Q(e)} \\ &= - \sum^{e}_{\Omega\in e}P(e)\log Q(e) \\ &= \sum^{e}_{\Omega\in E}P(e) I_{Q}(e)
\end{align}
```
これも式を見てパッと計算できるなら素晴らしいのだが，P(真) と Q(推定) がどれだけ離れているのかを示している．つまり，二つの確率が同じになればこの値は最小となる．ゆえに，損失関数として用いられることが多いわけですね．

# KLダイバージェンス
この記事を書いた本当の目的は KL ダイバージェンスにオチを持ってきたかったからなんです．許してください．主に画像生成系の研究では評価指標として KL ダイバージェンスを用いることが多いです．でも結局行っていることは，確率分布の遠さ・近さを評価指標にしました，ということなので無茶苦茶なことは言っているわけではないです．
```math
\begin{align}
D_{KL}(P||Q) &= \sum^{e}_{\Omega\in e}P(e)\log \frac{P(e)}{Q(e)} \\ &= \sum^{e}_{\Omega\in e}P(e)(\log P(e)-\log Q(e)) \\ &= \sum^{e}_{\Omega\in E}(P(e) \log P(e)-P(e) \log Q(e)) \\ &= H(P, Q) - H(P)\\ &= H(P, Q) - H(P, P)
\end{align}
```

## どうして 交差エントロピーじゃなく KL ダイバージェンス？
実は KL ダイバージェンスまで辿り着いたら止める気でいたのですが，KL サイバージェンスの最小化は交差エントロピーの最小化でもあると私は感じました．じゃあなぜこんな概念を生み出さなければならなかったのでしょうか？
KL ダイバージェンスの強みは，**確率分布 P から見た時の確率分布 Q の似てる度合いのみに評価注目を置ける** ということだと私は考えています．交差エントロピーそのものでも確かに有用ではありますが，交差エントロピーとの差分をとることで，相対的に予測した確率分布 Q の評価ができると考えて考案されたのではないでしょうか？
それでも依然として交差エントロピーでいいやんっていう気持ちはやはり拭いきれませんが...


# 参考リンク
https://wonderfuru.com/%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AD%E3%83%94%E3%83%BC%E3%81%A8kl%E3%83%80%E3%82%A4%E3%83%90%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%82%B9/#:~:text=%E4%BA%A4%E5%B7%AE%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AD%E3%83%94%E3%83%BC%E3%81%AF%E3%80%81%E4%BA%88%E6%B8%AC%E3%81%AE,%E3%81%84%E3%82%8B%E3%81%8B%E3%82%92%E6%84%8F%E5%91%B3%E3%81%97%E3%81%BE%E3%81%99%E3%80%82

https://dx-consultant-fast-evolving.com/the-meaning-of-kl-divergence/