シャノンエントロピーの計算
入力
| テキスト | hello |
|---|---|
| 対数の底 | ビット(底2) |
シャノンエントロピーの計算
文字列のシャノンエントロピーを計算します。各記号が平均して持つ情報量をビット・ナット・ハートレーで表示。データ圧縮・暗号・機械学習の基礎概念です。
入力
入力
結果
値を入力すると計算結果が表示されます。
エントロピー
統計情報
シャノンエントロピー
シャノンエントロピーは、記号列の平均的な情報量(不確かさ)を定量化する指標です。クロード・シャノンが1948年の論文「通信の数学的理論」で提唱し、情報理論の基礎概念として確立されました。テキスト・音声・画像など、あらゆる離散的なデータ源に適用でき、データ圧縮・暗号理論・機械学習など幅広い分野で利用されています。
情報量とエントロピーの定義
あるメッセージを受け取ったときに「どれだけ驚いたか」を数値で表すのが情報量の概念です。確率 で起こる事象の自己情報量は で定義されます。確率が低いほど情報量が大きく、確率が1(確実)なら情報量は0になります。
シャノンエントロピー は、すべての記号にわたる情報量の期待値(加重平均)です。 種類の記号からなる情報源で、記号 の出現確率が のとき:
対数の底 が情報量の単位を決定します。底2はビット、底 はナット、底10はハートレーに対応します。
計算例 — "hello"
文字列「hello」の5文字の出現頻度を集計します。
| 文字 | 出現数 | 確率 |
|---|---|---|
| h | 1 | 1/5 = 0.2 |
| e | 1 | 1/5 = 0.2 |
| l | 2 | 2/5 = 0.4 |
| o | 1 | 1/5 = 0.2 |
ビット(底2)での計算:
H=−(3×0.2×log20.2+0.4×log20.4)=−(3×0.2×(−2.3219)+0.4×(−1.3219))≈1.9219 ビット/記号文字列全体の総エントロピーは ビットです。これは「hello」をこの文字頻度分布に最適化した符号で可逆的に符号化するための理論的な最小ビット数です。
数式が成立する理由
各項 は、記号 が全体の不確かさに寄与する量を表します。出現確率が低い記号(小さい )が現れたときは情報量が大きく、高頻度な記号(大きい )はあまり情報を運びません。
シャノンはエントロピーが、①確率に対して連続、②一様分布のとき最大、③確率1の記号を追加しても値が変わらない、という3つの自然な公理を同時に満たす唯一の関数であることを証明しました。この公理系から が一意に導かれます。
最大エントロピーと最小エントロピー
種類の記号を持つ情報源について:
- 最大エントロピー: ビット/記号。すべての記号が等確率で出現する一様分布のときに達成されます。
- 最小エントロピー: 。ある1つの記号が確率1で出現するとき(完全に予測可能な列)に達成されます。
英語テキストのエントロピーは1〜1.5ビット/文字程度です。理論上の最大値 ビットを大きく下回る理由は、文字の出現頻度の偏り(eやtが多く、xやzは少ない)と、隣接文字間の統計的依存(qの後にはほぼ必ずuが来るなど)にあります。
データ圧縮との関係
シャノンの情報源符号化定理は、いかなる可逆圧縮アルゴリズムも、1記号あたりの平均符号長を情報源のエントロピー未満にできないことを証明しています。エントロピーは圧縮後ファイルサイズの理論的下界です。
この定理から次のことが説明されます。
- 繰り返しの多いログファイルのような冗長なデータは圧縮効率が高い(エントロピーが低い)。
- 真の乱数や暗号化済みデータはすでにエントロピーの限界に達しており、意味のある圧縮はできない。
- ハフマン符号や算術符号といった圧縮アルゴリズムはエントロピー下界に近づくよう設計されており、ハフマン符号は理論下界に対して最大で1記号あたり1ビット余分になることが保証されています。
圧縮率の計算については 圧縮率の計算 も参照してください。
パスワード強度との関係
パスワードのエントロピーは、シャノンエントロピーとは異なる概念です。攻撃者の視点で「候補となるパスワード全体の不確かさ」を測るもので、(:パスワード長、:使用文字種数)で近似されます。
本計算ツールが求めるシャノンエントロピーは、特定の文字列における文字頻度分布の偏りを測定します。たとえば「aaaa」のシャノンエントロピーは0ですが、パスワードとしての候補空間(攻撃者が試すべき文字列の数)は依然として有限です。パスワードの安全性評価には パスワードのエントロピー を使用してください。
よくある質問 (FAQ)
エントロピーが高い文字列とはどのような状態ですか?
エントロピーが高い場合、各文字の出現確率が均等に近い状態を指します。すべての文字がほぼ同じ頻度で現れるため、1文字あたりの情報量が大きくなります。256種類のASCII文字がすべて均等に出現するランダムな文字列では、エントロピーは最大の8ビット/文字となります。直前の文字からでは次の文字をまったく予測できないためです。
一方、エントロピーが低い場合は文字の分布に偏りがあり、文字列の予測可能性が高くなります。「aaaa」のようにすべての文字が同一であれば、確実に予測できるためエントロピーは0になります。
N種類の記号からなる文字列の最大エントロピーはいくつですか?
N種類の記号を持つ情報源の最大シャノンエントロピーは log₂(N) ビット/記号です。この最大値は、N種類の記号がすべて等確率で出現する一様分布のときにのみ達成されます。
例として、2値の文字列(N = 2)では最大1ビット/記号、英字26文字(N = 26)では最大 log₂(26) ≈ 4.7 ビット/記号となります。実際の英語テキストは1〜1.5ビット/文字程度にとどまります。文字や単語の出現頻度が大きく偏っているためです。
エントロピーとデータ圧縮はどのような関係にありますか?
シャノンの情報源符号化定理によると、可逆圧縮方式はどれほど優れていても、1記号あたりの圧縮後のビット数を情報源のエントロピー未満に減らすことはできません。エントロピーは圧縮率の理論的下界です。
エントロピーが H ビット/記号の文字列は、原理的に H ビット/記号まで圧縮できますが、それ以上は不可能です。繰り返しの多いテキストファイルのような圧縮しやすいデータはエントロピーが低く、真の乱数や暗号化済みデータはすでにエントロピーの上限に達しているため、意味のある圧縮はできません。
ビット・ナット・ハートレーの違いは何ですか?
いずれも同じ量(情報量)を異なる対数の底で表したものです。
- ビット(底2):2進数コンピュータの自然な単位。1ビットはコインの表裏のような二択の情報量に相当します。
- ナット(底e ≈ 2.718):情報理論の数学的解析や統計力学で使用されます。自然対数を使うと多くの数式が簡潔になるためです。
- ハートレー(底10):バンまたはディットとも呼ばれます。1ハートレーは10種類の等確率な結果から1つを選ぶ情報量です。
換算の目安:1ハートレー ≈ 3.322ビット ≈ 2.303ナット。