我们已经学习了隐马尔可夫模型(HMMs),但当状态空间变得非常大或连续时,精确的前向算法在计算上变得不可行。粒子滤波提供了一种强大的近似推理方法来解决这个问题,
是HMMs的“采样”版本。。
粒子滤波
粒子滤波的核心目标是,在一个动态系统中,根据一系列带噪音的、不完整的观测数据,实时地、近似地追踪一个我们无法直接看到的隐藏状态。
它专门用于解决那些状态空间巨大或连续的问题,例如:
...
上一讲我们学习了如何对一个状态完全可观察的、随时间演化的系统进行建模和预测。然而,在现实世界中,我们往往无法直接观察到系统的真实状态,只能通过一些间接的、带有噪声的观测来进行推断。
这一讲的核心就是解决这个问题:当系统的真实状态是“隐藏”的时,我们如何通过一系列的观测证据来推断这个隐藏状态?
这个强大的工具就是隐马尔可夫模型 (Hidden Markov Models - HMMs)。
...
之前的贝叶斯网络(如警报系统)处理的是一个“快照”式的静态世界。而现实世界是不断变化的,比如天气、股票价格、机器人的位置等等。马尔可夫模型就是用来描述这种随时间演化的随机过程的经典工具。
马尔可夫模型可以被看作是一种链式的、无限长的贝叶斯网络。它专注于表示变量在时间维度上的依赖关系。现在我们从处理静态的、一次性的概率问题,转变为处理动态的、随时间演化的概率问题中。
马尔可夫模型 (Mar...
上一讲我们学习了变量消除等算法,它们能精确地计算出概率查询的结果。但我们也知道,精确推理在最坏情况下是NP难的,对于非常庞大和复杂的贝叶斯网络,精确计算仍然是不可行的。
这一讲的核心思想是:当我们无法承担精确计算的巨大代价时,我们可以退而求其次,通过生成大量随机样本来“近似”地估算概率。这种方法被称为近似推理
(Approximate Inference),而采样 (Sampling) ...
上一讲我们学会了如何用贝叶斯网络来紧凑地表示一个复杂的联合概率分布。这一讲的核心问题是:有了这个紧凑的表示,我们如何高效地进行计算,从而回答概率查询(也就是推理问题)?
推理问题可以分为精确推理和近似推理,
这一节我们考虑精确推理
首先, 假如我们有一个完整的联合概率分布表,
只需要查表就可以得到所要的结果, 但是在贝叶斯网络的基础上,
我们有一种更智能的算法,能够在不生成...
上一讲(概率论基础)我们学到,只要有完整的联合概率分布,我们就能回答任何概率问题。但同时也暴露了一个致命问题:这个联合分布表的大小会随着变量数量的增加而指数级增长,在现实问题中完全不可行。
这一讲的核心就是解决这个问题:如何利用变量间的独立性关系,来紧凑、高效地表示一个完整的联合概率分布。这个解决方案就是贝叶斯网络
(Bayesian Networks)。
不过在介绍贝叶斯网络之前, ...
静态链接
静态链接(Static
Linking)是一种在程序编译后的链接阶段,将所有必需的库代码从静态库(Static
Library)文件中复制到最终可执行文件中的过程。
其核心思想是“一次性打包”。链接器在生成可执行文件时,会解析程序中所有对外部函数的调用(比如
printf()),然后从静态库文件中找到对应的函数代码,并将其直接嵌入到可执行文件内部。
这个过程通常发生在编...
Linux 用户账户基础
在 Linux 和类 Unix 系统中,大致有三类用户角色: 超级用户 (root),
普通用户 (Regular User)和系统用户 (System User).
超级用户 (root) : UID 为 0,
拥有系统的最高、无限制的权限。可以执行任何操作,包括修改系统文件、管理所有用户和进程。
普通用户 (Regular User):UID通常从...
这一讲涉及到的是一个更复杂、也更贴近现实的博弈世界。
核心的转变是:从处理确定性的、纯粹策略对抗的博弈,转向包含随机性或机会元素
(chance) 的博弈。
在之前的Minimax博弈中,只有两个玩家:MAX和MIN。MAX的每一个行动,MIN都会用最优的策略来回应。然而,在许多现实世界的博弈中,例如扑克或双陆棋,结果不仅仅取决于你和对手的选择,还取决于机会——比如你摸到什么牌,或者掷...
之前的智能体(如搜索智能体)虽然能解决问题,但它们的“知识”是隐式的,
内嵌在状态表示、行动函数和启发式函数中。而从这一讲开始,我们将探索如何让智能体拥有显式的、声明式的知识,并利用这些知识进行推理
## 基于知识的智能体 (Knowledge-Based Agent)
它的核心组件是一个知识库 (Knowledge Base -
KB),这是一个由形式化语言写成的语句 (sente...