理論計算機科学教科書

数学的基礎から最先端研究まで

理論計算機科学の包括的な教科書。数学的基礎から最先端の研究トピックまで、体系的に学習できるように構成。140以上の図表、豊富な練習問題、実装例、実世界での応用事例を含む。

第10章 情報理論

はじめに

情報理論は、情報の定量化、保存、伝達に関する数学的理論です。1948年のクロード・シャノンの画期的な論文により創始されたこの分野は、通信工学から始まり、今日ではデータ圧縮、暗号理論、機械学習、生物情報学など、幅広い分野で応用されています。

本章では、情報量の数学的定義から始まり、データ圧縮の理論的限界、雑音のある通信路での信頼性のある通信の可能性、そして誤り訂正符号の構成まで、情報理論の核心的な概念を体系的に学びます。これらの理論は、現代のデジタル通信システムの設計における基礎となっています。

10.1 情報量とエントロピー

10.1.1 情報量の定義

定義 10.1 確率 p で生起する事象の自己情報量(self-information)は: I(p) = -log₂ p = log₂(1/p) [bits]

性質

  1. 0 < p ≤ 1 に対して I(p) ≥ 0
  2. p = 1(確実な事象)のとき I(p) = 0
  3. p₁ < p₂ ならば I(p₁) > I(p₂)
  4. 独立事象の情報量は加法的:I(p₁p₂) = I(p₁) + I(p₂)

10.1.2 Shannon エントロピー

graph TD
    subgraph "情報量とエントロピーの概念"
        subgraph "自己情報量"
            SelfInfo["I(p) = -log₂ p<br/>確率 p の事象の情報量"]
            Properties["性質:<br/>・p=1 なら I(p)=0<br/>・p が小さいほど大きい<br/>・独立事象は加法的"]
            
            SelfInfo --> Properties
        end
        
        subgraph "Shannon エントロピー"
            Entropy["H(X) = -∑ p(x) log₂ p(x)<br/>= E[I(X)]"]
            BinaryH["二値エントロピー関数<br/>h(p) = -p log₂ p - (1-p) log₂(1-p)"]
            
            Entropy --> BinaryH
            
            HProperties["エントロピーの性質:<br/>・0 ≤ H(X) ≤ log₂ |X|<br/>・一様分布で最大<br/>・確定的分布で最小(0)"]
        end
        
        subgraph "エントロピー関数の形状"
            BinaryPlot["二値エントロピー h(p)の性質:<br/>・p=0, p=1 で h(p)=0(確実性最大)<br/>・p=0.5 で h(p)=1(不確実性最大)<br/>・凹関数(下に凸)<br/>・対称性: h(p) = h(1-p)"]
            
            UniformMax["一様分布でエントロピー最大:<br/>・不確実性が最も高い<br/>・全ての結果が等確率"]
            DeterministicMin["確定的分布でエントロピー最小<br/>不確実性がない<br/>結果が完全に予測可能"]
        end
        
        subgraph "実用例"
            FairCoin["公正なコイン<br/>p=0.5: H=1 bit"]
            BiasedCoin["偏ったコイン<br/>p=0.1: H≈0.47 bit"]
            Certain["確実な事象<br/>p=1: H=0 bit"]
            
            Example["例: 8面サイコロ<br/>一様: H = log₂ 8 = 3 bit<br/>偏り有り: H < 3 bit"]
        end
    end
    
    style SelfInfo fill:#e3f2fd
    style Entropy fill:#fff3e0
    style BinaryPlot fill:#e8f5e8
    style FairCoin fill:#f3e5f5
    style UniformMax fill:#ffe0b2

定義 10.2 離散確率変数 X のエントロピー: H(X) = -∑ₓ p(x) log₂ p(x) = E[I(X)]

ここで、0 log 0 = 0 と定義する(連続性による)。

例 10.1 二値確率変数 X ∈ {0, 1}, P(X=1) = p のエントロピー: H(X) = -p log₂ p - (1-p) log₂(1-p) = h(p)

これを二値エントロピー関数という。h(p) は p = 1/2 で最大値 1 をとる。

定理 10.1 離散確率変数 X について: 0 ≤ H(X) ≤ log₂ |X|

等号は左が X が定数のとき、右が X が一様分布のとき。

証明:Jensen の不等式を用いる。log は凹関数なので: H(X) = E[-log p(X)] ≤ -log E[p(X)] = -log(1/|X|) = log |X| □

