Math World Lab

情報エントロピー

確率分布の「乱雑さ・予測不能性」を測るシャノンの公式と、データ圧縮の理論的限界

この単元の発見をシェア
3行要約(Key Takeaways / AIOサマリー)
1
情報エントロピー HH は、確率分布がどれだけ「予測しにくく乱雑か」を数値化したものであり、シャノンによって H=−∑ipilog⁡2piH = -\sum_i p_i \log_2 p_i(単位: ビット)と定義された
2
エントロピーは、すべての結果が等確率(一様分布)のときに最大値を取り、逆にどれか1つの結果がほぼ確実(確率1に近い)に偏るほど0に近づく
3
エントロピーは「その情報源を圧縮するのに理論上必要な平均ビット数の下限」を表しており、偏った(予測しやすい)データほど圧縮効率が高くなることをハフマン符号などの圧縮アルゴリズムが実際に裏付けている

なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値

Purpose & Motivation

なぜ生まれたのか?

情報エントロピー $H$ は、確率分布がどれだけ「予測しにくく乱雑か」を数値化したものであり、シャノンによって $H = -\sum_i p_i \log_2 p_i$(単位: ビット)と定義された

身につく武器・思考力

エントロピーは、すべての結果が等確率(一様分布)のときに最大値を取り、逆にどれか1つの結果がほぼ確実(確率1に近い)に偏るほど0に近づく

実社会・ITでの活躍現場

  • •データ圧縮アルゴリズム(ハフマン符号)における符号長の理論的下限
  • •ITシステム・アルゴリズム実装における論理設計
  • •データ分析やシミュレーションにおける数理モデリング

Layer 1 — 直感・シミュレーター

いくつかの出来事(例: サイコロの目や偏ったコイン)の確率をスライダーで調整してみよう(自動的に合計が1になるよう正規化される)。確率をすべて均等にするとエントロピー HH が最大値 log⁡2n\log_2 n に達し、逆にどれか1つの確率を1に近づけるとエントロピーが0に近づいていく様子をリアルタイムのバーグラフで確認できる。「均等化」ボタンで最大エントロピー状態に一発でリセットできる。

確率分布(自動的に合計1へ正規化)
A50.0%
B16.7%
C16.7%
D16.7%

情報エントロピー H=−∑ipilog⁡2piH = -\sum_i p_i \log_2 p_i = 1.792 ビット

最大値 Hmax⁡=log⁡2nH_{\max} = \log_2 n = 2.000 ビット(全確率が均等なとき)

↑ どれか1つの確率を大きくして偏らせるとエントロピーが下がり(予測しやすい=圧縮しやすい)、「均等化」ボタンを押すとエントロピーが最大値に達する。

直感チェック!ミニクイズ

表と裏の出る確率がそれぞれ 0.5 のコインと、表が出る確率 0.99・裏が出る確率 0.01 の偏ったコインを比べたとき、情報エントロピー HH が大きいのはどちらか?

Layer 2 — 定義・受験・証明

定義

nn 個の互いに排反な結果を持ち、それぞれの結果が確率 p1,p2,…,pnp_1, p_2, \ldots, p_n(ただし ∑ipi=1\sum_i p_i = 1)で起こる確率分布に対して、その「情報エントロピー(シャノンエントロピー)」HH を次のように定義する。

H(p1,…,pn)=−∑i=1npilog⁡2piH(p_1, \ldots, p_n) = -\sum_{i=1}^n p_i \log_2 p_i

(慣例として pi=0p_i = 0 の項は 0log⁡20=00 \log_2 0 = 0 として扱う。)これは「1回の観測から平均して得られる情報量」を単位ビットで表したものであり、確率分布の不確実性の大きさを表す指標である。

公式・数理モデル

H=−∑i=1npilog⁡2pi,0≤H≤log⁡2n,Hmax⁡=log⁡2n    (全て pi=1/n のとき)H = -\sum_{i=1}^n p_i \log_2 p_i, \qquad 0 \le H \le \log_2 n, \qquad H_{\max} = \log_2 n \;\;(\text{全て } p_i = 1/n \text{ のとき})

証明・導出

エントロピーが一様分布で最大になることの証明(ラグランジュの未定乗数法): 制約 ∑i=1npi=1\sum_{i=1}^n p_i = 1 のもとで H(p1,…,pn)=−∑ipilog⁡2piH(p_1,\ldots,p_n) = -\sum_i p_i \log_2 p_i を最大化する。ラグランジュ関数を

L=−∑i=1npilog⁡2pi−λ(∑i=1npi−1)\mathcal{L} = -\sum_{i=1}^n p_i \log_2 p_i - \lambda\left(\sum_{i=1}^n p_i - 1\right)

とおき、各 pip_i による偏微分を 0 とおくと(log⁡2x=ln⁡x/ln⁡2\log_2 x = \ln x / \ln 2 に注意して微分すると)、

∂L∂pi=−1ln⁡2(ln⁡pi+1)−λ=0\frac{\partial \mathcal{L}}{\partial p_i} = -\frac{1}{\ln 2}(\ln p_i + 1) - \lambda = 0

これよりすべての ii について ln⁡pi\ln p_i が同じ値(−λln⁡2−1-\lambda \ln 2 - 1)になるため、p1=p2=⋯=pnp_1 = p_2 = \cdots = p_n でなければならない。制約 ∑pi=1\sum p_i = 1 と合わせると pi=1/np_i = 1/n が唯一の停留点であり、HH は上に凸(log⁡\log の凹性による)なのでこれが最大値を与える。代入すると

