第三期、深度学习中的概率与信息论

概率论与信息论,这也是学习机器学习和深度学习的重要数学基础。

1 概率基础

1.1 随机变量与概率分布

随机变量(Random Variable):用一个变量表示随机试验可能产生的结果。

例如,抛一枚硬币,定义随机变量:

如果硬币是均匀的,那么:

概率分布(Probability Distribution):描述随机变量可能取什么值,以及每个值出现的概率是多少。

可以理解为一张“所有可能结果及其概率”的清单。

1.2 三种常见概率

概念

含义

例子

联合概率 P(A, B)

A 和 B 同时发生的概率

今天下雨且刮风

边缘概率 P(A)

只关心 A 发生的概率

今天下雨

条件概率 P(A | B)

已知 B 发生时,A 发生的概率

已知刮风,今天下雨的概率

条件概率公式:

前提是

重点: 条件概率不是简单地说“A 和 B 有关系”,而是在已知 B 发生的条件下,重新计算 A 的概率。

1.3 独立性与贝叶斯公式

如果事件 A 和 B 相互独立,那么:

直观地说,知道 B 是否发生,不会改变 A 发生的概率。

贝叶斯公式则是:

它可以帮助我们利用已经观察到的结果,反过来推断某个原因发生的可能性。

例如,在网络安全中,观察到一封邮件包含可疑特征后,可以利用贝叶斯思想分析它属于恶意邮件的概率。但实际判断还需要考虑数据、先验概率和模型假设。

1.4 期望与方差

期望(Expectation):随机变量长期来看平均会取到什么值。

离散随机变量的期望为:

例如,均匀硬币对应的随机变量 \(X\) 取 0 或 1,各自概率为 0.5:

方差(Variance):衡量随机变量围绕期望值的波动程度。

方差越大,通常表示数据围绕平均值的波动越大。

小结:

  • 随机变量:用变量表示随机结果。

  • 概率分布:描述各种结果的概率。

  • 条件概率:已知一个事件发生后,计算另一个事件的概率。

  • 独立性:一个事件是否发生不改变另一个事件的概率。

  • 期望:平均水平。

  • 方差:波动程度。

2 信息论

2.1 信息量(Information Content)

信息论研究如何描述、度量和处理信息。先想一个问题:

  • “明天太阳从东方升起。”——这件事几乎可以预料到。

  • “明天突然下起了冰雹。”——如果原本很难预料,这条消息就更令人意外。

一件事发生的概率越低,它发生时带来的信息量通常越大。

数学上,事件的信息量可以写成:

其中:

  • :事件发生的概率。

  • :对数函数。

  • 负号:确保概率越小,信息量越大。

例如,使用以 2 为底的对数:

事件概率

信息量

P(x)=1

0 bit

P(x)=1/2

1 bit

P(x)=1/4

2 bit

P(x)=1/8

3 bit

直观理解:越难预测的事情,一旦发生,就越能提供新信息。

2.2 熵(Entropy)

如果信息量描述的是“某一次事件带来了多少信息”,那么熵描述的是一个随机变量整体的不确定性。

离散随机变量的熵为:

你可以把它理解成:把每种可能结果的信息量,按照它发生的概率进行加权平均。

以抛硬币为例:

假设现在有两枚硬币分别为:

1、公平硬币

正反面概率各为 0.5,结果最难提前确定。

2、几乎必然正面的硬币

假设正面概率为 0.99,反面为 0.01,结果比较容易预测。

注:这里的计算使用以 2 为底的对数。

小结:

  • 结果越难预测,熵通常越高。

  • 结果越确定,熵越低。

  • 对于只有两种可能结果的随机变量,当两种结果概率相等时,熵达到最大值。

注意,熵衡量的是不确定性,不是说一个事件本身“好”或“坏”。

2.3 交叉熵(Cross-Entropy)

是深度学习里最重要的概念之一,因为分类任务经常使用交叉熵作为损失函数。

假设模型要识别一张图片里是什么动物,真实答案是“猫”。

真实标签和模型预测结果可以表示成概率分布:

交叉熵的定义是:

这里要区分两个分布:

  • :真实分布,也就是正确答案。

  • :模型预测的概率分布。

在上面的例子中,真实标签是猫,因此:

如果模型只给猫 0.1 的概率,损失就会变成:

预测越偏离真实答案,交叉熵损失通常越大;给正确答案的概率越高,损失越小。

这就是模型训练时不断调整参数的一个重要目标。

2.4 KL 散度(Kullback–Leibler Divergence)

KL 散度用于衡量两个概率分布之间的差异,也可以直观地理解为:如果真实分布是,却使用来描述它,会产生多大的分布差异。

定义为:

它有几个重要性质:

  1. 。

  2. 当两个分布相同时,KL 散度为 0。

  3. 一般情况下,,因此它不是严格意义上的对称距离。

2.5 交叉熵和 KL 散度有什么关系?

这是一个值得理解的公式:

其中:

  • :真实分布自身的熵。

  • :真实分布与预测分布之间的差异。

  • :交叉熵。

