深度学习中的结构化概率模型 - 使用图来描述模型结构篇

news2024/11/28 9:46:11

序言

在深度学习的探索之路上,结构化概率模型以其独特的视角和强大的表达能力,成为了研究复杂数据关系的重要工具。这一模型的核心在于其巧妙地利用图来描述模型结构,将随机变量间的复杂交互关系可视化、结构化。图的引入,不仅为我们提供了一个直观理解数据内部结构的工具,更使得模型的学习与推理过程变得更加高效和精准。通过图,我们可以清晰地看到变量之间的依赖关系、信息传递路径以及潜在的因果结构,这为构建更加复杂、精确的深度学习模型提供了坚实的基础。

使用图来描述模型结构

  • 结构化概率模型使用图(在图论中 ‘‘结点’’ 是通过 ‘‘边’’ 来连接的)来表示随机变量之间的相互作用。每一个结点代表一个随机变量。每一条边代表一个直接相互作用。这些直接相互作用隐含着其他的间接相互作用,但是只有直接的相互作用是被显式地建模的。
  • 使用图来描述概率分布中相互作用的方法不止一种。
    • 在下文中我们会介绍几种最为流行和有用的方法。
    • 图模型可以被大致分为两类:基于有向无环图的模型,和基于无向模型的模型。

