物理中，熵是用来衡量“无序”、“混乱”的方式。信息方面也是如此，不过“无序”表示的是信息“有多出乎意料”，换句话说，就是有多随机。

> “有多随机”这个话其实还是不够严谨和让人一眼就能读懂，它的实际含义就是：概率分布离均匀分布有多近。概率分布越均匀，越随机。
>
> 如果分布是接近均匀的（或者直接是均匀的），也就是所有元素几乎是等概率发生的，那么我们心里是没有一个预期的，毕竟我们不知道下一次会是哪个元素发生。
>
> 但是如果分布是不均匀的，例如扔骰子，95% 的概率是 6 点，其余五点都各只有 1% 的概率，那么我们心里会觉得下一次大概就是 6 点，毕竟概率很大。此时这个骰子带来的信息就没有那么随机了。

## 1. 香农信息熵

### 自信息量（**Self-information**，或 **surprisal**）：

这里的“自”表示这个信息量只取决于事件本身的概率，不涉及其他变量。
$$
I(x) = -\log_2 p(x)
$$

- $p(x)$：事件概率；
- 负号使信息量非负（因为当 $p\in(0,1]$ 时 $\log_2 p\le0$）

### 信息熵（(Shannon) information entropy / Shannon entropy）：

信息熵表示了信息的随机性程度：熵越大，随机性越大。它的计算公式就是自信息量的总和：
$$
H(X) = -\sum_{i=1}^{n} p_i \log_2 p_i
$$
- $p_i$：第$i$个结果的概率，
- $\sum p_i=1$；
- $H$ 就是信息熵，**单位**有几种：bit（$\log_2$）/ nat（$\ln$）/ hartley（$\log_{10}$）。

$H$ 是编码该信源平均所需的最少比特数（下确界）。分布越随机/越难猜，$H$越大；分布越确定，$H$越小。

**取值范围**：$0\le H(X)\le\log_2 n$，其中：

- 下界0：某$p_i=1$（完全确定，不用消耗 bit 传递信息）
- 上界$\log_2 n$：$p_i$全相等（完全均匀）

------

## 2. Jensen 不等式（Jensen's inequality）推出熵的上界

Jensen 不等式（凹函数版本的公式）：

$$
f\left(\sum_i p_i x_i\right) \ge \sum_i p_i f(x_i)
$$
其中 $f(x)=\log_2x$，为凹函数（concave function）。

> 注意：国内的数学教材与国际说法不同，凹凸函数是反过来的。

取等号的条件是所有$x_i$相等，在这里 $x_i = \dfrac{1}{p_i}$，也就是所有元素等概率发生（均匀分布）。

这里带入 $x_i = \dfrac{1}{p_i}$ 到 Jensen 不等式中，可以得到

$$
\begin{aligned}
\log_2\left(\sum_i p_i\cdot\frac{1}{p_i}\right) &\ge \sum_i p_i\log_2\frac{1}{p_i} \\[4pt]
\underbrace{\log_2\left(\sum_i 1\right)}_{=\,\log_2 n} &\ge \underbrace{-\sum_i p_i\log_2 p_i}_{=\,H(X)} \\[4pt]
\log_2 n &\ge H(X)
\end{aligned}
$$

$\log_2 n$是"零先验假设"下熵能达到的最坏情况（最大不确定性）基准线。换言之，信息熵本身是最小值，但是这个“最小值”的上限是可以通过 Jensen 不等式计算出来的。

这个上界有什么用呢？
明白了，抱歉之前理解错格式诉求。按你笔记的风格，把这四条应用逐条展开例子：

------

### 上界 $\log_2 n$ 的应用举例

#### 1. 工程：资源预留上限

当我们不知道信源真实分布时，$\log_2 n$ 给出编码所需 bit 数的最小上限（这里的“最小”其实是描述“上限”的，也就是我们说的“安全上限”，最后的真实结果一定小于等于这个上限，也就是上确界），可据此预先设计系统，不必等统计数据出来再进行设计。