对于固定的真实分布,是常数。因此,最小化交叉熵,相当于最小化 KL 散度。

这也解释了为什么交叉熵能有效训练分类模型。

小结:

概念

衡量什么

深度学习中的作用

信息量

单个事件带来的信息

理解概率与信息的关系

熵

一个分布的不确定性

分析分布、衡量不确定性

交叉熵

真实分布与预测分布对应的编码代价

常用分类损失函数

KL 散度

两个概率分布之间的差异

分布匹配、变分推断等

补充一点:交叉熵和 KL 散度都依赖于所使用的对数底数。使用以 2 为底的对数时,信息量的单位是 bit;使用自然对数时,单位通常记为 nat 。深度学习代码中的一般指自然对数。

3 采样(Sampling)

3.1 什么是采样?

简单来说,采样,就是按照某个概率分布,随机抽取一个结果。

假设有一个装着 10 个球的袋子:

袋子里有 5 个红球、5 个蓝球。

现在闭上眼睛随机摸出一个球:

  • 摸到红球的概率是 5/10 = 0.5 。

  • 摸到蓝球的概率是 5/10 = 0.5 。

你实际摸出来的那个球,就是一次采样的结果。

如果放回去再摸一次,就进行了一次新的采样。每次结果可能相同,也可能不同。

这里有三个要素:

  • 概率分布:红球和蓝球各占多少概率。

  • 采样过程:按照这些概率随机抽取。

  • 采样结果:这一次实际抽到了什么。

所以,采样不是重新计算概率,也不是一定选概率最大的结果,而是根据已有的概率分布随机产生结果。

3.2 采样和选择最大概率,有什么区别?

假设一个 AI 模型判断下一句话可能出现哪个词,给出了以下概率:

候选词

模型给出的概率

苹果

70%

香蕉

20%

橘子

10%

现在有两种选择结果的方式。

方法一:选择最大概率(Argmax)(确定性选择)

直接选择概率最大的词。

结果:每次都选择“苹果”。

方法二:按照概率采样(随机选择)

按照 70%、20%、10% 的概率随机选择。

  • 大约 70% 的抽样结果会是苹果。

  • 大约 20% 的抽样结果会是香蕉。

  • 大约 10% 的抽样结果会是橘子。

你可以把它们理解为:

  • Argmax 问的是:哪个结果的概率最高?

  • 采样问的是:按照这些概率,随机产生一个什么结果?

3.3 为什么深度学习需要采样?

注:这里我们例举几个简单应用。

3.3.1 文本生成

例如,你让大语言模型续写一句话。

模型认为下一个词可能是:

  • “今天”:概率 0.6

  • “明天”:概率 0.3

  • “昨天”:概率 0.1

如果每次都只选择最大概率的词,生成过程会比较确定。

如果使用采样,模型就有机会选择其他合理的词,从而产生不同的表达。

这就是为什么采样可以增加生成结果的多样性。

3.3.2 训练神经网络

假设训练集里有 10 万张图片,但每次训练都把 10 万张图片全部输入模型,计算开销会很大。

一种常见做法是,每次抽取一小批图片,例如 64 张,用这一批数据计算损失并更新参数。

这叫作小批量训练(Mini-batch Training),其中就涉及从数据集中抽取样本。

这里需要区分两件事:

  • 从数据集中抽取训练样本;

  • 从模型输出的概率分布中抽取生成结果。

它们都叫采样,但采样对象不同。

3.3.3 估计复杂的数学量

有些数学期望或概率计算起来很复杂,甚至无法直接计算。此时可以随机抽取大量样本,再根据样本结果估计所需的数值。

例如,重复掷骰子 1000 次,用点数的平均值估计骰子的期望点数。这是采样用于近似计算的简单例子。

4 结构化概率模型(Structured Probabilistic Models)

4.1 为什么需要结构化概率模型?

首先我们先看一个简单例子。

假设我们要建立一个模型,判断一个人是否感冒。我们考虑三个随机变量:

  • :是否感冒

  • :是否发烧

  • :是否咳嗽

每个变量只有两种取值:是或否。

如果直接描述三个变量的联合概率,就需要考虑所有可能的组合。例如:

是否感冒 D

是否发烧 F

是否咳嗽 C

是

是

是

是

是

否

是

否

是

是

否

否

否

是

是

否

是

否

否

否

是

否

否

否

三个二元变量一共有种组合。

如果变量增加到 20 个,每个变量仍然只有两种取值,那么组合数量就会达到:

变量越多,直接描述完整联合分布就越麻烦。

结构化概率模型的核心思路,就是利用变量之间的关系来组织概率分布,避免把所有可能的组合都当成互不相关的情况来处理。

注意,它并不是让所有计算都自动变得简单,而是通过合理的结构,让模型能够利用变量之间的依赖关系。

4.2 用图来表示变量之间的关系

结构化概率模型经常用图描述随机变量之间的关系。

先看一个简化的感冒模型:

