LESSON 06 · 卷 基础数学

概率与信息

神经网络的输出为什么叫「概率」?——从频率到交叉熵损失

第 1 站

「70% 降雨」到底什么意思

天气预报说:「明天降雨概率 70%。」可第二天要么下雨、要么没下,哪来的「70%」? 这个数字其实描述的是一种长期频率:在所有和明天气象条件相似的日子里, 大约七成最后下了雨。概率不是对单独某一天的承诺,而是「重复很多次,某个结果占多大比例」

掷骰子也一样:掷 1000 次,数字 3 出现了 168 次,我们就说「3 的概率约 0.168」。 一个概率,就是一个事件的长期占比。

但很多时候,我们关心的不是一个结果,而是所有可能结果各占多少。 这正是 AI 里反复出现的场景。比如一个语言模型,你输入「今天天气很」, 它要猜下一个字——它不会只蹦一个答案,而是给词表里每一个候选词都打一个分:

图 6-1模型对「今天天气很 ___」之后一个词的预测(示意):P(下一个词 | 上文)。它不是给一个答案,而是给出一整组数——每个候选词配一个分数,每个 ,全部加起来

这一整组数有两条铁律:每个都 ≥ 0(占比不可能是负的),全部加起来正好 = 1(总会出现某一个词)。满足这两条的一组数,就叫一个概率分布(probability distribution)——它是对「所有可能结果各占多少」的完整描述。

这也顺带回答了本课的标题问题:神经网络的输出为什么叫「概率」?因为它吐出来的就是这样一组非负、加和为 1 的数。 (至于怎么把任意一堆实数挤成这种形状,是第 11 课 Softmax 的活儿,这里先不展开。)

第 2 站

信息量:越意外的消息越「值钱」

有了「概率」,下一个问题是:一条消息到底带来多少「信息」? 先靠直觉感受一下。 朋友跑来告诉你两件事:

  • 「明天太阳会从东边升起」——你眉头都不抬,等于没说
  • 「楼下小卖部老板昨晚中了五百万」——你瞬间瞪大眼,信息量爆炸

区别在哪?第一件事几乎必然发生(概率≈1),第二件事极其罕见(概率极小)。一件事越「出乎意料」,它一旦成真带来的信息就越多。这就是信息论的核心直觉。 把它写成公式,就是事件 x 的信息量(用它的概率 p 来算):

为什么偏偏是 −log,而不是别的?除了「概率越小、数值越大」这个起码要求, 它还满足一条非常关键的性质:两条互不相干的消息,信息量应该能直接相加。 而 log 恰好能把「概率相乘」变成「信息相加」,天造地设。先用三个极端值检验一下它靠不靠谱:

图 6-2信息量 随概率单调下降。必然发生的事()信息量为 0;越罕见( 越小),信息量越往上冲。
  • p = 1(太阳东升):I = −log 1 = 0。毫不意外,零信息。
  • p = 0.5(抛一次硬币):I = −log 0.5 = 1 比特。一个「是/否」的信息。
  • p = 0.001(中大奖):I ≈ 10 比特。极度惊讶,信息量巨大。

顺带说一句单位:用以 2 为底的对数,单位是比特(bit),正好对应「需要几个 0/1 才能表达这条消息」; 深度学习里更常用自然对数(底数 e),单位叫奈特(nat)。两者只差一个固定常数,性质完全一样。

为什么用 log,而不是「1 − p」之类更简单的式子来衡量意外程度?提示:想想两条独立消息的信息量该怎么合并。
第 3 站

熵:整个分布平均有多难猜

信息量说的是「某一个具体结果」有多意外。可如果想衡量「整件事整体上有多难预测」, 就得把所有可能结果的意外程度加权平均——用每个结果自己的概率当权重。 这个平均意外程度,就叫(entropy):

直觉很好抓:拿两枚硬币对比就懂了。

公平硬币0.50.5H = 1 比特(最难猜)灌铅硬币0.90.1H ≈ 0.47 比特(好猜)
图 6-3公平硬币正反各半,结果最难猜——熵最大;灌铅硬币九成正面,几乎闭眼能猜对——熵很小。分布越「扁平均匀」,熵越高。
  • 均匀分布(每种结果概率相等):熵最大。完全没有头绪,平均最意外。
  • 确定性分布(某个结果概率为 1):H = −1 × log 1 = 0。结果板上钉钉,毫无悬念。

这恰好解释了「为什么 AI 猜词是一件有意义的事」。如果中文的每个字都等概率出现,那语言就是纯噪声, 熵高到没法预测,模型再聪明也无能为力。但真实语言远没那么随机—— 「今天天气很」后面接「好」的可能远大于接「桌子」。语言的熵不高不低: 有规律可循(所以可预测、可压缩),又留有选择(所以不无聊)。正因如此,「预测下一个词」才既不是送分题、也不是无解题。