有向模型

  • 有向图模型 ( 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 network1) ( 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(xiPaG(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)=ip(xiPaG(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(t1t0)p(t2t1) — 公式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 mn,那么复杂度就会被大大地减小。
  • 换一句话说,只要图中的每个变量都只有少量的父结点,那么这个分布就可以用较少的参数来表示。图结构上的一些限制条件,比如说要求这个图为一棵树,也可以保证一些操作(例如求一小部分变量的边缘或者条件分布)更加地高效。

无向模型


注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 的团定义类似的因子。

配分函数


注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} xR 建模,并且这个包含一个点的团势能定义为 ϕ ( 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 xRn,那么有关归一化常数 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)=loghe(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是分离的。

  • 图例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-结构中路径的唯一方法就是共享子节点的后代一个都观察不到。

  • 图例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} ab 这个信息。
      • (右)
        • 通常讲, 道德化的过程会给图添加许多边,因此丢失了一些隐含的独立性。
        • 举个例子,这个稀疏编码图需要在每一对隐藏单元之间添加道德化的边,因此也引入了二次数量级的新的直接依赖性。

  • 图例11:将一个无向模型转化为一个有向模型。
    • 将一个无向模型转化为一个有向模型
      在这里插入图片描述

    • 说明:

      • (左)
        • 这个无向模型无法转化为有向模型,因为它有一个长度为 4 4 4 且不带有弦的环。
        • 具体说来,这个无向模型包含了两种不同的独立性,并且不存在一个有向模型可以同时描述这两种性质: a ⊥ c ∣ { b , d } \text{a}\bot\text{c}|\{\text{b},\text{d}\} ac{b,d} b ⊥ d ∣ { a , c } \text{b}\bot\text{d}|\{\text{a},\text{c}\} bd{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)的团组成的无向网络。
      • (中)
        • 对应这个无向模型的因子图。
        • 这个因子图有一个包含三个变量的因子。
      • (右)
        • 对应这个无向模型的另一种有效的因子图。
        • 这个因子图包含了三个因子,每个因子只对应两个变量。
        • 这个因子图上进行的表示、推断和学习相比于中图描述的因子图都要渐进性地廉价,即使它们表示的是同一个无向模型。

总结

深度学习中的结构化概率模型,通过图这一强大工具,成功地将模型结构可视化、结构化,极大地增强了模型的表达能力和可解释性。图的引入,不仅简化了模型的学习过程,提高了推理效率,还使得我们能够更加深入地理解数据背后的复杂关系。此外,随着图神经网络等技术的不断发展,结构化概率模型的应用范围也在不断拓展,为处理图像、文本、社交网络等复杂数据结构提供了更加有效的解决方案。因此,我们有理由相信,在未来的深度学习研究中,结构化概率模型将继续发挥重要作用,推动人工智能技术的不断进步。

往期内容回顾

深度学习中的结构化概率模型 - 非结构化建模的挑战篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2186787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【笔记】原子结构的近代理论

近代原子结构理论的建立是从氢原子光谱得到启示的。 一、氢原子光谱与波尔理论 1.氢原子光谱 在装有两个电极的真空玻璃管内通入极少量高纯氢气,通高压电使之放电,管中发出的光束通过分光棱镜,得到分立的谱线,称为线状光谱。 发…

系统安全 - Linux /Docker 安全模型及实践

文章目录 导图Linux安全Linux 安全模型用户层权限管理的细节多用户环境中的权限管理文件权限与目录权限 最小权限原则的应用Linux 系统中的认证、授权和审计机制认证机制授权机制审计机制 小结 内网安全Docker安全1. Docker 服务隔离机制Namespace 机制Capabilities 机制CGroup…

B 私域模式升级:开源技术助力传统经销体系转型

一、引言 1.1 研究背景 随着市场竞争加剧,传统经销代理体系面临挑战。同时,开源技术发展迅速,为 B 私域升级带来新机遇。在当今数字化时代,企业面临着日益激烈的市场竞争。传统的经销代理体系由于管理效率低下、渠道局限、库存压…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.mapset(模拟实现)

1.对红黑树进行改造 1.1treenode模板参数改变 之前构建treenode模板参数传的是class k,class v(set为k&#xff0c;k&#xff1b;map是k&#xff0c;v&#xff09;&#xff0c;现在直接用T代替 template<class T> //这里直接传了T作为模板参数&#xff0c;T可能是pai…

【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现

高阶数据结构相关知识点可以通过点击以下链接进行学习一起加油&#xff01; 本章是高阶数据结构笔记的第一篇文章&#xff0c;将分享二叉搜索树的进阶概念及其高效实现的相关知识&#xff0c;欢迎大家阅读&#xff01; &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f3…

五子棋双人对战项目(5)——对战模块

目录 一、需求分析 二、约定前后端交互接口 三、实现游戏房间页面&#xff08;前端代码&#xff09; game_room.html game_room.css srcipt.js 四、实现后端代码 GameAPI Room Mapper 五、线程安全问题 一、需求分析 在对局中&#xff0c;玩家需要知道实时对局情况&…

高阶数据结构-------图

文章目录 图图的基本概念图的存储结构邻接矩阵邻接表 图的遍历广度优先遍历深度优先遍历 最小生成树Kruskal算法Prim算法 最短路径单源最短路径-Dijkstra算法单源最短路径-Bellman-Ford算法多源最短路径-Floyd-Warshall算法 图 图的基本概念 图的基本概念 图是由顶点集合和边的…

【10】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-泛型基础全解(泛型函数、泛型接口、泛型类)及参数、接口补充

序言&#xff1a; 本文详细讲解了关于ArkTs语言中的泛型&#xff0c;其中包含泛型函数、泛型接口、泛型约束、泛型类及其中参数的使用方法&#xff0c;补充了一部分接口相关的知识&#xff0c;包括接口的继承和具体实现&#xff0c;也写到了一些边边角角的小知识&#xff0c;剩…

【Linux】进程替换、命令行参数及环境变量(超详解)

目录 进程替换 替换函数的含义 命令行参数 环境变量 PATH 进程替换 我们先看代码&#xff1a; 1 #include<stdio.h>2 #include<unistd.h>3 int main()4 {5 printf("process...begin!\n");6 7 execl("/usr/bin/ls","ls"…

前端面试如何说解vue项目性能优化,你确定不来看看吗?

文末有福利 面试时&#xff0c;很经常会说对某某项目进行了性能优化&#xff0c;使性能有很大的提高之类的话。如果面试官问&#xff0c;来讲讲做了那些优化&#xff0c;这时候你就要很清晰地把你做过的优化一一说出来。 本文谨以自己的Vue项目经验来教你怎么在面试中说优化&am…

【算法与图】通向高效解决方案的钥匙

文章目录 遍历算法BFS&#xff08;广度优先遍历&#xff09;1. 什么是 BFS&#xff1f;2. 特点和应用3. BFS 示例 DFS&#xff08;深度优先搜索&#xff09;1. 什么是 DFS&#xff1f;2. DFS 的基本步骤3. 特点4. DFS 的应用5. DFS 示例 最小生成树问题1. 什么是最小生成树&…

【算法笔记】双指针算法深度剖析

【算法笔记】双指针算法深度剖析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;算法笔记 文章目录 【算法笔记】双指针算法深度剖析前言一.移动零1.1题目1.2思路分析1.3代码实现二.复写零2.1题目2.2思路分析2.3代码实现 三.快乐数3.1题目3…

微服务实战——ElasticSearch(保存)

商品上架——ElasticSearch&#xff08;保存&#xff09; 0.商城架构图 1.商品Mapping 分析&#xff1a;商品上架在 es 中是存 sku 还是 spu &#xff1f; 检索的时候输入名字&#xff0c;是需要按照 sku 的 title 进行全文检索的检索使用商品规格&#xff0c;规格是 spu 的…

基于Springboot+Vue的小区停车场管理系统登录(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 在这个…

uniapp 微信发布注意事项

uniapp的微信播放不支持本地文件&#xff0c;起始微信原生语言是支持的 所以在编写uniapp代码时 要写两套逻辑 // #ifdef MP-WEIXIN 微信原封不变的自己写法 //#endif // #ifndef MP-WEIXIN 其他写法 //#endif 这样可实现 发布到微信后 微信原封不动的使用自己写…

初识算法 · 双指针(3)

目录 前言&#xff1a; 和为s的两数之和 题目解析&#xff1a; ​编辑 算法原理&#xff1a; 算法编写&#xff1a; 三数之和 题目解析 算法原理 算法编写 前言&#xff1a; 本文通过介绍和为S的两数之和&#xff0c;以及三数之和&#xff0c;对双指针算法进行深一步…

进度条(倒计时)Linux

\r回车(回到当前行开头) \n换行 行缓冲区概念 什么现象&#xff1f; 什么现象&#xff1f;&#xff1f; 什么现象&#xff1f;&#xff1f;&#xff1f; 自己总结&#xff1a; #pragma once 防止头文件被重复包含 倒计时 在main.c中&#xff0c;windows.h是不可以用的&…

Windows 环境搭建 CUDA 和 cuDNN 详细教程

CUDA CUDA&#xff08;Compute Unified Device Architecture&#xff09;是由NVIDIA公司推出的一个并行计算平台和编程模型&#xff0c;它允许开发者使用NVIDIA GPU进行通用计算&#xff08;即GPGPU&#xff09;&#xff0c;从而加速各种计算密集型任务。CUDA提供了一套基于C/C…

linux文件编程_线程

1. 基本概念 1.1. 进程与线程的概念 典型的UNIX/linux进程可以看成是只有一个控制线程&#xff0c;一个进程在同一时刻只做一件事情&#xff0c;有了多个控制线程后&#xff0c;在程序设计时可以把进程设计成在同一时刻做不止一件事&#xff0c;每个线程各自处理独立的任务。…