1.1 先忘掉公式,看一个场景
假设你要从北京给朋友发电报,告诉他今天的天气。
你们约定了一套"天气编码方案":
如果编码方案 Q 完美匹配真实概率 P(高频天气用短码,低频天气用长码),那么发一条天气电报平均花费的比特数就是 P 自身的熵 H(P)。
但你手上的编码方案 Q 不一定完美——你可能高估了"多云"的概率,给"多云"分配了太短的码,低估了"晴"的概率,给了太长的码。
交叉熵 H(P, Q) 衡量的就是:用 Q 这套编码方案去描述 P 这个真实世界,平均多花多少比特。
如果用最优方案发一条电报要 1.5 比特,你的方案 Q 平均要 2.3 比特——那 0.8 比特的多余开销,就是模型预测偏离真实分布的代价。

1.2 数学定义
H(P, Q) = −Σ_x P(x) · log Q(x)
P(x) 是真实分布(ground truth),你没法改变它 Q(x) 是模型预测的分布,你需要优化它 值越小,Q 越接近 P 一句话翻译:交叉熵就是"用你猜的分布 Q 去编码真实分布 P,平均每个事件要花多少比特"。猜得越准,花的比特越少。
1.3 与 KL 散度的关系
H(P, Q) = H(P) + D_KL(P ‖ Q)
H(P) 是真实分布自身的熵——一个固定值,跟模型无关 D_KL(P‖Q) 是 KL 散度,衡量 Q 偏离 P 的程度所以 最小化交叉熵 = 最小化 KL 散度——本质上就是在让模型的预测分布逼近真实分布。
交叉熵和 KL 散度之差只是一个常数,优化它们得到的结果一模一样。
1.4 为什么不用 MSE?——梯度消失的故事
训练神经网络时,为什么不用最简单的均方误差(MSE)?来看梯度:
MSE + sigmoid:
∂L/∂w ∝ σ′(z) · (y_pred − y_true)
当预测输出接近 0 或 1 时,sigmoid 的导数 σ(z) 趋近于 0——梯度消失,模型学不动了。
就像一个学生,越接近正确答案越不努力。
交叉熵 + sigmoid:
∂L/∂w ∝ (y_pred − y_true)
σ(z) 被完美消掉了!误差越大梯度越大,学得越快——这就是交叉熵的天然优势。
模型越错越努力,越对越从容。
本质:交叉熵和 sigmoid 是一对"天生搭档"。数学上,sigmoid 的导数和交叉熵的 log 项恰好互相抵消。
这不是巧合——交叉熵的定义就是为了让概率模型的梯度"干净"。
历史的本质
香农提出"怎么量信息" → Kullback-Leibler 提出"怎么量差异" → 编码论者用它压数据 → 神经网络工程师发现 MSE 不好使 → 交叉熵因为梯度干净被选为损失函数 → 从此所有分类模型的标配从通信工程的工具,变成了驱动 ChatGPT 训练的燃料。
香农当年在贝尔实验室画公式的时候,大概想不到 70 年后他定义的东西会是人工智能的发动机。

前面我们把交叉熵当作一个"算损失的公式"。
但换个视角看,事情会变得更深——概率分布不是散落在平面上的点,它们生活在一个弯曲的空间里。
3.1 概率分布构成一个弯曲的空间
每一个概率分布,都可以看作高维空间里的一个点:
抛一枚硬币,正面概率 p 从 0 到 1 ——所有可能的伯努利分布就是一条线段 三分类问题的所有预测分布 (p₁, p₂, p₃),满足 p₁ + p₂ + p₃ = 1 ——这是一个三角形(概率单纯形) 所有可能的 k 类分类分布 —— 一个 (k-1) 维的弯曲流形 类比:地球表面是一个弯曲的二维曲面,任何位置都可以用经纬度表示。概率分布的空间也一样——每个分布是一个"位置",参数是"坐标",但这个空间本身是弯曲的。
这个空间不是欧几里得的。
两点之间"直线最短"在概率空间里不适用——你需要用 Fisher 信息矩阵定义距离。

