16.1 非结构化建模的挑战
在深度学习中,我们训练AI模型去理解自然图片,声波代表的演讲,或包含很多单词的文档。这些通常需要深度学习模型将一个高维度的数据作为输入,并将这个输入概括到一个特定的类别。但在类似的分类问题中,模型往往可以不必考虑到输入的所有维度。比如,在图片识别的时候,模型可以忽略点图片中的背景。
但是,在概率模型中,我们需要考虑所有的输入以及输入数据的全部结构。这些问题包括:
- Density estimation 估计密度函数
- Denoising 去噪
- Missing value imputation 缺失值的填补
- Sampling 采样
然后,如果使用暴力解法:建立一个真值表,让计算机记住每一个sample,这将会有很大的计算量。
因此,我们要引入结构化概率模型,它使用图来描述概率分布中随机变量间的直接相互作用,从而描绘一个概率分布。
图模型中的主要难点就在于判断那些变量之间存在直接的相互作用
16.2 使用图来描述模型结构
图模型中三要素:顶点(vertex),节点(node),边(edge)
顶点表示初始状态,在多数情况下可看成是节点。图中的每个节点表示一个随机变量,而连接着节点(变量)的边则代表着两个变量直接的直接相互作用。这些直接相互作用隐含着其他的简介相互作用,但只有直接的相互作用会被显示的建模。
16.2.1 有向模型
有向模型,指的就是连接节点的边是有方向的,可以通过一个箭头来表示。箭头所指的方向表示了这个随机变量的概率分布是由其他变量的概率分布所定义的。即描述了一种因果关系。图1就是一个有向无环图的例子。
t我们定义变量x的有向模型是通过有向无环图G(directed acyclic graph)和一些列局部条件概率分布(local conditional probability distribution)来定义的。
x的概率分布可以表示为:表示的父节点
根据上面这个公式,图1中的概率分布则可以表示为:
用这种方法可以大幅度减少参数。在有向图中,参数的数量不光受每个随机变量的值得个数所影响,还受每个随机变量的父节点所影响。
16.2.2 无向模型
无向模型,即所有边都是没有方向的。相比于有向模型描述的因果关系,当相互作用并没有本质性的指向,或者是明确的双向作用时,使用无向模型更加合适。图2就是一个无向图模型的例子。
2 | 1 | 3 | 2 | ||
1 | 10 | 2 | 8 |
无向图中,也有一些重要的要素:
- 势能团 Clique potential:一个团是图中全部相互连接的节点的一个子集,记作C。图2中有两个团和
- 因子 factor: ,它衡量了团中变量每一种可能的联合状态所对应的密切程度。这些因子都被限制是非负的。它们一起定义了为归一化概率函数(unnormalized probability function):
则以图2为例:
- 配分函数 Partition Function: 尽管这个未归一化概率函数处处不为零,我们仍然无法保证它的概率之和或者 积分为 1。为了得到一个有效的概率分布,我们需要使用对应的归一化的概率分布:
或对于离散x
对于配分函数处理:
- 为归一化概率函数为定值还是一个关于x的方程,若为定值则可以按照表1的方式求出Z;若其是关于x的方程,则Z也是一个关于x的方程,那么我们在求解的过程中,首先要保证Z不是发散的。
- 但在实际问题中,Z与x的关系是很难得到的。所以,我们通常采用一些近似的方式来估算Z。这些方法稍后会讲到。
- 基于能量的模型 Energy-based model, EBM:
为什么基于能量:
1. 无向模型中许多有趣的理论结果都依赖于 ∀x, p ̃(x) > 0 这个假设。指数函数满足这个假设。
2. 加入指数函数后,在学习各个是势能团的时候,就不需要对势能团大于零加以限制。
许多对概率模型进行操作的算法不需要计算,而只需要计算 。对于具有潜变量 h 的基于能量的模型,这些算法有时会将该量的负数 称为 *能(free energy):
16.2.3 分离和d-分离
在学习分离之前,我们要明白什么是条件独立性。条件独立性就是在给定条件下,两个时间是否独立。A和B在给定C下条件独立记为:。在图中,无向图中的隐含的条件独立性称为分离(seperation),有向图中则成为d-分离(d-seperation)。
- 无向图:如果连接两个变量 a 和 b 的连接路径仅涉及未观察变量,那么这些 变量不是分离的。如果它们之间没有路径,或者所有路径都包含可观测的变量,那 么它们是分离的。图3,图4分别是无向图的两个例子。
- 有向图 :

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]。有时我们需要解决这些问题 来执行其他任务。我们经常使用最大似然的准则来训练我们的模型。由于
学习过程中,我们经常需要计算 p(h | v)。所有这些都是 推断(inference)问题的例子,其中我们必须预测给定其他变量的情况下一些变量的值,或者在给定其他变量 值的情况下预测一些变量的概率分布。
近似推断:由于推断解决起来很复杂。这促使我们使用近似推断。在深度学习中,这通常涉及变分推断,其中通过寻 求尽可能接近真实分布的近似分布 q(h | v) 来逼近真实分布 p(h | v)。