Mímisbrunnr知恵の泉

← 情報理論 一覧

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

📎 前提:相互情報量 | 次:通信路容量

要点(BLUF)

1. 通信路の定義:遷移確率

通信路は入力アルファベット X\mathcal X、出力アルファベット Y\mathcal Y、そして 遷移確率 p(yx)p(y\mid x)(行列)で完全に決まります。送り手が入力分布 p(x)p(x) を選ぶと、出力の分布は p(y)=xp(x)p(yx)p(y)=\sum_x p(x)p(y\mid x)。通信路自体は p(yx)p(y\mid x) で固定され、送り手が変えられるのは入力分布だけ、という非対称な構図です。

2元対称通信路(BSC) は反転確率 ff

p(yx)=(1fff1f)p(y\mid x)=\begin{pmatrix} 1-f & f \\ f & 1-f \end{pmatrix}

0 も 1 も対称に確率 ff で反転します。2元消失通信路(BEC) は消失確率 ee で、出力は {0,1,?}\{0,1,?\}。届けば必ず正しく、届かないとき(確率 ee)だけ「?」になり、どちらのビットだったかは分かりません。

graph LR
  x0["入力 0"] -->|"1-f"| y0["出力 0"]
  x0 -->|"f"| y1["出力 1"]
  x1["入力 1"] -->|"f"| y0
  x1 -->|"1-f"| y1

2. 通信路を通した相互情報量

入力分布 p(x)p(x) を与えると、I(X;Y)=H(Y)H(YX)I(X;Y)=H(Y)-H(Y\mid X) で「1回の使用で平均何 bit 伝わるか」が決まります。H(YX)=xp(x)H(p(x))H(Y\mid X)=\sum_x p(x)H(p(\cdot\mid x)) はノイズが持ち込む不確かさ。BSC なら各行のエントロピーは H(f)H(f) なので H(YX)=H(f)H(Y\mid X)=H(f)、よって I(X;Y)=H(Y)H(f)I(X;Y)=H(Y)-H(f)。出力 YY をできるだけ不確かに(一様に)すると II が最大になります。

3. コード:BSC と BEC の相互情報量(底2, bit)

import numpy as np
def H(p):
    p=np.asarray(p,float).ravel(); p=p[p>0]; return -np.sum(p*np.log2(p))
def MI(px, Py_x):
    # px: 入力分布, Py_x[x,y]=p(y|x)
    Pxy = Py_x*px[:,None]
    py = Pxy.sum(0)
    return H(py) - sum(px[x]*H(Py_x[x]) for x in range(len(px)))

# 2元対称通信路 BSC, ビット反転確率 f
f=0.1
BSC=np.array([[1-f,f],[f,1-f]])
print(f"BSC (f={f}):")
for px0 in [0.5,0.3,0.9]:
    px=np.array([px0,1-px0])
    print(f"  入力分布 p(0)={px0}: I(X;Y)={MI(px,BSC):.4f} bit")
print(f"  一様入力での I = 1 - H(f) = {1-H([f,1-f]):.4f} bit (理論)")
print("-"*46)
# 2元消失通信路 BEC, 消失確率 e。出力 {0,1,?}
e=0.2
BEC=np.array([[1-e,0,e],[0,1-e,e]])
for px0 in [0.5,0.3]:
    px=np.array([px0,1-px0])
    print(f"BEC (e={e}) 入力 p(0)={px0}: I(X;Y)={MI(px,BEC):.4f} bit")
print(f"  一様入力での I = 1 - e = {1-e:.4f} bit (理論)")

出力:

BSC (f=0.1):
  入力分布 p(0)=0.5: I(X;Y)=0.5310 bit
  入力分布 p(0)=0.3: I(X;Y)=0.4558 bit
  入力分布 p(0)=0.9: I(X;Y)=0.2111 bit
  一様入力での I = 1 - H(f) = 0.5310 bit (理論)
----------------------------------------------
BEC (e=0.2) 入力 p(0)=0.5: I(X;Y)=0.8000 bit
BEC (e=0.2) 入力 p(0)=0.3: I(X;Y)=0.7050 bit
  一様入力での I = 1 - e = 0.8000 bit (理論)

出力の意味:BSC では一様入力 p(0)=0.5p(0)=0.5 のとき I=0.5310I=0.5310 bit で最大、偏らせる(0.30.30.90.9)と減ります。これは理論値 1H(f)=1H(0.1)=0.53101-H(f)=1-H(0.1)=0.5310 と一致——対称通信路は一様入力が最適。BEC でも一様入力で I=0.8=1eI=0.8=1-e が最大。消失確率 e=0.2e=0.2 なら平均して 8 割のビットが無傷で届くので、容量も 0.80.8 bit という直観どおりです。これらの最大値こそが次のノートの通信路容量です。

4. 数式の直観的意味

通信路を「相互情報量を生み出す装置」と見ると、I(X;Y)I(X;Y) は「1回使うと受信側が送信ビットについて平均何 bit 知れるか」。ノイズ ff が大きいほど H(YX)=H(f)H(Y\mid X)=H(f) が大きく、伝わる情報が削られます。f=0.5f=0.5(完全にランダム反転)なら H(f)=1H(f)=1I=0I=0——出力が入力と無関係になり、通信路は使い物になりません。逆に f=0f=0 なら I=1I=1 bit/使用でロスなし。BEC は「届くか消えるか」がはっきりしている分、扱いやすく、誤り訂正(誤り検出と訂正の基礎)でも基本モデルになります。

⚠️ よくある誤解

対応シミュレーション

関連ノート