スキップしてメイン コンテンツに移動

Entropy


Introduction
sorry, this page is Japanese only. 

今日はエントロピーについて書こうと思います。これは確率論や統計学で死ぬほど大事なKLダイバージェンスといものを理解するために必要な知識です。
この記事ではエントロピーについてしか書きませんが、今度KLダイバージェンスについても書こうと思います。

KLダイバージェンスの記事はこちら



Entropy
直観的な話
ある事象、「例えば明日大学の講義にX分遅刻する」という事象を考えます。
この事象に対する確率がP(X)が与えられているとしましょう。P(1)は一分遅刻する確率です。この時確率分布P(X)が持つ情報量はどれだけのものかとうことを考えたいとします。

明日の講義はテストを受けるとします。そのテストを受けないと単位を落としてしまします。しかし、テスト前日はすごく寝不足としましょう。遅刻する確率が99パーセントとわかった時、ほとんどどうあがいても遅刻するのであれば単位を落とすのはほぼ確実といえます。

よって前日に徹夜で勉強するよりも、睡眠不足を解消するために寝る方がよっぽど効率的であることがわかります。しかし、遅刻をする確率が50パーセントとわかった時、前日にテスト勉強をすればよいのか、せずに睡眠をとればよいのかわかりません。このように、確率が偏っているほど何が起こるか予測しやすく、対策を立てやすいのです。遅刻する確率が99パーセントとわかる時は遅刻する確率が50パーセントとわかった時に比べて圧倒的に多いはずです。

確率P(X)に対してこの情報量のことをP(X)の自己エントロピーといいます。

そして、自己エントロピーの期待値のことを平均エントロピーといいます。



立式
性質
ではこの情報量を数式で表していきましょう。まず自己エントロピーには大事な性質が二つあります。それが

  • 互いに独立な確率変数の自己エントロピーはそれぞれの情報量の和で表される。
  • 自己エントロピーは減少関数である。

の二つです。

自己エントロピーの加法性
互いに独立な確率変数の情報慮はそれぞれの情報量の和でなければいけません。例えば「明日の講義がY分早く終わる」という事象を考えます。この確率変数Yはあなたが何分講義に遅刻しようが講義が何分早く終わるなんてことには関係ないわけです。よって確率変数XとYは独立なわけです。ではもし「明日お前は30分遅刻し、講義は30分早く終わる」と未来の自分に教えてもらったとします・この時「明日自分は30分遅刻する」という事実と「明日の講義は30分早く終わる」という事実の二つの事実を知ったとして、それぞれの自己エントロピーの足し算と考えるのが自然なわけです。

つまり、互いに独立な確率変数の同時に起こる確率変数の同時におこる確率はそれぞれの確率の積であるのでP(X)P(Y)、情報量の関数をH()とするとき

$$H(P(X)P(Y)) = H(P(X)) + H(P(Y))$$

を満たしてほしいということになるわけです。このような関数は高校二年生で習いますね。

ずばり対数関数です。

自己エントロピーは減少関数
自己エントロピーは上記の「直観的な話」の中でその事象が起こる確率が高ければ自己エントロピーは低く、確率が低ければ自己エントロピーは高いという話をしました。



自己エントロピーの式
一つ目の性質を満たす関数といえば、対数関数でした。しかし、対数関数は単調増加関数(ずっと増えてる関数)です。そこで対数関数を-1倍することで減少関数をし、二つ目の性質を満たすわけです。よって自己エントロピーの関数は確率P(X)に対して

$$-log(P(X))$$

と定義されます。

平均エントロピーの式
平均エントロピーは自己エントロピーの期待値であったので

$$\int -P(X)log(P(X))dx$$
また、確率変数が離散(連続値でない)であれば

$$\sum -P(X)log(P(X))$$
となります。



