信息熵介绍

目录


熵定义:

信息熵是信息论中用于度量信息不确定性的单位量。 简而言之,熵值用来告诉我们某件事情的结果到底有多难猜。

通过公式可以计算出一个事物的出现的概率,结果的熵值越高 ,表示结果越混乱、越难预测 (比如抛公平骰子)。反之熵值越低 ,结果越有序、越容易预测(比如作弊的硬币总出正面)。


公式

信息熵的数学定义为:

\[H = -\sum_{i=1}^{n} p_i \log_2 p_i \]

其中:

  • p_i 表示第 i 个事件发生的概率;
  • 对数底为2,单位为比特(bit);
  • 当某个 p_i = 0 时, 0 \\cdot \\log_2 0 按0处理。

计算案例

翻面硬币的信息熵计算(正面、反面)

  • 公平硬币:正面和反面出现的概率均为50%(即各为0.5)。

    • 概率计算:

      • 正面概率: p_{\\text{正面}} = \\frac{1}{2}
      • 反面概率: p_{\\text{反面}} = \\frac{1}{2}
    • 信息熵计算:

      \[H = -\left(0.5 \log_2 0.5 + 0.5 \log_2 0.5\right) = 1 \text{比特} \]

    • 含义:需要1比特的信息表示结果(如用0表示正面,1表示反面)。

  • 不公平硬币:假设正面概率为80%(0.8),反面为20%(0.2)。

    • 概率计算:

      • 正面概率: p_{\\text{正面}} = \\frac{8}{10}
      • 反面概率: p_{\\text{反面}} = \\frac{2}{10}
    • 信息熵计算:

      \[H = -\left(0.8 \log_2 0.8 + 0.2 \log_2 0.2\right) \approx 0.72 \text{比特} \]

    • 含义:结果更易预测(常出现正面),所以熵更低。

摸球游戏中的信息熵计算(红球、黄球、绿球)

假设袋子中有红球、黄球、绿球的数量分别为 \(k\)、\(m\)、\(l\),总球数 \(n = k + m + l\)。则:

  1. 计算每种颜色的概率

    • 红球概率: p_{\\text{红}} = \\frac{k}{n}
    • 黄球概率: p_{\\text{黄}} = \\frac{m}{n}
    • 绿球概率: p_{\\text{绿}} = \\frac{l}{n}
  2. 代入熵公式
    \( H = -\left( p_{\text{红}} \log_2 p_{\text{红}} + p_{\text{黄}} \log_2 p_{\text{黄}} + p_{\text{绿}} \log_2 p_{\text{绿}} \right) \)

  3. 求和并取负数
    \( H = -\left( -0.5 - 0.528 - 0.4308 \right) \approx -\left( -1.4588 \right) \approx 1.46 \ \text{比特} \)

  4. 结论:

    • 最大熵:当所有颜色概率相等(例如各1/3)时,熵最大,约为 \\log_2 3 \\approx 1.58 比特。
    • 最小熵:若某颜色概率接近1(如红球占5/6),熵趋近于0,不确定性极低。
    • 直观意义:熵越高,结果越难预测;熵越低,结果越容易预测。

熵的应用场景

通过理解熵的理论,开发者能设计出更高效的压缩算法更安全的加密系统

1、数据压缩中的应用

核心原理:熵给出了数据压缩的理论下限------最优压缩后的平均编码长度等于熵值。

具体应用

  1. 统计编码

    • 哈夫曼编码:根据符号频率分配变长编码,高频符号用短码,低频符号用长码。
    • 算术编码:将整个数据流映射为一个区间,直接逼近熵的理论极限。
  2. 压缩算法实例

    • ZIP(DEFLATE):结合 LZ77 算法(消除重复)和哈夫曼编码。
    • JPEG(图像压缩):利用离散余弦变换(DCT)减少空间冗余,再熵编码量化后的系数。

示例

  • 文本文件中的字母频率差异越大,熵越低,压缩率越高。
  • 若所有符号等概率(最大熵),压缩率最低(接近原始大小)。

2、加密算法设计中的应用

核心原理:高熵确保密钥和随机数的不可预测性,是加密安全的基础。

具体应用

  1. 密钥生成

    • 高熵密钥:使用真随机数生成器(TRNG)或密码学安全伪随机数生成器(CSPRNG)生成密钥。
    • 低熵风险:若密钥熵不足,易被暴力破解(如短密码或重复模式)。
  2. 加密算法设计

    • 扩散与混淆:通过高熵操作(如置换、代换)使密文统计特性接近随机。
    • AES 加密:每轮操作(字节替换、行移位、列混淆、轮密钥加)增加密文熵。
  3. 随机数验证

    • 熵测试:使用 NIST SP 800-90B 等标准评估随机源的熵质量。
    • 攻击防范:避免低熵导致的重放攻击或侧信道攻击。

示例

  • TLS 协议:使用高熵的会话密钥确保通信安全。
  • 密码存储:盐值(Salt)增加熵,防止彩虹表攻击。

总结

应用领域 熵的作用 实际技术
数据压缩 指导最优编码策略,逼近理论下限 哈夫曼编码、算术编码、LZ77
加密算法 确保密钥不可预测性与密文随机性 AES、RSA、TRNG/CSPRNG、盐值技术

关键结论

  • 数据压缩:熵决定了最小可能的压缩大小,算法需逼近这一极限。
  • 加密安全:高熵是抵御攻击的核心,需从密钥生成到算法设计全程保障。
相关推荐
普兰店拉马努金19 天前
【高中数学/古典概率】4红2黑六选二,求取出两次都是红球的概率
java·概率
MCYH02061 个月前
C++抽卡模拟器
java·c++·算法·概率·原神
啊文师兄6 个月前
大连理工大学概率上机作业免费下载
python·算法·概率·超分辨率重建
Code920077 个月前
The 2024 ICPC Kunming Invitational Contest K. Permutation(交互 期望)
交互·概率·期望·思维题
亚图跨际1 年前
Python | R 潜在混合模型
python·数学·统计·概率·r·图形模型·混合模型
IDIOT___IDIOT1 年前
高斯分步正态分布
概率
知识在于积累1 年前
期望-概率论中的赫尔德(Holder)不等式
概率·期望·holder不等式
冒冒菜菜2 年前
一篇文章彻底搞懂熵、信息熵、KL散度、交叉熵、Softmax和交叉熵损失函数
机器学习·softmax··信息熵·kl散度·交叉熵·交叉损失函数