人工智能的数学基础:信息论
点击上方“图灵人工智能”,选择“星标”公众号
您想知道的人工智能干货,第一时间送达

人工智能的数学基础:信息论
阅读指南:本文专为零基础读者设计。你不需要任何数学背景,只需要有好奇心和耐心。
本文的核心理念:用生活中的例子理解抽象概念,用直觉代替公式记忆。
⚠️ 进阶提示:文中带 📌 标记的内容是为想深入理解的读者准备的补充说明,第一次阅读可以跳过,不影响整体理解。
目录
一、从一个问题开始:什么是"信息"?
二、信息量:单个消息的"意外值"
2.1 生活中的直觉
2.2 数学表达
三、信息熵:平均而言,一个系统有多"不确定"
3.1 从猜谜游戏理解
3.2 数学定义
3.3 具体计算
3.4 极端情况与最大熵原理
四、联合熵与条件熵:多个变量的故事
4.1 联合熵
4.2 条件熵
4.3 链式法则:从两个变量到一千个词
五、互信息:两个事物有多"相关"
5.1 经典的"冰淇淋与溺水"悖论
5.2 数学定义
5.3 互信息的另一种视角:分布差异
5.4 互信息的性质
5.5 互信息的因果边界:为什么 远远不够
六、条件互信息:已知第三个变量后,还剩多少关联?
七、数据处理不等式:信息不会凭空增长
八、最小描述长度(MDL):奥卡姆剃刀的信息论版本
九、交叉熵:你的预测有多"离谱"
9.1 天气预报员的故事
9.2 交叉熵的定义
9.3 为什么交叉熵能衡量预测质量?
9.4 困惑度:交叉熵的"翻译"
十、KL散度:两个分布的"距离"
10.1 从交叉熵到KL散度
10.2 直觉理解
10.3 天气预报员再比较
10.4 JS散度:让"距离"更公平
十一、Fano不等式:信息不足时,错误不可避免
十二、信息论在人工智能中的应用
12.1 决策树:用信息增益选择最佳特征
12.2 神经网络:交叉熵损失函数
12.3 变分自编码器(VAE):用KL散度约束隐空间
12.4 信息瓶颈(Information Bottleneck)与信息平面
12.5 特征选择:用互信息找到"好"特征
12.6 对比学习:用互信息构建世界模型
12.7 熵正则化:让AI保持"好奇心"
十三、信息论与数据压缩:霍夫曼编码与算术编码
13.1 霍夫曼编码
13.2 算术编码
13.3 渐进均分性(AEP)与典型集:压缩极限的微观解释
十四、香农信道容量:噪声下的通信极限
14.1 生活中的直觉
14.2 信道容量公式
14.3 高斯信道的具体公式
十五、香农信息与语义信息:一个哲学澄清
十六、总结:信息论的核心直觉地图
十七、写在最后
十八、进阶附录:连续世界的微分熵
一、从一个问题开始:什么是"信息"?
想象你正在和朋友玩一个游戏:
场景A:你问朋友"明天太阳会从东边升起吗?"朋友回答"是的"。
场景B:你问朋友"明天会地震吗?"朋友回答"是的"。
哪个回答让你更"震惊"?显然是场景B。
为什么?因为"太阳从东边升起"是几乎必然发生的事,你早就知道答案;而"明天地震"是极其罕见的事,你完全没预料到。
这就是信息的核心直觉:信息衡量的是"意外程度"。
• 越意外的事情 → 信息量越大 • 越平常的事情 → 信息量越小 • 你已经知道的事情 → 信息量为零
二、信息量:单个消息的"意外值"
2.1 生活中的直觉
假设你关注三个新闻源:
你的反应强度,就是"信息量"的直观体现。
2.2 数学表达
我们用 表示事件 的信息量。根据上面的直觉:
其中 是事件 发生的概率。
直觉解读:
• 概率 越小 → 越大 → 信息量越大 • 概率 越大 → 越小 → 信息量越小 • 如果 (必然发生),则 (没有信息)
例子计算:
• 抛硬币正面朝上(): 比特 • 掷骰子得到6点(): 比特 • 中彩票头奖(): 比特
📌 进阶说明:为什么用对数?因为对数能把"乘法关系"变成"加法关系"。比如连续抛两次硬币,总概率是 ,而总信息量应该是 比特。对数的性质 正好满足这个直觉。
三、信息熵:平均而言,一个系统有多"不确定"
3.1 从猜谜游戏理解
想象两个盒子:
盒子A:100个球,50红50蓝。你闭眼摸一个,猜颜色。
盒子B:100个球,99红1蓝。你闭眼摸一个,猜颜色。
哪个盒子让你更"纠结"?显然是盒子A。因为盒子A的结果最难猜,不确定性最大。
信息熵(Entropy)就是用来量化这种"不确定性"的。 严格来说,熵衡量的是统计不确定性,而非物理意义上的"混乱"。
3.2 数学定义
如果一个随机变量 可能取值为 ,对应的概率为 ,那么 的熵定义为:
直觉解读:熵就是"信息量的期望值"——平均而言,你每观测一次这个系统,能获得多少信息。
3.3 具体计算
盒子A(50红50蓝):
盒子B(99红1蓝):
盒子A的熵远大于盒子B,说明盒子A更"不确定"。
3.4 极端情况与最大熵原理
最不确定:50红50蓝(均匀分布), 比特(最大值)
完全确定:100红0蓝, 比特(最小值)
重要结论:
• 当所有结果概率相等时,熵最大(最不确定) • 当某个结果概率为1时,熵为0(完全确定) • 熵只取决于概率分布,与具体取值无关
📌 进阶说明:熵的单位是"比特"(bit, binary digit),这是当对数底数为2时的单位。如果用自然对数(底数为 ),单位是"纳特"(nat)。在计算机和通信领域,通常使用比特。
📌 进阶说明:最大熵原理——对未知保持诚实
假设我告诉你"某城市日均气温的期望值为20°C、方差为25°C²",但不知道具体分布。此时有无穷多个分布满足这两个约束:可能是均匀分布、高斯分布、指数分布……
最大熵原理说:在满足所有已知约束的前提下,应该选择熵最大的分布。
对于这个例子,数学可以证明:高斯分布(正态分布)的熵最大。因此,选择高斯分布是最"诚实"的做法——你不对未知部分做任何额外假设。
⚠️ 重要前提:最大熵分布取决于你已知哪些约束以及变量的定义域。例如:
• 如果变量定义在 且只知道均值约束 → 最大熵分布是指数分布 • 如果知道均值和方差,且定义域为 → 最大熵分布是高斯分布 • 如果只知道取值范围 → 最大熵分布是均匀分布
因此,"选高斯"并非唯一答案,而是取决于你已知的约束条件。这也解释了为什么指数族分布在统计学中如此普遍——它们都是在"已知最少"时的最优选择。
四、联合熵与条件熵:多个变量的故事
4.1 联合熵:两个系统合起来有多不确定
假设你同时观测天气(晴/雨)和温度(高/低)。
联合熵 衡量的是:如果你同时对两个系统一无所知,总的不确定性是多少?
生活直觉:猜"明天天气且温度"比只猜"明天天气"更难,所以联合熵通常大于单个熵。
4.2 条件熵:已知一个,另一个还难猜吗?
条件熵 的意思是:已知 的取值后, 还剩下多少不确定性?
生活例子:
• 如果已知"今天是暴雨",那么"明天是否下雨"的不确定性会降低(暴雨往往持续) • 如果已知"今天是晴天",那么"明天是否下雨"的不确定性可能变化不大
所以 ,说明已知今天暴雨"减少"了我们对明天天气的不确定性。
关键关系式:
直觉:两个变量的总不确定性 = 的不确定性 + 已知 后 的不确定性。
这就像:你走进一个陌生城市,先找方向(),再找具体地址(),总难度是两者之和。
一个重要性质:
直觉:知道额外信息 后,对 的不确定性不会增加,只会减少或不变。这也等价于"互信息永远不会是负数"。
4.3 链式法则:从两个变量到一千个词
上一节的公式 可以推广到任意多个变量,这就是熵的链式法则:
生活直觉:猜一句完整的话"今天天气真好",总难度等于:
• 猜第一个字"今"的难度 • 已知第一个字是"今"后,猜第二个字"天"的难度 • 已知"今天"后,猜"天"的难度 • ……依此类推
这与AI有什么关系?
今天的大语言模型(如GPT)本质上就是在用链式法则"猜下一个词"。它们把一段文本的联合概率拆解为:
而训练目标——交叉熵损失——正是对链式法则中每一项 的求和平均。语言模型不是在"背诵"句子,而是在用信息论的链式法则,一步步消除下一个词的不确定性。
五、互信息:两个事物有多"相关"
5.1 经典的"冰淇淋与溺水"悖论
统计发现:冰淇淋销量越高,溺水死亡人数越多。两者"相关"很强。
但它们真的有因果关系吗?不是。真正的原因是:夏天来了 → 天气热(冰淇淋卖得好)且游泳的人多(溺水多)。
互信息就是用来量化这种"相关性"的——它衡量知道一个变量后,另一个变量的不确定性减少了多少。
⚠️ 重要提醒:互信息高只说明"统计相关",绝不等于因果。就像冰淇淋和溺水,互信息可能很高,但吃冰淇淋不会导致溺水。因果推断需要额外的理论和实验设计,不是信息论能单独回答的。
5.2 数学定义
还有一个非常实用的计算公式:
直觉解读:
• 表示" 能告诉你关于 多少信息" • 如果 和 完全独立,知道 对猜 毫无帮助, • 如果 和 完全相关(比如 ),知道 就等于知道 ,
5.3 互信息的另一种视角:分布差异
互信息还有一个极其深刻的等价形式:
直觉:互信息衡量的是"联合分布"与"独立时应有的分布"之间的KL散度。
如果 和 独立,那么 ,KL散度为0,互信息也为0。如果它们不独立,这个"差异"就是互信息。这个视角把"相关性"和"分布差异"统一了起来,是理解对比学习、独立性检验的钥匙。
5.4 互信息的性质
• 对称性:( 告诉你的关于 的信息 = 告诉你的关于 的信息) • 非负性:(知道另一个变量,永远不会让你更困惑) • 上界:(互信息不可能超过单个变量的信息量)
📌 进阶说明:互信息与统计学中的"相关系数"不同。相关系数只能衡量线性关系,而互信息可以捕捉任何统计依赖关系(包括非线性)。比如 ,相关系数可能为0,但互信息大于0。
5.5 互信息的因果边界:为什么 远远不够
"冰淇淋与溺水"揭示了一个更深层的问题:互信息完全无法区分因果方向。以下三种完全不同的因果结构,都可以产生很高的互信息 ,而第四种碰撞结构则会在条件化于碰撞点后制造虚假的统计关联:
1. 混杂(Confounding):第三方 同时导致 和
• 例:季节 → 冰淇淋销量 ;季节 → 溺水人数 • 和 本身互不影响,但互信息很高
2. 直接因果(Causation): 真的导致
• 例:吸烟 → 肺癌 • 互信息高,且存在真实因果
3. 反向因果(Reverse Causation): 导致
• 例:火灾现场 → 消防车出动 • 互信息高,但消防车不会导致火灾
4. 碰撞(Collider): 和 原本独立,但共同导致 ,一旦我们条件化于 , 和 之间就会出现虚假关联。
• 例:才华 → 名人地位 ← 颜值 。才华和颜值原本独立,但如果我们只看"名人"这个子集,会发现才华和颜值之间出现虚假的统计关联(在这个特定设定下可能表现为负相关:因为有一技之长的人可能不需要靠脸也能成名)。
对AI的启示:
在医疗诊断、金融风控、推荐系统中,仅仅因为"特征 与目标 互信息高"就选用它,可能把"季节"当成"冰淇淋销量"选入模型,导致在"冬天"这个测试场景下完全失效。特征与目标的互信息高,不代表这个特征在干预(如改变策略)后依然有用。
📌 进阶说明:如何区分因果?
• 随机对照实验(RCT):金标准,通过随机分组打破混杂 • 条件互信息:如 说明 可能是混杂因子(见第六章) • 因果发现算法:如 PC 算法、do-calculus,利用变量间的条件独立性模式推断因果图
六、条件互信息:已知第三个变量后,还剩多少关联?
在多变量系统中,仅仅知道 往往不够。我们需要回答:如果我已经知道了 , 和 还互相透露多少信息?
定义:
直觉:在已知 的前提下, 还能帮你消除关于 的多少不确定性。
生活例子:
• 只看数据,"冰淇淋销量"和"溺水人数"互信息很高, • 但如果已知"季节 = 夏天",两者几乎不再相关,
这说明 (季节)是 和 之间的混杂因子(confounder)。条件互信息是因果发现的重要工具——它能帮我们区分"真相关"和"伪相关"。
关键性质:
(链式法则的变形,第一次阅读可跳过)
七、数据处理不等式:信息不会凭空增长
这是信息论中最强大的结论之一,对理解深度学习至关重要。
假设信息像流水一样传递。在监督学习中,真实世界的过程是:标签 先生成原始数据 (比如"猫"这个标签生成了一张猫的照片),然后神经网络把 压缩成中间特征 ,最后试图预测 。这构成一个马尔可夫链:
数据处理不等式告诉我们:
直觉:信息在加工处理过程中只会丢失,不会凭空增加。任何中间表示 关于最终目标 的信息量,不可能超过原始输入 关于 的信息量。
这就像翻译:无论你怎么转述,听众获得的信息不可能比原作者知道的还多(除非你自己编造,但那是噪声而非信息)。
对AI的启示:深层网络不一定更好。如果中间层做了过多无关变换,信息会流失。好的神经网络应该像好的翻译——尽量保留关键信息,去除噪声。
⚠️ 注意:这里的箭头表示概率依赖关系(给定 后 与 条件独立),而非数据在神经网络中的前向传播方向。如果你在做的是自编码器(,目标是重建输入),那么数据处理不等式给出的是 ,而不是 。所以理解数据的流向很重要。
八、最小描述长度(MDL):奥卡姆剃刀的信息论版本
信息论不仅能衡量"预测有多准",还能衡量"解释有多简洁"。这引出了一个深刻原理——最小描述长度(Minimum Description Length, MDL)。
8.1 用"压缩文件"理解模型选择
想象你要给朋友发送一组数据和你的发现:
方案A:发送一份极简的规则"气温每升高1°C,冰淇淋销量增加100份",再加上少量"例外记录"。
方案B:发送一张巨大的表格,逐小时记录过去十年的销量,没有任何总结。
如果两组信息都能让对方还原出原始数据,哪个更好?显然是A——因为它更短、更通用。
MDL原理说:最优模型 = 能用最短总编码长度同时描述"模型本身"和"数据残差"的模型。
• :描述模型参数所需的比特数(模型越复杂,越长) • :在已知模型后,描述原始数据还需要多少比特(模型预测越准,残差越小,越短)
8.2 与AI的直接联系
MDL 是奥卡姆剃刀("如无必要,勿增实体")的数学化身。它解释了为什么以下技术能防止过拟合:
• 权重衰减(L2正则化):惩罚过大的参数,等价于偏好"参数描述更短"的模型 • Dropout:随机丢弃神经元,迫使网络学习冗余度更低的表示 • 网络剪枝:直接删除不重要的连接,压缩模型描述长度 • 早停(Early Stopping):在训练后期,模型开始"死记硬背"训练集的噪声, 虽继续下降但收益递减;而为了编码这些噪声特有的精细模式,模型有效复杂度(或参数描述精度)上升,总描述长度反而增加
直觉:一个过度复杂的模型(如用1000次多项式拟合10个数据点)虽然能把训练误差压到零,但"描述1000个系数"所需的比特数远超"描述少量残差"节省的比特数。MDL 告诉我们:过度拟合,本质上是在用一篇长篇小说解释一个简单道理。
📌 进阶说明:MDL 与贝叶斯推断
在贝叶斯框架下, 对应负对数先验概率(越简单的模型先验概率越高), 对应负对数似然。MDL 的"最短描述长度"等价于最大后验概率(MAP)估计。这再次展示了信息论与统计学的深刻统一。
九、交叉熵:你的预测有多"离谱"
9.1 天气预报员的故事
假设真实天气分布是:晴60%,雨30%,雪10%。
有两个天气预报员:
预报员A(很准):预测晴60%,雨30%,雪10%
预报员B(乱猜):预测晴10%,雨10%,雪80%
显然A更好。但如何用数学衡量"好"与"坏"?
9.2 交叉熵的定义
假设真实分布为 ,你的预测分布为 ,交叉熵为:
关键区别:
• 普通熵 :用真实概率计算,衡量系统本身的不确定性 • 交叉熵 :用真实概率加权,但用你的预测概率取对数,衡量"你的预测"与"现实"的差距
9.3 为什么交叉熵能衡量预测质量?
直觉:如果真实情况是"晴天"(),但你预测"晴天"的概率很低( 很小),那么 会非常大,意味着"惩罚"很重。
计算例子:
真实熵(系统本身的不确定性):
预报员A:
预报员B:
B的交叉熵远大于A,说明B的预测更差。
重要性质:,当且仅当 时取等号。也就是说,交叉熵永远不会小于真实熵,差距越大说明预测越差。
📌 进阶说明:在神经网络中,Softmax函数和交叉熵损失常常"搭档"出现。这里有一个工程上的重要细节:计算时不会先算Softmax概率再单独取对数,而是会把两个步骤合并,并在指数运算前减去最大值来防止数值溢出。数值稳定实现中常用的 Log-Sum-Exp 技巧(稳定计算 的通用方法)被融入其中。就像一个精明的会计,不会先算巨额数字再相除,而是全程保持数值在合理范围内。
📌 进阶说明:为什么神经网络爱用交叉熵?
我们已经知道KL散度:
在训练神经网络时,真实分布 (训练集的标签)是固定不变的,所以 是一个常数。因此:
最小化交叉熵,等价于最小化KL散度,等价于让预测分布 尽可能逼近真实分布 。 这就是为什么交叉熵损失在分类任务中是"天然"的选择——它实际上在回答:"在观测到的数据下,什么样的模型参数最可能生成这些结果?"(这也等价于最大似然估计。)
📌 进阶说明:贝叶斯视角下的统一
在在线学习中,假设你有一个先验信念 ,观测到新数据后更新为后验 。贝叶斯更新本身就是在最小化:
第一项要求"不要离先验太远"(奥卡姆剃刀),第二项就是交叉熵(要求解释数据)。这与变分自编码器(VAE)中"重构误差 + KL散度"的结构完全一致,揭示了贝叶斯推断与信息瓶颈的深层统一。
📌 进阶说明:逻辑回归中的交叉熵
在二分类问题(如判断邮件是否为垃圾邮件)中,交叉熵损失有一个更直观的形式。设真实标签 ,模型预测概率为 ,则:
这与信息论中的 完全等价,只是用标签 显式展开了。当 时,损失为 ;当 时,损失为 。这个形式帮助我们从传统机器学习(逻辑回归)平滑过渡到深度学习——它们本质上在用同一套"语言"衡量预测质量。
9.4 困惑度:交叉熵的"翻译"
在人工智能(尤其是自然语言处理)中,人们常用困惑度(Perplexity)来代替交叉熵:
直觉:困惑度表示模型面对下一个样本时的"有效选择数"。
• 如果困惑度是100,相当于每次预测时面对100个等概率选项 • 困惑度越低,说明模型越"不困惑",预测越准
十、KL散度:两个分布的"距离"
10.1 从交叉熵到KL散度
我们已经知道:
• :系统真实的不确定性 • :用 预测时的"总代价"
两者的差,就是因为预测不准而多付出的代价:
这就是 KL散度(Kullback-Leibler Divergence),也叫相对熵。
10.2 直觉理解
KL散度衡量的是:如果用分布 来近似真实分布 ,你会损失多少信息。
• : 完美等于 ,没有信息损失 • : 不等于 ,有信息损失 • 越大: 越差,信息损失越严重
10.3 天气预报员再比较
预报员A:
(完美预测,无信息损失)
预报员B:
(预测很差,损失了约1.72比特信息)
📌 进阶说明:KL散度不是真正的距离,因为它不满足对称性:。想象一下,用"专业术语"解释给"外行听"()和用"外行话"解释给"专家听"(),造成的信息损失是不一样的。
10.4 JS散度:让"距离"更公平
为了解决KL散度不对称的问题,人们提出了JS散度(Jensen-Shannon Divergence):
优点:
• 对称: • 有界:使用以2为底的对数时,取值范围在 比特之间,更适合比较
应用:在生成对抗网络(GAN)中,JS散度被用来衡量"生成数据分布"与"真实数据分布"的差异。
📌 进阶说明:JS散度在GAN中的陷阱
原始GAN(Goodfellow 2014)确实以JS散度为理论动机,但实践中存在一个严重问题:当生成器的分布与真实分布的支撑集几乎不重叠时,JS散度会恒等于 比特(最大值),导致梯度几乎为零。就像两个孤岛,无论怎么移动,只要没接触,"距离"看起来都一样,生成器就不知道该往哪个方向改进了。
这也是后来 WGAN(Wasserstein GAN) 改用 Earth Mover's Distance(推土机距离)的原因——后者在分布不重叠时依然能提供有意义的梯度。这个例子告诉我们:理论上的"好度量"不等于优化上的"好损失函数"。
十一、Fano不等式:信息不足时,错误不可避免
信息论不仅告诉我们"信息能做什么",还告诉我们"信息不足时必然发生什么"。
Fano不等式给出了在分类问题中,错误率的下界:
其中:
• 是分类错误率 • 是类别总数 • 是二元熵函数
直觉:如果模型提取的特征 与标签 的互信息 太小(即条件熵 太大),那么无论后续分类器多么强大,错误率必然有一个不可突破的下界。
对AI的启示:这从信息论角度证明了"特征工程/表示学习"的根本重要性——如果原始信息在特征提取阶段就丢了,后面的网络再深、参数再多,也补不回来。数据处理不等式说信息不会增长,Fano不等式说信息不足时错误必然发生。两者合起来,构成了表示学习的理论根基。
十二、信息论在人工智能中的应用
12.1 决策树:用信息增益选择最佳特征
决策树要回答:用哪个特征来分裂数据最好?
信息增益 = 分裂前的熵 - 分裂后的条件熵
直觉:选择那个能让你"最确定"目标变量的特征。信息增益越大,说明这个特征越有用。
例子:判断"是否打网球"。
• 如果按"天气"分裂后,子集很"纯"(大多是"是"或大多是"否"),则条件熵很低,信息增益很大 → "天气"是好特征 • 如果按"日期"分裂后,子集依然混乱,则条件熵很高,信息增益很小 → "日期"是坏特征
📌 进阶提示:经典算法对分裂标准的选择有所不同:
• ID3 算法使用信息增益(Gain) • C4.5 算法使用信息增益率(Gain Ratio)来修正ID3偏向多值特征的缺陷 • CART(Classification and Regression Trees)使用基尼指数(Gini Index)
信息增益有一个"小毛病"——它天然偏向取值较多的特征。比如用"用户ID"分裂,每个子集只有一个人,条件熵为0,信息增益最大,但这毫无泛化能力。因此C4.5使用信息增益率来惩罚取值过多的特征:
其中分裂信息定义为:
是按特征 的第 个取值分裂后的子集样本数, 是总样本数。分母 衡量的是"这次分裂产生的子集大小分布"的熵。特征取值越多,子集越细碎, 越大,信息增益率就越小,从而避免了偏向性。
12.2 神经网络:交叉熵损失函数
在分类任务中(比如识别手写数字0-9),神经网络的输出是一个概率分布 (对每个类别的预测概率),而真实标签是一个分布 (真实类别概率为1,其他为0)。
训练目标:让 尽可能接近 。
损失函数就是交叉熵:
因为 是one-hot(只有一个1,其余为0),所以实际上:
直觉:如果网络对正确类别的预测概率 很低,损失就会很大( 小数 = 大数),网络就会受到"惩罚"并调整参数。
📌 进阶提示:最小化交叉熵,等价于最大化对数似然函数(Maximum Likelihood Estimation)。这也是为什么交叉熵损失在分类任务中是"天然"的选择——它实际上在回答:"在观测到的数据下,什么样的模型参数最可能生成这些结果?"
12.3 变分自编码器(VAE):用KL散度约束隐空间
VAE是一种生成模型,它学习一个隐变量 来代表数据。
为了防止 学得太"任性",VAE要求 的分布 不能偏离标准正态分布 太远。这个约束就是通过 KL散度 实现的:
直觉:让隐空间保持"规整",这样我们才能从标准正态分布中采样并生成新数据。
📌 进阶说明:重参数化技巧(Reparameterization Trick)
VAE有一个核心工程难题: 是从随机分布 中采样得到的,而采样操作本身不可微,梯度无法直接回传到编码器网络。
解决方法是重参数化:把随机性"外包"出去。设编码器输出均值 和标准差 ,则:
这里 是从标准正态分布中采样的外部噪声,而 和 是确定性网络,可以正常求梯度。这就像:你要做一道随机口味的菜,但把"随机选口味"交给一个外部转盘,你自己只负责根据选中的口味调配配料——这样你的厨艺(梯度)就能不断精进了。
📌 进阶说明:从贝叶斯角度看,VAE的损失函数
📌 进阶说明:ELBO(证据下界)
严格来说,VAE的目标不是直接"最小化重构误差+KL散度",而是最大化证据下界(Evidence Lower Bound, ELBO)。对于给定数据 ,真实对数似然 通常难以计算。ELBO 提供了一个可计算的下界:
等式右边恰好是 "重构期望 KL散度"。因此,最小化 "重构误差 + KL散度" 等价于最大化 ELBO,也就是在近似推断的框架下,尽可能让变分分布 逼近真实的后验 。
12.4 信息瓶颈(Information Bottleneck)与信息平面
深度学习中的一个理论框架:神经网络在压缩输入信息(去除噪声)的同时,保留与输出标签相关的信息。
目标是最小化:
其中 是中间表示。
直觉拆解:
• 第一项 :要求 尽量压缩 的信息(不要死记硬背所有细节) • 第二项 :因为前面有负号,最小化它等价于最大化 ,即要求 保留预测 的关键信息
这就像人类学习——不是死记硬背所有细节(高 ),而是提取关键模式(高 )。结合前面的数据处理不等式,我们知道 无论如何都不可能超过 ,所以好的网络要在压缩和保留之间找到平衡。
📌 进阶说明:信息平面
Tishby等人在2015年提出了一个漂亮的实证框架——信息平面(Information Plane)。他们追踪神经网络训练过程中,每一层 的两个坐标:
• 横轴: —— 该层保留了多少原始输入信息 • 纵轴: —— 该层保留了多少标签信息
发现:训练过程分为两个阶段:
1. 拟合阶段: 快速上升(学会任务) 2. 压缩阶段: 缓慢下降(去除输入中的噪声,提取本质特征)
这与"压缩和保留之间找平衡"形成了漂亮的实验呼应。
📌 进阶说明:关于"压缩阶段"的学术争议
信息平面的发现令人兴奋,但近年来的研究表明,压缩现象并非在所有网络中都出现。Saxe等人(2019)发现,在使用ReLU激活和批量归一化(BatchNorm)的现代深度网络中, 可能并不会在训练后期下降。这意味着"压缩"可能是特定架构(如饱和激活函数)下的现象,而非深度学习的普遍规律。尽管如此,"在压缩与保留间找平衡"依然是理解表示学习的深刻直觉。
12.5 特征选择:用互信息找到"好"特征
除了决策树,互信息本身就可以直接用于挑选有用的特征。
方法:计算每个特征 与目标标签 的互信息 ,选择互信息高的特征保留,低的丢弃。
为什么这比相关系数更好?
• 相关系数只能发现线性关系(比如"温度越高,冰淇淋销量线性增加") • 互信息能发现任何统计依赖关系(比如"温度适中时销量最高,太高或太低反而下降"这种非线性关系)
生活直觉:互信息就像一位不挑食的美食家,不管是清淡的线性关系还是复杂的非线性关系,只要两者"有关联",它都能尝出来。
📌 进阶说明:警惕冗余——mRMR算法
互信息排序有一个隐患:高互信息的特征可能高度冗余。比如"身高"和"脚长"都与"体重"高相关,同时选用两者并不会比只选其一带来更多信息。
mRMR(max-Relevance min-Redundancy)算法同时优化两个目标:
直觉:mRMR 不仅要求每个特征单独"有用"(高 ),还要求特征之间"不重复"(低 )。这就像组建一支球队:不仅每个球员要厉害,还要位置互补,不能全是前锋。在基因选择、高维医疗数据分析中,mRMR 是标准工具。
12.6 对比学习:用互信息构建世界模型
这是近年来人工智能(尤其是多模态大模型如CLIP)最核心的训练思想之一。
问题设定:你有一堆图片和文字描述。如何让机器学会"这张图片对应这段文字"?
核心思想:最大化"正确配对"之间的互信息,同时让"错误配对"的互信息尽量小。
InfoNCE损失函数(互信息的下界估计):
直觉:
• 是一张图片, 是它正确的文字描述(正样本) • 是其他无关的文字(负样本) • 训练目标就是让"正确配对"的相似度 远高于"错误配对"的相似度 • 温度参数 控制"挑剔程度": 越小,模型对错误配对越严厉
结果:训练好的模型能把图片和文字映射到同一个语义空间,让你可以用自然语言搜索图片,或者用图片生成描述。这一切的数学根基,就是互信息。
📌 进阶说明:为什么不用直接计算互信息?
互信息的定义看起来简单,但在高维连续空间(如图像、文本的嵌入向量)中,、、 的精确密度几乎是无法计算的。因此,人们发展出了各种估计方法:
• InfoNCE:通过对比正负样本,估计互信息的下界 • MINE(Mutual Information Neural Estimation):用神经网络估计DV下界 • CLUB 等变分方法:估计互信息的上界
这也解释了为什么对比学习(如CLIP、SimCLR)不直接优化 ,而是优化InfoNCE——因为直接算不出来,只能用巧妙的下界估计来间接最大化它。
📌 进阶说明:互信息下界与对比学习的理论根基
对比学习之所以有效,本质上是因为InfoNCE是互信息的一个(渐近紧的)下界估计。负样本数量越多,对配分函数(分母中的求和项)的估计越准确,这个下界就越接近真实的互信息。这也解释了为什么对比学习对"负样本数量"极其敏感——负样本太少,下界估计太松,模型学到的语义对齐就不够精确。从信息论角度看,对比学习不是在"猜"相似度,而是在用统计方法逼近一个无法直接计算的信息量。
12.7 熵正则化:让AI保持"好奇心"
信息论不仅能"度量"系统,还能作为优化目标直接指导AI的行为。这就是熵正则化(Entropy Regularization)。
核心思想:在训练目标中主动加入一个"熵项",强迫模型不要过早地"锁定"在少数几个选择上,而是保持对多种可能性的开放态度。
具体形式:
其中 是模型的策略/预测分布, 是控制"好奇心强度"的系数。
三个经典应用场景:
1. 强化学习(Soft Actor-Critic)
智能体在迷宫中探索时,如果总是选择"最确定"的路,可能陷入局部最优。通过在奖励中加入策略熵 ,智能体会被鼓励尝试新动作。这就像老师不仅奖励答对的学生,还奖励"提出有趣问题"的学生——保持探索才能发现更好的策略。
2. 知识蒸馏(Knowledge Distillation)
教师模型输出的是"软化"的概率分布(高熵),比如"这只猫有70%像猫、20%像老虎、10%像狮子"。学生模型不仅学习"正确答案",还学习这种"模糊但富含信息"的分布。高熵的软化标签传递了暗知识(Dark Knowledge)——类别之间的相似性关系。
3. 语言模型采样
当你让GPT生成文本时,"温度参数" 就是在控制熵:
• :低熵,模型总是选概率最高的词,输出刻板、重复 • 适中:输出流畅且有变化 • :高熵,模型近似随机选词,输出混乱
直觉:熵正则化让AI明白——有时候,"不确定"本身就是一种智慧。过早地消除所有不确定性,可能意味着错过了更好的答案。
十三、信息论与数据压缩:霍夫曼编码与算术编码
信息论最经典的应用之一是数据压缩。这里介绍两个美丽而实用的算法,并解释压缩极限背后的微观机制。
13.1 霍夫曼编码
核心思想:给高频符号分配短编码、低频符号分配长编码,使得平均编码长度逼近熵 。
关键性质:霍夫曼编码是一种前缀码(prefix-free),即没有任何编码是另一个编码的前缀。这保证了解码时不会有歧义——你读到某个编码就能立刻确定它代表什么,不需要看后面的内容。
例子:某文件中只有A、B、C、D四个字母,出现频率分别为:A:50%,B:25%,C:15%,D:10%。
如果用固定长度编码,每个字母需要2比特(00, 01, 10, 11)。
霍夫曼编码会动态分配:
• A(最常见):1比特,比如 "0" • B:2比特,比如 "10" • C:3比特,比如 "110" • D(最罕见):3比特,比如 "111"
而该分布的熵 比特。你看,霍夫曼编码的平均长度几乎等于熵!
深刻结论:对于独立同分布的符号序列,当序列长度足够长时,每个符号的平均编码长度不可能低于熵。霍夫曼编码作为前缀码,其平均长度满足 。没有任何无损编码方案能突破这个极限。
13.2 算术编码
霍夫曼编码有一个隐含限制:每个符号至少分配1比特。如果某个符号概率极高(比如99%),霍夫曼编码依然要给它至少1比特,造成浪费。
算术编码突破了"整数比特"的限制。它把整个消息看作一个区间 内的子区间,根据每个符号的概率不断细分区间。最终用 区间内的一个二进制小数(可表示为足够长的比特串)来编码整条消息。
优势:算术编码的平均长度可以无限逼近熵,不受"1比特下限"约束。在概率分布极不均匀时(如文本中某些字母出现频率远高于其他),算术编码比霍夫曼编码更高效。
应用:现代压缩标准如 JPEG 2000 和 H.264/HEVC 视频编码,底层都使用了算术编码或其变体。
📌 进阶说明:有损压缩——如果允许一点误差
霍夫曼编码和算术编码都是无损压缩(解压后100%还原)。但生活中更多场景允许一点误差:
• JPEG压缩照片,丢掉人眼不敏感的高频细节 • MP3压缩音乐,丢掉听不到的频率成分 • 视频编码,只存储帧与帧之间的变化
率失真理论(Rate-Distortion Theory)回答的就是:在允许失真不超过 的前提下,压缩率最低能到多少?
这个理论对现代AI至关重要:
• VAE(变分自编码器)的损失函数 ,本质上就是在做率失真优化:重构误差 ≈ 失真,KL散度 ≈ 码率 • 信息瓶颈也可以看作率失真的一种变体:在压缩和保留之间找平衡
13.3 渐进均分性(AEP)与典型集:压缩极限的微观解释
霍夫曼编码和算术编码都能逼近熵,但为什么熵就是极限?渐进均分性(Asymptotic Equipartition Property, AEP)给出了微观解释。
核心思想:当你抛足够多次硬币(或发送足够长的消息)时,几乎所有可能出现的结果,都集中在一个特殊的集合里——"典型集"。
具体含义:
• 抛 次公平硬币,理论上共有 种序列 • 但AEP告诉我们:当 很大时,大约有 个序列是"典型的"——每个典型序列出现的概率几乎相等,约为 • 对于公平硬币,几乎所有序列都是典型的;但对于不均匀分布(如99%正面),典型集非常小,只有约 个序列
为什么这解释了压缩极限?
假设你要为所有可能的 长序列编号:
• 笨办法:需要 比特(为全部 个序列编号) • 聪明办法:只需为"典型集"中的 个序列编号,用 个比特就够了 • 非典型序列极少出现,可以忽略或用前缀标记
直觉:AEP 告诉我们,现实世界虽然充满可能性,但"大概率发生的事情"其实只占可能性空间的一小块。熵 衡量的就是这块"典型区域"的大小。压缩的本质,就是只给"典型事件"分配短编码,因为其他事件几乎不会发生。
📌 进阶说明:AEP 是香农信源编码定理的核心,也是现代字典编码(如LZ77、ZIP)的理论基础——它们不需要预先知道概率分布,而是在传输过程中动态构建"典型集"(常用短语字典)。
十四、香农信道容量:噪声下的通信极限
信息论创始人香农(Claude Shannon)最伟大的贡献之一,是证明了噪声干扰下的通信存在理论极限。
14.1 生活中的直觉
想象你在一个嘈杂的派对上和朋友说话:
• 如果音乐声不大(噪声小),你们可以讲得快一些 • 如果音乐震耳欲聋(噪声大),你们必须讲得慢一些、重复多次,否则对方听不清
有没有一个"最高语速",超过它必然出错,低于它就能可靠沟通?
香农证明:存在这样的极限,而且它可以精确计算。
14.2 信道容量公式
其中:
• 是你发送的信号 • 是对方接收到的信号(被噪声干扰后) • 是信道容量,单位是比特/秒
直觉:信道容量就是"发送端和接收端之间最大可能的互信息"。噪声越大, 越小,容量 就越低。
香农第二定理:只要通信速率低于 ,就存在某种编码方式,能让错误率任意小;如果超过 ,无论用什么编码,错误都不可避免。
14.3 高斯信道的具体公式
对于最常见的加性高斯白噪声信道(AWGN,比如WiFi、5G、深空通信),香农给出了闭式解:
其中 是信号功率与噪声功率之比(信噪比)。
直觉:在高信噪比条件下,信噪比每增加一倍(提高3dB),容量增加约0.5比特。这个公式是现代无线通信的理论天花板——无论5G还是未来的6G,都无法突破这个极限。
📌 进阶说明:实值 vs. 复值信道
上述公式 适用于实值加性高斯白噪声(Real AWGN)信道。在无线通信等场景中,信号通常是复值(Complex AWGN,同时携带幅度和相位信息),此时系数变为 而非 :
这是因为复值信号相当于两个独立的实值维度(实部和虚部),总容量翻倍。
📌 进阶说明:香农-哈特利定理(Shannon-Hartley Theorem)
在实际通信系统(如WiFi、5G)中,我们更关心的是每秒能传输多少比特,而非"每个信道使用传输多少比特"。香农-哈特利定理给出了连续时间形式:
其中 是信道带宽(Hz)。
直觉:为什么带宽越大网速越快?因为带宽 是容量公式中的乘数因子。5G比4G快,很大程度上是因为它使用了更大的带宽。信噪比和带宽共同决定了通信的理论极限——工程师的所有努力,都是在逼近这个天花板。
14.4 对AI的深远启示
这个定理看似关于无线电,实则深刻影响了AI的设计理念:
神经网络 = 信息处理管道
• 输入层 经过层层变换 到达输出 • 每一层都像一次"有噪声的通信"(因为参数有限、激活函数截断信息) • 信息瓶颈理论、自编码器、甚至Transformer的设计,都可以看作是在"噪声管道"中尽量保持
一句话总结:好的AI模型,就是一个在层层噪声中依然能高效传递关键信息的"通信系统"。
十五、香农信息与语义信息:一个哲学澄清
文章开头我们用"震惊程度"解释信息,这很生动,但需要补充一个重要澄清:
香农信息论完全不关心"语义"(意义)。
• 无论是"明天地震"还是一串随机数字"#@$%&",只要概率相同,信息量就相同 • 信息论回答的是"传输什么"和"压缩多少",而不是"意味着什么" • 一个完全无意义的随机字符串,可以有很高的香农信息(因为你无法预测它)
这对AI意味着什么?
今天的神经网络(如GPT)能处理海量文本,但它最初学到的只是"下一个词的概率分布"——纯粹的香农信息。所谓的"语义理解"和"推理能力",是在足够大的规模上涌现出来的模式,而非信息论直接赋予的。
这就像:你学会了一门语言的所有语法和词汇(高概率预测能力),但"理解诗歌的意境"是另一回事。信息论是前者的基石,而后者需要更多。
十六、总结:信息论的核心直觉地图
| 信息量 | ||
| 信息熵 | ||
| 联合熵 | ||
| 条件熵 | ||
| 链式法则 | ||
| 条件熵性质 | ||
| 互信息 | ||
| 互信息(KL视角) | ||
| 条件互信息 | ||
| 数据处理不等式 | ||
| MDL原理 | ||
| Fano不等式 | ||
| 交叉熵 | ||
| 困惑度 | ||
| KL散度 | ||
| JS散度 | ||
| 信道容量 | ||
| 高斯信道容量 | ||
| 香农-哈特利 | ||
| AEP/典型集 |
核心关系链
互信息 = 原本的不确定性 - 知道对方后的不确定性 = 两者信息之和 - 合在一起的总信息
互信息 = 联合分布与"假设独立时的分布"之间的KL散度
KL散度 = 用Q预测的代价 - 完美预测的代价(多付出的代价)
联合不确定性 = X的不确定性 + 已知X后Y的不确定性
链式法则:一句话的总不确定 = 逐词条件不确定的累加
十七、写在最后
信息论看似抽象,但它的每一个概念都扎根于最朴素的直觉:
• 惊讶程度 → 信息量 • 不确定程度 → 信息熵 • 彼此透露多少秘密 → 互信息 • 已知第三者后还剩多少关联 → 条件互信息 • 预测有多不准 → 交叉熵 / KL散度 • 信息不足必然犯错 → Fano不等式 • 压缩的极限 → 熵 / AEP / 典型集 • 噪声下的通信极限 → 信道容量 • 信息不会凭空增长 → 数据处理不等式 • 简洁与准确的平衡 → MDL原理 • 保持开放与好奇 → 熵正则化
人工智能的本质,就是让机器学会压缩(提取关键信息)、预测(减少不确定性)、表示(保留互信息)、关联(对比学习中的跨模态对齐)和选择(在探索与利用间平衡)。信息论正是这一切的理论基石。
你不需要记住每一个公式,但希望你能带走这些直觉:
• 当你看到交叉熵损失函数时,能想到那个乱猜的天气预报员,并知道它其实在让预测分布逼近真实分布; • 当你看到决策树分裂时,能想到那个让你更确定的特征,并知道信息增益率在惩罚"太细碎"的分裂; • 当你看到语言模型的困惑度时,能想到"模型还有多少个等概率选择"; • 当你看到深度网络时,能想到"信息在层层传递中有没有丢失",并知道自编码器和监督学习的流向是不同的; • 当你看到对比学习时,能想到"它在间接最大化互信息",因为直接计算太难了; • 当你看到模型性能瓶颈时,能想到Fano不等式——也许不是网络不够深,而是特征提取阶段就已经丢了太多信息; • 当你看到模型过拟合时,能想到MDL——也许不是模型不够复杂,而是它用了一篇长篇小说来解释一个简单的道理; • 当你看到AI探索新策略时,能想到熵正则化——有时候,保持"不确定"才能发现更好的路。
信息论告诉我们:知识就是消除不确定性的能力。而学习,就是不断减少对世界惊讶程度的过程。
十八、进阶附录:连续世界的微分熵
本文讨论的都是离散随机变量。对于连续随机变量(比如身高、温度),熵的定义变为:
这称为微分熵(Differential Entropy)。
重要区别:微分熵不是真正的熵。它与离散熵有两个关键不同:
1. 可以为负数。例如,均匀分布 的微分熵为 比特(或约 纳特)。这是因为连续变量的"概率密度"可以大于1,导致 为负。 2. 依赖于坐标系。如果你把变量 缩放为 ,微分熵会改变。这在离散熵中不会发生。
那什么在连续情况下依然可靠? 互信息 和KL散度。它们依然保持非负性,且不随坐标变换而改变。在机器学习中使用微分熵时(如VAE中的KL散度),这些细节通常由框架自动处理,不影响直观理解。
📌 微分熵与离散熵的量化联系
如果把连续变量 以步长 进行量化,得到离散变量 ,则:
直觉:离散熵 = 微分熵 + 量化精度带来的额外信息。当 时,离散熵趋于无穷(因为需要无穷多比特才能精确描述连续值),但微分熵 保持有限。这也解释了为什么微分熵可以为负——它描述的不是"绝对信息量",而是"相对于均匀参考测度的信息密度"。
📌 关于微分熵"负值"的进一步澄清
初学者常困惑:"信息量为负是什么意思?是不是信息越少越好?"
不是的。微分熵的负值只是数学定义的结果,不代表"信息少于零"。想象你在 区间内随机取一个点:因为区间很窄,你很容易猜中大致位置(不确定性小),所以微分熵为负——这表示"比单位区间上的均匀分布更集中"。如果你把区间缩到 ,微分熵会变成 ,负得更多,因为确定性更高。所以微分熵越负,反而表示分布越集中、越确定——这与直觉是一致的。

文章精选:
1.编程时代已终结!ClaudeCode创始人断言:编程就像发短信一样自然,首曝个人最新工作流:自创Sloop循环,单日PR达150!传统SaaS护城河崩掉