10.1.3 結合エントロピーと条件付きエントロピー

定義 10.3

定理 10.2(連鎖律)H(X,Y) = H(X) + H(Y X)

証明: H(X,Y) = -∑ₓ,ᵧ p(x,y) log p(x,y) = -∑ₓ,ᵧ p(x,y) log[p(x)p(y|x)] = -∑ₓ,ᵧ p(x,y) log p(x) - ∑ₓ,ᵧ p(x,y) log p(y|x) = H(X) + H(Y|X) □

10.1.4 相互情報量

定義 10.4 X と Y の相互情報量: I(X;Y) = ∑ₓ,ᵧ p(x,y) log [p(x,y)/(p(x)p(y))]

定理 10.3 以下の等式が成立:

  1. I(X;Y) = H(X) - H(X Y) = H(Y) - H(Y X)
  2. I(X;Y) = H(X) + H(Y) - H(X,Y)
  3. I(X;Y) = I(Y;X)(対称性)
  4. I(X;Y) ≥ 0(等号は X と Y が独立)

10.1.5 相対エントロピー

定義 10.5 分布 P と Q の相対エントロピー(Kullback-Leibler divergence): D(P||Q) = ∑ₓ p(x) log [p(x)/q(x)]

定理 10.4(情報不等式)D(P   Q) ≥ 0、等号は P = Q のとき。

証明:log の凹性より: -D(P||Q) = ∑ₓ p(x) log [q(x)/p(x)] ≤ log ∑ₓ p(x) · [q(x)/p(x)] = log 1 = 0 □

10.1.6 エントロピーの性質

定理 10.5(条件付けによる減少)H(X Y) ≤ H(X)、等号は X⊥Y。

定理 10.6(データ処理不等式)X → Y → Z がマルコフ連鎖なら: I(X;Y) ≥ I(X;Z)

10.2 情報源符号化

10.2.1 符号の定義と性質

定義 10.6 アルファベット X から符号アルファベット D への符号は、 写像 C: X → D* (D* は D の有限文字列の集合)。

定義 10.7

定理 10.7 瞬時符号 ⊆ 一意復号可能符号 ⊆ 非特異符号

10.2.2 Kraft の不等式

定理 10.8(Kraft-McMillan)D 元符号において、 一意復号可能符号の符号長 l₁, …, lₙ は以下を満たす: ∑ᵢ D^(-lᵢ) ≤ 1

逆に、この不等式を満たす長さの組に対して瞬時符号が構成可能。

証明(必要性):符号木を考える。深さ lᵢ の葉は D^lᵢ 個の葉を「使用」する。 全体で D^max(lᵢ) 個の葉があるので、不等式が成立。□

10.2.3 Shannon の符号化定理

定理 10.9(情報源符号化定理) 確率変数 X に対する一意復号可能な D 元符号の平均符号長 L について: L ≥ H(X) / log D

また、L < H(X) / log D + 1 を満たす瞬時符号が存在する。

証明:相対エントロピーの非負性を用いる。 確率分布 p(x) と q(x) = D^(-l(x)) / ∑ D^(-l(x)) に対して: D(p||q) ≥ 0 より導かれる。□

10.2.4 最適符号

Shannon 符号

符号長を l(x) = ⌈-log_D p(x)⌉ とする。

性質:H(X) / log D ≤ L < H(X) / log D + 1

Huffman 符号

