めもめも

このブログに記載の内容は個人の見解であり、必ずしも所属組織の立場、戦略、意見を代表するものではありません。

「シャノン=ハートレーの定理」の簡易的な導出

(参考)シャノン=ハートレーの定理

周波数 W の信号を1秒間入力したとして、その入力波をフーリエ級数に展開すると(正弦部分と余弦部分をあわせて)2W 個の一次独立な基底波 \{\phi_n(t)\}_{n=1}^{2W} に分解することができます。したがって、

 x(t) = \sum_{n=1}^{2W} x_n\phi_n(t) ――― (1)

と分解して、この1秒間の信号に対して、2W 次元の実数ベクトル \{x_n\}_{n=1}^{2W} の情報を乗せることが可能です。以下、 N := 2W とします。

また、一次独立な基底波は、次の直行関係を満たします。

 \int_0^1 \phi_n(t)\phi_m(t)\,dt = \delta_{nm} ――― (2)

ただし、振幅が大きくなると消費電力も大きくなるので、最大消費電力 P によって振幅の上限が決まります。T 秒間の総電力について考えると次式が成り立ちます。

 \int_0^T \{x(t)\}^2\,dt \le PT

ここで、T=1 として、(1)(2)を利用すると、次式が得られます。

 \sum_{n=1}^Nx_n^2 \le P

つまり、この信号に対する入力は、半径 \sqrt{P}N 次元球の中のベクトル値になります。

仮にこの信号に一切のノイズが乗らない、つまり、入力したベクトル値が正確に出力値として観測されると仮定すると、実数ベクトルは無限個の状態を表現できるので(実数は連続ですから)、この信号は無限の転送容量を持つことになります。

しかしながら、現実の信号にはノイズが乗るので、そうは行きません。入力ベクトルに対して、出力ベクトルは、各成分について独立な分散 \sigma^2 のノイズが乗っかると仮定します。これは言い換えると、次の事実を表します。

・入力信号は、半径 \sqrt{P}N 次元球の中のベクトル値ですが、出力信号は、ノイズの分だけ半径が広がって、半径 \sqrt{P+N\sigma^2}N 次元球を構成します。

・特定の入力ベクトルに対して、出力ベクトルは、半径 \sqrt{N\sigma^2} の球体に広がります。

※入力ベクトルの各成分に乗るノイズを \epsilon_n とすると、各成分のノイズは独立であることから、出力ベクトルの「大きさ^2」の期待値は次のように計算されます。これから出力ベクトルの広がりの半径が分かります。

 E\left[\sum_{n=1}^N(x_n+\epsilon_n)^2\right] = \sum_{n=1}^N \left(E\left[x_n^2\right]+E\left[\epsilon_n^2\right]\right)=|x|^2+N\sigma^2

したがって、それぞれの出力ベクトルを相互に識別可能にしようとすると、その最大個数は、「半径 \sqrt{P+N\sigma^2}N 次元球の中に半径 \sqrt{N\sigma^2} の球体を何個つめられるか?」で決まります。N 次元球の体積の公式で計算すると、その数 S は、次になります。

 S=\left(\frac{\sqrt{P+N\sigma^2}}{\sqrt{N\sigma^2}}\right)^{N}

つまり、1秒間の入力信号に乗せられる実際のビット数は、下記で表されます。

 C = \log S = \frac{N}{2}\log\left(1+\frac{P}{N\sigma^2}\right) = W \log\left(1+\frac{P}{N_0}\right)

ここに、N_0 := N\sigma^2 は、次式より「ノイズの消費電力」と解釈することができます。

 E\left[\sum_{n=1}^N\epsilon_n^2\right] = N\sigma^2

以上で導出は終了です。

ちなみに上記の議論では、期待値計算に基づく単純な体積の比で識別可能なベクトルの個数を計算しましたが、厳密には、入力/出力ベクトルの確率分布から得られる情報エントロピーをシャノンの定理(Noisy-Channel Coding Theorem)に突っ込むと同じ結果が得られます。