【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型

16.1 非结构化建模的挑战

在深度学习中,我们训练AI模型去理解自然图片,声波代表的演讲,或包含很多单词的文档。这些通常需要深度学习模型将一个高维度的数据作为输入,并将这个输入概括到一个特定的类别。但在类似的分类问题中,模型往往可以不必考虑到输入的所有维度。比如,在图片识别的时候,模型可以忽略点图片中的背景。

但是,在概率模型中,我们需要考虑所有的输入以及输入数据的全部结构。这些问题包括:

  • Density estimation 估计密度函数
  • Denoising 去噪
  • Missing value imputation 缺失值的填补
  • Sampling 采样

然后,如果使用暴力解法:建立一个真值表,让计算机记住每一个sample,这将会有很大的计算量。

因此,我们要引入结构化概率模型,它使用图来描述概率分布中随机变量间的直接相互作用,从而描绘一个概率分布。

图模型中的主要难点就在于判断那些变量之间存在直接的相互作用

16.2 使用图来描述模型结构

图模型中三要素:顶点(vertex),节点(node),边(edge)

顶点表示初始状态,在多数情况下可看成是节点。图中的每个节点表示一个随机变量,而连接着节点(变量)的边则代表着两个变量直接的直接相互作用。这些直接相互作用隐含着其他的简介相互作用,但只有直接的相互作用会被显示的建模。

16.2.1 有向模型

有向模型,指的就是连接节点的边是有方向的,可以通过一个箭头来表示。箭头所指的方向表示了这个随机变量的概率分布是由其他变量的概率分布所定义的。即描述了一种因果关系。图1就是一个有向无环图的例子。

【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型
图1. 有向无环图,表示接力赛跑中,选手比赛时间对下一棒选手比赛时间的影响

t我们定义变量x的有向模型是通过有向无环图G(directed acyclic graph)和一些列局部条件概率分布(local conditional probability distribution)来定义的。

x的概率分布可以表示为:【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型表示【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型的父节点

                                                                       【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型

根据上面这个公式,图1中的概率分布则可以表示为:

                                                                 【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型

用这种方法可以大幅度减少参数。在有向图中,参数的数量不光受每个随机变量的值得个数所影响,还受每个随机变量的父节点所影响。

16.2.2 无向模型

无向模型,即所有边都是没有方向的。相比于有向模型描述的因果关系,当相互作用并没有本质性的指向,或者是明确的双向作用时,使用无向模型更加合适。图2就是一个无向图模型的例子。

【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型
图2 无线图,每个节点表示室友,本人,同事的健康状态

 

                                               

表1 团【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型,【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型的常数因子
  【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型 【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型   【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型 【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型
【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型 2 1 【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型 3 2
【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型 1 10 【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型 2 8

 无向图中,也有一些重要的要素:

  • 势能团 Clique potential:一个团是图中全部相互连接的节点的一个子集,记作C。图2中有两个团【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型
  • 因子 factor:  【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型,它衡量了团中变量每一种可能的联合状态所对应的密切程度。这些因子都被限制是非负的。它们一起定义了为归一化概率函数(unnormalized probability function): 

                                                                                     【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型       

         则以图2为例: 【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型

  • 配分函数 Partition Function: 尽管这个未归一化概率函数处处不为零,我们仍然无法保证它的概率之和或者 积分为 1。为了得到一个有效的概率分布,我们需要使用对应的归一化的概率分布:

                                                                                       【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型    

                                                             【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型      或对于离散x        【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型

       对于配分函数处理:

  1. 为归一化概率函数为定值还是一个关于x的方程,若为定值则可以按照表1的方式求出Z;若其是关于x的方程,则Z也是一个关于x的方程,那么我们在求解的过程中,首先要保证Z不是发散的。
  2. 但在实际问题中,Z与x的关系是很难得到的。所以,我们通常采用一些近似的方式来估算Z。这些方法稍后会讲到。 
  • 基于能量的模型 Energy-based model, EBM:

                                                                                    【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型

        为什么基于能量:

          1. 无向模型中许多有趣的理论结果都依赖于 ∀x, p ̃(x) > 0 这个假设。指数函数满足这个假设。

          2. 加入指数函数后,在学习各个是势能团的时候,就不需要对势能团大于零加以限制。

        许多对概率模型进行操作的算法不需要计算【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型,而只需要计算 【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型。对于具有潜变量 h 的基于能量的模型,这些算法有时会将该量的负数 称为 *能(free energy):

                                                                               【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型

16.2.3 分离和d-分离

在学习分离之前,我们要明白什么是条件独立性。条件独立性就是在给定条件下,两个时间是否独立。A和B在给定C下条件独立记为:【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型。在图中,无向图中的隐含的条件独立性称为分离(seperation),有向图中则成为d-分离(d-seperation)。

  • 无向图:如果连接两个变量 a 和 b 的连接路径仅涉及未观察变量,那么这些 变量不是分离的。如果它们之间没有路径,或者所有路径都包含可观测的变量,那 么它们是分离的。图3,图4分别是无向图的两个例子。

 

【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型
图3 s用阴影填充表示可观测。(a)不是分离的。(b)s可观测,路径不活跃,则在给定s的情况下a,b分离。

 

