# 什么是信息

> 从 Bit 到 AGI · 第三章：信息（Information） · 什么是信息

- 作者：David（道雾轩）
- 专栏：从 Bit 到 AGI（https://daiw.org/manual/bit-to-agi.md）
- 最后更新：2026-07-09
- 原文：https://daiw.org/manual/bit-to-agi/03-information/what-is-information
- 转载与引用：请注明出处并附原文链接（https://daiw.org/about/copyright）

第一章你已经知道：计算机里的一切最终都是 **0 和 1**。但「8 个比特」和「一条天气预报」承载的**价值**并不相同——有的比特让你大吃一惊，有的只是重复你已知道的事。本章从「信息」这个词的精确定义出发，把它和比特、语言模型串起来。

## 直觉：惊喜才是信息

想象朋友发短信告诉你两件事：

1. 「北京今天有太阳。」（7 月）
2. 「北京今天下了冰雹。」（7 月）

第一句你几乎不意外，第二句你会立刻转发朋友圈。在信息论里，**越出乎意料的消息，携带的信息量越大**。反过来，如果你已经 100% 确定结果，再听一遍不会产生任何新信息——就像反复听「1+1=2」。

可以用一个生活类比：**信息 = 消除的不确定性**。你脑子里有一堆「可能发生的结局」，收到消息后，可能结局变少了，少掉的那部分就是信息。

```mermaid
flowchart LR
    A[收到消息前<br/>多种可能] --> B[收到消息后<br/>可能性收窄]
    B --> C[收窄的幅度<br/>= 信息量]
```

## 定义：自信息与比特

设随机事件 $x$ 发生的概率为 $p(x)$。**自信息**（self-information）定义为：

$$
I(x) = -\log_2 p(x) \quad \text{（单位：bit）}
$$

为什么用对数、为什么取负号？

- 概率越小 → $-\log_2 p$ 越大 → 越「惊喜」→ 信息量越大。
- 概率为 1（必然发生）→ $I = -\log_2 1 = 0$，没有新信息。
- 两个独立事件的信息量**相加**（对数把乘法变加法），符合直觉：两个独立惊喜叠在一起，惊喜总量相加。

<Callout type="info">
  **bit** 在这里有两层含义：存储单元（0/1）和信息量单位。公平硬币抛一次、结果有两种等概率可能，信息量恰好是 **1 bit**——这不是巧合，香农故意用同一个词把「存储」和「不确定性」绑在一起。
</Callout>

## 例子一：公平硬币 vs 作弊硬币

| 事件 | 概率 $p$ | 自信息 $I = -\log_2 p$ |
| ---- | -------- | ---------------------- |
| 公平硬币正面 | 0.5 | 1 bit |
| 公平硬币反面 | 0.5 | 1 bit |
| 作弊硬币（正面 99%） | 0.99 | ≈ 0.014 bit |
| 作弊硬币（反面 1%） | 0.01 | ≈ 6.64 bit |

抛一次公平硬币，平均惊喜是 1 bit；作弊硬币大多数时候几乎没信息，但偶尔反面出现时信息暴涨。**信息不是看「说了几个字」，而是看「概率有多小」。**

## 例子二：8 种天气编码

某地明天天气只有 8 种等可能结果（晴、多云、小雨……），每种概率 $1/8$：

$$
I = -\log_2 \frac{1}{8} = 3 \text{ bit}
$$

恰好 3 个比特可以编码 8 种状态（$2^3 = 8$）。这不是巧合：**若所有结果等概率，自信息等于所需的最少比特数**——后面「熵」和「压缩」都建立在这个事实上。

## 量化：从字符到 Token

一段英文文本在磁盘上每个 ASCII 字符占 **8 bit**（1 字节），但字符的**平均信息量**远低于 8。粗略统计，英文字母序列的信息量约 **1.0–1.5 bit/字符**（后面会细讲）。也就是说，存储格式里大约 **80% 以上是冗余**——文件比「真正需要传达的内容」胖了很多。

GPT 处理的 **Token** 也是比特串，但一个 Token 往往对应半个词或一个汉字片段。中文常见分词下，一个 Token 平均携带约 **2–4 bit 的有效语义信息**（取决于上下文可预测程度）。模型不是在「理解魔法」，而是在**用更少的比特表示更有信息量的片段**。

## 动手试一试：计算自信息

```python
import math

def self_information(probability: float) -> float:
    """返回自信息，单位 bit。probability 必须在 (0, 1]。"""
    if not 0 < probability <= 1:
        raise ValueError("probability must be in (0, 1]")
    return -math.log2(probability)

# 公平硬币
print(self_information(0.5))        # 1.0

# 作弊硬币反面（1%）
print(round(self_information(0.01), 2))  # 6.64

# 8 种等可能天气
print(self_information(1 / 8))        # 3.0

# 必然事件
print(self_information(1.0))          # 0.0
```

试着算：抽奖中特等奖概率 $10^{-6}$，自信息是多少 bit？（答案：约 19.93 bit——相当于连续抛 20 次公平硬币的惊喜总量。）

## 量化：联合事件与条件信息

两个**独立**事件 $A$、$B$ 同时发生，信息量相加：

$$
I(A \cap B) = I(A) + I(B) \quad (\text{当 } A,B \text{ 独立})
$$

例：两枚公平硬币都正面，$I = 1 + 1 = 2$ bit。

若**不独立**（作弊联轴硬币 $B$ 总等于 $A$），知道 $A$ 后 $B$ 已无悬念，$I(B \mid A) = 0$。语言里几乎每个字都依赖上下文——「行」在「银」后面读 háng，在「走」后面读 xíng——**条件信息**比单字自信息更能描述真实通信。GPT 学的正是 $I(x_t \mid x_{<t})$ 意义上的「剩余惊喜」。

| 场景 | 无条件 $I(x)$ | 有条件 $I(x \mid \text{上下文})$ |
| ---- | ------------- | -------------------------------- |
| 英文字母 `q` | ≈ 4.7 bit | `qu` 后 ≈ 1 bit |
| 汉字「行」 | ≈ 10–12 bit | 「银_」后 ≈ 2–3 bit |
| Token ` Paris` | ≈ 16 bit | `capital of France is` 后 ≈ 1–2 bit |

## 常见误区

| 误区 | 纠正 |
| ---- | ---- |
| 「信息 = 数据字节数」 | 字节数是**存储成本**；信息量是**消除的不确定性**，二者常差一个数量级以上 |
| 「中文比英文信息量大」 | 单看字符数没意义；要看**在给定上下文下的条件概率** |
| 「加密后信息量变多了」 | 加密让比特**看起来随机**，但明文的信息内容没变；变的是**表示方式** |
| 「重复发送同一条消息，信息量翻倍」 | 若第二次你已知内容，新增信息 ≈ 0；第一次已全部传达 |

## 小结

- **信息**衡量一条消息带来的「惊喜」或「不确定性减少量」，单位是 **bit**。
- 精确定义：$I(x) = -\log_2 p(x)$；概率越小，信息越多。
- 公平硬币 1 次 = 1 bit；8 种等可能结果 = 3 bit——与编码长度直接对应。
- 磁盘上的字节数 ≫ 真实信息量；GPT 的 Token 序列也在做类似的「瘦身」。

下一篇我们把单条消息的信息推广到**整组随机变量**，引入[信息熵是什么](https://daiw.org/manual/bit-to-agi/03-information/what-is-entropy)。