例如 DNA 有4种碱基（A/T/C/G），$n=4$：
$$
H_{max}=\log_2 4=2\text{ bit/碱基}
$$
无论真实物种的碱基分布是否均匀，每个碱基编码必然 $\le 2$ bit，可以直接按 2 bit/碱基设计存储格式，后续再针对具体物种的实际频率做压缩优化。

#### 2. 衡量冗余：作为 $H_{max}$ 计算冗余度

$H_{max}$ 作为冗余度公式 $R=1-\dfrac{H}{H_{max}}$ 中的分母，是"零先验"基准线。如果不知道 $H_{max}$ ，我们无法计算得到统计规律后，有多少是冗余（或者说节约了多少）。

>"零先验"指的是：你对某个信源的真实概率分布**一无所知**，唯一确定的信息只有"有多少种可能结果"（nn n），这时候数学上唯一站得住脚的假设就是**等概率**——因为没有任何理由认为某个结果比另一个更可能，任何非均匀的假设都是没有依据的主观臆测。

例如，英语27个符号（26字母+空格），$H_{max}=\log_2 27\approx4.75$ bit/符号，实测真实熵 $H\approx1.0\sim1.3$ bit/符号：
$$
R\approx1-\frac{1.3}{4.75}\approx73\%
$$
单独一个 $H=1.3$ bit，没法说明英语中有多少是冗余的。

#### 3. 判断压缩空间：实测熵与上界的距离

实测 $H$ 越接近 $H_{max}$，说明这个信源已经接近完全随机（均匀分布），继续压缩的空间很小；实测 $H$ 远低于 $H_{max}$，说明还有大量未被利用的统计规律，值得继续挖掘更高阶模型（如更大的 N-gram）。

例如，对比两个信源，都是 $n=27$ 种符号：

- 信源A（接近随机字符串）：实测 $H\approx4.6$ bit，接近上界 $4.75$ bit → 几乎不可压缩，继续优化编码算法收益很小，接近最优解了。
- 信源B（英语文本）：实测 $H\approx1.3$ bit，远低于上界 $4.75$ bit → 说明字母间有很强的上下文相关性（如 "q后面几乎必是u"），值得我们寻找更高阶的统计模型去逼近这个真实熵，从而设计出更好的压缩算法，节约带宽。

#### 4. 安全评估：密码学中的理论最大搜索空间

$\log_2 n$ 决定单个字符的最大信息量，单位是 bit。也就是需要多少bit可以安全的存储一个字符，这取决于字符集大小。

密码长度为 $L$、字符集大小为 $n$ 时，理论最大熵（暴力破解需要遍历的搜索空间）为：
$$
H_{max}=L\times\log_2 n
$$

**例**：一个8位密码，字符集是大小写字母+数字（$n=62$）：
$$
H_{max}=8\times\log_2 62\approx8\times5.95\approx47.6\text{ bit}
$$
这是假设密码**完全随机生成**时的理论最大强度，也就是需要 $2^{47.6}$ 次才能试出来。

但如果密码是人为选的（比如 "password123"），实际熵会远低于47.6 bit——因为人类选择的密码有很强的规律性（常见单词、生日、键盘顺序等），这个"理论上界 vs 实际值"的差距，正是密码破解时，字典攻击（彩虹表）能利用的攻击面。


## 3. 冗余度
冗余度公式 $R$ 如下：
$$
R = 1 - \frac{H}{H_{max}}
$$
其中：
- $H_{max}$：理论上界，定义为 $H_{max}=\log_2 n$；

  >n 是**信源可能取值的种类总数**——也就是这个随机变量一共有多少种不同的结果。

- $H$：实测/估计的真实熵。

$R$ 越接近 1，信源越可压缩；$R=0$说明已完全随机，无法再压缩。

例如，英语27符号，$H_{max}\approx4.75$，实测$H\approx1.0\sim1.3$，$R\approx73$