graph TD
    subgraph "Huffman符号の構成例"
        subgraph "記号と確率"
            A["A: 0.4"]
            B["B: 0.2"]
            C["C: 0.2"]
            D["D: 0.1"]
            E["E: 0.1"]
        end
        
        subgraph "符号木の構築過程"
            Step1["ステップ1: 最小確率をマージ<br/>D(0.1) + E(0.1) = DE(0.2)"]
            Step2["ステップ2: 次の最小をマージ<br/>B(0.2) + DE(0.2) = BDE(0.4)"]
            Step3["ステップ3: 次の最小をマージ<br/>C(0.2) + BDE(0.4) = CBDE(0.6)"]
            Step4["ステップ4: 最後のマージ<br/>A(0.4) + CBDE(0.6) = ROOT(1.0)"]
        end
        
        subgraph "最終的な符号木"
            Root["ROOT(1.0)"]
            
            N1["A(0.4)"]
            N2["CBDE(0.6)"]
            
            N3["C(0.2)"]
            N4["BDE(0.4)"]
            
            N5["B(0.2)"]
            N6["DE(0.2)"]
            
            N7["D(0.1)"]
            N8["E(0.1)"]
            
            Root -->|0| N1
            Root -->|1| N2
            N2 -->|0| N3
            N2 -->|1| N4
            N4 -->|0| N5
            N4 -->|1| N6
            N6 -->|0| N7
            N6 -->|1| N8
        end
        
        subgraph "符号表と性能"
            CodeTable["符号表:<br/>A: 0 (1 bit)<br/>C: 10 (2 bit)<br/>B: 110 (3 bit)<br/>D: 1110 (4 bit)<br/>E: 1111 (4 bit)"]
            
            Performance["平均符号長:<br/>L = 0.4×1 + 0.2×2 + 0.2×3<br/>  + 0.1×4 + 0.1×4<br/>  = 2.2 bits<br/><br/>エントロピー:<br/>H ≈ 2.122 bits<br/><br/>効率: H/L ≈ 96.5%"]
        end
    end
    
    style Root fill:#e3f2fd
    style CodeTable fill:#fff3e0
    style Performance fill:#e8f5e8
    style Step1 fill:#f3e5f5

アルゴリズム(二元の場合):

  1. 各記号を確率付きノードとする
  2. 最小確率の2ノードを選び、親ノードを作成
  3. 1ノードになるまで繰り返し

定理 10.10 Huffman 符号は平均符号長を最小化する瞬時符号である。

証明:最適符号の性質を用いた帰納法による。□

10.2.5 算術符号

原理:メッセージ全体を [0,1) の部分区間として符号化。

利点

実装上の考慮

10.2.6 ユニバーサル符号

Lempel-Ziv 符号(LZ77, LZ78):

定理 10.11 定常エルゴード情報源に対して、LZ符号の圧縮率は 確率 1 でエントロピーレートに収束する。

10.3 通信路符号化

10.3.1 通信路モデル

graph TD
    subgraph "通信路モデルと容量"
        subgraph "二元対称通信路 (BSC)"
            BSC_Input["入力 X ∈ {0,1}"]
            BSC_Channel["BSC(p)<br/>クロスオーバー確率 p"]
            BSC_Output["出力 Y ∈ {0,1}"]
            
            BSC_Input --> BSC_Channel
            BSC_Channel --> BSC_Output
            
            BSC_Matrix["遷移確率行列<br/>p(0|0) = 1-p, p(1|0) = p<br/>p(0|1) = p,   p(1|1) = 1-p"]
            
            BSC_Capacity["容量<br/>C = 1 - h(p)<br/>h(p): 二値エントロピー関数<br/><br/>例:<br/>p=0: C=1 (完全)<br/>p=0.5: C=0 (無用)<br/>p=0.1: C≈0.53"]
        end
        
        subgraph "AWGN通信路"
            AWGN_Input["入力 X<br/>電力制約 E[X²] ≤ P"]
            AWGN_Channel["Y = X + Z<br/>Z ~ N(0,N)"]
            AWGN_Output["出力 Y"]
            
            AWGN_Input --> AWGN_Channel
            AWGN_Channel --> AWGN_Output
            
            AWGN_Capacity["容量<br/>C = (1/2) log(1 + P/N)<br/><br/>Shannon-Hartley:<br/>C = W log(1 + SNR)<br/>W: 帯域幅"]
        end
        
        subgraph "通信路符号化定理"
            Encoding["符号化<br/>メッセージ → 符号語"]
            Channel["雑音のある通信路"]
            Decoding["復号<br/>受信語 → メッセージ"]
            
            Encoding --> Channel
            Channel --> Decoding
            
            Theorem["Shannon の定理:<br/>R < C なら誤り率 → 0<br/>R > C なら誤り率 > δ > 0<br/><br/>R: 情報レート<br/>C: 通信路容量"]
        end
        
        subgraph "実用的な符号"
            Linear["線形符号<br/>・Hamming符号<br/>・BCH符号<br/>・Reed-Solomon符号"]
            
            Modern["現代の符号<br/>・ターボ符号<br/>・LDPC符号<br/>・極符号"]
            
            Performance["性能指標<br/>・符号化率 R=k/n<br/>・最小距離 d<br/>・復号複雑度"]
        end
    end
    
    style BSC_Channel fill:#e3f2fd
    style AWGN_Channel fill:#fff3e0
    style Theorem fill:#e8f5e8
    style Modern fill:#f3e5f5

