🎓 レベル:発展 | 重要度:A(必須)
📎 前提:離散無記憶通信路、相互情報量 | 次:シャノンの通信路符号化定理
要点(BLUF)
- 通信路容量 は、通信路 を固定したまま入力分布を最適に選んだときの相互情報量の最大値:
- BSC(反転 )は 、BEC(消失 )は 。対称通信路は一様入力で容量を達成します。
- 非対称通信路(例:Z通信路)では最適入力は一様でない。一般には反復計算(Blahut-Arimoto)で求めますが、 が入力分布の凹関数なので最大化は一意に解けます。
1. 定義:入力分布で最大化
相互情報量 は入力分布 にも依存しました(離散無記憶通信路)。通信路の「最大伝送能力」を測るには、送り手が最善の入力分布を選んだときの値を見ます:
は を固定すると について凹(エントロピーの性質と最大エントロピー の凹性に由来)。凹関数を確率単体上で最大化するので、解は一意で、ラグランジュの条件(KKT)で特徴づけられます。容量は通信路だけで決まる固有の定数で、これが通信の限界(シャノンの通信路符号化定理)を与えます。
2. 代表的な通信路の容量
BSC(反転確率 ): は入力に依らず一定。 を最大化するには を最大(出力一様、)にすればよく、それは一様入力で実現。よって
なら 、 なら (無用)、 なら bit。
BEC(消失確率 ):平均して割合 のビットが失われ、残り は無傷で届くので
直観どおり「届いたビットだけが情報」。どちらも一様入力で達成されます。
3. コード:入力分布の最大化で容量を求める(底2, bit)
入力分布を細かく振って を最大化し、対称通信路 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 では総当たりの最大が ちょうどで得られ、容量 bit が理論式 に一致——対称性ゆえ一様入力が最適。一方、Z通信路(0は無傷、1だけが確率 で0に化ける非対称通信路)では、最適入力が と一様からずれます。化けやすい入力1をやや控えめに使う方が、受信側の区別がつきやすくなるからです。「対称通信路は一様入力」という便利な事実は対称性に依存しており、一般には入力分布の最適化(Blahut-Arimoto アルゴリズム)が必要、というのがこの実験の教訓です。
4. 数式の直観的意味
容量は「この通信路を1回使うと、最善を尽くして平均何 bit 確実に運べるか」の上限です。 の BSC は容量 bit——1ビット送るのに約2回の使用が要る勘定。重要なのは、容量が符号を作る前から決まる通信路固有の値であること。どんな賢い誤り訂正符号も、容量を超える速度では誤りを0にできません(シャノンの通信路符号化定理)。逆に容量未満なら必ず達成できる符号が存在する。容量は「越えられない壁」と「必ず届く保証」の両方を与える、通信のエントロピーに相当する量です。連続入力のガウス通信路では (ガウス通信路と容量)に化けます。
⚠️ よくある誤解
- 「容量は一様入力で達成される」ではない:対称通信路だけです。非対称では最適入力が偏ります(コードの Z通信路)。
- 「容量を超えても少し誤るだけ」ではない: では誤り確率は0にできず、ブロック長を伸ばすと誤りは1に近づきます(強逆定理)。容量は鋭い閾値。
- 「容量はノイズの量そのもの」ではない:容量は「使える残り」。BSC なら で、ノイズ を1 bit から引いた残り。
- 「容量を上げるには出力を見ればよい」ではない:通信路 は固定。送り手が選べるのは入力分布だけ。フィードバックは離散無記憶通信路の容量を増やしません。
対応シミュレーション
- 本文のコードで BSC・Z通信路の容量を入力分布最大化で実証済み。
関連ノート
- 離散無記憶通信路(前提・遷移確率と相互情報量)
- 相互情報量(前提・最大化する対象)
- エントロピーの性質と最大エントロピー( の凹性の根拠)
- シャノンの通信路符号化定理(次のトピック・容量が達成可能な閾値)
- ガウス通信路と容量(連続版・SNR の容量)
- 第4章 通信路と通信路容量 目次
- 情報理論 全体目次