Mímisbrunnr知恵の泉

← 情報理論 一覧

🎓 レベル:標準 | 重要度:A(必須)

📎 前提:結合・条件付きエントロピーと連鎖則 | 次:KLダイバージェンス

要点(BLUF)

1. 定義:不確かさの減り分

XX を観測すると、YY の不確かさは H(Y)H(Y) から H(YX)H(Y\mid X) に減ります。その減り分が相互情報量:

I(X;Y)=H(Y)H(YX)=H(X)H(XY)I(X;Y) = H(Y) - H(Y\mid X) = H(X) - H(X\mid Y)

連鎖則 H(X,Y)=H(X)+H(YX)H(X,Y)=H(X)+H(Y\mid X) を代入すると、対称な形になります:

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

「それぞれ単独の不確かさの和」と「組にしたときの不確かさ」の差。重なり(共有している情報)の分だけ、和の方が大きい。ベン図で H(X)H(X)H(Y)H(Y) の2円を描くと、I(X;Y)I(X;Y)重なりH(XY)H(X\mid Y)H(YX)H(Y\mid X) は各円のはみ出し、H(X,Y)H(X,Y) は和集合に対応します。

2. KL としての相互情報量

相互情報量は「同時分布 p(x,y)p(x,y)」が「独立だったと仮定した分布 p(x)p(y)p(x)p(y)」からどれだけ離れているか(KLダイバージェンス)に等しい:

I(X;Y)=x,yp(x,y)logp(x,y)p(x)p(y)=D(p(x,y)p(x)p(y))I(X;Y) = \sum_{x,y} p(x,y)\log \frac{p(x,y)}{p(x)\,p(y)} = D\big(p(x,y)\,\|\,p(x)p(y)\big)

KL は非負なので I0I\ge 0 が即座に従い、等号は p(x,y)=p(x)p(y)p(x,y)=p(x)p(y)独立)のとき。「依存があるほど、独立モデルからの隔たりが大きい」という見方です。

3. コード:3つの等価な定義と独立性(底2, bit)

天気 XX・傘 YY の同時分布(結合・条件付きエントロピーと連鎖則 と同じ)で、3通りの計算が一致することと、独立分布では I=0I=0 を確かめます。

import numpy as np
def H(p):
    p=np.asarray(p,float).ravel(); p=p[p>0]; return -np.sum(p*np.log2(p))

P = np.array([[0.40,0.10],[0.05,0.45]])  # p(x,y)
px=P.sum(1); py=P.sum(0)
Hx,Hy,Hxy=H(px),H(py),H(P)
I1 = Hx+Hy-Hxy                 # I=H(X)+H(Y)-H(X,Y)
I2 = Hy-(Hxy-Hx)               # I=H(Y)-H(Y|X)
outer = np.outer(px,py)
I3 = np.sum(P*np.log2(P/outer))  # I = KL(p(x,y) || p(x)p(y))
print(f"I(X;Y)=H(X)+H(Y)-H(X,Y) = {I1:.4f} bit")
print(f"I(X;Y)=H(Y)-H(Y|X)      = {I2:.4f} bit")
print(f"I(X;Y)=KL(p(x,y)||p(x)p(y)) = {I3:.4f} bit")
print(f"I>=0 : {I1>=0}")
# 独立なら I=0
Pind = np.outer(px,py)
print(f"独立分布での I = {np.sum(Pind*np.log2(Pind/np.outer(Pind.sum(1),Pind.sum(0)))):.4f} bit")

出力:

I(X;Y)=H(X)+H(Y)-H(X,Y) = 0.3973 bit
I(X;Y)=H(Y)-H(Y|X)      = 0.3973 bit
I(X;Y)=KL(p(x,y)||p(x)p(y)) = 0.3973 bit
I>=0 : True
独立分布での I = 0.0000 bit

出力の意味:3つの定義はすべて 0.39730.3973 bit で一致——どの顔から見ても同じ「依存の情報量」です。これは 結合・条件付きエントロピーと連鎖則 で見た「傘を知ると天気の不確かさが 1.00.60271.0\to0.6027 bit に減った」差そのもの。そして周辺の積(独立を仮定した分布)で計算すると I=0I=0相互情報量がゼロ ⇔ 独立を数値で確認できました。傘を見れば天気が約 0.4 bit 分わかる、というわけです。

4. 条件付き相互情報量と連鎖則

3変数以上では 条件付き相互情報量 I(X;YZ)=H(XZ)H(XY,Z)I(X;Y\mid Z)=H(X\mid Z)-H(X\mid Y,Z) が使えます。相互情報量にも連鎖則があり、

I(X1,X2;Y)=I(X1;Y)+I(X2;YX1)I(X_1,X_2;Y) = I(X_1;Y) + I(X_2;Y\mid X_1)

と分解できます。これはデータ処理不等式(情報不等式とデータ処理不等式)や通信路符号化定理(シャノンの通信路符号化定理)の証明で使う基本道具です。注意:条件づけは相互情報量を増やすことも減らすこともある(エントロピーと違い、I(X;YZ)I(X;Y\mid Z)I(X;Y)I(X;Y) より大きくなりうる=「説明し合い」の現象)。

5. 数式の直観的意味

相互情報量は「片方を測定して得られる、もう片方についての平均情報量」。センサー YY で対象 XX を推定する場面なら、I(X;Y)I(X;Y) は「このセンサーが対象について教えてくれる bit 数」の上限です。これがそのまま通信路の性能指標になり、入力分布で最大化したものが通信路容量通信路容量)。機械学習の特徴選択(特徴選択と情報利得)でも、特徴とラベルの相互情報量=情報利得として再登場します。

⚠️ よくある誤解

対応シミュレーション

関連ノート