定義 10.8 離散無記憶通信路(DMC)は、 入力アルファベット X、出力アルファベット Y、 遷移確率 p(y|x) で特徴付けられる。

例 10.2 二元対称通信路(BSC):

10.3.2 通信路容量

定義 10.9 通信路の容量: C = max_{p(x)} I(X;Y)

定理 10.12 BSC(p) の容量:C = 1 - h(p) ここで h(p) は二値エントロピー関数。

証明:対称性より、最大化する入力分布は一様分布。 このとき I(X;Y) = H(Y) - H(Y|X) = H(Y) - h(p) ≤ 1 - h(p) □

10.3.3 Shannon の通信路符号化定理

定義 10.10 レート R の (M, n) 符号:

定理 10.13(通信路符号化定理) 任意の R < C と ε > 0 に対して、十分大きな n で 誤り率 < ε となるレート R の符号が存在する。

逆に、R > C なら誤り率は 0 から離れた下界を持つ。

証明の概要(達成可能性): ランダム符号化により、平均誤り率が小さいことを示す。 典型系列の理論と大数の法則を使用。□

10.3.4 誤り指数

定義 10.11 レート R での誤り指数: E(R) = lim_{n→∞} [-1/n · log P_e^(n)]

定理 10.14 0 < R < C に対して E(R) > 0。

これは誤り率が指数的に減少することを意味する。

10.4 誤り訂正符号

10.4.1 線形符号

定義 10.12 線形符号 C は F_q^n の線形部分空間。

[n, k, d] 符号と表記する。

生成行列と検査行列

10.4.2 符号の限界

定理 10.15(Hamming 限界) 最小距離 d の q 元 [n, k] 符号に対して: q^k ≤ q^n / ∑_{i=0}^{⌊(d-1)/2⌋} C(n,i)(q-1)^i

定理 10.16(Singleton 限界) [n, k, d] 符号に対して:d ≤ n - k + 1

定義 10.13 d = n - k + 1 を満たす符号を最大距離分離(MDS)符号という。

10.4.3 具体的な符号

Hamming 符号

構成:検査行列の列として、0 以外の r ビットベクトルをすべて使用。

Reed-Solomon 符号

構成:評価写像を用いる C = {(f(α₁), …, f(αₙ)) | f ∈ F_q[x], deg(f) < k}

BCH 符号

10.4.4 復号アルゴリズム

症候復号

受信語 r に対して、症候 s = Hr^T を計算。 症候表を用いて誤りパターンを特定。

Reed-Solomon 符号の復号

  1. 症候計算
  2. 誤り位置多項式の決定(Berlekamp-Massey)
  3. 誤り位置の探索(Chien search)
  4. 誤り値の計算(Forney のアルゴリズム)

10.4.5 連接符号とターボ符号

連接符号

ターボ符号

LDPC 符号

10.5 連続情報理論

10.5.1 微分エントロピー

定義 10.14 連続確率変数 X の微分エントロピー: h(X) = -∫ f(x) log f(x) dx

注意:離散エントロピーと異なり、h(X) は負になりうる。

10.5.2 ガウス分布の特性

定理 10.17 分散 σ² に制約された分布の中で、 ガウス分布 N(μ, σ²) が微分エントロピーを最大化: h(X) ≤ (1/2) log(2πeσ²)

10.5.3 ガウス通信路

定義 10.15 加法的白色ガウス雑音(AWGN)通信路: Y = X + Z、Z ~ N(0, N)

定理 10.18 電力制約 E[X²] ≤ P の下での AWGN 通信路容量: C = (1/2) log(1 + P/N) [bits/channel use]

10.5.4 帯域制限通信路

Shannon-Hartley の定理: 帯域幅 W、信号電力 P、雑音電力 N の通信路容量: C = W log(1 + P/N) [bits/second]

10.6 情報理論の応用

10.6.1 データ圧縮への応用

