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

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/

コメント

このブログの人気の投稿

Bayes' theorem

Introduction sorry, this page is Japanese only.   今回はベイズの定理について書こうと思います。 ベイズの定理とは、イギリスのトーマス・ベイズによって発見された、条件付き確率に関する定理です。現在のベイズ推定で用いられる重要な定理です。どのような定理かを解説していこうと思います。 ベイズの定理 ベイズの定理とは 確率P(B|A):事象Aが起こった後での事象Bの確率(事後確率) 確率P(B):事象Aが起こる前の事象Bの確率(事前確率) とするとき以下が成り立つことを示しています。 $$P(B|A) = \frac{P(A|B) P(B)}{P(A)}$$ 例 例えば、次のように事象A、事象Bwo定義します。 事象A:あるYoutuberが動画を投稿したとき、再生回数が100万回を超える 事象B:あるYoutuberがお金を50万円以上使う動画を投稿する この時確率P(A|B)、つまり50万円以上を使った動画が再生回数100万回を超える確率は、youtube内の50万円以上使っている動画を根こそぎ集め、その再生回数を得ることによって推定できそうです。では確率P(A|B)がわかった時、確率P(B|A)もわかる。これがベイズの定理の強みです。(当然確率P(A)とP(B)がわかっている必要はあります。) 確率P(B|A)とはあるYoutuberの動画が再生回数100万回を超えたとき、その同がで50万円以上使っている確率となります。これがわかれば、100万回動画が再生される原因は本当に50万円以上お金を使うことなのかがわかります。 確率P(A|B)が低い時を考えてみましょう。 つまり、50万円以上使った動画は再生回数100万回を超える確率は高い。しかし、100万回再生回数を突破したとき、その動画が50万円以上使っている可能性は低い。この状況はベイズの定理の式を考えいると理解しやすいです。 ベイズの定理の式を見てみると、P(B|A)は低く、P(A|B)が高いということは、確率P(A)が著しく高い。もしくは、P(B)が著しく低い。この二つがあげられます。 つまり、あるYouruberが100万回再生を突破する確率がかなり、高い。もしくは、あるYoutuber...

カーネルK-means 理論編

Introduction English ver 今日は、カーネルK-meansの理論について書きます。カーネルK-meansは通常のK-meansの欠点を補うことができます。通常のK-meansの欠点とカーネルK-meansの強みも説明します。もし、まだ御覧になられていなければ、通常の K-means 理論編 の記事を見ていただけるとよいのではないかと思います。 カーネルK-meansの実装編 も併せてご覧ください。 概要 K-meansの弱点 カーネルトリック カーネルK-means アルゴリズム K-meansの弱点 例えば、次のようなデータを用意します。 このデータはK-meansによってうまく分類することはできません。なぜなら通常のK-meansでは、データとプロトタイプのユークリッド距離に依存しているからです。そのため、このような円状に分布しているデータはうまく分類することができません。 プロトタイプとはそれぞれのクラスにあり、そのクラスを代表するようなもののことです。K-meansでは各クラスの平均ベクトルとなります。それゆえ、以下のような分類になってしまいます。 このようなデータではK-meansはうまくいきません。 K-meansで分類できるデータセットは次のように各クラスで固まっている必要があります。 カーネルK-meansはK-meansの弱点を補います。 カーネルトリック 初めに、カーネルトリックを説明します。 線形分離できないようなデータ$X$を例えば次のように線形分離できるように$\phi(x)$に送る写像$\phi$を考えます。 カーネルは次のように定義されます。 $$K(x,y) = \phi(x)^T \phi(y)$$ $\phi$を具体的に計算することは難しいですが、$K(x,y)$を計算することなら簡単です。 この手法をカーネルトリックと呼ばれます。 カーネルK means K-meansの目的関数を復習しておきます。 $$J = \sum_{n=1}^{N} \sum_{k=1}^{K} r_{nk} ||x_n-\mu_k||^2$$ ここで、 プロトタイプは$\mu_i ~\forall k \in K$としま...

dijkstra method

Introduction 日本語 ver Today, I will write about the dijkstra method. This method is algorithm which find the shortest distance. The map is expressed by graph. If you never see  this page , look at its page. This page explain the heap structure and definition of graph. The dijkstra method used heap structure, Because heap structure reduce the amout of calculation of dijkstra method. I use  this slide  to explain dijkstra. Overview Algorithm Implementation Algorithm This algorithm is  Decide start node, and this node named A. Allocate $d=\infty$ for each node, but d=0 for start node. Adjacent node of A named adj_list.  For adj in adj_list:  If d of adj > d of A + weight to adj -> d = A + weight to adj. Remove A from graph network. Find node which have the smallest d and it named A, and if network have node, back to 4. I explain this algorithm by drawing.  I explain algorithm by using this graph.  Fis...