夏農熵計算
輸入
| 文字 | hello |
|---|---|
| 對數底數 | 位元(底數 2) |
夏農熵計算
計算任意文字或符號序列的夏農熵,輸入字串後可得出每個符號平均攜帶的位元、奈特或哈特利資訊量。
輸入
輸入
結果
輸入數值即可顯示計算結果。
熵值
統計資料
夏農熵
夏農熵(Shannon entropy)是衡量符號序列平均資訊量(或不確定性)的指標,由數學家克勞德·夏農(Claude Shannon)於 1948 年在資訊理論奠基論文中提出。給定一段文字或符號序列,夏農熵回答的問題是:每個符號平均攜帶多少位元(或奈特、哈特利)的資訊量?此概念至今仍是資料壓縮、密碼學與機器學習的核心工具。
熵值公式
設一資訊源從大小為 的字母集中發出符號,第 種符號出現的機率為 ,則夏農熵定義為:
對數的底數 決定計量單位:底數 2 對應位元,底數 對應奈特,底數 10 對應哈特利(又稱 ban 或 dit)。
計算範例——「hello」
字串「hello」包含五個字元:h、e、l、l、o,各字元的出現頻率如下:
| 字元 | 出現次數 | 機率 |
|---|---|---|
| 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 bits per symbol整個字串的總熵值為 位元,即對「hello」此特定頻率分布進行最優無失真編碼所需的理論最低位元數。
公式的直觀意涵
公式中每一項 代表符號 對整體不確定性的貢獻量:出現頻率低( 小)的符號,一旦出現便攜帶大量資訊,因為它「出乎意料」;出現頻率高( 大)的符號,攜帶的資訊量少,因為它「不令人意外」。
夏農證明,熵是滿足三條直觀公理的唯一函數:對機率連續、在均勻分布時達到最大值、加入必然出現的符號(機率為 1)時不改變其值。這三條公理唯一確定了 為平均資訊量的正確度量。
最大與最小熵值
對於含有 種相異符號的資訊源:
- 最大熵值: 位元(每符號),在所有符號以相同機率出現時達到。
- 最小熵值: ,在某一符號的出現機率為 1(完全確定)時達到。
實際英文文本的熵值約落在每字母 1 到 1.5 位元之間,遠低於理論上限 位元,原因在於各字母的出現頻率極不均勻,且相鄰字元之間存在強烈的統計依存關係(例如「q」後幾乎必然接「u」)。
熵值與資料壓縮
夏農的來源編碼定理(source coding theorem)證明,任何無失真壓縮演算法都無法將訊息壓縮至低於其熵值所對應的每符號位元數。熵值因此成為壓縮後檔案大小的硬性理論下界。
這一結論解釋了以下現象:
- 內容重複性高的檔案(如充滿相似記錄的日誌檔)熵值低,壓縮效果佳。
- 真正隨機或已加密的資料,熵值已達極限,幾乎無法進一步壓縮。
- 霍夫曼編碼(Huffman coding)與算術編碼(arithmetic coding)是接近熵值下界的主流壓縮演算法,其中霍夫曼編碼保證每符號使用的位元數不超過理論下界一位元。
與密碼強度的關係
密碼安全性分析中的密碼熵(password entropy)是一個相關但不同的概念,衡量的是攻擊者從搜尋空間中破解密碼的難度——假設密碼從某個可能字串的集合中均勻隨機抽取,公式為 ,其中 為密碼長度, 為字元集大小。
本計算工具所計算的夏農熵,衡量的是特定字串中字元頻率分布的不確定性。例如「aaaa」的夏農熵為零,但它仍是四個字元長。評估密碼安全性時,應使用 密碼強度(熵值)計算機 以模擬攻擊者的搜尋空間。
常見問題(FAQ)
高熵值代表什麼意思?
熵值高,表示各符號出現的頻率接近均等——每種字元出現的機率相近,因此每個字元所攜帶的資訊量較大。由 256 種不同 ASCII 字元隨機組成的字串具有最大熵值(每字元 8 位元),因為前面的字元完全無法預測下一個字元為何。
熵值低,則表示頻率分布極度不均——某些字元大量重複出現,使字串可預測性高。例如「aaaa」的熵值為零,因為每個字元都必然是「a」。
含有 N 種相異符號的字串,最大熵值是多少?
具有 N 種相異符號的資訊源,其夏農熵的理論上限為 log₂(N) 位元(每符號)。唯有在所有 N 種符號均以相同機率出現時(均勻分布),才能達到此上限。
舉例而言:二元字串(N = 2)每符號最多攜帶 1 位元;由英文 26 個字母組成的字串(N = 26)每符號最多可達 log₂(26) ≈ 4.7 位元。實際英文文本的熵值約落在每字母 1 到 1.5 位元之間,遠低於理論上限,原因在於各字母及詞彙的出現頻率極不均勻。
熵值與資料壓縮有何關聯?
夏農的來源編碼定理(source coding theorem)指出,任何無失真壓縮演算法都無法將資料壓縮到低於其熵值所對應的每符號位元數。換言之,熵值是壓縮率的理論下界。
熵值為 H 位元(每符號)的字串,原則上可壓縮至每符號 H 位元,但無法更低。因此,重複內容較多的檔案(如大量相似記錄的日誌檔)熵值低,壓縮率高;而真正隨機或已加密的資料熵值已達極限,幾乎無法進一步壓縮。
位元、奈特與哈特利有何不同?
三者衡量的是相同的底層量(資訊量),僅對數底數不同:
- 位元(底數 2):二進位運算的基本單位,一枚公平硬幣的投擲結果恰好攜帶 1 位元資訊。
- 奈特(底數 e ≈ 2.718):以自然對數為底,可簡化資訊理論與統計力學中的許多公式,因而常用於理論推導。
- 哈特利(底數 10):又稱 ban 或 dit,一哈特利相當於從十個等可能結果中選出一個所含的資訊量。
換算關係:1 哈特利 ≈ 3.322 位元 ≈ 2.303 奈特。