r_nsdのブログ

r_nsdのブログ

勉強したこと・調べたこと・思ったことを残しておくためのブログ

MENU

情報量・エントロピー

情報量,エントロピーなどの単語についてのメモです.

情報とは

  • 物事の内容・事情の報告,事件の様子の知らせ
  • ある意味を持った文字・記号・図形などで,それを受けた人間または機械の動作に影響を与えるもの(旺文社)

「物事についての知らせであり,何かしらの意味を持つもの」が情報と言えます.

データとは

  • さまざまな事実や概念について,計算的な方法で扱われるような形で,正確で明確化された言語や文字・数字で表されたもの ([Knuth, 1968])

「データ=数字」ではなく文字も含みます.また,ただの数字だけで意味がないものは情報・データとは言えないです.

情報量

「明日が火曜日である」という情報が得られたとしても,それは当たり前のことなので,得られる情報量は小さいです.「明日は雨である」という情報を得られたとき,情報量は少し大きく感じます.「明日地球が滅亡する」という情報が得られたときは,とても大きな情報を得たと感じます.このように起こる確率が小さいほど,情報量は大きくなります.これを数式で表します.

確率pでおこる事象xの情報量をI(p)=–\log p(x)で定義します.logの底は2とします.

他には情報量が満たすべき要素として以下のことが考えられ,I(p)はそれを満たします.

  • pに関して単調減少
  • 二つの独立な事象 A と B が「両方」おきたという事象の情報量は,A, Bそれぞれの情報量の和.
    つまり,Aが起こる確率をp,Bが起こる確率をqとすると,I(pq)=I(p)+I(q)
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline 

p = np.linspace(0.01, 1.0, 100)
I = -np.log(p)
plt.plot(p, I)
plt.xlabel("p")
plt.ylabel("I(p)")

f:id:ryonsd:20191212102849p:plain

例えば,

  • サイコロの目が奇数か偶数か,という情報はI(p)=-\log_2 (\frac{1}{2})=1 より,2進数で1bitのメッセージで表すことができます.
  • 1~6のどれか,という情報はI(p)=-\log_2 (\frac{1}{6})\simeq 2.6より,約3bit
  • トランプの52枚のうちどれが出るか,という情報はI(p)=-\log_2 (\frac{1}{52})\simeq 5.71より,約 6bit

となり,確率が小さい事象ほど情報量が大きくなります.

エントロピー(平均情報量)

コインを投げるとき,
表が出る確率:裏が出る確率=\frac{9}{10}:\frac{1}{10}のコインAと,
表が出る確率:裏が出る確率=\frac{1}{2}:\frac{1}{2}のコインBでは,
Bのコインが表裏どっちになるかの情報を得られたときのほうが,大きな情報を得たと感じます.
Aのコインが表になるという情報が得られたとしても,もともと表が出る確率が高いコインので,その情報のありがたみは小さいです.

得られる情報量の大きさは,その事象が予測しにくいときほど大きくなります.
その予測しにくさを表したものがエントロピーであり,情報量の期待値で表します.

確率分布pに従う確率変数Xエントロピーを,次のように定義します.

 H [p(X)] = H [X] = E_p [I(p)] = -\sum p(X) \log p(X)

エントロピーが大きい=平均情報量が大きい=その事象が起こる確率が低い=予測が全くできない,という考え方です.

ある事象が起こる確率がベルヌーイ分布に従うとき(例:コインの表が出る確率がpのとき)のエントロピーはこのグラフのようになります.

p = np.linspace(0.01, 0.99, 100)
H = -p * np.log(p) + (-(1-p)*np.log(1-p))
plt.plot(p, H)
plt.xlabel("p")
plt.ylabel("H")

f:id:ryonsd:20191212110250p:plain

確率p=0.5のとき,どちらが起こるかわからず予測しにくい=エントロピーが高い,となります.

交差エントロピー

p(x), q(x)をそれぞれx\in Xの分布とするときの,二つの確率分布の間に定義される尺度です.

H(p,q)=-\sum_x p(x)\ln q(x)

def cross_entorpy_bernoulli(p, q):
    return -(p*np.log(q)+(1.-p)*np.log(1.-q))

q = np.linspace(0.01,0.99,100)
plt.plot(x, cross_entorpy_bernoulli(p=0.7, q=q))
plt.xlabel("q")
plt.ylabel("H(p, q)")

f:id:ryonsd:20191228211605j:plain

p(x)=q(x)のとき交差エントロピーは最小になります.

相対エントロピー(KLダイバージェンス,KL情報量)

二つの確率分布の差異を表す指標です.(Kullback–Leibler,カルバック・ライブラー)
pのqに対するKLダイバージェンスは,次の式で表されます.

KL[p(x)||q(x)] = \int p(X)\log \frac{p(x)}{q(x)}dx

このとき,任意の確率分布に対してKL[p(X)||q(X) ] \geq 0が成り立ち,等号が成り立つとき二つの分布が完全に一致します.KLダイバージェンスは二つの分布間の距離と言われることもありますが,KL[p(X)||q(X) ] \neq KL[q(X)||p(X) ]であるため,数学的な意味での距離ではないことに注意が必要です.

KLダイバージェンスが大きいほど,二つの分布が異なります.確率分布が異なっていれば、情報量があるとみなすのがKLダイバージェンスの考え方です.

結合エントロピー(同時エントロピー

二つの事象が同時に起こる確率,同時確率P(X,Y)エントロピー結合エントロピーと呼びます.

 H [X,Y] = -\sum_{x,y} P(X,Y) \log P(X,Y)

X,Yが互いに独立な確率変数の場合,P(X,Y)=p(X)q(Y)となるのでH(X,Y)=H(X)+H(Y)が成り立ちます.

条件付きエントロピー

事象Yが生じているという条件下における事象Xのエントロピー条件付きエントロピーと呼び,次の式で表します.

H(X|Y)=\sum_y p(Y=y) H(X|Y=y)

結合エントロピーは,条件付きエントロピーを用いて次のように表すことができます.

H(X,Y)= H(X|Y)+H(Y)

相互情報量

X,Yが互いに独立でない場合は,H(X,Y)=H(X)+H(Y)が成り立たず,その差を相互情報量と呼び,確率変数間の依存度を表します.相互情報量は常に非負の値になります.

I(X; Y) = H(X)+H(Y)-H(X,Y) = H(X)-H(X|Y)

XのエントロピーとYがわかったときのXの条件付きエントロピーの差は,Yを知ることによって減少したXの不確かさ,理解しにくさを意味し,XのYへの依存度を表します.

参考文献

「情報の数学」再入門―目からウロコ
データデータデータデータデータデータって聞き飽きたのでなんとかしたい|松本健太郎|note
The Art of Computer Programming Volume 1 Fundamental Algorithms Third Edition, Donald E.Knuth, Addison-Wesley
エントロピー入門
情報理論の基礎~情報量の定義から相対エントロピー、相互情報量まで~ | Logics of Blue
Transfer entropyを用いた神経回路の解析