平均エントロピーについての直観
平均エントロピーとは自己エントロピーの期待値でした。
ではこれは直観的にどのようなことを示しているのでしょうか。結論からゆうと平均エントロピーとはその分布の不確実性の大きさを示しています。次の二つの確率分布について考え、そのことを確かめてみましょう。

  • デルタ分布
  • 一様分布

デルタ分布の平均エントロピー
デルタ分布とはある確率変数で必ず確率1となり、それ以外の確率変数の確率は0となる確率分布のことです。
では[0,1]の値の中で100パーセントの確率で0.5の値をとるデルタ分布のエントロピーを求めてみましょう。

この時の平均エントロピーは区間は$[0.5-\delta,0.5+\delta]$とし、この時$\delta \rightarrow 0$ とすることで$\frac{1}{2 \delta } log \frac{1}{2 \delta} $を積分し、求めます。

なぜ、このような式になるかというと[0.1]は連続な区間であり、デルタ分布(今回の)は0.5で1をとるので、積分するには底辺が区間$0.5-\delta,0.5+\delta]$高さ1の長方形を考え、上記のようにして長方形の横幅を狭めていくことで積分をします。計算は次のようになります。


$$lim_{\delta \rightarrow 0} - \int_{0.5-\delta}^{0/5+\delta} \frac{1}{2 \delta} log \frac{1}{2 \delta} = lim_{\delta \rightarrow 0} [- \frac{1}{2 \delta} log \frac{1}{2 \delta}]_{0.5-delta}^{0.5+\delta} = lim_{\delta \rightarrow 0} -\frac{1}{2 \delta} log \frac{1}{2 \delta} \times 2 \delta = lim_{\delta \rightarrow 0} -log \frac{1}{2 \delta} = - \infty$$


よってデルタ分布ではエントロピーは$-\infty$となりました。エントロピーを不確実性と考えるとデルタ分布では100パーセント何が起こるかわかっているという直観と一致するわけです。

エントロピーの最大化と一様分布
上記でデルタ分布はエントロピーを最小化させる分布であることがわかりました。次にエントロピーを最大化するような分布は一様分布であることを示しましょう。

一様分布とは区間[a,b]に対してどの確率変数も$P(X) = \frac{1}{b-a}$となる確率分布です。
ではエントロピーの最大化をします。ここで1,2,3,,,,nのどれかをとる確率を$P = [p_1,p_2,,,,p_n]$と表すことができ、この離散確率分布のエントロピーを最大化させることを考えます。これにはラグランジュの未定乗数法という知識が必要になります。

$\sum_{i=1}^{n} p_i = 1$の条件の下で$H = - \sum_{x \in X} p_i log p_i$を最大化させます。
ラグランジュの未定乗数法を用いて$L(p,\lambda)=H+\lambda(\sum p_i - 1) \frac{\partial L}{\partial p_i} = 0$
より
$-log p_i -1 + \lambda = 0 log p_i = \lambda-1$
より
$p_i = exp(lambda-1)$ 、これを条件式に代入すると
$n exp(\lambda-1) = \lambda - 1 = log \frac{1}{n} = -logn$
これを先ほどの式代入して
$p_i = exp(-log n ) = \frac{1}{n}$ というふうに求まります。
これはつまり、$P = [p_1,p_2,,,,p_n]$ という確率分布を示し、これは、まさに一様分布を示しています。つまり、エントロピーが最大になるのは一様分布であることがわかりました。一様分布はどの確率変数に対しても$\frac{1}{b-a}$ 、今回でいえば$\frac{1}{n}$をとるので何が一番起こりやすいのかわからないことを踏まえると平均エントロピーを最大化させる分布は一様分布であったので、平均エントロピーとは分布の不確実性の高さを表すということがわかります。

_________________________________________________________________
終わりに
この辺でエントロピーの話は終わろうと思います。エントロピーはKLダイバージェンスのために書いたようなものなのでKLダイバージェンスのほうもご覧いただけると幸いです。


KLダイバージェンスの記事はこちら

___________________________________________Reference