【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型
图4 a,d之间路径是活跃的,因此给定b的情况下a,d不分离;a,c和d,c之间有可观测变量b,因此路径不活跃,所以给定b的情况下,a,d和c 分离
  •  有向图 :   
【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型
图5 两个随机变量 a,b 之间存在的长度为 2 的所有种类的活跃路径。(a) 箭头方向从 a 指向 b 的任何路径,反过来也一样。如果 s 可以被观察到,这种路径就是阻塞的。在接力赛的例子中, 我们已经看到过这种类型的路径。(b) 变量 a 和 b 通过共因 s 相连。举个例子,假设 s 是一个表 示是否存在飓风的变量,a 和 b 表示两个相邻气象监控区域的风速。如果我们在 a 处观察到很高 的风速,我们可以期望在 b 处也观察到高速的风。如果观察到 s,那么这条路径就被阻塞了。如果 我们已经知道存在飓风,那么无论 a 处观察到什么,我们都能期望 b 处有较高的风速。在 a 处观 察到一个低于预期的风速(对飓风而言)并不会改变我们对 b 处风速的期望(已知有飓风的情况 下)。然而,如果 s 不被观测到,那么 a 和 b 是依赖的,即路径是活跃的。(c) 变量 a 和 b 都是
s 的父节点。这称为 V-结构(V-structure)或者 碰撞情况(the collider case)。根据 相消解释作 用(explaining away effect),V-结构导致 a 和 b 是相关的。在这种情况下,当 s 被观测到时路径 是活跃的。举个例子,假设 s 是一个表示你的同事不在工作的变量。变量 a 表示她生病了,而变 量 b 表示她在休假。如果你观察到了她不在工作,你可以假设她很有可能是生病了或者是在度假, 但是这两件事同时发生是不太可能的。如果你发现她在休假,那么这个事实足够解释她的缺席了。 你可以推断她很可能没有生病。(d) 即使 s 的任意后代都被观察到,相消解释作用也会起作用。举 个例子,假设 c 是一个表示你是否收到你同事的报告的一个变量。如果你注意到你还没有收到这 个报告,这会增加你估计的她今天不在工作的概率,这反过来又会增加她今天生病或者度假的概 率。阻塞 V-结构中路径的唯一方法就是共享子节点的后代一个都观察不到。

                               

【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型
图6 从这张图中,我们可以发现一些 d-分离的性质。这包括了: • 给定空集的情况下,a 和 b 是 d-分离的。
• 给定 c 的情况下,a 和 e 是d-分离的。
• 给定 c 的情况下,d 和 e 是d-分离的。
我们还可以发现当我们观察到一些变量时,一些变量不再是 d-分离的: • 给定c的情况下,a和b不是d-分离的。
• 给定d的情况下,a和b不是d-分离的。

16.2.4 有向图无向图相互转换

16.2.5 因子图 

 

16.3 从图模型中采样

16.4 学习依赖关系

  • 潜变量:良好的生成模型需要准确地捕获所观察到的或 ‘‘可见’’ 变量 v 上的分布。通常 v 的不同元素彼此高度依赖。在深度学习中,最常用于建模这些依赖关系的方法是 引入几个潜在或 ‘‘隐藏’’ 变量 h。然后,该模型可以捕获任何对(变量 vi 和 vj 间 接依赖可以通过 vi 和 h 之间直接依赖和 v 和 hj 直接依赖捕获) 之间的依赖关系。
  • 结构学习:当模型旨在描述直接连接的可见变量之间的依赖关系时,通常不可能连接所有变量,因此设计图模型时需要连接那些紧密相关的变量,并忽略其他变量之间的作用。机器学习中有一个称为结构学习(structure learning)的领域专门讨论这个问题。Koller and Friedman (2009) 是一个不错的结构学习参考资料。大多数结构学习技术基于一种贪婪搜索的形式。它们提出了一种结构,对具有该结构的模型进行训练,然后给出分数。该分数奖励训练集上的高精度并对模型的复杂度进行惩罚。然后提出添加或移除少量边的候选结构作为搜索的下一步。搜索向一个预计会增加分数的新结构发展。

16.5 推断和近似推断

推断:根据可观测变量v 推断不可观测变量 E[h | v]

解决变量之间如何相互关联的问题是我们使用概率模型的一个主要方式。给定 一组医学测试,我们可以询问患者可能患有什么疾病。在一个潜变量模型中,我们可能需要提取能够描述可观察变量 v 的特征 E[h | v]。有时我们需要解决这些问题 来执行其他任务。我们经常使用最大似然的准则来训练我们的模型。由于

                                                                   【第十六章】Deep Learning 读书笔记——深度学习中结构化概率模型

学习过程中,我们经常需要计算 p(h | v)。所有这些都是 推断(inference)问题的例子,其中我们必须预测给定其他变量的情况下一些变量的值,或者在给定其他变量 值的情况下预测一些变量的概率分布。

近似推断:由于推断解决起来很复杂。这促使我们使用近似推断。在深度学习中,这通常涉及变分推断,其中通过寻 求尽可能接近真实分布的近似分布 q(h | v) 来逼近真实分布 p(h | v)。