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

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/

コメント

このブログの人気の投稿

MAP estimation

Introduction 日本語 ver Today, I will explain MAP estimation(maximum a posteriori estimation). MAP estimation is used Bayes' thorem. If sample data is few, we can not belive value by Maximum likelihood estimation. Then, MAP estimation is enable to include our sense.  Overveiw Bayes' theorem MAP estimation Conjugate distribution Bayes' theorem  Bayes' theorem is $$P(A|B) = \frac{P(B|A)P(A)}{P(B)}$$ $P(A|B)$ is Probability when B occur. Please go on  http://takutori.blogspot.com/2018/04/bayes-theorem.html to know detail of Bayes' theorem. Map estimation Map estimation is used Bayes' theorem. Map estimation estimate parameter of population by maximuzing posterior probability. Now, suppoce we get data $x_1,x_2,...,x_n$ from population which have parameter $\theta$. Then, we want to $P(\theta|x_1,x_2,...,x_n)$. Here, we use Bayes' theorem. $$P(\theta|x_1,x_2,...,x_n) = \frac{P(x_1,x_2,...,x_n | \theta ) P(\theta)}{P(x_1,x_2,...,x_n)}...

MAP推定

Introduction English ver 今日はMAP推定(事後確率最大化法)について書きました。MAP推定ではベイズの定理を使います。データが少ないとき、最尤推定の結果をあまり信用できない話は、最尤推定の時に書きました。この時、MAP推定では自分の事前に持っている情報を取り入れることができます。 概要 ベイズの定理 MAP推定 共役分布 MAP推定の例 ベイズの定理 ベイズの定理は $$P(A|B) = \frac{P(B|A)P(A)}{P(B)}$$ です。 ただし、 $P(A|B)$ はBが起こった時のAの起こる確率です。 詳しくは  http://takutori.blogspot.com/2018/04/bayes-theorem.html  を見てください。 Map推定 MAP推定ではベイズの定理を使います。MAP推定は事後確率が最大になるようなパラメータを選びます。 いま、$x_1,x_2,...,x_n$というデータを$\theta$というパラメータを持つ分布から得られたとする。この時$P(\theta|x_1,x_2,...,x_n)$を求めたい。 ここで、ベイズの定理を使う。 $$P(\theta|x_1,x_2,...,x_n) = \frac{P(x_1,x_2,...,x_n | \theta ) P(\theta)}{P(x_1,x_2,...,x_n)}$$ ここで、$P(\theta)$は$\theta$の事前分布である。 $x_1,x_2,...,x_n$はそれぞれ独立であるので、 $$P(x_1,x_2,...,x_n | \theta ) = \Pi_{i=1}^n P(x_i|\theta)$$. よって、マップ推定は $$\theta^{\star} = \arg \max_{\theta} \frac{\Pi_{i=1}^n P(x_i|\theta) P(\theta)}{P(x_1,x_2,...,x_n)}$$ となる。 $P(x_1,x_2,...,x_n)$という値は$\theta$には依存しない。よって、定数であり、最適化に定数は関係ないので、排除すると、MAP推定は次のようになる。 $$\th...

Implementation of Robbins monro

Robbins monro の実装 sorry, this page is Japanese only.   今回はRobbins monro の実装をしてみました。 Robbins monroは確率勾配降下法の学習率を入りテーション回数の逆数で割っていくものです。 使っているprogram言語はpython 3です。osはwindowsです。(macほしい...) アルゴリズム 確率勾配降下方とは目的関数の最適解を求めるアルゴリズムです。目的関数をf(X)とすると、手順は以下のようになっています。 初期学習率$n_0$を決めます。訓練データDを用意します。この訓練データは複数の初期値の集まりです。 訓練データから一つ初期値をランダムに取り出し、これを$x_0$とし、最初の予測値とします。 次の式に現在の予測値$x_0$を代入し、新たな予測値$x_{n+1}$を得ます。$$x_{n+1} = x_{n} - \frac{n_0}{n} grad f(X_n)$$ 収束して入れば4へ、収束していなければ2で得られた値$x{n+1}$を新たに$x_n$としてもう一度2を行う。 訓練データを一周していなければ2へ、一周していれば各初期値から得られた解の中から目的関数を最も小さくするものを選ぶ。   実装例 以下の目的関数を最小化させてみましょう。 $$f(x,y) = (x-2)^2 + (y-3)^2 $$ コマンドラインでpythonを実行していきます。 予想通り、(2,3)という解を導き出してくれました。目的関数が簡単だったので、初期値をどの値でとってもばっちり正解にたどり着いてくれました。 CODE 以下にRobbins monroの関数だけ置いておきます。 こちら にすべてのコードを載せています。 def Robbins_monro(function,grad,number_variable_gradient): init_learning_rate = 1.5 stepsize = 1000 init_value = np.array([range(-1000,1020,20) for i in range(number_v...