分布 A:下雨 0.9、晴天 0.1;分布 B:下雨 0.5、晴天 0.5。哪个分布的熵更高?哪个更难预测?
第 4 站

交叉熵:拿一张「可能画错的地图」去赌真实世界

前面的熵,衡量的是真实世界本身有多难猜。但在 AI 里,我们手上往往只有一张模型自己画的「地图」——模型对各种结果的概率估计 q,它未必和真实情况 p 一致。 于是出现一个新问题:如果我拿着模型这张(可能画错的)地图,去面对真实世界,平均会有多「意外」?

答案就是交叉熵(cross-entropy):用模型分布 q 给出的「意外程度 −log q」, 按真实分布 p 来加权平均——

在「猜下一个词」这种任务里,真实答案是确定的:正确的词就是「猫」。 把这个事实写成概率分布 p,它是一个独热分布——p(猫)=1,其它词全是 0。 而模型的预测 q 则是一组没那么笃定的数,比如 q(猫)=0.7、q(狗)=0.2、q(鸟)=0.1:

真实答案 p(独热)1.0模型预测 q0.70.20.1只看这一根:−log 0.7 ≈ 0.36H(p, q) = −log q(猫) = −log 0.7 ≈ 0.36
图 6-4真实分布 p 是独热的,求和里只有「猫」那一项活下来,其余被 p=0 直接抹掉。于是交叉熵化简成一句话:−log(模型给正确答案的概率)。

因为 p 是独热的,求和里只有「猫」这一项的权重不为 0,整个交叉熵干脆利落地塌缩成一项

0.7 = 模型给正确答案「猫」的概率 q(猫)

现在体会一下它的脾气:模型越自信地答对(q(猫) 越接近 1),−log q(猫) 越接近 0,交叉熵越小; 模型越把正确答案的概率压低(q(猫) 越接近 0),−log q(猫) 越往上飙,交叉熵越大。 这不正是一个理想的「错得多离谱」打分器该有的样子吗?

所以这件事一点都不巧:「模型预测下一个词」的损失,天生就该用交叉熵来衡量。 第 10 课《损失函数》会把它正式当成训练的目标——到时你会看到,那个公式不是谁拍脑袋规定的, 而是信息论在这里自然长出来的。

两个补充直觉

① 交叉熵永远 ≥ 熵。 多出来的那部分,衡量的是「模型地图 q 和真实世界 p 差了多远」, 它有个名字叫 KL 散度。地图画得越准,q 越贴近 p,这段差距越小,交叉熵就越逼近真实世界本身的熵——再也省不掉了。

② 为什么用 −log 当惩罚,而不是简单的「差多少」? 因为当模型把正确答案的概率压到接近 0 时, −log 的惩罚会冲向无穷大。回想上一课的梯度:错得越离谱、坡度越陡,纠错的信号就越猛,模型回头得越快。 换成「平方差」那种温和的惩罚,反而会在模型错得最离谱时几乎没有坡度,学习就卡住了。

第 5 站

总结

本课核心 · TAKEAWAY

概率分布是对「所有可能结果各占多少」的完整描述(非负、加和为 1)—— 这就是模型输出被叫做「概率」的原因。信息量 −log p 刻画一个结果有多意外;是整个分布的平均意外程度;交叉熵衡量「拿模型的分布 q 去面对真实分布 p」平均有多意外。 当真实答案确定(独热)时,交叉熵塌缩成 −log(模型给正确答案的概率)—— 它天生就是一个完美的「错得多离谱」打分器,也正是后面分类任务损失函数的来历。

这一课你一步步理解了

  • 概率分布:非负、加和为 1,描述所有可能结果的长期占比。
  • 信息量 I = −log p:越意外信息越大;p=1 时为 0。log 来自「信息可加」。
  • 熵 H(p) = −Σ p·log p:分布的平均意外程度,均匀时最大、确定时为 0。
  • 交叉熵 H(p,q) = −Σ p·log q:p 为独热时塌缩成 −log q(正确答案)。
  • KL 散度:交叉熵超出熵的部分,衡量模型分布与真实分布的差距。
小测验

学习小测验

做完这一课,来检测一下核心知识点。选出你的答案后点击「提交」,即可看到正确选项与讲解。

Q1神经网络做分类时,最后输出一组「加起来等于 1 的非负数」。我们为什么把它们解释为「概率」?
Q2交叉熵损失衡量的是什么?什么时候它最小?
NEXT · 第 7 课

神经元结构

向量、矩阵、梯度、概率——四件工具都备齐了。下一步,用神经元把它们串成一台真正会学习的机器。

0 人点赞,0 人看过