graph TD
    subgraph "情報理論の応用分野"
        subgraph "データ圧縮"
            Lossless["損失なし圧縮<br/>・Huffman符号<br/>・LZ系アルゴリズム<br/>・算術符号"]
            
            Lossy["損失あり圧縮<br/>・レート歪み理論<br/>・量子化理論<br/>・変換符号化"]
            
            Examples1["実用例:<br/>・ZIP (LZ系)<br/>・JPEG (DCT+量子化)<br/>・MP3 (心理音響モデル)"]
        end
        
        subgraph "暗号理論との関係"
            Perfect["完全秘匿性<br/>I(M;C) = 0<br/>メッセージと暗号文が独立"]
            
            KeyLength["鍵長の必要条件<br/>|K| ≥ |M|<br/>ワンタイムパッド"]
            
            Entropy["エントロピーと暗号強度<br/>・鍵の予測不可能性<br/>・擬似乱数の品質評価"]
        end
        
        subgraph "機械学習への応用"
            MaxEnt["最大エントロピー原理<br/>制約下でのエントロピー最大化<br/>→ 最尤推定"]
            
            InfoBottleneck["情報ボトルネック法<br/>I(X;T) 最小化<br/>I(T;Y) 最大化<br/>→ 表現学習"]
            
            KL["KLダイバージェンス<br/>・分布間距離<br/>・変分推論<br/>・GANの訓練"]
        end
        
        subgraph "通信システム"
            Capacity["通信路容量<br/>・Shannon限界<br/>・MIMO系<br/>・協調通信"]
            
            Coding["符号化技術<br/>・ターボ符号<br/>・LDPC符号<br/>・極符号"]
            
            Network["ネットワーク符号化<br/>・多端子情報理論<br/>・Slepian-Wolf<br/>・分散圧縮"]
        end
        
        subgraph "生物情報学"
            Sequence["配列解析<br/>・相互情報量によるモチーフ発見<br/>・配列アラインメント"]
            
            Evolution["進化解析<br/>・KL距離による系統解析<br/>・分子時計<br/>・遺伝的多様性"]
            
            Structure["構造解析<br/>・二次構造予測<br/>・タンパク質相互作用<br/>・遺伝子発現解析"]
        end
    end
    
    style Lossless fill:#e3f2fd
    style Perfect fill:#fff3e0
    style MaxEnt fill:#e8f5e8
    style Capacity fill:#f3e5f5
    style Sequence fill:#ffe0b2

損失のある圧縮

:JPEG, MP3 などの規格

10.6.2 暗号理論との関係

完全秘匿性(Shannon): I(M;C) = 0(メッセージと暗号文が独立)

定理 10.19 完全秘匿性には K M (鍵空間 ≥ メッセージ空間)が必要。

10.6.3 機械学習における情報理論

最大エントロピー原理: 制約を満たす分布の中でエントロピーを最大化。

情報ボトルネック法: I(X;T) を最小化しつつ I(T;Y) を最大化。

10.6.4 生物情報学での応用

配列アラインメント: 相互情報量によるモチーフ発見。

進化的距離: KL divergence による種間距離の定量化。

章末問題

基礎問題

  1. 以下の確率分布のエントロピーを計算せよ: (a) P(X) = {1/2, 1/4, 1/8, 1/8} (b) 幾何分布:P(X = k) = (1-p)^(k-1)p, k = 1, 2, …

  2. X, Y, Z が Markov 連鎖 X → Y → Z をなすとき、 I(X;Y|Z) + I(X;Z) = I(X;Y) を証明せよ。

  3. 二元対称通信路(クロスオーバー確率 0.1)において、 入力が一様分布のときの相互情報量を計算せよ。

  4. {a:0.5, b:0.25, c:0.125, d:0.125} に対する Huffman 符号を構成し、 平均符号長を求めよ。

発展問題

  1. Fano の不等式を証明し、通信路符号化定理の逆定理への応用を説明せよ。

  2. 型(typical sequences)の理論について: (a) 弱型と強型の定義を与えよ (b) 漸近等分割性(AEP)を証明せよ

  3. Slepian-Wolf の定理(分散情報源符号化)を説明し、 達成可能領域を特徴付けよ。

  4. ネットワーク符号化について: (a) 最大流最小カット定理との関係を説明せよ (b) 線形ネットワーク符号の十分性を論ぜよ

探究課題

  1. 量子情報理論について調査し、 von Neumann エントロピーと古典的エントロピーの違いを論ぜよ。

  2. Kolmogorov 複雑性について調査し、 Shannon エントロピーとの関係を説明せよ。

  3. 極符号(Polar codes)について調査し、 通信路分極現象と容量達成性を説明せよ。

  4. 深層学習における情報理論的解析について調査し、 情報ボトルネック理論の応用例を示せ。