Mímisbrunnr知恵の泉

← 情報理論 一覧

🎓 レベル:発展 | 重要度:A(必須)

📎 前提:離散無記憶通信路相互情報量 | 次:シャノンの通信路符号化定理

要点(BLUF)

C=maxp(x)I(X;Y)C = \max_{p(x)} I(X;Y)

1. 定義:入力分布で最大化

相互情報量 I(X;Y)I(X;Y) は入力分布 p(x)p(x) にも依存しました(離散無記憶通信路)。通信路の「最大伝送能力」を測るには、送り手が最善の入力分布を選んだときの値を見ます:

C=maxp(x)I(X;Y)[bit/通信路使用]C = \max_{p(x)} I(X;Y) \quad [\text{bit/通信路使用}]

I(X;Y)I(X;Y)p(yx)p(y\mid x) を固定すると p(x)p(x) について凹エントロピーの性質と最大エントロピー の凹性に由来)。凹関数を確率単体上で最大化するので、解は一意で、ラグランジュの条件(KKT)で特徴づけられます。容量は通信路だけで決まる固有の定数で、これが通信の限界(シャノンの通信路符号化定理)を与えます。

2. 代表的な通信路の容量

BSC(反転確率 ffH(YX)=H(f)H(Y\mid X)=H(f) は入力に依らず一定。I=H(Y)H(f)I=H(Y)-H(f) を最大化するには H(Y)H(Y) を最大(出力一様、H(Y)=1H(Y)=1)にすればよく、それは一様入力で実現。よって

CBSC=1H(f)C_{\text{BSC}} = 1 - H(f)

f=0f=0 なら C=1C=1f=0.5f=0.5 なら C=0C=0(無用)、f=0.1f=0.1 なら C0.531C\approx0.531 bit。

BEC(消失確率 ee:平均して割合 ee のビットが失われ、残り 1e1-e は無傷で届くので

CBEC=1eC_{\text{BEC}} = 1 - e

直観どおり「届いたビットだけが情報」。どちらも一様入力で達成されます。

3. コード:入力分布の最大化で容量を求める(底2, bit)

入力分布を細かく振って I(X;Y)I(X;Y) を最大化し、対称通信路 BSC では一様入力が最適、非対称な Z通信路では最適入力が一様でないことを確かめます。

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):
    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)))

# BSC: 入力分布を総当たりで最大化
f=0.1
BSC=np.array([[1-f,f],[f,1-f]])
grid=np.linspace(0,1,2001)
vals=[MI(np.array([a,1-a]),BSC) for a in grid]
imax=int(np.argmax(vals))
print(f"BSC f={f}: 数値最大 C={vals[imax]:.4f} bit, 最適 p(0)={grid[imax]:.3f}")
print(f"  理論 C=1-H(f)={1-H([f,1-f]):.4f} bit (一様入力で達成)")
print("-"*46)
# 非対称通信路(Z通信路):0は必ず正しく、1はqで0に化ける
q=0.3
Z=np.array([[1.0,0.0],[q,1-q]])
vals=[MI(np.array([a,1-a]),Z) for a in grid]
imax=int(np.argmax(vals))
print(f"Z通信路 q={q}: 数値最大 C={vals[imax]:.4f} bit, 最適 p(0)={grid[imax]:.3f}")
print(f"  -> 非対称通信路では最適入力は一様でない(p(0)!=0.5)")

出力:

BSC f=0.1: 数値最大 C=0.5310 bit, 最適 p(0)=0.500
  理論 C=1-H(f)=0.5310 bit (一様入力で達成)
----------------------------------------------
Z通信路 q=0.3: 数値最大 C=0.5037 bit, 最適 p(0)=0.579
  -> 非対称通信路では最適入力は一様でない(p(0)!=0.5)

出力の意味:BSC では総当たりの最大が p(0)=0.500p(0)=0.500 ちょうどで得られ、容量 0.53100.5310 bit が理論式 1H(f)1-H(f) に一致——対称性ゆえ一様入力が最適。一方、Z通信路(0は無傷、1だけが確率 qq で0に化ける非対称通信路)では、最適入力が p(0)=0.579p(0)=0.579 と一様からずれます。化けやすい入力1をやや控えめに使う方が、受信側の区別がつきやすくなるからです。「対称通信路は一様入力」という便利な事実は対称性に依存しており、一般には入力分布の最適化(Blahut-Arimoto アルゴリズム)が必要、というのがこの実験の教訓です。

4. 数式の直観的意味

容量は「この通信路を1回使うと、最善を尽くして平均何 bit 確実に運べるか」の上限です。f=0.1f=0.1 の BSC は容量 0.530.53 bit——1ビット送るのに約2回の使用が要る勘定。重要なのは、容量が符号を作る前から決まる通信路固有の値であること。どんな賢い誤り訂正符号も、容量を超える速度では誤りを0にできません(シャノンの通信路符号化定理)。逆に容量未満なら必ず達成できる符号が存在する。容量は「越えられない壁」と「必ず届く保証」の両方を与える、通信のエントロピーに相当する量です。連続入力のガウス通信路では C=12log2(1+SNR)C=\frac12\log_2(1+\mathrm{SNR})ガウス通信路と容量)に化けます。

⚠️ よくある誤解

対応シミュレーション

関連ノート