序言
在深度学习的探索之路上,结构化概率模型以其独特的视角和强大的表达能力,成为了研究复杂数据关系的重要工具。这一模型的核心在于其巧妙地利用图来描述模型结构,将随机变量间的复杂交互关系可视化、结构化。图的引入,不仅为我们提供了一个直观理解数据内部结构的工具,更使得模型的学习与推理过程变得更加高效和精准。通过图,我们可以清晰地看到变量之间的依赖关系、信息传递路径以及潜在的因果结构,这为构建更加复杂、精确的深度学习模型提供了坚实的基础。
使用图来描述模型结构
- 结构化概率模型使用图(在图论中 ‘‘结点’’ 是通过 ‘‘边’’ 来连接的)来表示随机变量之间的相互作用。每一个结点代表一个随机变量。每一条边代表一个直接相互作用。这些直接相互作用隐含着其他的间接相互作用,但是只有直接的相互作用是被显式地建模的。
- 使用图来描述概率分布中相互作用的方法不止一种。
- 在下文中我们会介绍几种最为流行和有用的方法。
- 图模型可以被大致分为两类:基于有向无环图的模型,和基于无向模型的模型。
有向模型
-
有向图模型 ( directed graphical model \text{directed graphical model} directed graphical model) 是一种结构化概率模型,也被叫做信念网络 ( belief network \text{belief network} belief network) 或者贝叶斯网络 ( Bayesian network 注 1 \text{Bayesian network}^{注1} Bayesian network注1) ( Pearl, 1985 \text{Pearl, 1985} Pearl, 1985)。
-
之所以命名为有向图模型是因为所有的边都是有方向的,即从一个结点指向另一个结点。
- 这个方向可以通过画一个箭头来表示。
- 箭头所指的方向表示了这个随机变量的概率分布是由其他变量的概率分布所定义的。
- 画一个从结点 a \text{a} a 到结点 b \text{b} b 的箭头表示了我们用一个条件分布来定义 b \text{b} b,而 a \text{a} a 是作为这个条件分布符号右边的一个变量。
- 换句话说, b \text{b} b 的概率分布依赖于 a \text{a} a 的取值。
-
举个接力赛的例子,我们假设 Alice \text{Alice} Alice 的完成时间为 t 0 t_0 t0, Bob \text{Bob} Bob的完成时间为 t 1 t_1 t1, Carol \text{Carol} Carol 的完成时间为 t 2 t_2 t2。就像我们之前看到的一样, t 1 t_1 t1 的估计是依赖于 t 0 t_0 t0 的, t 2 t_2 t2 的估计是直接依赖于 t 1 t_1 t1 的,但是仅仅间接地依赖于 t 0 t_0 t0。我们用一个有向图模型来建模这种关系,就如在
图例1
中看到的一样。 -
正式的讲,变量 x \textbf{x} x 的有向概率模型是通过有向无环图 G \mathcal{G} G (每个结点都是模型中的随机变量)和一系列局部条件概率分布 ( local conditional probability distribution \text{local conditional probability distribution} local conditional probability distribution)
p ( x i ∣ P a G ( x i ) ) p(\text{x}_i\mid P_{a\mathcal{G}}(\text{x}_i)) p(xi∣PaG(xi)) 来定义的,其中 P a G ( x i ) P_{a\mathcal{G}}(\text{x}_i) PaG(xi) 表示结点 x i \text{x}_i xi 的所有父结点。 x \textbf{x} x 的概率分布可:
p ( x ) = ∏ i p ( x i ∣ P a G ( x i ) ) p(\textbf{x})=\prod\limits_i p(\text{x}_i\mid P_{a\mathcal{G}}(\text{x}_i)) p(x)=i∏p(xi∣PaG(xi)) — 公式1 \quad\textbf{---\footnotesize{公式1}} —公式1 -
在之前所述的接力赛的例子中,参考
图例1
,这意味着概率分布可以被表示为:
p ( t 0 , t 1 , t 2 ) = p ( t 0 ) p ( t 1 ∣ t 0 ) p ( t 2 ∣ t 1 ) p(t_0,t_1,t_2)=p(t_0)p(t_1\mid t_0)p(t_2\mid t_1) p(t0,t1,t2)=p(t0)p(t1∣t0)p(t2∣t1) — 公式2 \quad\textbf{---\footnotesize{公式2}} —公式2
注1:当我们希望强调从网络中计算出的值的推断本质,尤其是强调这些值代表的是置信程度大小而不是事件的频率时,Judea Pearl 建议使用 “贝叶斯网络’’ 这个术语。
- 这是我们看到的第一个结构化概率模型的实际例子。我们能够检查这样建模的计算开销,为了验证相比于非结构化建模,结构化建模为什么有那么多的优势。
- 通常意义上说,对每个变量都能取
k
k
k 个值的
n
n
n 个变量建模,基于建表的方法需要的复杂度是
O
(
k
n
)
O(k^n)
O(kn),就像我们之前观察到的一样。
- 现在假设我们用一个有向图模型来对这些变量建模。
- 如果 m m m 代表图模型的单个条件概率分布中最大的变量数目(在条件符号的左右皆可),那么对这个有向模型建表的复杂度大致为 O ( k m ) O(k^m) O(km)。
- 只要我们在设计模型时使其满足 m ≪ n m \ll n m≪n,那么复杂度就会被大大地减小。
- 换一句话说,只要图中的每个变量都只有少量的父结点,那么这个分布就可以用较少的参数来表示。图结构上的一些限制条件,比如说要求这个图为一棵树,也可以保证一些操作(例如求一小部分变量的边缘或者条件分布)更加地高效。
无向模型
- 有向图模型为我们提供了一种描述结构化概率模型的语言。
- 而另一种常见的语言则是无向模型 ( Undirected Model \text{Undirected Model} Undirected Model),也叫做马尔可夫随机场 ( Markov random field, MRF \text{Markov random field, MRF} Markov random field, MRF) 或者是马尔可夫网络 ( Markov network \text{Markov network} Markov network) ( Kindermann, 1980 \text{Kindermann, 1980} Kindermann, 1980)。
- 就像它们的名字所说的那样, 无向模型中所有的边都是没有方向的。
- 有向模型显然适用于当存在一个很明显的理由来描述每一个箭头的时候。
- 有向模型中,经常存在我们理解的具有因果关系以及因果关系有明确方向的情况下。
- 接力赛的例子就是一个这样的情况。
- 之前运动员的表现影响了后面运动员的完成时间,而后面运动员却不会影响前面运动员的完成时间。
- 然而并不是所有情况的相互作用都有一个明确的方向关系。当相互的作用并没有本质性的指向,或者是明确的双向相互作用的时候,使用无向模型更加合适。
- 作为一个这种情况的例子,假设我们希望对三个二值随机变量建模:你是否生病,你的同事是否生病以及你的室友是否生病。
- 就像在接力赛的例子中所作的简化假设一样,我们可以在这里做一些关于相互作用的简化假设。
- 假设你的室友和同事并不认识,所以他们不太可能直接相互传染一些疾病,比如说是感冒。
- 这个事件太过稀有,所以我们不对此事件建模。
- 然而,很有可能他们之一将感冒传染给你,然后通过你来传染给了另一个人。
- 我们通过对你的同事传染给你以及你传染给你的室友建模来对这种间接的从你的同事到你的室友的感冒传染建模。
- 在这种情况下,你传染给你的室友和你的室友传染给你都是非常容易的,所以模型不存在一个明确的单向箭头。
- 这启发我们使用无向模型。
- 其中随机变量对应着图中的相互作用的结点。
- 与有向模型相同的是,如果在无向模型中的两个结点通过一条边相连接,那么对应这些结点的随机变量相互之间是直接作用的。
- 不同于有向模型,在无向模型中的边是没有方向的,并不与一个条件分布相关联。
- 我们把对应你的健康的随机变量记作
h
y
\text{h}_y
hy,对应你的室友健康状况的随机变量记作
h
r
\text{h}_r
hr,你的同事健康的变量记作
h
c
\text{h}_c
hc。
图例2
表示来这种关系。 - 正式的说,一个无向模型是一个定义在无向模型
G
\mathcal{G}
G 上的结构化概率模型。
- 对图中的每一个 团 注 2 \text{团}^{注2} 团注2 C \mathcal{C} C,一个因子 ( factor \text{factor} factor) ϕ ( C ) \phi(\mathcal{C}) ϕ(C)(也叫做团势能 ( clique potential \text{clique potential} clique potential)),衡量了团中变量每一种可能的联合状态所对应的密切程度。这些因子都被限制为是非负的。
- 合在一起他们定义了未归一化概率函数 (
unnormalized probability function
\text{unnormalized probability function}
unnormalized probability function):
p ~ ( x ) = ∏ C ∈ G ϕ ( C ) \tilde{p}(\text{x})=\prod\limits_{\mathcal{C}\in\mathcal{G}}\phi(\mathcal{C}) p~(x)=C∈G∏ϕ(C) — 公式3 \quad\textbf{---\footnotesize{公式3}} —公式3
注2:图的一个团是图中结点的一个子集,并且其中的点是全连接的。
-
只要所有的团中的结点数都不大,那么我们就能够高效地处理这些未归一化概率函数。
- 它包含了这样的思想,越高密切度的状态有越大的概率。
- 然而,不像贝叶斯网络,几乎不存在团定义的结构,所以不能保证把它们乘在一起能够得到一个有效的概率分布。
图例3
展示了一个从无向模型中读取分解信息的例子。
-
在你,你的室友和同事之间感冒传染的例子中包含了两个团。一个团包含了 h y \text{h}_y hy和 h c \text{h}_c hc。这个团的因子可以通过一个表来定义,可能取到下面的值:
- 状态为 1 1 1 代表了健康的状态,相对的状态为 0 0 0 则表示不好的健康状态(即感染了感冒)。
- 你们两个通常都是健康的,所以对应的状态拥有最高的密切程度。
- 两个人中只有一个人是生病的密切程度是最低的,因为这是一个很少见的状态。
- 两个人都生病的状态(通过一个人来传染给了另一个人)有一个稍高的密切程度,尽管仍然不及两个人都健康的密切程度。
-
为了完整地定义这个模型,我们需要对包含 h y \text{h}_y hy 和 h r \text{h}_r hr 的团定义类似的因子。
配分函数
- 尽管这个未归一化概率函数处处不为零,我们仍然无法保证它的概率之和或者积分为 1。为了得到一个有效的概率分布,我们需要使用对应的归一化的
概率分布
注
3
\text{概率分布}^{注3}
概率分布注3:
p ( x ) = 1 Z p ~ ( x ) p(\text{x})=\displaystyle\frac{1}{Z}\tilde{p}(\text{x}) p(x)=Z1p~(x) — 公式4 \quad\textbf{---\footnotesize{公式4}} —公式4 - 其中, Z 是使得所有的概率之和或者积分为1的常数,并且满足:
Z = ∫ p ~ ( x ) d x Z=\displaystyle\int\tilde{p}(\text{x})d\text{x} Z=∫p~(x)dx — 公式5 \quad\textbf{---\footnotesize{公式5}} —公式5 - 当函数
ϕ
\phi
ϕ 固定的时候,我们可以把
Z
Z
Z 当成是一个常数。
- 值得注意的是如果函数 ϕ \phi ϕ 带有参数时,那么 Z Z Z 是这些参数的一个函数。
- 在相关文献中为了节省空间忽略控制 Z Z Z的变量而直接写 Z Z Z 是一个常用的方式。
- 归一化常数 Z Z Z 被称作是配分函数,一个从统计物理学中借鉴的术语。
注3:一个通过归一化团势能乘积定义的分布也被称作是吉布斯分布 (Gibbs distribution)。
-
由于 Z Z Z 通常是由对所有可能的 x \textbf{x} x 状态的联合分布空间求和或者求积分得到的,它通常是很难计算的。
- 为了获得一个无向模型的归一化概率分布,模型的结构和函数 ϕ \phi ϕ 的定义通常需要设计为有助于高效地计算 Z Z Z。
- 在深度学习中, Z Z Z 通常是难以处理的。
- 由于 Z Z Z 难以精确地计算出,我们只能使用一些近似的方法。
-
在设计无向模型时我们必须牢记在心的一个要点是设定一些使得 Z Z Z 不存在的因子也是有可能的。
- 当模型中的一些变量是连续的,且在 p ~ \tilde{p} p~ 在其定义域上的积分发散的时候这种情况就会发生。
- 例如,当我们需要对一个单独的标量变量
x
∈
R
\text{x}\in\mathbb{R}
x∈R 建模,并且这个包含一个点的团势能定义为
ϕ
(
x
)
=
x
2
\phi(x) = x^2
ϕ(x)=x2 时。在这种情况下:
Z = ∫ x 2 d x Z=\displaystyle\int x^2dx Z=∫x2dx — 公式6 \quad\textbf{---\footnotesize{公式6}} —公式6
-
由于这个积分是发散的,所以不存在一个对应着这个势能函数 ϕ ( x ) \phi(x) ϕ(x) 的概率分布。
- 有时候 ϕ \phi ϕ 函数某些参数的选择可以决定相应的概率分布是否能够被定义。
- 比如说,对 ϕ \phi ϕ 函数 ϕ ( x , β ) = e ( − β x 2 ) \phi(x,\beta) = \displaystyle e^{(-\beta x^2)} ϕ(x,β)=e(−βx2) 来说,参数 β \beta β 决定了归一化常数 Z Z Z 是否存在。
- 一个正的 β \beta β 使得 ϕ \phi ϕ 函数是一个关于 x \text{x} x 的高斯分布,但是一个非正的参数 β \beta β 则使得 ϕ \phi ϕ 不可能被归一化。
-
有向建模和无向建模之间一个重要的区别就是有向模型是通过从起始点的概率分布直接定义的,反之无向模型的定义显得更加宽松,通过 ϕ \phi ϕ 函数转化为概率分布而定义。
- 这改变了我们处理这些建模问题的直觉。
- 当我们处理无向模型时需要牢记一点,每一个变量的定义域对于一系列给定的 ϕ \phi ϕ 函数所对应的概率分布有着重要的影响。
- 举个例子,我们考虑一个 n n n 维向量的随机变量 x \textbf{x} x 以及一个由偏置向量 b \boldsymbol{b} b 参数化的无向模型。
- 假设 x \textbf{x} x 的每一个元素对应着一个团,并且满足 ϕ ( i ) ( x i ) = e ( b i x i ) \phi^{(i)}(\text{x}_i) = e^(b_i\text{x}_i) ϕ(i)(xi)=e(bixi)。
- 在这种情况下概率分布是怎么样的呢?
- 答案是我们无法确定,因为我们并没有指定 x \textbf{x} x 的定义域。
- 如果 x \textbf{x} x 满足 x ∈ R n \text{x}\in\mathbb{R}^n x∈Rn,那么有关归一化常数 Z Z Z 的积分是发散的,这导致了对应的概率分布是不存在的。
- 如果 x ∈ { 0 , 1 } n \text{x}\in\{0,1\}^n x∈{0,1}n,那么 p ( x ) p(\textbf{x}) p(x) 可以被分解成 n n n 个独立的分布,并且满足 p ( x i = 1 ) = sigmoid ( b i ) p(\text{x}_i = 1) = \text{sigmoid}(b_i) p(xi=1)=sigmoid(bi)。
- 如果 x \textbf{x} x 的定义域是基本单位向量 ( { [ 1 , 0 , … , 0 ] , [ 0 , 1 , … , 0 ] , … , [ 0 , 0 , … , 1 ] } ) (\{[1, 0,\dots, 0],[0, 1,\dots, 0],\dots,[0, 0,\dots,1]\}) ({[1,0,…,0],[0,1,…,0],…,[0,0,…,1]}) 的集合,那么 p ( x ) = softmax ( b ) p(\text{x}) = \text{softmax}(\boldsymbol{b}) p(x)=softmax(b),因此对于 j ≠ i j \ne i j=i 一个较大的 b i b_i bi 的值会降低所有的 p ( x j = 1 ) p(\text{x}_j = 1) p(xj=1) 的概率。
- 通常情况下,通过仔细选择变量的定义域,能够使得一个相对简单的 ϕ \phi ϕ 函数可以获得一个相对复杂的表达。
基于能量的模型
-
无向模型中许多有趣的理论结果都依赖于 ∀ x , p ~ ( x ) > 0 \forall\boldsymbol{x},\tilde{p}(\boldsymbol{x})\gt0 ∀x,p~(x)>0 这个假设。使这个条件满足的一种简单方式是使用基于能量的模型 ( Energy-based model, EBM \text{Energy-based model, EBM} Energy-based model, EBM),其中:
p ~ ( x ) = e ( − E ( x ) ) \tilde{p}(\textbf{x})=e^{(-E(\textbf{x}))} p~(x)=e(−E(x)) — 公式7 \quad\textbf{---\footnotesize{公式7}} —公式7 -
E ( x ) E(\textbf{x}) E(x) 被称作是能量函数 ( energy function \text{energy function} energy function)。对所有的 z \text{z} z, e ( z ) e^{(\text{z})} e(z) 都是正的,这保证了没有一个能量函数会使得某一个状态 x \textbf{x} x 的概率为 0 0 0。
- 我们可以很自由地选择那些能够简化学习过程的能量函数。
- 如果我们直接学习各个团势能,我们需要利用约束优化方法来任意地指定一些特定的最小概率值。
- 学习能量函数的过程中,我们可以采用无约束的优化方法。
- 基于能量的模型中的概率可以无限趋近于 0 0 0 但是永远达不到 0 0 0。
-
服从
公式7
形式的任意分布都是玻尔兹曼分布 ( Boltzmann distribution \text{Boltzmann distribution} Boltzmann distribution) 的一个实例。- 正是基于这个原因,我们把许多基于能量的模型叫做玻尔兹曼机 ( Boltzmann Machine \text{Boltzmann Machine} Boltzmann Machine) ( Fahlman et al., 1983; Ackley et al., 1985; Hinton et al., 1984a; Hinton and Sejnowski, 1986 \text{Fahlman et al., 1983; Ackley et al., 1985; Hinton et al., 1984a; Hinton and Sejnowski, 1986} Fahlman et al., 1983; Ackley et al., 1985; Hinton et al., 1984a; Hinton and Sejnowski, 1986)。
- 关于什么时候叫基于能量的模型,什么时候叫玻尔兹曼机不存在一个公认的判别标准。
- 一开始玻尔兹曼机这个术语是用来描述一个只有二进制变量的模型,但是如今许多模型,比如均值-协方差 RBM \text{RBM} RBM,也涉及到了实值变量。
- 虽然玻尔兹曼机最初的定义既可以包含潜变量也可以不包含潜变量,但是时至今日玻尔兹曼机这个术语通常用于指拥有潜变量的模型,而没有潜变量的玻尔兹曼机则经常被称为马尔可夫随机场或对数线性模型。
-
无向模型中的团对应于未归一化概率函数中的因子。
- 通过 e ( a + b ) = e ( a ) e ( b ) e^{(a+b)}=e^{(a)}e^{(b)} e(a+b)=e(a)e(b),我们发现无向模型中的不同团对应于能量函数的不同项。
- 换句话说,基于能量的模型只是一种特殊的马尔可夫网络:求幂使能量函数中的每个项对应于不同团的一个因子。
- 关于如何从无向模型结构中获得能量函数形式的示例参见
图例4
。 - 人们可以将能量函数中带有多个项的基于能量的模型视作是专家之积 ( product of expert \text{product of expert} product of expert) ( Hinton, 1999 \text{Hinton, 1999} Hinton, 1999)。
- 能量函数中的每一项对应的是概率分布中的一个因子。
- 能量函数中的每一项都可以看作决定一个特定的软约束是否能够满足的‘‘专家’’。
- 每个专家只执行一个约束,而这个约束仅仅涉及随机变量的一个低维投影,但是当其结合概率的乘法时,专家们一同构造了复杂的高维约束。
-
基于能量的模型定义的一部分无法用机器学习观点来解释:即
公式7
中的 “-’’符号。- 这个 “-’’ 符号可以被包含在 E E E 的定义之中。
- 对于很多 E E E 函数的选择来说,学习算法可以自由地决定能量的符号。
- 这个负号的存在主要是为了保持机器学习文献和物理学文献之间的兼容性。
- 概率建模的许多研究最初都是由统计物理学家做出的,其中 E E E 是指实际的、物理概念的能量,没有任意的符号。
- 诸如 ‘‘能量’’ 和 “配分函数’’ 这类术语仍然与这些技术相关联,尽管它们的数学适用性比在物理中更宽,尽管最早是从物理学中发现的。
- 一些机器学习研究者(例如, Smolensky (1986) \text{Smolensky (1986)} Smolensky (1986) 将负能量称为harmony \textbf{将负能量称为harmony} 将负能量称为harmony ( harmony \text{harmony} harmony))发出了不同的声音,但这些都不是标准惯例。
-
许多对概率模型进行操作的算法不需要计算 p model ( x ) p_{\text{model}}(\boldsymbol{x}) pmodel(x), 而只需要计算 log p ~ model ( x ) \log \tilde{p}_{\text{model}}(\boldsymbol{x}) logp~model(x)。对于具有潜变量 h \boldsymbol{h} h 的基于能量的模型,这些算法有时会将该量的负数称为自由能 ( free energy \text{free energy} free energy):
F ( x ) = − log ∑ h e ( − E ( x , h ) ) \mathcal{F}(\boldsymbol{x})=-\log \sum\limits_{\boldsymbol{h}} e^{(-E(\boldsymbol{x},\boldsymbol{h}))} F(x)=−logh∑e(−E(x,h)) — 公式8 \quad\textbf{---\footnotesize{公式8}} —公式8 -
我们更倾向于更为通用的基于 log p ~ model ( x ) \log \tilde{p}_{\text{model}}(\boldsymbol{x}) logp~model(x) 的定义。
分离和d-分离
-
图模型中的边告诉我们哪些变量直接相互作用。我们经常需要知道哪些变量间接相互作用。某些间接相互作用可以通过观察其他变量来启用或禁用。更正式地,我们想知道在给定其他变量子集的值时,哪些变量子集彼此条件独立。
-
在无向模型中,识别图中的条件独立性是非常简单的。
- 在这种情况下,图中隐含的条件独立性称为分离 ( separation \text{separation} separation)。
- 如果图结构显示给定变量集 S \mathbb{S} S 的情况下变量集 A \mathbb{A} A 与变量集 B \mathbb{B} B 无关,那么我们声称给定变量集 S \mathbb{S} S 时,变量集 A \mathbb{A} A 与另一组变量集 B \mathbb{B} B 是分离的。
- 如果连接两个变量 a \text{a} a 和 b \text{b} b 的连接路径仅涉及未观察变量,那么这些变量不是分离的。
- 如果它们之间没有路径,或者所有路径都包含可观测的变量,那么它们是分离的。
- 我们认为仅涉及到未观察到的变量的路径是 ‘‘活跃’’ 的,将包括可观察变量的路径称为 ‘‘非活跃’’ 的。
-
当我们画图时,我们可以通过加阴影来表示观察到的变量。
图例5
用于描述当以这种方式绘图时无向模型中的活跃和非活跃路径的样子。图例6
描述了一个从一个无向模型中读取分离信息的例子。
-
类似的概念适用于有向模型,只是在有向模型中,这些概念被称为 d-分离 \textbf{d-分离} d-分离 ( d-separation \text{d-separation} d-separation)。
- “ d \text{d} d’’ 代表 “依赖性’’ 的意思。
- 有向图中 d \text{d} d-分离的定义与无向模型中分离的定义相同:我们认为如果图结构显示给定另外的变量集 S \mathbb{S} S 时 A \mathbb{A} A 与变量集 B \mathbb{B} B 无关,那么给定变量集 S \mathbb{S} S 时,变量集 A \mathbb{A} A d \text{d} d-分离于变量集 B \mathbb{B} B。
-
与无向模型一样,我们可以通过查看图中存在的活跃路径来检查图中隐含的独立性。
- 如前所述,如果两个变量之间存在活跃路径,则两个变量是依赖的,如果没有活跃路径,则为 d \text{d} d-分离。在有向网络中,确定路径是否活跃有点复杂。
- 关于在有向模型中识别活跃路径的方法可以参见
图例7
。 图例8
是从一个图中读取一些属性的例子。
-
重要的是要记住分离和 d \text{d} d-分离只能告诉我们图中隐含的条件独立性。
- 图并不需要表示所有存在的独立性。
- 进一步的,使用完全图(具有所有可能的边的图)来表示任何分布总是合法的。事实上,一些分布包含不可能用现有图形符号表示的独立性。
- 特定环境下的独立 ( context-specific independences \text{context-specific independences} context-specific independences) 指的是取决于网络中一些变量值的独立性。
- 例如,考虑一个三个二进制变量的模型: a \text{a} a, b \text{b} b 和 c \text{c} c。假设当 a \text{a} a 是 0 0 0时, b \text{b} b 和 c \text{c} c 是独立的,但是当 a \text{a} a 是 1 1 1 时, b \text{b} b 确定地等于 c \text{c} c。当 a = 1 \text{a} = 1 a=1 时图模型需要连接 b \text{b} b 和 c \text{c} c 的边。但是图不能说明当 a = 0 \text{a} = 0 a=0 时 b \text{b} b 和 c \text{c} c 不是独立的。
-
一般来说,当独立性不存在的时候,图不会显示独立性。然而,图可能无法显示存在的独立性。
在有向模型和无向模型中转换
-
我们经常将特定的机器学习模型称为无向模型或有向模型。
- 例如,我们通常将受限玻尔兹曼机称为无向模型,而稀疏编码则被称为有向模型。
- 这种措辞的选择可能有点误导,因为没有概率模型本质上是有向或无向的。
- 但是,一些模型很适合使用有向图描述,而另一些模型很适用于使用无向模型描述。
-
有向模型和无向模型都有其优点和缺点。
- 这两种方法都不是明显优越和普遍优选的。
- 相反,我们根据具体的每个任务来决定使用哪一种模型。
- 这个选择部分取决于我们希望描述的概率分布。
- 根据哪种方法可以最大程度地捕捉到概率分布中的独立性,或者哪种方法使用最少的边来描述分布,我们可以决定使用有向建模还是无向建模。
- 还有其他因素可以影响我们决定使用哪种建模方式。
- 即使在使用单个概率分布时,我们有时可以在不同的建模方式之间切换。
- 有时,如果我们观察到变量的某个子集,或者如果我们希望执行不同的计算任务,换一种建模方式可能更合适。
- 例如,有向模型通常提供了一种高效地从模型中抽取样本的直接方法。
- 而无向模型公式通常对于推导近似推断过程是很有用的。
-
每个概率分布可以由有向模型或由无向模型表示。
- 在最坏的情况下,可以使用“完全图’’ 来表示任何分布。
- 在有向模型的情况下, 完全图是任何有向无环图,其中我们对随机变量排序,并且每个变量在排序中位于其之前的所有其他变量作为其图中的祖先。
- 对于无向模型,完全图只是包含所有变量的单个团。
图例9
给出了一个实例。
-
当然, 图模型的优势在于图能够包含一些变量不直接相互作用的信息。完全图并不是很有用,因为它并不包含任何独立性。
-
当我们用图表示概率分布时,我们想要选择一个包含尽可能多独立性的图,但是并不会假设任何实际上不存在的独立性。
-
从这个角度来看,一些分布可以使用有向模型更高效地表示,而其他分布可以使用无向模型更高效地表示。换句话说, 有向模型可以编码一些无向模型所不能编码的独立性,反之亦然。
-
有向模型能够使用一种无向模型无法完美表示的特定类型的子结构。
- 这个子结构被称为不道德 ( immorality \text{immorality} immorality)。
- 这种结构出现在当两个随机变量 a \text{a} a 和 b \text{b} b 都是第三个随机变量 c \text{c} c 的父结点,并且不存在任一方向上直接连接 a \text{a} a 和 b \text{b} b 的边时。( “不道德’’的名字可能看起来很奇怪; 它在图模型文献中使用源于一个关于未婚父母的笑话。)
- 为了将有向模型图 D \mathcal{D} D 转换为无向模型,我们需要创建一个新图 U \mathcal{U} U。
- 对于每对变量 x \text{x} x和 y \text{y} y,如果存在连接 D \mathcal{D} D 中的 x \text{x} x 和 y \text{y} y 的有向边(在任一方向上),或者如果 x \text{x} x 和 y \text{y} y 都是图 D \mathcal{D} D 中另一个变量 z \text{z} z 的父节点,则在 U \mathcal{U} U 中添加连接 x \text{x} x 和 y \text{y} y 的无向边。
- 得到的图 U \mathcal{U} U 被称为是道德图 ( moralized graph \text{moralized graph} moralized graph)。
- 关于一个通过道德化将有向图模型转化为无向模型的例子可以参见
图例10
。
-
同样的, 无向模型可以包括有向模型不能完美表示的子结构。
- 具体来说,如果 U \mathcal{U} U 包含长度大于 3 3 3 的环 ( loop \text{loop} loop),则有向图 D \mathcal{D} D 不能捕获无向模型 U \mathcal{U} U 所包含的所有条件独立性,除非该环还包含弦 ( chord \text{chord} chord)。
- 环指的是由无向边连接的变量序列,并且满足序列中的最后一个变量连接回序列中的第一个变量。
- 弦是定义环序列中任意两个非连续变量之间的连接。
- 如果 U \mathcal{U} U 具有长度为 4 4 4 或更大的环,并且这些环没有弦,我们必须在将它们转换为有向模型之前添加弦。
- 添加这些弦会丢弃了在 U \mathcal{U} U 中编码的一些独立信息。
- 通过将弦添加到 U \mathcal{U} U 形成的图被称为弦图 ( chordal graph \text{chordal graph} chordal graph) 或者三角形化图 ( triangulated graph \text{triangulated graph} triangulated graph),现在可以用更小的、三角的环来描述所有的环。
- 要从弦图构建有向图 D \mathcal{D} D,我们还需要为边指定方向。
- 当这样做时,我们不能在 D \mathcal{D} D 中创建有向循环,否则将无法定义有效的有向概率模型。
- 为 D \mathcal{D} D 中边分配方向的一种方法是对随机变量排序,然后将每个边从排序较早的节点指向稍后排序的节点。
- 一个简单的实例参见
图例11
。
因子图
- 因子图 (
factor graph
\text{factor graph}
factor graph) 是从无向模型中抽样的另一种方法,它可以解决标准无向模型句法中图表达的模糊性。
- 在无向模型中,每个 ϕ \phi ϕ 函数的范围必须是图中某个团的子集。
- 我们无法确定每一个团是否含有一个作用域包含整个团的因子——比如说一个包含三个结点的团可能对应的是一个有三个结点的因子,也可能对应的是三个因子并且每个因子包含了一对结点,这通常会导致模糊性。
- 通过显式地表示每一个 ϕ \phi ϕ 函数的作用域,因子图解决了这种模糊性。具体来说, 因子图是一个包含无向二分图的无向模型的图形表示。
- 一些节点被绘制为圆形。
- 这些节点对应于随机变量,就像在标准无向模型中一样。
- 其余节点绘制为方块。
- 这些节点对应于未归一化概率函数的因子 ϕ \phi ϕ。
- 变量和因子可以通过无向边连接。
- 当且仅当变量包含在未归一化概率函数的因子中时,变量和因子在图中连接。没有因子可以连接到图中的另一个因子,也不能将变量连接到变量。
图例12
给出了一个例子来说明因子图如何解决无向网络中的模糊性。
- 图例1:一个描述接力赛例子的有向图模型。
-
一个描述接力赛例子的有向图模型
-
说明:
- Alice \text{Alice} Alice 的完成时间 t 0 t_0 t0 影响了 Bob \text{Bob} Bob 的完成时间 t 1 t_1 t1,因为 Bob \text{Bob} Bob 会在 Alice \text{Alice} Alice 完成比赛后才开始。
- 类似的, Carol \text{Carol} Carol 也只会在 Bob \text{Bob} Bob 完成之后才开始,所以 Bob \text{Bob} Bob的完成时间 t 1 t_1 t1 直接影响了 Carol \text{Carol} Carol 的完成时间 t 2 t_2 t2。
-
-
图例2:
- 说明:
- 表示你室友健康的 h r \text{h}_r hr,你的健康的 h y \text{h}_y hy,你同事健康的 h c \text{h}_c hc 之间如何相互影响的一个无向图。你和你的室友可能会相互传染感冒,你和你的同事之间也是如此,但是假设你室友和同事之间相互不认识,他们只能通过你来间接传染。
- 说明:
-
图例3:
- 说明:
- 通过选择适当的 ϕ \phi ϕ函数 p ( a , b , c , d , e , f ) p(\text{a}, \text{b}, \text{c}, \text{d}, \text{e}, \text{f}) p(a,b,c,d,e,f) 可以写作 1 Z ϕ a , b ( a , b ) ϕ b , c ( b , c ) ϕ a , d ( a , d ) ϕ b , e ( b , e ) ϕ e , f ( e , f ) \frac{1}{Z}\phi_{\text{a},\text{b}}(\text{a},\text{b})\phi_{\text{b},\text{c}}(\text{b},\text{c})\phi_{\text{a},\text{d}}(\text{a},\text{d})\phi_{\text{b},\text{e}}(\text{b},\text{e})\phi_{\text{e},\text{f}}(\text{e},\text{f}) Z1ϕa,b(a,b)ϕb,c(b,c)ϕa,d(a,d)ϕb,e(b,e)ϕe,f(e,f)。
- 说明:
-
图例4:
- 说明:
- 通过为每个团选择适当的能量函数 E ( a , b , c , d , e , f ) E(\text{a}, \text{b}, \text{c}, \text{d}, \text{e}, \text{f}) E(a,b,c,d,e,f) 可以写作 E a , b ( a , b ) + E b , c ( b , c ) + E a , d ( a , d ) + E b , e ( b , e ) + E e , f ( e , f ) E_{\text{a},\text{b}}(\text{a},\text{b})+E_{\text{b},\text{c}}(\text{b},\text{c})+E_{\text{a},\text{d}}(\text{a},\text{d})+E_{\text{b},\text{e}}(\text{b},\text{e})+E_{\text{e},\text{f}}(\text{e},\text{f}) Ea,b(a,b)+Eb,c(b,c)+Ea,d(a,d)+Eb,e(b,e)+Ee,f(e,f)。
- 值得注意的是,我们可以通过令
ϕ
\phi
ϕ 等于对应负能量的指数来获得
图例3
中的 ϕ \phi ϕ 函数,比如, ϕ a , b ( a , b ) = e ( − E ( a , b ) ) \phi_{\text{a},\text{b}}(\text{a},\text{b})=e^{(-E(\text{a},\text{b}))} ϕa,b(a,b)=e(−E(a,b))。
- 说明:
-
图例5:
- 说明:
- (a)图:
- 随机变量 a \text{a} a 和随机变量 b \text{b} b 之间穿过 s \text{s} s 的路径是活跃的,因为 s \text{s} s 是观察不到的。
- 这意味着 a \text{a} a, b \text{b} b 之间不是分离的。
- (b)图:
- s \text{s} s 用阴影填充,表示了它是可观察的。
- 因为 a \text{a} a 和 b \text{b} b 之间的唯一路径通过 s \text{s} s,并且这条路径是不活跃的,我们可以得出结论,在给定 s \text{s} s的条件下 a \text{a} a和 b \text{b} b是分离的。
- (a)图:
- 说明:
- 图例6:从一个无向图中读取分离性质的一个例子。
-
从一个无向图中读取分离性质的一个例子
-
说明:
- 这里 b \text{b} b 用阴影填充,表示它是可观察的。
- 由于 b \text{b} b 挡住了从 a \text{a} a 到 c \text{c} c 的唯一路径,我们说在给定 b \text{b} b 的情况下 a \text{a} a 和 c \text{c} c 是相互分离的。
- 观察值 b \text{b} b 同样挡住了从 a \text{a} a 到 d \text{d} d 的一条路径,但是它们之间有另一条活跃路径。
- 因此给定 b \text{b} b 的情况下 a \text{a} a 和 d \text{d} d 不是分离的。
-
- 图例7:两个随机变量
a
\text{a}
a,
b
\text{b}
b 之间存在的所有种类的长度为
2
2
2 的活跃路径。
-
两个随机变量 a \text{a} a, b \text{b} b 之间存在的所有种类的长度为 2 2 2 的活跃路径
-
说明:
- (
a
\text{a}
a)
- 箭头方向从 a \text{a} a 指向 b \text{b} b 的任何路径,反过来也一样。
- 如果 s \text{s} s 可以被观察到,这种路径就是阻塞的。
- 在接力赛的例子中,我们已经看到过这种类型的路径。
- (
b
\text{b}
b)
- 变量 a \text{a} a 和 b \text{b} b 通过共用原因 s \text{s} s 相连。
- 举个例子,假设s 是一个表示是否存在飓风的变量, a \text{a} a 和 b \text{b} b 表示两个相邻气象监控区域的风速。
- 如果我们观察到在 a \text{a} a 处有很高的风速,我们可以期望在 b \text{b} b 处也观察到高速的风。
- 如果观察到 s \text{s} s 那么这条路径就被阻塞了。
- 如果我们已经知道存在飓风,那么无论 a \text{a} a 处观察到什么,我们都能期望 b \text{b} b 处有较高的风速。
- 在 a \text{a} a 处观察到一个低于预期的风速(对飓风而言)并不会改变我们对 b \text{b} b 处风速的期望(已知有飓风的情况下)。
- 然而,如果 s \text{s} s 不被观测到,那么 a \text{a} a 和 b \text{b} b 是依赖的,即路径是活跃的。
- (
c
\text{c}
c)
- 变量 a \text{a} a 和 b \text{b} b 都是 s \text{s} s 的父节点。
- 这叫做 V-结构 \textbf{V-结构} V-结构 ( V-structure \text{V-structure} V-structure) 或者碰撞情况 ( the collider case \text{the collider case} the collider case)。
- 根据 explaining away \text{explaining away} explaining away 作用 ( explaining away effect \text{explaining away effect} explaining away effect), V-结构 \text{V-结构} V-结构导致 a \text{a} a 和 b \text{b} b 是相关的。
- 在这种情况下,当 s 被观测到时路径是活跃的。
- 举个例子,假设 s \text{s} s 是一个表示你的同事不在工作的变量。
- 变量 a \text{a} a 表示她生病了,而变量 b \text{b} b 表示她在休假。
- 如果你观察到了她不在工作,你可以假设她很有可能是生病了或者是在度假,但是这两件事同时发生是不太可能的。
- 如果你发现她在休假,那么这个事实足够解释她的缺席了。
- 你可以推断她很可能没有生病。
- (
d
\text{d}
d)
- 即使 s \text{s} s 的任意后代都被观察到, explaining away \text{explaining away} explaining away 作用也会起作用。
- 举个例子,假设 c \text{c} c 是一个表示你是否收到你同事的报告的一个变量。
- 如果你注意到你还没有收到这个报告,这会增加你估计的她今天不在工作的概率,这反过来又会增加她今天生病或者度假的概率。
- 阻塞V-结构中路径的唯一方法就是共享子节点的后代一个都观察不到。
- (
a
\text{a}
a)
-
- 图例8:从这张图中,我们可以发现一些
d
\text{d}
d-分离的性质。
-
从这张图中,我们可以发现一些 d \text{d} d-分离的性质
-
说明:
- 这包括了:
• 给定空集的情况下 a \text{a} a 和 b \text{b} b 是 d \text{d} d-分离的。
• 给定 c \text{c} c 的情况下 a \text{a} a 和 e 是 d \text{d} d-分离的。
• 给定 c \text{c} c 的情况下 d \text{d} d 和 e 是 d \text{d} d-分离的。
我们还可以发现当我们观察到一些变量的时候,一些变量不再是 d \text{d} d-分离的:
• 给定 c \text{c} c 的情况下 a \text{a} a 和 b \text{b} b 不是 d \text{d} d-分离的。
• 给定 d \text{d} d 的情况下 a \text{a} a 和 b \text{b} b 不是 d \text{d} d-分离的。
- 这包括了:
-
- 图例9:完全图的例子, 完全图能够描述任何的概率分布。
-
完全图的例子, 完全图能够描述任何的概率分布
-
说明:
- 这里我们展示了一个带有四个随机变量的例子。
- (左)
- 完全无向图。
- 在无向图中,完全图是唯一的。
- (右)
- 一个完全有向图。
- 在有向图中,并不存在唯一的完全图。
- 我们选择一种变量的排序,然后对每一个变量,从它本身开始,向每一个指向顺序在其后面的变量画一条弧。
- 因此存在着关于变量数阶乘数量级的不同种完全图。
- 在这个例子中,我们从左到右从上到下地排序变量。
-
- 图例10:通过构造道德图将有向模型(上一行)转化为无向模型(下一行)的例子。
-
通过构造道德图将有向模型(上一行)转化为无向模型(下一行)的例子
-
说明:
- (左)
- 只需要把有向边替换成无向边就可以把这个简单的链转化为一个道德图。
- 得到的无向模型包含了完全相同的独立关系和条件独立关系。
- (中)
- 这个图是不丢失独立性的情况下无法转化为无向模型的最简单的有向模型。
- 这个图包含了单个完整的不道德结构。
- 因为 a \text{a} a 和 b \text{b} b 都是 c \text{c} c 的父节点,当 c \text{c} c 被观察到时它们之间通过活跃路径相连。
- 为了捕捉这个依赖性,无向模型必须包含一个含有所有三个变量的团。
- 这个团无法编码 a ⊥ b \text{a}\bot\text{b} a⊥b 这个信息。
- (右)
- 通常讲, 道德化的过程会给图添加许多边,因此丢失了一些隐含的独立性。
- 举个例子,这个稀疏编码图需要在每一对隐藏单元之间添加道德化的边,因此也引入了二次数量级的新的直接依赖性。
- (左)
-
- 图例11:将一个无向模型转化为一个有向模型。
-
将一个无向模型转化为一个有向模型
-
说明:
- (左)
- 这个无向模型无法转化为有向模型,因为它有一个长度为 4 4 4 且不带有弦的环。
- 具体说来,这个无向模型包含了两种不同的独立性,并且不存在一个有向模型可以同时描述这两种性质: a ⊥ c ∣ { b , d } \text{a}\bot\text{c}|\{\text{b},\text{d}\} a⊥c∣{b,d} 和 b ⊥ d ∣ { a , c } \text{b}\bot\text{d}|\{\text{a},\text{c}\} b⊥d∣{a,c}。
- (中)
- 为了将无向图转化为有向图,我们必须通过保证所有长度大于 3 3 3 的环都有弦来三角形化图。
- 为了实现这个目标,我们可以加一条连接 a \text{a} a 和 c \text{c} c 或者连接 b \text{b} b 和 d \text{d} d 的边。
- 在这个例子中,我们选择添加一条连接 a \text{a} a和 c \text{c} c 的边。
- (右)
- 为了完成转化的过程,我们必须给每条边分配一个方向。
- 执行这个任务时,我们必须保证不产生任何有向环。
- 避免出现有向环的一种方法是赋予节点一定的顺序,然后将每个边从排序较早的节点指向稍后排序的节点。
- 在这个例子中,我们根据变量名的字母进行排序。
- (左)
-
- 图例12:因子图如何解决无向网络中的模糊性的一个例子。
-
因子图如何解决无向网络中的模糊性的一个例子
-
说明:
- (左)
- 一个包含三个变量( a \text{a} a、 b \text{b} b 和 c \text{c} c)的团组成的无向网络。
- (中)
- 对应这个无向模型的因子图。
- 这个因子图有一个包含三个变量的因子。
- (右)
- 对应这个无向模型的另一种有效的因子图。
- 这个因子图包含了三个因子,每个因子只对应两个变量。
- 这个因子图上进行的表示、推断和学习相比于中图描述的因子图都要渐进性地廉价,即使它们表示的是同一个无向模型。
- (左)
-
总结
深度学习中的结构化概率模型,通过图这一强大工具,成功地将模型结构可视化、结构化,极大地增强了模型的表达能力和可解释性。图的引入,不仅简化了模型的学习过程,提高了推理效率,还使得我们能够更加深入地理解数据背后的复杂关系。此外,随着图神经网络等技术的不断发展,结构化概率模型的应用范围也在不断拓展,为处理图像、文本、社交网络等复杂数据结构提供了更加有效的解决方案。因此,我们有理由相信,在未来的深度学习研究中,结构化概率模型将继续发挥重要作用,推动人工智能技术的不断进步。
往期内容回顾
深度学习中的结构化概率模型 - 非结构化建模的挑战篇