🎓 レベル:標準 | 重要度:A(必須)
📎 前提:自己情報量とエントロピー | 次:エントロピーの性質と最大エントロピー
要点(BLUF)
- 結合エントロピー はペア 全体の不確かさ、条件付きエントロピー は「 を知った後に残る の不確かさ」。
- 連鎖則 :全体の不確かさは「 の分+ を知った後の の分」に分解できます。
- 条件づけは平均で不確かさを増やさない:。減った分が依存の情報量=相互情報量(相互情報量)。定常過程では1記号あたりの不確かさ=エントロピーレート。
1. 結合エントロピーと条件付きエントロピー
2つの確率変数 を1つの組とみなせば、その不確かさは自己情報量の期待値そのまま:
条件付きエントロピー は、 を知った後の の不確かさ を、 の出現確率で平均したものです:
「 を教えてもらった後、まだ について平均どれだけ驚くか」。 が を完全に決めるなら 、 と が無関係なら です。
2. 連鎖則(chain rule)
の両辺に を取って期待値を取ると、自己情報量の加法性がそのままエントロピーの加法性になります:
全体の不確かさ=最初の変数の不確かさ+それを知った後に残る不確かさ。 変数へ一般化すると
これが連鎖則です。後の相互情報量・データ処理不等式(情報不等式とデータ処理不等式)の証明はすべてこの分解から出ます。
3. コード:連鎖則と「条件づけは不確かさを下げる」(底2, bit)
天気 (晴/雨)と傘 (なし/あり)の同時分布で、 を検算し、 を確かめます。
import numpy as np
# 同時分布 p(x,y)(2x2の例。X=天気, Y=傘)
P = np.array([[0.40, 0.10], # X=0(晴): Y=0(傘なし)=0.40, Y=1(傘あり)=0.10
[0.05, 0.45]]) # X=1(雨): Y=0=0.05, Y=1=0.45
assert np.isclose(P.sum(), 1.0)
def H(p):
p = np.asarray(p, dtype=float).ravel()
p = p[p > 0]
return -np.sum(p*np.log2(p)) # 底2(bit)
px = P.sum(axis=1) # 周辺 p(x)
py = P.sum(axis=0) # 周辺 p(y)
Hx = H(px)
Hy = H(py)
Hxy = H(P) # 結合エントロピー H(X,Y)
Hy_given_x = Hxy - Hx # 連鎖則 H(Y|X)=H(X,Y)-H(X)
Hx_given_y = Hxy - Hy
print(f"H(X) = {Hx:.4f} bit")
print(f"H(Y) = {Hy:.4f} bit")
print(f"H(X,Y) = {Hxy:.4f} bit")
print(f"H(Y|X) = {Hy_given_x:.4f} bit (= H(X,Y)-H(X))")
print(f"H(X|Y) = {Hx_given_y:.4f} bit")
print("-"*46)
# 連鎖則の検算: H(X,Y) = H(X) + H(Y|X) = H(Y) + H(X|Y)
print(f"H(X)+H(Y|X) = {Hx+Hy_given_x:.4f} bit (=H(X,Y)?)")
print(f"H(Y)+H(X|Y) = {Hy+Hx_given_y:.4f} bit (=H(X,Y)?)")
print("-"*46)
# 条件づけは平均でエントロピーを下げる: H(Y|X) <= H(Y)
print(f"H(Y|X)={Hy_given_x:.4f} <= H(Y)={Hy:.4f} : {Hy_given_x <= Hy}")
print(f"独立なら H(X)+H(Y)={Hx+Hy:.4f}, 実際の H(X,Y)={Hxy:.4f}, 差={Hx+Hy-Hxy:.4f}")
出力:
H(X) = 1.0000 bit
H(Y) = 0.9928 bit
H(X,Y) = 1.5955 bit
H(Y|X) = 0.5955 bit (= H(X,Y)-H(X))
H(X|Y) = 0.6027 bit
----------------------------------------------
H(X)+H(Y|X) = 1.5955 bit (=H(X,Y)?)
H(Y)+H(X|Y) = 1.5955 bit (=H(X,Y)?)
----------------------------------------------
H(Y|X)=0.5955 <= H(Y)=0.9928 : True
独立なら H(X)+H(Y)=1.9928, 実際の H(X,Y)=1.5955, 差=0.3973
出力の意味:連鎖則は両方向で bit にぴたり一致——分解はどちらの変数から始めても同じ全体に戻ります。傘を知らないときの天気の不確かさ bit が、傘を見た後は bit に減っています。観測は平均で不確かさを下げる。下がった分 bit がまさに の依存の強さ=相互情報量で、独立なら になるはずの差そのものです(相互情報量)。
4. エントロピーレート:記憶のある情報源の1記号あたりの不確かさ
文章や時系列のように記号が独立でない情報源では、1記号あたりの不確かさを エントロピーレート で測ります:
定常マルコフ連鎖なら、これは定常分布 で重みづけた1ステップ先の条件付きエントロピーに等しくなります()。記憶があると、次の記号は前から部分的に予測できるぶん、エントロピーレートは記憶を無視した周辺エントロピー より小さくなります。
import numpy as np
def H(p):
p = np.asarray(p, dtype=float); p = p[p > 0]
return -np.sum(p*np.log2(p)) # bit
# 2状態マルコフ連鎖の遷移行列 T[i,j]=P(次=j | 今=i)
T = np.array([[0.9, 0.1],
[0.4, 0.6]])
# 定常分布 π(πT=π)を固有ベクトルから求める
w, v = np.linalg.eig(T.T)
pi = np.real(v[:, np.argmin(np.abs(w-1))]); pi = pi/pi.sum()
print(f"定常分布 pi = {pi.round(4)}")
# エントロピーレート H = Σ_i pi_i H(行 T[i])
rate = sum(pi[i]*H(T[i]) for i in range(2))
print(f"エントロピーレート H(X) = {rate:.4f} bit/記号")
print(f"周辺エントロピー H(X_t) = {H(pi):.4f} bit (記憶を使わない上限)")
# シミュレーションで検算:長い系列の (1/n) * (-log2 p(系列))
rng = np.random.default_rng(7)
n = 200_000
s = np.zeros(n, dtype=int); s[0] = 0
for t in range(1, n):
s[t] = rng.choice(2, p=T[s[t-1]])
logp = np.log2(pi[s[0]]) + np.sum(np.log2(T[s[:-1], s[1:]]))
print(f"シミュレーション (1/n)(-log2 p) = {-logp/n:.4f} bit/記号")
出力:
定常分布 pi = [0.8 0.2]
エントロピーレート H(X) = 0.5694 bit/記号
周辺エントロピー H(X_t) = 0.7219 bit (記憶を使わない上限)
シミュレーション (1/n)(-log2 p) = 0.5669 bit/記号
出力の意味:記憶を使うとエントロピーレートは bit/記号、記憶を無視した周辺エントロピー bit より明らかに小さい——過去が次を予測する手がかりになる分、不確かさは下がる。20万記号のシミュレーションで がレートに収束しており、これは次節 AEP(漸近等分割性とAEP)の「長い系列の確率は に集中する」の記憶あり版です。英語の文章のエントロピーレートが約 1 bit/文字とされるのも、文字に強い依存があるからです。
5. 数式の直観的意味
連鎖則は「不確かさは順番に分割払いできる」ことを言っています。 を知り、次に を踏まえて を知り…と積み上げると、各ステップの「まだ残っている不確かさ」の和が全体に一致する。この分解可能性こそが、相互情報量・KL・符号化定理の議論をベン図のように足し引きできる理由です( の関係は 相互情報量 で図示)。
⚠️ よくある誤解
- 「 が個々の で成り立つ」ではない:不等式 は平均の話。特定の を知ると一時的に不確かさが増えることはあります(平均すれば必ず減る)。
- 「」ではない:一般に非対称。等しいのは のときだけ。
- 「条件付きエントロピーは引き算で負になりうる」ではない:離散では 。負に見えるのは連続の微分エントロピー(微分エントロピー)の話。
- 「エントロピーレート=周辺エントロピー」ではない:独立系列なら一致しますが、記憶があるとレートの方が小さくなります。
対応シミュレーション
- 本文のコードで連鎖則の一致とエントロピーレートへの収束を実証済み。
関連ノート
- 自己情報量とエントロピー(前提・1変数のエントロピー)
- エントロピーの性質と最大エントロピー(次のトピック・凸性と最大化)
- 漸近等分割性とAEP(系列の確率が に集中する)
- 相互情報量( が依存の情報量)
- 第1章 情報量とエントロピー 目次
- 情報理論 全体目次