http://s0sem0y.hatenablog.com/entry/2016/04/20/194040
http://s0sem0y.hatenablog.com/entry/2016/04/21/132645
https://ja.wikipedia.org/wiki/カルバック・ライブラー情報量
https://ja.wikipedia.org/wiki/情報量
https://qiita.com/tibigame/items/aebbac176d9bbdaf3d15
https://hinaser.github.io/Machine-Learning/math-for-ml.html
http://www7a.biglobe.ne.jp/~watmas/masaru-rep/info-normal.html
https://bi.biopapyrus.jp/seq/entropy.html) (https://lp-tech.net/articles/Lc0Jw
http://minami106.web.fc2.com/code/4.pdf
http://ossyaritoori.hatenablog.com/entry/2016/11/02/150335
https://lp-tech.net/articles/9pF3Z) (https://logics-of-blue.com/information-theory-basic/

コメント

このブログの人気の投稿

グラフ理論

Introduction sorry, this page is Japanese only. いよいよ私も三回生になり、グラフ理論の授業が始まりました。ということで、グラフ理論の基本的な定義を書いていこうと思います。 最後に説明する隣接行列については実装を行いましたので、以下の記事もよろしければご覧ください。 隣接行列の実装 グラフのイメージ グラフ理論のグラフとは高校数学で習う二次関数などとは違います。 例えば駅などを創造してください。各駅間に線路が通っていますね。このような、駅、線路の集まりのことをグラフといいます。次の絵で確認してもらえるとイメージしやすいかと思います。 このようなものをグラフといいます。グラフは二点間がどうつながっているかだけを保存し、実際の距離や位置関係は保存しません。 このような向きのない(各駅を行き来でき、一方通行ではない)グラフを無向グラフをいいます。反対に向きのある(一方通行しかできない)グラフを有向グラフといいます。 グラフの定義 グラフではある空でない集合E,Vを考えます。Eの要素をedge(辺)、Vの要素をvertex(頂点)といいます。 ここで以下のような写像を考えます。 $$g:E \rightarrow V \times V$$ この時(E,V,g)で定義される空でない空間のことをグラフといいます。 写像で捉えるグラフ 写像gというのは、Eの要素、つまり辺を対応する(始点、終点)というV×Vの集合の要素に送ります。gは写像ですので、写像の定義より、Eのどの要素の始点と終点が対応していることになります。つまり、辺がどこにもつながっていないということはあり得ません。反対にすべてのV×Vの要素がEの要素のどれかに対応しているのであればgは全射になります。 隣接行列 隣接行列とはどのvertexと、どのvertexがつながっているかを行列で表します。例を見るのが理解するのには早いと思うので、例を挙げて説明します。 上のグラフのイメージで出てきたグラフの例を考えましょう。隣接行列は以下のようになります。 $$ \[  adj = \left( \begin{array}{cccccc} 0 &

MySQLでLIMITとユーザー変数を使う

問題 English ver 次のようなクエ リーをプロシージャーの中で使いたかった。 SET @user_variable = FLOOR(RAND()*10); INSERT INTO  Table_name (columns_name) VALUES (1) FROM Table_name ORDER BY RAND() LIMIT 1 OFFSET @user_variable; これはランダムに行を入れ替えたテーブルの上から@user_variable番目の行のcolumns_nameに1を入れることをしたかった。しかし、うまくいかなかった。その原因はLIMITやOFFSETは後ろにユーザー変数を持ってこれないことにあった。 解決法 次のようにするとうまくいく。 SET @user_variable = FLOOR(RAND()*10); PREPARE SET_STMT FROM 'INSERT INTO  Table_name (columns_name) VALUES (1) FROM Table_name ORDER BY RAND() LIMIT 1 OFFSET ?;';  EXECUTE SET_STMT USING @user_variable; 結論、やりたい操作を''で囲って上のようなことを書けばLIMITでもOFFSETでもうまくいく。 Reference http://techtipshoge.blogspot.com/2011/10/limit.html