3.2 Fisher 信息矩阵 = 概率空间的"曲率计"
Fᵢⱼ = E[ ∂log p/∂θᵢ · ∂log p/∂θⱼ ]
一句话:Fisher 矩阵告诉你——当你微调参数 θ 时,概率分布到底变了多少。参数变同样的量,在概率空间里走的"距离"可能完全不同。
当 θ 附近发生一个微小扰动 dθ 时,KL 散度近似为:
D_KL(p_θ ‖ p_{θ+dθ}) ≈ ½ · dθᵀ · F(θ) · dθ
这就是概率空间里的"勾股定理"——Fisher 矩阵扮演了度量的角色,就像地球上的曲率决定了"往前走 1 公里经度变化多少"。
克雷默-拉奥下界(Cramér–Rao bound)本质就是这个度量的推论——参数估计的方差下界由 Fisher 度量的逆给出。
你能估计得多准,取决于概率空间在你当前位置有多"陡"。
3.3 KL 散度 = 流形上的"距离"
KL 散度在概率流形上扮演了"距离"的角色——但它不对称,D_KL(P‖Q) ≠ D_KL(Q‖P)。
这其实很自然:用 Q 去近似 P 的代价,不等于用 P 去近似 Q 的代价。
KL 散度是 Bregman 散度的一种。
在 dually flat(对偶平坦)的流形上,KL 散度满足一个"弯曲版"的毕达哥拉斯定理:
D_KL(P ‖ R) = D_KL(P ‖ Q) + D_KL(Q ‖ R)
为什么这个重要? 这个"弯曲勾股定理"是 EM 算法、变分推断收敛性的几何基础。它保证了你每次迭代都在向正确答案靠近,不会走回头路。
3.4 对偶平坦结构——两套坐标系看同一个流形
这是信息几何最深刻的部分。
概率分布流形有两套平行的仿射坐标系,你可以从两个角度描述同一个分布:
这两个坐标系不是正交的,而是 Legendre 对偶——转换关系由一个叫 log-partition 的函数 ψ(θ) 的梯度给出:
η = ∇ψ(θ)
直觉:就像地图投影——同一个地球,可以用墨卡托投影(经纬线是直线),也可以用等面积投影(面积比例正确)。两套坐标系都是"对的",只是"平坦"的东西不同。
在信息几何中,KL 散度可以写成 Bregman 散度:
D_KL(P ‖ Q) = ψ(θ_Q) − ψ(θ_P) − η_P · (θ_Q − θ_P)
这意味着:
- 在 e-平坦坐标下,沿直线走 = 指数族的混合过程
- 在 m-平坦坐标下,沿直线走 = 期望值的线性插值
交叉熵 H(P, Q) = D_KL(P‖Q) + H(P),最小化交叉熵 = 沿 e-测地线向目标 P 做投影。
4.1 直觉:平面地图上的直线 ≠ 球面上的最短路径
从北京飞到纽约。
你拿了一张平面世界地图(墨卡托投影),在上面画了一条直线。
但实际飞机飞的是大圆航线(Great Circle)——那条路线在地图上看是弯曲的,在地球表面上才是最短路径。
平面地图上的"直线" ≠ 球面上的"最短路径"。
这就是自然梯度和普通梯度的全部直觉。

4.2 参数空间 ≠ 概率空间
训练神经网络时,你有参数 θ = (w₁, w₂, ..., wₙ)。
普通梯度下降沿着参数空间里损失下降最快的方向走。
但参数空间是欧几里得的(平的),而你实际在意的是"概率分布在变",概率分布的空间是弯曲的。
参数从 0.001 → 0.01,预测概率可能变化很小 参数从 0.49 → 0.50,预测概率变化极大同样的参数步长,对概率分布的影响完全不一样。
参数空间的"距离"和概率空间的"距离"不对齐。
类比:你在北极附近走 1 公里经度,和赤道上走 1 公里经度,在地球表面上走的距离完全一样——但在经纬度坐标里,北极走 1 公里经度意味着经度值变化了 360°,赤道上只变了 0.01°。参数空间就像经纬度——同样的坐标步长,实际距离取决于你在哪里。
4.3 自然梯度下降
θ_{t+1} = θ_t − η · F(θ_t)⁻¹ · ∇L(θ_t)
自然梯度就是在概率分布的弯曲流形上,用 Fisher 矩阵当"罗盘",沿着真正的"最短路径"下山。
关键洞见:自然梯度做的事,其实就是把 Fisher 矩阵求逆后乘在普通梯度上——相当于"先纠正空间的弯曲,再找最陡方向"。就像在球面上导航,你得先知道曲率,才能找到真正的大圆航线。
EM 算法(Expectation-Maximization)每次迭代做两件事:
E 步:固定模型参数,计算隐变量的后验分布 M 步:固定后验分布,更新模型参数最大化期望对数似然看起来是两个平平无奇的计算步骤。
但在信息几何里,这是一场精彩的"交替投影"舞蹈:
E 步 = m-投影:当前模型分布向数据分布沿 m-测地线做投影——"站在当前模型上,朝数据的方向迈一步" M 步 = e-投影:数据经验分布在模型子流形上沿 e-测地线做投影——"站在数据的地盘上,朝模型能表示的范围迈一步" 类比:想象你在一个弯曲的山谷里,想到达谷底的一棵特定的树。E 步是"朝树的方向走一步",M 步是"在你能走的路上调整方向"。
两步交替,永远在靠近。
EM 算法就是在概率流形上的交替投影! 每一次迭代都减小 KL 散度,而且由于"弯曲勾股定理"的保证,收敛是单调的。

自然梯度很美,但 Fisher 矩阵求逆是 O(n³),现代神经网络动辄几亿参数,直接算不现实。
工程上的近似方案:
ADAM 的"自适应学习率"本质上就是对角近似的自然梯度——在每个参数维度上独立估计 Fisher 对角元的倒数。
思考:ADAM 为什么这么好用?在信息几何的视角下答案很清楚:它用极低的计算开销(对角近似),近似了自然梯度的核心好处("不同参数维度用不同步长"),在弯曲的概率空间里几乎走对了方向。最小化交叉熵的过程,本质上是让模型的预测分布在流形上沿着最短的 e-测地线逼近真实分布。
声明:本文内容仅代表作者个人观点,与本站立场无关。
如有内容侵犯您的合法权益,请及时与我们联系,我们将第一时间安排处理。