Hmax⁡=−∑i=1n1nlog⁡21n=−log⁡21n=log⁡2nH_{\max} = -\sum_{i=1}^n \frac{1}{n}\log_2\frac{1}{n} = -\log_2\frac{1}{n} = \log_2 n

したがって、エントロピーは確率が完全に均等(一様分布)なときに最大値 log⁡2n\log_2 n を取ることが示された。

押さえておきたいポイント

  • エントロピーは常に 0≤H≤log⁡2n0 \le H \le \log_2 n の範囲にあり、下限0はどれか1つの確率が1(完全に予測可能)のとき、上限は一様分布のときに達成される
  • エントロピーが低い(偏った)分布ほど「次に何が起きるか予測しやすい」ため、平均的に少ないビット数で符号化(圧縮)できる
  • シャノンの情報源符号化定理は、任意の情報源を可逆圧縮する際の理論的な平均ビット数の下限がエントロピー HH であることを保証する
  • ハフマン符号は、出現確率が高い記号に短い符号、低い記号に長い符号を割り当てることで平均符号長を HH に近づける具体的な圧縮アルゴリズム
参照基準・学習指導要領との対応

本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。

Layer 3 — 工学応用・現場実装

データ圧縮アルゴリズム(ハフマン符号)における符号長の理論的下限

ZIPやJPEGなどの可逆圧縮の内部で使われるハフマン符号は、出現頻度の高い文字ほど短いビット列を、低い文字ほど長いビット列を割り当てることで平均符号長を最小化する。この平均符号長の理論的な下限こそが情報エントロピー HH であり、確率分布が偏っている(エントロピーが低い)データほど圧縮率が高くなることを、実際にエントロピーと平均符号長を計算して確認できる。

1// 確率分布からシャノンの情報エントロピー H = -Σ p*log2(p) を計算
2function shannonEntropy(probabilities: number[]): number {
3 return -probabilities
4 .filter((p) => p > 0) // 0*log2(0) = 0 として扱うため除外
5 .reduce((sum, p) => sum + p * Math.log2(p), 0);
6}
7
8// 簡易ハフマン木のノード
9type HuffmanNode = { symbol?: string; freq: number; left?: HuffmanNode; right?: HuffmanNode };
10
11// 出現頻度から各記号のハフマン符号長を求める(優先度キューの代わりに配列とソートで簡易実装)
12function huffmanCodeLengths(freqs: Record<string, number>): Record<string, number> {
13 let nodes: HuffmanNode[] = Object.entries(freqs).map(([symbol, freq]) => ({ symbol, freq }));
14 const depth: Record<string, number> = {};
15 Object.keys(freqs).forEach((s) => (depth[s] = 0));
16
17 while (nodes.length > 1) {
18 nodes.sort((a, b) => a.freq - b.freq);
19 const [a, b] = [nodes[0], nodes[1]];
20 // aとbの部分木に属する全記号の符号長を+1する
21 const markDepth = (node: HuffmanNode) => {
22 if (node.symbol) depth[node.symbol]++;
23 if (node.left) markDepth(node.left);
24 if (node.right) markDepth(node.right);
25 };
26 markDepth(a);
27 markDepth(b);
28 const merged: HuffmanNode = { freq: a.freq + b.freq, left: a, right: b };
29 nodes = [merged, ...nodes.slice(2)];
30 }
31 return depth;
32}
33
34// 例: 偏った確率分布(圧縮しやすい)
35const probs = [0.5, 0.25, 0.125, 0.125];
36console.log(`エントロピー H = ${shannonEntropy(probs).toFixed(3)} ビット/記号`); // 1.75 ビット
37
38const lengths = huffmanCodeLengths({ A: 50, B: 25, C: 12, D: 13 });
39console.log(lengths); // ハフマン符号の平均符号長はHに極めて近くなる
この単元につながる学習ロードマップ

次に学ぶならコレ!おすすめトピック

この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元

数理モデル・概念が近い関連トピック

関連度高大学数学

ベイズの定理(条件付き確率と事前・事後確率)

新たな情報や証拠(エビデンス)を得て「確信度」を更新する確率論

関連度高大学数学

ニュートン法(数値解法)

接線を使って方程式の解に高速収束する反復アルゴリズム

関連度高大学数学

マルコフ連鎖と定常分布

「今の状態」だけが未来を決める確率過程と、時間が経つと収束する一定の分布

同じレベルで次に挑戦したいトピック

同レベル推薦大学数学

固有値・固有ベクトル

行列で変換しても「向きが変わらない」特別な方向

同レベル推薦大学数学

フーリエ変換と周波数分解

どんなに複雑な波も、単純なサイン波の重ね合わせに分解できる

同レベル推薦大学数学

正規分布と中心極限定理

あらゆるランダムなばらつきが最終的に収束する「釣鐘型の山」

工学・実社会での応用先でつながるトピック

工学・実践連携小学校・算数

平均値・中央値・データの活用

棒グラフを動かして、平均と中央値の違いを体で覚えよう

工学・実践連携中学数学

四分位範囲・箱ひげ図

データを並べて4等分すると、散らばり具合が一目でわかる

✨1% 排出100連ガチャ当選 63.4%爆死 36.6%1/e の法則
工学・実践連携中学数学

ガチャ確率と大数の法則(確率の心理バイアス)

「確率1%を100回引けば当たる?」余事象と二項分布が暴くスマホゲームの現実

あなたの数学力をさらに伸ばす

数学の弱点診断や算数パズルに挑戦してみませんか?

簡単な質問に答えてあなたにぴったりの学習ロードマップを発見したり、直感を試すパズルで数の面白さを体験できます。