这里有三个节点和两条箭头:

  • 节点:代表随机变量,例如是否感冒。

  • 箭头:表示模型中设定的概率依赖关系。

  • 图结构:把变量之间的关系直观地表示出来。

这个例子中,我们假设发烧和咳嗽的概率都与是否感冒有关。箭头表示模型的结构设定,但不能仅凭箭头就认定现实中一定存在因果关系。

4.3 有向图模型与无向图模型

这是需要区分的两个重要概念。

1. 有向图模型(Directed Graphical Model)

边有方向,例如。

典型例子:贝叶斯网络。

它通过有方向的图组织变量之间的概率关系。

2. 无向图模型(Undirected Graphical Model)

边没有方向,例如。

典型例子:马尔可夫随机场。

它用无方向的边表示变量之间的关联结构。

可以简单记忆:有向图看箭头方向,无向图看节点之间是否相连。两者都是表达概率关系的工具,但它们的数学定义和概率分解方式不同。

4.4 结构化概率模型有什么用?

主要有三个方面:

  1. 表示依赖关系:清楚地描述哪些变量与哪些变量有关。

  2. 简化概率建模:利用变量之间的结构,避免无必要地单独描述所有组合。

  3. 辅助推断和采样:根据模型结构,计算未知变量的概率,或者从模型中生成样本。

在深度学习中,这些思想与概率推断、生成模型等方向有关。

最后的话

感谢你的阅读。如果你喜欢我的文章,或者对深度学习感兴趣,欢迎关注我的“深入浅出深度学习”专栏,希望能对你有所帮助。

我们下期再见՞˶•⩊•˶՞ಣ

相关新闻

为什么我后来很少的和不熟悉的人chat了

为什么我后来很少的和不熟悉的人chat了

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 2:20:27 阅读更多 →
元宝    LeetCode 386. 字典序排数 Java实现

元宝 LeetCode 386. 字典序排数 Java实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 2:19:26 阅读更多 →
04 · AWS Lambda Running Example: ShopFast Black Friday Canary, Warm Pools and Throttling

04 · AWS Lambda Running Example: ShopFast Black Friday Canary, Warm Pools and Throttling

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 2:19:26 阅读更多 →

最新新闻

从URL取参到Cookie操作:前端开发完整指南与踩坑记录

从URL取参到Cookie操作:前端开发完整指南与踩坑记录

老读者可能还记得,我之前在某公司的运营后台系统里做过一次页面重构,其中有个特别不起眼但又绕不开的需求:从前端拿 URL 上携带的参数,顺手把一些状态写进 Cookie。听起来简单,真正动手的时候才发现,这里面…

2026/10/20 2:54:46 阅读更多 →
不复杂的复杂度:Java开发者必备的大O分析指南

不复杂的复杂度:Java开发者必备的大O分析指南

第八篇了。前面我们用了几篇的篇幅,把Java的语法、面向对象、集合框架、I/O、异常这些基础内容过了一遍。今天想插一个看起来不太一样、但实际非常重要的主题——复杂度分析。为什么在这个节点讲它?因为我发现很多人在前面那些内容学完之后,开…

2026/10/20 2:54:46 阅读更多 →
需求分级与优先级管理:产研团队高效协作的落地指南

需求分级与优先级管理:产研团队高效协作的落地指南

周五下午三点,我正在跟团队过下一迭代的排期。会议室的门被推开,某业务线负责人带着一份PPT走进来,说有一位大客户急需一个定制功能,客户已经在催,下周要看到演示,否则可能影响续约。会议室安静了几秒&…

2026/10/20 2:54:46 阅读更多 →
降AI率工具实测:九类工具原理、风险与一套可复用工作流

降AI率工具实测:九类工具原理、风险与一套可复用工作流

开头部分可以这么写:最近不少本科生来找我看论文初稿,十份里有八份开头都是“随着社会的不断发展”,第二段必是“综上所述”。一问才知道,都是让AI先写一版,自己再改,改完一检测,“AI率”飙到百…

2026/10/20 2:54:46 阅读更多 →
Llama 2 提示词完全指南:模板、参数与实战技巧

Llama 2 提示词完全指南:模板、参数与实战技巧

最近几周我一直在折腾基于 Llama 2 的几个实际项目,从本地部署到 API 接入都走了一遍。反复试下来发现一个很多人容易忽略的事实:Llama 2 和 GPT 系列这类闭源模型的对话习惯差异非常大,直接把原来惯用的提示词搬过去,效果会肉眼可…

2026/10/20 2:54:46 阅读更多 →
大模型Skills应用实战:在Trae中把提示词变成可复用工作流

大模型Skills应用实战:在Trae中把提示词变成可复用工作流

这个系列写到第14篇,我聊点真正能提效的东西——大模型Skills应用。之前几篇要么在讲模型能力边界,要么在讲上下文工程,这次把视角落到一个具体场景:在Trae这款AI原生IDE里,怎么把Skill从"听说过"变成"…

2026/10/20 2:53:45 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →