Advanced Topics in Statistical Machine Learning 笔记01
Introduction to Probabilistic Graphical Models (PGMs)(概率图模型的简介)
从早起开始,实现自动推理(Automated Reasoning)就是人工智能(Artificial Intelligence, AI)的主要目标之一。John McCarthy很早之前就提出了一个非常具有影响力的方案,在他的设想中,整个推理系统由两个部分组成:
- Knowledge Base(KB, 知识库):将我们对世界的认知进行编码(即 what we know?)
- Reasoner/Inference Engine(推理机/推理引擎):根据KB来回答查询 (Query)(即 how we think?)
这个设想,就是后来基于知识/模型的推理系统 (Knowledge-based/Model-based System) 的基础。该系统有一个很明显的优点,那就是我们可以根据需求,针对不同领域的知识去建立多个KBs (domain-specific KBs) ,而使用同一个泛化的推理机 (Reasoner)去进行推理。
当然,该系统也是存在其局限性的,John McCarthy选择使用逻辑语句 (Logic Statement) 来作为 KB 的表示语言,使用演绎逻辑 (Deductive Logic) 来作为推理器。
但是演绎逻辑本身是单调的 (Monotonic) ,它缺乏动态断言和撤销假设的能力,这是什么意思呢,其实就是它没有办法修改和删除 KB 中已有的知识/语句,只能单纯向 KB 添加新的语句。这显然是不合理的,在现实中,我们会根据观察到的事务不断学习,并且修正我们之前的认知,而单调逻辑是无法修改的。
然而,John McCarthy的设想的其他部分仍然具有很高的价值,对于其他形式的推理,比如我们要学习的概率推理 (Probabilistic Reasoning) 仍十分有效。所谓的概率推理,实质上仍保留了John McCarthy的结构设想,只是选择用概率图 (Probabilistic Graphic) 来表示 KB,主要的概率图分为两种,有向图就是贝叶斯网络 (Bayesian Network),无向图就是马尔科夫网络 (Markov Network)。另一方面,选择使用基于概率论 (Probabilistic Theory) 的推理机。
Monotonic Logic(单调逻辑)
这里我们再详细说一下单调逻辑的局限性,再以引出在概率推理中很重要的一个概念:信念度 (Degree of belief)。
首先,我们回顾一下演绎逻辑 (Deductive Logic) 单调的意思。即它缺乏动态断言和撤销假设的能力,而这两个能力在通常情况下是很重要的。 我们可以换一个说法来理解它,假设我们已有一个 KB Δ,通过它,我们可以逻辑推论出 α,那么在学习到新的信息 γ 之后(即向 Δ 添加 γ),我们根据 Δ 和 γ 仍会逻辑推论出 α,这显然是不符合现实情况的。
我们可以设想一个具体的情境:
我们正开着一辆车,前方路面上有一只鸟。
我们已有的 KB Δ 中现在有一条知识 “一直正常的鸟会飞”,我们可以向其中添加一条假设 (Assumption):“所有的鸟都正常”, 当然,因为是假设,所以它未必是真的。那么我们现在可以得出一个结论:“这只鸟会飞”,因此我们就可以做出决定,我们不需要减速停车。但随着我们开车越来越接近这只鸟,我们可能会发现“这只鸟受伤了”,我们假设原本的 KB Δ 中实际上还有一条知识“受伤的鸟不会飞”,此时我们观察到的信息满足了这条知识,因此我们得出结论“这只鸟飞不起来”,这时,就产生了矛盾。我们原本根据 Δ 的出的结论“这只鸟会飞” 和现在得到的结论 “这只鸟飞不起来”显然是矛盾的,因此我们无法使用单调逻辑 (Monotonic Logic) 去进行推理。
这时候,我们自然会想要去使用非单调逻辑 (Non-monotonic Logic) 。非单调逻辑具备管理假设 (Assumption) 的机制,它会把 KB 分为两部分,一部分是我们已知的 Knowledge,另一部分是 假设(Assumption),对于假设,我们不知真假。我们会尽可能地保有这个假设,直到产生矛盾结论时,我们放弃该假设。 但显然,使用非单调逻辑仍不够简单,因此,就引入了信念度 (Degree of belief) 的概念。
Degree of belief(信念度)
所谓的信念度 (Degree of belief) 实际上就是分配给一个命题 (Proposition) 的数字。 我们仍用之前的情境作为一个例子:
- 一开始,我们会有一个初始的信念度,也就是我们常说的先验概率 (Priori Probability)。因为我们知道大多数的鸟都能飞,所以可以设 P(fly) = 0.99
- 后来,根据情况的更新,我们有了新的条件:“鸟受伤了”,这就得到了后验概率 (Posterior Probability),P(fly | wounded) = 0.4
- 再之后,我们可能会接收新的消息,比如:“这其实是一只鸡”,此时 P(fly | wounded, chicken) = 0.001
从这个具体的例子,我们可以明显地看出来,信念度 (Degree of belief) 的更新是受概率演算 (Probability Calculus) 控制的,它有可能会上升或者下降。 而对于信念度的解释也有几种不同的表述,比如模糊逻辑中使用的可能性概念 (Notion of possibility used in fuzzy logic),不过我们一般只需简单地看做概率 (Possibility) 即可。
在形成了信念之后,我们需要做出决策 (Make decision),这就需要一个决策理论 (Decision Theory) 将信念度转换为明确的决策。一般来说,这个决策理论会需要考虑一些额外的信息,比如不同决策的成本和决策结果带来的回报或是损失。还是看一个具体的例子:
我们想抓一直价值 $40 的鸟,有两种方案。方案一成本是 $30 ,但是保证一定能抓住。方案二成本 $10 ,保证能抓到不飞的鸟,有 25% 的概率抓到飞的鸟
因此:
方案一:$40 - $30 = $10
方案二:$40 - $10 = $30
- non-fly:100% * $30 = $30
- fly:25% * $30 = $7.5因此,若告知推断系统(Inference System)这是一只不会飞的鸟,系统应返回方案2,若是会飞的鸟,应返回方案1. 这体现了计算概率并不是做出决策的最后一步,我们需要结合决策论进行决策
Bayesian Networks(贝叶斯网络)
这里只是对贝叶斯网络 (Bayesian Networks) 的一个简介,后续的笔记会进行详细的介绍。为了方便理解,我们还是看一个具体的例子:
假象一个学生,我们叫他小明,他在完成物理考试之后只得到了 ‘B’,而不是预想中的 ‘A’,此时他会有以下的行为:
先检查一下是不是错看成了其他学科的成绩,嗯,没有看错。有没有可能是老师判错了分,根据老师以往的表现来看,应该不可能。那大概是老师没有为我的 Q3 打分,因为我的卷子很乱,所以把答案写在了背面,或许我应该和他沟通一下。当然也有可能是我的 Q4 答错了,我需要和别人检查一下,嗯,跟小李核实之后,我的答案没有问题,那么就是 Q3 除了问题,我最好去和老师说明一下。
根据以上情境,我们可以给出一个贝叶斯网络:
我们可以清晰地看到,贝叶斯网络有它的结构特征:
- 网络中的节点 (Nodes) 就是情境中的变量 (Variables),用来表示相关的原始命题 (Primitive Proposition)
- 边 (Edges) 传达变量之间的相关性信息,通常,我们认为边表示因果关系
然后,使用概率来量化变量 (Variables) 和它们父节点之间的关系
可以看到,这些概率都是局部信息 (Local Information) ,即每个节点里都会维护一个该节点和其父节点的概率表,所以一个节点的父节点越多,该节点的概率表会越大。借助这些概率,我们不仅知道哪个节点会直接影响哪个节点,也会知道具体影响的程度。同时,我们也能体会到贝叶斯网络的其中一个优越性,那就是用它来表示所有的变量,会远比使用联合概率表 (Joint probability table) 占用的空间小得多,联合概率表至少有 28 行 。
下面用一个表格来归纳一下用贝叶斯网络进行表示的特点以及搭建贝叶斯网络的方法:
表示优点 | 建模方法 |
---|---|
确保在变量上定义唯一的概率分布(贝叶斯网络为每个命题分配唯一的概率) | 一个人根据自己的知识或他人的启发建立网络 |
从局部意义上讲,它们是模块化的,仅通过对变量和直接原因(父节点)的局部测试可确保一致性和完整性 | 结构来自问题要求 |
它们相对稀疏,因为它允许使用多项式概率来指定指数大小的概率分布 | 从数据中学习,在这种情况下,我们可以学习概率、结构或两者 |
对于网络中不是直接相连的点(变量)之间的概率,无法在现成表格中找到答案,但是都可以根据网络现有的这些表格推论出答案,且答案唯一。
我们之前已经说过了,贝叶斯网络 (Bayesian networks) 只是概率图模型 (Probabilistic Graphical Models) 中的一种,这里我们给出 PGMs 的列表,以直观表示不同 PGM 的特征:
该表中主要表征三个特性:
- 有向图 or 无向图:无向表示对称关系 (Symmetric Relations)
- 动态 or 静态:动态模型表示不同时间的变量
- 概率模型 or 决策模型:决策模型包含随机变量 (Random variables) 和效用变量 (Utility variables)
Propositional Logic(命题逻辑)
关于命题逻辑,在离散数学中属于比较基本的内容,但在概率图模型领域中,命题逻辑有一部分内容与普通离散数学中的内容存在一些差异,需要我们特别注意。
基本的逻辑连接符 (Logical Connectives) 比如:¬ (Negation), ∧ (Conjunction) , ∨ (Disjunction), ⟹ (Implication) 和 ⟺ (Equivalence) 等与离散数学并无二致。命题逻辑语句 (Propositional Logic Sentence) 由一系列命题变量 (Proposition Variable) / 布尔变量 (Boolean Variable) / 二元变量 (Binary Variable) 𝑃1, … , 𝑃n 组成,最简单的语句就是 𝑃i ,被称为原子句 (Atomic Sentence),意味着 𝑃i 的值为真 (True)。这里给一个具体的例子:
注意这里我们针对每一个门都考虑了两种情况,当然,我们也可以根据习惯直接给出 A ∨ (A ∧ B) => C。我们这里的 KB Δ 可以看作是其中所有语句的合取 (Conjunction) 形式,该合取形式也能等式变换为 A ∨ (A ∧ B) => C
命题逻辑定义了语句的属性,比如一致性 (Consistency) 和有效性 (Validity) ;也定义了语句中变量的关系。以上的内容和离散数学基本一致,接下来,我们要看一些新的概念 (其实可以看做一些旧概念的新皮肤)。
Worlds, Models and Events(世界,模型和事件)
为了方便理解,我们仍需要借助一个简单的情境:
假设有一个警报 (Alarm),它会被入室抢劫 (𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦) 和地震触发 (𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒)
因此,我们可以得到以下逻辑语句:
𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦 ∨ 𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒 ⟹ 𝐴𝑙𝑎𝑟𝑚
¬𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦 ∧ ¬𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒 ⟹ ¬𝐴𝑙𝑎𝑟𝑚
现在我们来看要介绍的概念。
- 世界 (World) :世界 (World) 指的是所有变量的值都是已知的一个状态。 用真值表就可以直观地了解:
在以上情境中,我们有 3 个变量,23 = 8 个世界 (Worlds)。因此,我们可以把世界 W 看做一个函数,它将每一个命题变量 𝑃i 映射为 {True, False} 中的一个值。所以,实际上这里的世界 (World) 就是离散数学中的赋值 (Truth Assignment / Variable Assignment) 或者变量实例化 (Variable Instantiation)。 我们可以用 w1 ⊨ Burglary 来表示世界 w1 满足 Burglary,或者 Burglary 在世界 w1 为真。 - 模型 (Model) :一系列满足语句 α 的世界 (Worlds) 就被称为 α 的模型 (Model)。即 α 的模型 (Model) 就是 α 取真值的世界的集合。 符号表示为: 𝑀𝑜𝑑𝑠(𝛼) ≝ {𝑤 ∶ 𝑤 ⊨ 𝛼}。在上述情境中𝑀𝑜𝑑𝑠(𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒) = {𝑤1, … , 𝑤4}
- 事件 (Event):每个句子 α 都可以看作代表一组世界,即𝑀𝑜𝑑𝑠(𝛼),这称为 α 表示的事件。一般我们将术语语句 (Sentence) 和事件 (Event) 互换使用。
这里我们需要注意,模型 (Model) 具有以下属性:
𝑀𝑜𝑑𝑠(𝛼 ∧ 𝛽) = 𝑀𝑜𝑑𝑠(𝛼) ∩ 𝑀𝑜𝑑𝑠(𝛽)
𝑀𝑜𝑑𝑠 𝛼 ∨ 𝛽 = 𝑀𝑜𝑑𝑠(𝛼) ∪ 𝑀𝑜𝑑𝑠(𝛽)
𝑀𝑜𝑑𝑠(¬𝛼) =
M
o
d
s
(
α
)
‾
\overline{ Mods(α) }
Mods(α)
根据以上介绍,针对我们给出的情境,可以得到以下结论:
𝑀𝑜𝑑𝑠(𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒) = {𝑤1, 𝑤2 , 𝑤3 , 𝑤4}
𝑀𝑜𝑑𝑠(¬𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒) = M o d s ( E a r t h q u a k e ) ‾ \overline{ Mods(Earthquake) } Mods(Earthquake) = {𝑤5, 𝑤6 , 𝑤7 , 𝑤8}
因为 ¬(𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒 ∨ 𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦) 在世界 𝑤7 和 𝑤8 为真:
𝑀𝑜𝑑𝑠(¬(𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒 ∨ 𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦)) = M o d s ( E a r t h q u a k e ) ∪ M o d s ( B u r g l a r y ) ‾ \overline{Mods (Earthquake) ∪ Mods(Burglary)} Mods(Earthquake)∪Mods(Burglary) = {𝑤7 , 𝑤8}
¬ 𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒 ∨ 𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦 ∨ 𝐴𝑙𝑎𝑟𝑚 在世界 {𝑤1, 𝑤3 , 𝑤5 , 𝑤7 , 𝑤8} 为真
¬𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦 ∧ 𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦 在任何情况都不可能为真
…
接下来看一看命题逻辑的两个属性:
- 一致性 (Consistency):当语句 α 至少有一个世界 (World) 为真时,我们称该语句具有一致性。即 𝑀𝑜𝑑𝑠(𝛼) ≠ ∅。 相对的,若一个语句不在任何世界 (World) 为真,则该语句不一致 (Inconsistent),也就是永假式 (Contradictory),即 𝑀𝑜𝑑𝑠(𝛼) = ∅
- 有效性 (Validity):当语句 α 在任何世界 (World) 都为真,则称该语句有效 (Valid)。这其实和永真式 (Tautology) 是一个意思。 用符号表示为 𝑀𝑜𝑑𝑠(𝛼) = Ω。相对的,只要该语句在任意一个世界不为真,则它不具备有效性,即 𝑀𝑜𝑑𝑠(𝛼) ≠ Ω
以上两个逻辑属性都是针对单个语句 (Single Sentence),接下来看看两个或两个以上语句之间的逻辑关系 (Logic Relationships)
- 两个语句等价 (Equivalent),意味着:𝑀𝑜𝑑𝑠(𝛼) = 𝑀𝑜𝑑𝑠(𝛽)
- 两个语句互斥 (Mutually Exclusive),意味着:𝑀𝑜𝑑𝑠(𝛼) ∩ 𝑀𝑜𝑑𝑠(𝛽) = ∅
- 两个语句互补 (Exhaustive),意味着:𝑀𝑜𝑑𝑠(𝛼) ∪ 𝑀𝑜𝑑𝑠(𝛽) = Ω
- 蕴含 (Imply) 表示为:𝑀𝑜𝑑𝑠(𝛼) ⊆ 𝑀𝑜𝑑𝑠(𝛽)
以上介绍了对于二值变量 (只能取0/1或T/F) 的语法和性质,对于多值变量 (Multivalued Variables) 实际上是一样的,只是在表示的时候需要显式地把值写出来
𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦 ⟹ 𝐴𝑙𝑎𝑟𝑚 = ℎ𝑖𝑔ℎ
𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦 = 𝑡𝑟𝑢𝑒 ⟹ 𝐴𝑙𝑎𝑟𝑚 = ℎ𝑖𝑔ℎ
𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒 ∧ 𝐴𝑙𝑎𝑟𝑚 = 𝑜𝑓𝑓
Variable Instantiation(变量实例化)
变量实例化的概念很好理解,就是为一个语句赋了一组值。比如,(𝐴 = 𝑎) ∧ (𝐵 = 𝑏) ∧ (𝐶 = 𝑐) 就是语句 𝐴 ∧ 𝐵 ∧ 𝐶 的一个实例 (Instance)。
我们一般用大写字母表示变量 (Variable),小写字母表示值 (Value),用 |A| 表示变量 A 的基数 (Cardinality) ,即值的数量。用粗体的大写字母表示变量的集合 (Set of variables),小写粗体字母表示实例 (Instantiation),用 D# 表示实例的数量
我们也会用 x ~ y 表示 x 和 y 是兼容 (Compatible) 的实例,所谓的兼容指的是共有变量具有相同的值,比如:
Probability Calculus(概率积分)
之前我们已经介绍了信念度 (Degree of belief) 的概念,这里我们主要介绍信念度的计算和使用。
根据一个命题知识库 (Propositional Knowledge Base) Δ,可以将一个语句分到以下三类:
- 由 Δ 推论出的语句
- 该语句的否定可由 Δ 推论出
- 其他的语句
用韦恩图来表示即为:
我们可以通过世界 (Worlds) 的更精细分类来获得更精细的句子分类,这里就需要用到信念度 (Degree of belief),为每个世界 w 分配一个[0, 1]内的概率/信念度,一个语句 α 的信念度/概率就定义为:
即所有使 α 为真的世界的概率之和。用真值表会更加直观:
注意,这里我们用一个联合概率表来进行展示,因为更为直观,我们之前也提到了,这会造成指数级的扩张,因此概率图模型中我们会用概率图进行表示
可以看到,我们为每一个世界 wi 都分配了一个信念度/概率 P(wi) ,所有信念度之和为1,可以直接比较不同状态下的信念度。根据以上真值表,我们可以得到以下结论:
𝑃(𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒) = 𝑃(𝑤1) + 𝑃(𝑤2) + 𝑃(𝑤3) + 𝑃(𝑤4) = .1
𝑃(𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦) = .2
𝑃(¬𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦) = .8
𝑃(𝐴𝑙𝑎𝑟𝑚) = .2442
据此,我们能够得到信念度具有的与概率基本一致的性质:
- 信念度一定在 [0, 1] 之间,即 0 ≤ P(𝛼) ≤ 1
- 一个不一致 (Inconsistent) 的语句 α (语句 α 是永假式),它的信念度为 0,即 P(𝛼) = 0
- 一个有效的 (Valid) 的语句 α(语句 α 是永真式),它的信念度为 1,即 P(𝛼) = 1
- 给定一个语句的信念度,我们可以据此计算该语句否定 (Negation) 的信念度,因为:P(𝛼) + P(¬𝛼) = 1
- 同样可以计算析取式 (Disjunction) 的信念度:P(𝛼 ∨ 𝛽) = P(𝛼) + 𝑃(𝛽) − 𝑃(𝛼 ∧ 𝛽)
信念度 (Degree of belief) 变现了对事件的确信程度,而对于不确信 (Uncertainty) 的量化,我们一般选择用熵 (Entropy) 来进行,下面这张表总结了上述情境的信念度以及熵:
根据 Earthquake 的信念度,我们可以得出一个结论,基本不会发生地震。对比 Earthquake 和 Burglary 的熵,我们知道,“入室抢劫” 比 “地震” 具有更大的不确定性。
这里我们不对熵 (Entropy) 再进行过多的介绍,想必大家已经对其有足够的认识,我们只需要记住 “熵代表信息量/不确定性,越确信的事件,其包含的信息量/不确定性越少”,其计算公式为:
同时,为了更好地记忆,我们也给出熵与概率的关系曲线
Updating beliefs(更新信念度)
我们之间提到,随着接受的信息越来越多,我们对于某件事物/某个变量的信念度是会产生变化的。现在,我们就来看一看信念度是如何更新的。
首先,假设我们现在已知,警报 (Alarm) 已经响起,即 𝐴𝑙𝑎𝑟𝑚 = 𝑡𝑟𝑢𝑒,这一消息被称之为证据 (Evidence),我们需要做的,就是根据这一证据来修正信念度。用符号表示的话,即为:
将证据事件用 β 表示,这里 β = 𝐴𝑙𝑎𝑟𝑚 = 𝑡𝑟𝑢𝑒,我们要做的,就是将信念度 P(•) 更新为 P(• | β)。
首先,根据 β ,我们可以先排除一部分世界 w,因为在这些世界中,β = 𝐴𝑙𝑎𝑟𝑚 = 𝑡𝑟𝑢𝑒 并不成立。即 𝑃(𝑤|𝛽) = 0 𝑓𝑜𝑟 𝑎𝑙𝑙 𝑤 ⊨ ¬ 𝛽
接下来,就要考虑如何更新剩下的部分。我们要知道,对于信念度的更新,始终有着三个前提,或者说限制,那就是:
根据以上三个限制,我们最终能够得到的更新公式为:
而该公式实际上就是我们很熟悉的贝叶斯公式,具体的证明过程如下:
因此,最终更新后的表格应该如下图所示,新的信念状态称为根据证据 β 调节的旧状态 P
根据该表,我们可以进行如下计算:
𝑃(𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦) = 0.019 + 0.001 + 0.162 + 0.018 = 0.2
𝑃(𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦|𝐴𝑙𝑎𝑟𝑚) = 0.0778 + 0.6634 = 0.7412
𝑃(𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒) = 0.019 + 0.001 + 0.056 + 0.024 = 0.1
𝑃(𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒|𝐴𝑙𝑎𝑟𝑚) = 0.778 + 0.2293 = 0.3071
根据以上计算和介绍,我们现在归纳以下贝叶斯条件概率/信念度更新的一些特征:
- 与证据 β 相矛盾的世界 (World) 的概率为 0
- 概率为 0 的世界,更新之后仍然是 0
- 与证据 𝛽 一致且具有正概率的世界将维持其相对信念
接下来我们换一个角度来计算这个问题
如果认为 Earthquake 是给定的证据 (Evidence):
𝑃(𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦) = 0.2
𝑃(𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦|𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒) = (0.019 + 0.001) ÷ 0.1 = 0.2
𝑃(𝐴𝑙𝑎𝑟𝑚) = 0.2442
𝑃(𝐴𝑙𝑎𝑟𝑚|𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒) = (0.019 + 0.056) ÷ 0.1 = 0.75
如果认为 Burglary 是给定的证据 (Evidence):
𝑃(𝐴𝑙𝑎𝑟𝑚) = 0.2442
𝑃(𝐴𝑙𝑎𝑟𝑚|𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦) = (0.019 + 0.162) ÷ 0.2 = 0.905
𝑃(𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒) = 0.1
𝑃(𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒|𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦) = (0.019 + 0.01) ÷ 0.2 = 0.1
这里地震(Earthquake) 和入室抢劫(Burglary) 的概率和条件概率的变化表明,这两个变量不会互相影响,换言之它们相互独立。 实际上上述的信念度变化,从逻辑角度上来看,也是相当合理,比如,警报本身响起的概率只有 0.2442,但是,当地震或者入室抢劫发生时,警报鸣响的概率会大幅上升,然而因为地震和入室抢劫这两个时间发生的情况具有差异,因此,条件概率会有所不同。但是,我们要注意,该例子中能实现这样的动态变化,很重要的一个原因在于初始的信念度分配的很合理,这也是我们对实际问题进行建模的一个核心课题和难题。
这里我们再看一个例子,当我们的证据 (Evidence) 增加了,会发生什么?
𝑃(𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦|𝐴𝑙𝑎𝑟𝑚) ≈ 0.741
𝑃(𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦|𝐴𝑙𝑎𝑟𝑚 ∧ 𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒) ≈ 0.253
𝑃(𝐵𝑢𝑟𝑔𝑙𝑎𝑟𝑦|𝐴𝑙𝑎𝑟𝑚 ∧ ¬𝐸𝑎𝑟𝑡ℎ𝑞𝑢𝑎𝑘𝑒) ≈ 0.957
这里的信念度仍十分合乎逻辑。入室抢劫 (Burglary) 是警报 (Alarm) 响起的一个可能性,但是当我们了解到,当前警报响起,同时也发生了地震 (Earthquake) 时,信念度骤减,几乎等于 P(Burglary) = 0.2,这表明当前更可能是因为地震引发了警报。而若我们知道没有发生地震,那么,因为入室抢劫而导致警报响起的概率就会骤升。这个例子同时也说明了,当有新的条件介入时,原本互相独立的两个变量,可能无法再保持独立。
Conditional Entropy(条件熵)
我们之前使用熵来量化不确定性,这里我们需要了解给定另一个变量Y 时变量 X 的条件熵。它量化了在观察到 Y 之后,变量 X 的平均不确定性。
一般来说,𝐻(𝑋|𝑌) ≤ 𝐻(𝑋)。这很好理解,因为条件越多,我们对一件事物就越了解,不确信度就会降低。这里给出上述例子中 Burglary 的条件熵:
Independence(独立性)
关于独立性实际上我们在之前具体的例子中已经了解了,这里我们给出正式的定义:
事件 α 与 事件 β 独立,当且仅当 𝑃(𝛼|𝛽) = 𝑃(𝛼) 或者 𝑃(𝛽) = 0。同时,如果 α 与 事件 β 独立,则如果 β 与 事件 α 也独立,符号表示为 α ⫫ β。
独立性带来的一个便利在于计算联合概率:𝑃(𝛼 ∧ 𝛽) = 𝑃(𝛼)𝑃(𝛽)。这里我们还需要注意一点,独立 (Independence) 和互斥 (Mutual Exclusive) 并不等价,从计算公式就能很容易得到:
Independence:
P(α, β) = P(α) * P(β)
Mutual Exclusive:
P(α, β) = 0
之前我们提到,当有新的条件加入时,可能会打破原本两个变量之间的独立性,这就说明独立性是一个动态概念。也就有可能会形成另一种可能,那就是,当新的条件加入时,会形成新的独立性。
还是看一个例子:我们用两个感应器来监测当前温度,这两个感应器的性能有差异:
𝑃(𝑇𝑒𝑚𝑝 = 𝑛𝑜𝑟𝑚𝑎𝑙) = .80
𝑃(𝑆𝑒𝑛𝑠𝑜𝑟1 = 𝑛𝑜𝑟𝑚𝑎𝑙) = .76
𝑃(𝑆𝑒𝑛𝑠𝑜𝑟2 = 𝑛𝑜𝑟𝑚𝑎𝑙) = .68
因为 𝑃(𝑆𝑒𝑛𝑠𝑜𝑟2 = 𝑛𝑜𝑟𝑚𝑎𝑙|𝑆𝑒𝑛𝑠𝑜𝑟1 = 𝑛𝑜𝑟𝑚𝑎𝑙) ≈ .768,我们知道感应器1和感应器2不是相互独立的。然而,在我们知道温度正常之后,它们会变得相互独立:
𝑃(𝑆𝑒𝑛𝑠𝑜𝑟2 = 𝑛𝑜𝑟𝑚𝑎𝑙|𝑇𝑒𝑚𝑝 = 𝑛𝑜𝑟𝑚𝑎𝑙) = .80
𝑃(𝑆𝑒𝑛𝑠𝑜𝑟2 = 𝑛𝑜𝑟𝑚𝑎𝑙|𝑇𝑒𝑚𝑝 = 𝑛𝑜𝑟𝑚𝑎𝑙, 𝑆𝑒𝑛𝑠𝑜𝑟1 = 𝑛𝑜𝑟𝑚𝑎𝑙) = .80
这就有了:Sensor1 ⫫ Sensor2 | Temp = normal
这就是条件独立性 (Conditional Independence) 的体现。
事件 α 与 事件 β 条件独立,当且仅当 𝑃(𝛼|𝛽 ∧ 𝛾) = 𝑃(𝛼|𝛾) 或者 𝑃(𝛾) = 0。
条件独立性同样具有对称性 (Symmetric),即α ⫫ β | γ=> β ⫫ α | γ。
为了方便记忆,我们可以这么理解,那就是 β 不会增加更多的信息以改变 γ 的影响。该性质同样也支持联合概率的计算:𝑃(𝛼 ∧ 𝛽|𝛾) = 𝑃(𝛼|𝛾) 𝑃(𝛽|𝛾)
Variable Independence(变量独立性)
这里讨论变量集合的独立性,用 X, Y, Z 表示三个不相交 (Disjoint) 的变量集合。给定 Z,X 和 Y 独立记作 𝑿 ⫫ 𝒀|𝒁 或者 𝐼P(𝑿, 𝒁, 𝒀)。注意后者 Z 的位置。
这意味着,对于任何实例,给定 z,x 与 y 独立。例如,有三个集合:𝑿 = {𝐴, 𝐵}, 𝒀 = {𝐶} 和 𝒁 = {𝐷, 𝐸}
Mutual Information(互信息)
独立是称为互信息的特例,互信息量化观察一个变量对另一变量不确定性的影响。互信息公式如下所示:
互信息有以下几个特点:
- 非负
- 当且仅当 x 与 y 独立,互信息为 0(因为 P(x, y) = P(x) P(y))
- 它衡量一个变量将减少另一个变量的不确定性的程度
条件互信息 (Conditional Mutual Information) 定义为:
它同样具有类似的性质:
多变量条件概率(Conditional Probability for Multiple Variables)
我们可以把条件概率的定义推及多个变量的情况
当然,这只是一个很简单的例子,我们可能会遇到更为复杂的条件概率计算,比如 P(A, B|C, D)。我们有另一种 Trick 可以用来计算这种较为复杂一些的条件概率。
根据条件符号 “|” 的移动方向,确定等式因素,比如
P(A, B|C, D) = P(A, B, C, D) / P(C, D)
P(A, B, C, D) = P(A, B|C, D) * P(C, D)
总结来说就是:
条件符号右移,则为除式,除以目标对象中,原符号位置右边的内容
条件符号左移,则为乘式,乘以原式中,移动后符号右边的内容
这个 Trick 实际上很容易证明,用两个例子就可以直观证明。
例一:
证明:
例二:
证明:
当然,如果绝对这个 Trick 不好记忆,也可以直接使用定义来进行计算。
总概率定理( Law of total probability)
这个定理实际上不需要过多赘述,这里为了方便理解我们加一幅韦恩图
连式法则(Chain Rule)
这里我们需要注意,上式实际上有 n! 个链式等式,因为 α1,…,αn 的位置是可以调换的。
贝叶斯法则(Bayes Rule)
贝叶斯法则实际上大家应该都已经相当熟悉了,它在 ML 和 DL 中都有很广泛的应用,它最为基本的公式就是贝叶斯公式,我们这里做一个简单的回顾。
该规则的经典用法是把事件 α 认作是事件 β 的原因,举个例子,α 是疾病,β 是症状。我们的目标是评估我们对因果关系的信念。
这里我们仍用一个经典的例子来理解:
假设我们有一个刚刚接受特定疾病检查的患者,并且检查结果呈阳性。 我们知道千分之一的人患有这种疾病。 我们还知道该测试不可靠:假阳率为2%,假阴率为5%。 我们的目标是在测试结果呈阳性的情况下评估我们对患有该疾病的患者的信念。
计算过程很简单:
P(D) = 1/1000
P( T|¬D) = 2%
P(¬T|D) = 5%
P(D|T) = P(D, T) / P(T) = P(T|D) * P(D) / P(T) = ?
∵ P(T|D) + P(¬T|D) = 1
∴ P(T|D) = 0.95
∵ P(T, ¬D) = 0.999 * 0.02 = 0.01998
∵ P(¬T, D) = 0.001 * 0.05 = 0.00005
∴ P(T, D) = P(D) - P(D, ¬T) = 0.001 - 0.00005 = 0.00095
∴ P(T) = P(T, D) + P(T, ¬D) = 0.00095 + 0.01998 = 0.02093
∴ P(D|T) = P(T|D) * P(D) / P(T) = 0.95 * 0.001 / 0.02093 = 0.0454