PRML学习总结(8)——Graphical Models
PRML学习总结(8)——Graphical Models
- 8.1 Bayesian Networks
- 8.1.1 Example: Polynomial regression
- 8.1.2 Generative models
- 8.1.3 Discrete variables
- 8.1.4 Linear-Gaussian models
- 8.2. Conditional Independence
- 8.2.1 Three example graphs
- 8.2.2 D-separation
- 8.3 Markov Random Fields
- 8.3.1 Conditional independence properties
- 8.3.2 Factorization properties
- 8.3.3 Illustration: Image de-noising
- 8.3.4 Relation to directed graphs
- 8.4 Inference in Graphical Models
- 8.4.1 Inference on a chain
- 8.4.2 Trees
- 8.4.3 Factor graphs
- 8.4.4 The sum-product algorithm
- 8.4.5 The max-sum algorithm
8.1 Bayesian Networks
为了理解有向图对于描述概率分布的作⽤,⾸先考虑三个变量a; b; c上的⼀个任意的联合分布p(a,b,c)p(a, b, c)p(a,b,c)。注意,现阶段我们不需要对这些变量做出任何更多的假设,例如它们是离散的还是连续的。实际上,图模型的⼀个强⼤的⽅⾯是,⼀个具体的图可以描述⼀⼤类概率分布。通过使⽤概率的乘积规则,我们可以将联合概率分布写成下⾯的形式。p(a,b,c)=p(c∣a,b)p(b∣a)p(a)p(a, b, c)=p(c | a, b) p(b | a) p(a) p(a,b,c)=p(c∣a,b)p(b∣a)p(a)注意,这个分解⽅法对于任意的联合概率分布的选择都成⽴。下图为按照上式分解得到的BN
在分解前a,b,ca,b,ca,b,c是对称的,但是分解后则不是,在分解时,默认有个顺序a,b,ca,b,ca,b,c。如果选择⼀个不同的顺序,我们会得到⼀个不同的分解⽅式,因此就得到⼀个不同的图表⽰形式。我们稍后会回头讨论这个想法。
现在将变量变为KKK个,则p(x1,…,xK)=p(xK∣x1,…,xK−1)…p(x2∣x1)p(x1)p\left(x_{1}, \ldots, x_{K}\right)=p\left(x_{K} | x_{1}, \ldots, x_{K-1}\right) \ldots p\left(x_{2} | x_{1}\right) p\left(x_{1}\right) p(x1,…,xK)=p(xK∣x1,…,xK−1)…p(x2∣x1)p(x1)对应⼀个给定的KKK,我们可以将其表⽰为⼀个具有KKK个结点的有向图,每个结点对应于公式右侧的⼀个条件概率分布,每个结点的输⼊链接包括所有以编号低于当前结点编号的结点为起点的链接。我们说,这个图是全连接的(fully connected),因为每对结点之间都存在⼀个链接。
到目前为止我们研究的都是全连接图,对于一些缺少边的情况,如图
此时我们可以根据图写出其联合概率分布p(x1)p(x2)p(x3)p(x4∣x1,x2,x3)p(x5∣x1,x3)p(x6∣x4)p(x7∣x4,x5)p\left(x_{1}\right) p\left(x_{2}\right) p\left(x_{3}\right) p\left(x_{4} | x_{1}, x_{2}, x_{3}\right) p\left(x_{5} | x_{1}, x_{3}\right) p\left(x_{6} | x_{4}\right) p\left(x_{7} | x_{4}, x_{5}\right) p(x1)p(x2)p(x3)p(x4∣x1,x2,x3)p(x5∣x1,x3)p(x6∣x4)p(x7∣x4,x5)我们现在说明给定的有向图和变量上对应的概率分布之间的⼀般关系。在图的所有结点上定义的联合概率分布由每个结点上的条件概率分布的乘积表⽰,每个条件概率分布的条件都是图中结点的⽗结点所对应的变量。因此,对于⼀个有KKK个结点的图,联合概率为p(x)=∏k=1Kp(xk∣pak)p(\mathbf{x})=\prod_{k=1}^{K} p\left(x_{k} | \mathrm{pa}_{k}\right) p(x)=k=1∏Kp(xk∣pak)where pas denotes the set of parents of xk,x_{k},xk, and x={x1,…,xK}\mathbf{x}=\left\{x_{1}, \ldots, x_{K}\right\}x={x1,…,xK}
我们考虑的有向图要满⾜⼀个重要的限制,即不能存在有向环(directed cycle)。换句话说,在图中不能存在这样的路径:从某个结点开始,沿着链接中箭头的⽅向运动,结束点为起点。这种没有有向环的图被称为有向⽆环图(directed acyclic graph),或者DAG。这等价于存在⼀个将诶点的排序,使得不存在从某个结点到序号较⼩的结点的链接。拓扑排序。
8.1.1 Example: Polynomial regression
考虑贝叶斯多项式回归问题,随机变量有参数w\mathbf{w}w和observed data t=(t1,…,tN)T\mathbf{t}=\left(t_{1}, \ldots, t_{N}\right)^{\mathrm{T}}t=(t1,…,tN)T。除此之外还有input data x=(x1,…,xN)T\mathbf{x}=\left(x_{1}, \ldots, x_{N}\right)^{\mathrm{T}}x=(x1,…,xN)T、the noise variance σ2\sigma^{2}σ2、hyperparameter α\alphaα representing the precision of the Gaussian prior over w\mathbf{w}w。则联合概率分布为p(t,w)=p(w)∏n=1Np(tn∣w)p(\mathbf{t}, \mathbf{w})=p(\mathbf{w}) \prod_{n=1}^{N} p\left(t_{n} | \mathbf{w}\right) p(t,w)=p(w)n=1∏Np(tn∣w)
在本书的后⾯章节中,当我们开始处理更加复杂的模型时,我们会看到,像图8.3那样显式地写出t1,…,tNt_{1}, \ldots, t_{N}t1,…,tN的结点是很不⽅便的。于是,我们引⼊⼀种图结构,使得多个结点可以更简洁地表⽰出来。这种图结构中,我们画出⼀个单⼀表⽰的结点tnt_ntn,然后⽤⼀个被称为板(plate)的⽅框圈起来,标记为NNN,表⽰有NNN个同类型的点。
我们有时会发现,显式地写出模型的参数和随机变量是很有帮助的。此时,p(t,w∣x,α,σ2)=p(w∣α)∏n=1Np(tn∣w,xn,σ2)p\left(\mathbf{t}, \mathbf{w} | \mathbf{x}, \alpha, \sigma^{2}\right)=p(\mathbf{w} | \alpha) \prod_{n=1}^{N} p\left(t_{n} | \mathbf{w}, x_{n}, \sigma^{2}\right) p(t,w∣x,α,σ2)=p(w∣α)n=1∏Np(tn∣w,xn,σ2)那么我们可以把x\mathbf{x}x and α\alphaα一起表示在图中。为了这样做,我们会遵循下⾯的惯例:随机变量由空⼼圆表⽰,确定性参数由⼩的实⼼圆表⽰。
对于变量中又分为观测变量和隐变量,进而图又可以具体为
建立贝叶斯模型的终极目标是对新来的数据x^\widehat{x}x做预测,则p(t^,t,w∣x^,x,α,σ2)=[∏n=1Np(tn∣xn,w,σ2)]p(w∣α)p(t^∣x^,w,σ2)p\left(\widehat{t}, \mathbf{t}, \mathbf{w} | \widehat{x}, \mathbf{x}, \alpha, \sigma^{2}\right)=\left[\prod_{n=1}^{N} p\left(t_{n} | x_{n}, \mathbf{w}, \sigma^{2}\right)\right] p(\mathbf{w} | \alpha) p\left(\hat{t} | \widehat{x}, \mathbf{w}, \sigma^{2}\right) p(t,t,w∣x,x,α,σ2)=[n=1∏Np(tn∣xn,w,σ2)]p(w∣α)p(t^∣x,w,σ2)可用图模型表示为
则最终预测分布为p(t^∣x^,x,t,α,σ2)∝∫p(t^,t,w∣x^,x,α,σ2)dwp\left(\widehat{t} | \widehat{x}, \mathbf{x}, \mathbf{t}, \alpha, \sigma^{2}\right) \propto \int p\left(\widehat{t}, \mathbf{t}, \mathbf{w} | \widehat{x}, \mathbf{x}, \alpha, \sigma^{2}\right) \mathrm{d} \mathbf{w} p(t∣x,x,t,α,σ2)∝∫p(t,t,w∣x,x,α,σ2)dw
8.1.2 Generative models
之后会着重介绍采样的方法,这儿介绍一种简单的采样方法,ancestral sampling。对于联合分布p(x1,…,xK)p\left(x_{1}, \ldots, x_{K}\right)p(x1,…,xK),可以写出其图模型。我们假设变量已经进⾏了排序,从⽽不存在从某个结点到序号较低的结点的链接。换句话说,每个结点的序号都⼤于它的⽗结点。我们的⽬标是从这样的联合概率分布中取样x^1,…,x^K\widehat{x}_{1}, \ldots, \widehat{x}_{K}x1,…,xK。首先我们从编号最小的节点采样p(x1),p\left(x_{1}\right),p(x1), which we call x^1\widehat{x}_{1}x1。之后我们按照节点编号顺序依次采样p(xn∣pan)p\left(x_{n} | \mathrm{pa}_{n}\right)p(xn∣pan)。按照这样就能采样到我们想要的样本。对于一些边缘分布,只需保留边缘分布中的节点即可。
8.1.3 Discrete variables
我们已经讨论了指数族概率分布的重要性,我们看到这⼀类概率分布将许多著名的概率分布当成了指数族分布的特例。虽然指数族分布相对⽐较简单,但是它们组成了构建更复杂概率分布的基本元件。图模型的框架在表达这些基本元件之间的联系时⾮常有⽤。
如果我们将有向图中的每个⽗结点-⼦结点对的关系选为共轭的,那么这样的模型有⼀些特别好的性质,我们稍后会给出⼏个例⼦。两种情形很值得注意,即⽗结点和⼦结点都对应于离散变量的情形,以及它们都对应⾼斯变量的情形,因为在这两种情形中,关系可以层次化地推⼴,构建任意复杂的有向⽆环图。我们⾸先考察离散变量的情形。
对于有着KKK个可能状态(使⽤“1−of−K1-of-K1−of−K”表达⽅式)的⼀元离散变量x\mathbf xx,概率p(x∣μ)p(\mathbf{x} | \boldsymbol{\mu})p(x∣μ)为p(x∣μ)=∏k=1Kμkxkp(\mathbf{x} | \boldsymbol{\mu})=\prod_{k=1}^{K} \mu_{k}^{x_{k}} p(x∣μ)=k=1∏Kμkxk那么对于两个离散变量x1\mathbf{x}_{1}x1 and x2\mathbf{x}_{2}x2(KKK个离散状态),则p(x1,x2∣μ)=∏k=1K∏l=1Kμklx1kx2lp\left(\mathbf{x}_{1}, \mathbf{x}_{2} | \boldsymbol{\mu}\right)=\prod_{k=1}^{K} \prod_{l=1}^{K} \mu_{k l}^{x_{1 k} x_{2 l}} p(x1,x2∣μ)=k=1∏Kl=1∏Kμklx1kx2l有∑k∑lμkl=1\sum_{k} \sum_{l} \mu_{k l}=1∑k∑lμkl=1。那么由MMM个离散变量,则对应的参数有KM−1K^{M}-1KM−1个。对于图模型,我们可以通过剪边来降低参数量
从图的⾓度看,我们通过删除结点之间链接的⽅式,减⼩了参数的数量,代价是类别的概率分布受到了限制。
那么对于下图链式结构
另外一种减少参数量的方式是参数共享,p(xi∣xi−1),p\left(\mathbf{x}_{i} | \mathbf{x}_{i-1}\right),p(xi∣xi−1), for i=2,…,M,i=2, \ldots, M,i=2,…,M, are governed by the same set of K(K−1)K(K-1)K(K−1) parameters。这样总的参数量为K2−1K^2-1K2−1。
通过引⼊参数的狄利克雷先验,我们可以将离散变量上的图模型转化为贝叶斯模型。从图的观点来看,每个结点需要额外的⽗结点表⽰对应于每个离散结点的参数。这种情况如图
我们将p(xi∣xi−1),p\left(\mathbf{x}_{i} | \mathbf{x}_{i-1}\right),p(xi∣xi−1), for i=2,…,Mi=2, \ldots, Mi=2,…,M参数共享,则
另⼀种控制离散变量模型参数数量的指数增长的⽅式是对条件概率分布使⽤参数化的模型,⽽不使⽤条件概率值的完整表格。
所有变量都是二值变量,令μi\mu_{i}μi表示p(xi=1)p\left(x_{i}=1\right)p(xi=1)。那么p(y∣x1,…,xM)p\left(y | x_{1}, \ldots, x_{M}\right)p(y∣x1,…,xM)需要2M2^M2M个参数表示p(y=1)p(y=1)p(y=1)。仍然需要很大的参数量,那么可以p(y=1∣x1,…,xM)=σ(w0+∑i=1Mwixi)=σ(wTx)p\left(y=1 | x_{1}, \ldots, x_{M}\right)=\sigma\left(w_{0}+\sum_{i=1}^{M} w_{i} x_{i}\right)=\sigma\left(\mathbf{w}^{\mathrm{T}} \mathbf{x}\right) p(y=1∣x1,…,xM)=σ(w0+i=1∑Mwixi)=σ(wTx)与⼀般的情形相⽐,这是⼀个更加受限形式的条件概率分布,但是参数的数量随着MMM线性增长。在这种情况下,类似于选择多元⾼斯分布的协⽅差矩阵的限制形式(例如对⾓矩阵)。采⽤logistic sigmoid表⽰⽅法的原因在4.2节已经讨论过。
8.1.4 Linear-Gaussian models
在前⼀节中,我们看到了如何在⼀组离散变量上构建联合概率分布,构建⽅法是将变量表⽰为有向⽆环图上的结点。这⾥,我们将说明多元⾼斯分布如何表⽰为⼀个对应于成分变量上的线性⾼斯模型的有向⽆环图。这使得我们在概率分布上施加有趣的结构,这些结构中的两个相反的极端情况是⼀般的⾼斯分布和对⾓化协⽅差⾼斯分布。⼏种⼴泛使⽤的⽅法是线性⾼斯模型的例⼦,例如概率主成分分析,因⼦分析,以及线性动态系统(Roweis and Ghahramani,1999)。在后续章节中,当我们详细讨论⼀些⽅法时,我们会频繁使⽤本节的结果。
对于一个含有DDD个变量的有向无环图模型,xix_ixi变量为高斯分布,其均值为其父节点的线性组合p(xi∣pai)=N(xi∣∑j∈paiwijxj+bi,vi)p\left(x_{i} | \mathrm{pa}_{i}\right)=\mathcal{N}\left(x_{i} | \sum_{j \in \mathrm{pa}_{i}} w_{i j} x_{j}+b_{i}, v_{i}\right) p(xi∣pai)=N⎝⎛xi∣j∈pai∑wijxj+bi,vi⎠⎞则有lnp(x)=∑i=1Dlnp(xi∣pai)=−∑i=1D12vi(xi−∑j∈paiwijxj−bi)2+const\begin{aligned} \ln p(\mathbf{x}) &=\sum_{i=1}^{D} \ln p\left(x_{i} | \mathrm{pa}_{i}\right) \\ &=-\sum_{i=1}^{D} \frac{1}{2 v_{i}}\left(x_{i}-\sum_{j \in \mathrm{pa}_{i}} w_{i j} x_{j}-b_{i}\right)^{2}+\mathrm{const} \end{aligned} lnp(x)=i=1∑Dlnp(xi∣pai)=−i=1∑D2vi1⎝⎛xi−j∈pai∑wijxj−bi⎠⎞2+const由于以上结果为x=(x1,…,xD)T\mathbf{x}=\left(x_{1}, \ldots, x_{D}\right)^{\mathrm{T}}x=(x1,…,xD)T的二次形式,则p(x)p(\mathbf{x})p(x)为多元高斯。
我们可以递归地确定联合概率分布的均值和⽅差,⽅法如下。每个变量xix_ixi的概率分布都是(以⽗结点状态为条件的)⾼斯分布,xi=∑j∈paiwijxj+bi+viϵix_{i}=\sum_{j \in \mathrm{pa}_{i}} w_{i j} x_{j}+b_{i}+\sqrt{v_{i} \epsilon_{i}} xi=j∈pai∑wijxj+bi+viϵiϵi\epsilon_{i}ϵi is a zero mean, unit variance Gaussian random variable.则E[xi]=∑j∈paiwijE[xj]+bi\mathbb{E}\left[x_{i}\right]=\sum_{j \in \mathrm{pa}_{i}} w_{i j} \mathbb{E}\left[x_{j}\right]+b_{i} E[xi]=j∈pai∑wijE[xj]+bi从而E[x]=(E[x1],…,E[xD])T\mathbb{E}[\mathbf{x}]=\left(\mathbb{E}\left[x_{1}\right], \ldots, \mathbb{E}\left[x_{D}\right]\right)^{\mathrm{T}}E[x]=(E[x1],…,E[xD])T可以迭代地产生。同理cov[xi,xj]=E[(xi−E[xi])(xj−E[xj])]=E[(xi−E[xi]){∑k∈pajwjk(xk−E[xk])+vjϵ}=∑k∈pajwjkcov[xi,xk]+Iijvj\begin{aligned} \operatorname{cov}\left[x_{i}, x_{j}\right] &=\mathbb{E}\left[\left(x_{i}-\mathbb{E}\left[x_{i}\right]\right)\left(x_{j}-\mathbb{E}\left[x_{j}\right]\right)\right] \\ &=\mathbb{E}\left[\left(x_{i}-\mathbb{E}\left[x_{i}\right]\right)\left\{\sum_{k \in \mathrm{pa}_{j}} w_{j k}\left(x_{k}-\mathbb{E}\left[x_{k}\right]\right)+\sqrt{v_{j} \epsilon}\right\}\right.\\ &=\sum_{k \in \mathrm{pa}_{j}} w_{j k} \operatorname{cov}\left[x_{i}, x_{k}\right]+I_{i j} v_{j} \end{aligned} cov[xi,xj]=E[(xi−E[xi])(xj−E[xj])]=E⎣⎡(xi−E[xi])⎩⎨⎧k∈paj∑wjk(xk−E[xk])+vjϵ⎭⎬⎫=k∈paj∑wjkcov[xi,xk]+Iijvj协方差也是迭代地产生。
考虑两个极端的例子。首先,这儿有DDD个独立的节点,进而这儿没有参数wijw_{ij}wij,那么there are just DDD parameters bib_{i}bi and DDD parameters viv_{i}vi。进而the mean of p(x)p(\mathbf{x})p(x) is given by (b1,…,bD)T\left(b_{1}, \ldots, b_{D}\right)^{\mathrm{T}}(b1,…,bD)T and the covariance matrix is diagonal of the form diag(v1,…,vD)\operatorname{diag}\left(v_{1}, \ldots, v_{D}\right)diag(v1,…,vD)。
现在考虑⼀个全连接的图,其中每个结点的序号都低于其⽗结点的序号。这样矩阵wijw_{ij}wij的第iii⾏有i−1i - 1i−1项,因此矩阵是⼀个下三⾓矩阵(主对⾓线上没有元素)。参数wijw_{ij}wij的数量从⽽可以通过下⾯的⽅式得到:取D×DD\times DD×D的元素个数D2D^2D2,减去DDD,表⽰主对⾓线上没有元素,再除以222,因为矩阵只在对⾓线下⽅存在元素,从⽽参数的总数为D(D−1)/2D(D-1)/2D(D−1)/2 。独⽴参数{wij}\{w_{ij}\}{wij}加上协⽅差矩阵中的{vi}\{v_i\}{vi},因此独⽴参数的总数为D(D+1)/2D(D+1)/2D(D+1)/2 ,对应于⼀个⼀般的对称协⽅差矩阵。
复杂度处于两种极端情况之间的图对应于协⽅差矩阵取特定形式的联合⾼斯分布。考虑下图的图模型
利用之前求均值和方差的方法可得μ=(b1,b2+w21b1,b3+w32b2+w32w21b1)TΣ=(v1w21v1w32w21v1w21v1v2+w212v1w32(v2+w212v1)w32w21v1w32(v2+w212v1)v3+w322(v2+w212v1))\begin{aligned} \boldsymbol{\mu} &=\left(b_{1}, b_{2}+w_{21} b_{1}, b_{3}+w_{32} b_{2}+w_{32} w_{21} b_{1}\right)^{\mathrm{T}} \\ \boldsymbol{\Sigma} &=\left(\begin{array}{ccc}{v_{1}} & {w_{21} v_{1}} & {w_{32}} & {w_{21} v_{1}} \\ {w_{21} v_{1}} & {v_{2}+w_{21}^{2} v_{1}} & {w_{32}\left(v_{2}+w_{21}^{2} v_{1}\right)} \\ {w_{32} w_{21} v_{1}} & {w_{32}\left(v_{2}+w_{21}^{2} v_{1}\right)} & {v_{3}+w_{32}^{2}\left(v_{2}+w_{21}^{2} v_{1}\right)}\end{array}\right) \end{aligned} μΣ=(b1,b2+w21b1,b3+w32b2+w32w21b1)T=⎝⎛v1w21v1w32w21v1w21v1v2+w212v1w32(v2+w212v1)w32w32(v2+w212v1)v3+w322(v2+w212v1)w21v1⎠⎞我们可以进一步扩展,将第iii个节点看作多维变量,则线性高斯模型对于每个节点来说都是多维高斯p(xi∣pai)=N(xi∣∑j∈paiWijxj+bi,Σi)p\left(\mathbf{x}_{i} | \mathrm{pa}_{i}\right)=\mathcal{N}\left(\mathbf{x}_{i} | \sum_{j \in \mathrm{pa}_{i}} \mathbf{W}_{i j} \mathbf{x}_{j}+\mathbf{b}_{i}, \mathbf{\Sigma}_{i}\right) p(xi∣pai)=N⎝⎛xi∣j∈pai∑Wijxj+bi,Σi⎠⎞同理可以发现,联合分布p(x)p(\mathbf x)p(x)为高斯分布。
8.2. Conditional Independence
一个很重要的概念是条件独立p(a∣b,c)=p(a∣c)p(a | b, c)=p(a | c) p(a∣b,c)=p(a∣c)或者表示为p(a,b∣c)=p(a∣b,c)p(b∣c)=p(a∣c)p(b∣c)\begin{aligned} p(a, b | c) &=p(a | b, c) p(b | c) \\ &=p(a | c) p(b | c) \end{aligned} p(a,b∣c)=p(a∣b,c)p(b∣c)=p(a∣c)p(b∣c)需要说明的是,是对任意ccc上两式都成立!可以简洁地表示为a⊥b∣ca \perp b | c a⊥b∣c如果⼀组变量的联合概率分布的表达式是根据条件概率分布的乘积表⽰的(即有向图的数学表达形式),那么原则上我们可以通过重复使⽤概率的加和规则和乘积规则测试是否具有潜在的条件独⽴性。在实际应⽤中,这种⽅法⾮常耗时。图模型的⼀个重要的优雅的特征是,联合概率分布的条件独⽴性可以直接从图中读出来,不⽤进⾏任何计算。完成这件事的⼀般框架被称为“d-划分”(d-separation),其中“d”表⽰“有向(directed)”(Pearl, 1988)。这⾥,我们⾮形式化地介绍了d-划分的概念,给出了d-划分准则的⼀个⼀般叙述。
8.2.1 Three example graphs
第一种情况如上,其联合概率分布为p(a,b,c)=p(a∣c)p(b∣c)p(c)p(a, b, c)=p(a | c) p(b | c) p(c) p(a,b,c)=p(a∣c)p(b∣c)p(c)当没有任何变量观测到,则p(a,b)=∑cp(a∣c)p(b∣c)p(c)p(a, b)=\sum_{c} p(a | c) p(b | c) p(c) p(a,b)=c∑p(a∣c)p(b∣c)p(c)上式并不能得到a,ba,ba,b独立。当ccc被观测时
则p(a,b∣c)=p(a,b,c)p(c)=p(a∣c)p(b∣c)\begin{aligned} p(a, b | c) &=\frac{p(a, b, c)}{p(c)} \\ &=p(a | c) p(b | c) \end{aligned} p(a,b∣c)=p(c)p(a,b,c)=p(a∣c)p(b∣c)从而得到条件独立。这种情况一般称为tail-to-tail,即对于ccc来说,a,ba,ba,b为其尾巴。在观测到ccc时,a,ba,ba,b就被阻断了,从而导致在观测到ccc时,a,ba,ba,b为独立的。下面考虑第二种情况
首先仍然是什么都没观测到的情况下,p(a,b)=p(a)∑cp(c∣a)p(b∣c)=p(a)p(b∣a)p(a, b)=p(a) \sum_{c} p(c | a) p(b | c)=p(a) p(b | a) p(a,b)=p(a)c∑p(c∣a)p(b∣c)=p(a)p(b∣a)得到独立。同样地在ccc被观测的情况下
则p(a,b∣c)=p(a,b,c)p(c)=p(a)p(c∣a)p(b∣c)p(c)=p(a∣c)p(b∣c)\begin{aligned} p(a, b | c) &=\frac{p(a, b, c)}{p(c)} \\ &=\frac{p(a) p(c | a) p(b | c)}{p(c)} \\ &=p(a | c) p(b | c) \end{aligned} p(a,b∣c)=p(c)p(a,b,c)=p(c)p(a)p(c∣a)p(b∣c)=p(a∣c)p(b∣c)。因此在head-to-tail的情况下,在观测到ccc时,a,ba,ba,b是条件独立的。最后一种情况为
在没有观测到任何变量时,p(a,b)=p(a)p(b)p(a, b)=p(a) p(b) p(a,b)=p(a)p(b)此时就能得到a,ba,ba,b独立,这种情况为head-to-head。假如观测到ccc,则
p(a,b∣c)=p(a,b,c)p(c)=p(a)p(b)p(c∣a,b)p(c)\begin{aligned} p(a, b | c) &=\frac{p(a, b, c)}{p(c)} \\ &=\frac{p(a) p(b) p(c | a, b)}{p(c)} \end{aligned} p(a,b∣c)=p(c)p(a,b,c)=p(c)p(a)p(b)p(c∣a,b)得不到独立。第三个例⼦还有⼀个更加微妙的地⽅需要考虑。⾸先,我们引⼊⼀些新的概念。如果存在从结点xxx到结点yyy的⼀条路径,其中路径的每⼀步都沿着箭头的⽅向,那么我们说结点yyy是结点xxx的后继(descendant)。这样,可以证明,在⼀个头到头的路径中,如果任意结点或者它的任意⼀个后继被观测到,那么路径会被“解除阻隔”。
8.2.2 D-separation
我们现在给出有向图d-划分性质的⼀个⼀般的叙述(Pearl, 1988)。考虑⼀个⼀般的有向图,其中A;B;CA;B;CA;B;C是任意⽆交集的结点集合(它们的并集可能⽐图中结点的完整集合要⼩)。我们希望弄清楚,⼀个有向⽆环图是否暗⽰了⼀个特定的条件依赖表述A⊥B∣CA \perp B | CA⊥B∣C。为了解决这个问题,我们考虑从AAA中任意结点到BBB中任意结点的所有可能的路径。我们说这样的路径被“阻隔”,如果它包含⼀个结点满⾜下⾯两个性质中的任何⼀个。
1)路径上的箭头以头到尾或者尾到尾的⽅式交汇于这个结点,且这个结点在集合CCC中。
2)箭头以头到头的⽅式交汇于这个结点,且这个结点和它的所有后继都不在集合CCC中。
如果所有的路径都被“阻隔”,那么我们说CCC把AAA从BBB中d-划分开,且图中所有变量上的联合概率分布将会满⾜A⊥B∣CA \perp B | CA⊥B∣C。
下面考虑条件独立性这个概率
当观测到μ\muμ时,p(D∣μ)=∏n=1Np(xn∣μ)p(\mathcal{D} | \mu)=\prod_{n=1}^{N} p\left(x_{n} | \mu\right) p(D∣μ)=n=1∏Np(xn∣μ)但是当对μ\muμ积分时,即未观测到μ\muμ时,p(D)=∫0∞p(D∣μ)p(μ)dμ≠∏n=1Np(xn)p(\mathcal{D})=\int_{0}^{\infty} p(\mathcal{D} | \mu) p(\mu) \mathrm{d} \mu \neq \prod_{n=1}^{N} p\left(x_{n}\right) p(D)=∫0∞p(D∣μ)p(μ)dμ̸=n=1∏Np(xn)
⼀种被称为朴素贝叶斯(naive Bayes)模型的分类⽅法可以产⽣⼀种相关的图结构,其中我们使⽤条件独⽴性假设来简化模型的结构。的分类⽅法可以产⽣⼀种相关的图结构,其中我们使⽤条件独⽴性假设来简化模型的结构。假设观测变量由D维向量x=(x1,…,xD)T\mathbf{x}=\left(x_{1}, \ldots, x_{D}\right)^{\mathrm{T}}x=(x1,…,xD)T 组成,我们希望将x\mathbf xx的观测值分配到KKK个类别中的⼀个。使⽤“1−of−K1-of-K1−of−K”表⽰⽅式,我们可以使⽤⼀个K维⼆值向量z\mathbf zz表⽰这些类别。然后我们可以这样定义⼀个⽣成式模型:引⼊类别标签上的多项式先验概率分布p(z∣μ)p(\mathbf{z} | \boldsymbol{\mu})p(z∣μ),其中的第kkk个元素μk\mu_{k}μk表⽰类别CkC_{k}Ck的先验概率,再引⼊观测向量x\mathbf xx的条件概率分布p(x∣z)p(\mathbf{x} | \mathbf{z})p(x∣z)。朴素贝叶斯模型的关键假设是,以类别z\mathbf zz为条件,输⼊变量x1,…,xDx_{1}, \dots, x_{D}x1,…,xD的分布是独⽴的。这个模型的图表⽰如图所⽰。我们看到z\mathbf zz的观测阻隔了从xix_ixi到xjx_jxj的路径,其中j≠ij \neq ij̸=i,因为这样的路径在结点z\mathbf zz处是尾到尾的。因此给定z的条件下,xix_ixi和xjx_jxj是条件独⽴的。然⽽,如果我们对z\mathbf zz求和或积分(即z\mathbf zz不是观测变量),那么从xix_ixi到xjx_jxj的尾到尾路径就不再是阻塞的了。这告诉我们,通常边缘概率密度p(x)p(\mathbf x)p(x)不可以关于x\mathbf xx的元素进⾏分解。
如果给定⼀个有标记的训练集,由输⼊{x1,…,xN}\left\{\mathbf{x}_{1}, \ldots, \mathbf{x}_{N}\right\}{x1,…,xN}以及它们的类别标签组成,那么我们可以使⽤最⼤似然法,根据训练数据调整朴素贝叶斯模型,其中我们假设数据是独⽴地从模型中抽取的。使⽤每个类别对应的标记数据,我们可以为每个类别分别调整⼀个模型,得到最终解。举例来说,假设每个类别的概率密度分布被选为⾼斯分布。在这种情况下,朴素贝叶斯的假设表明每个⾼斯分布的协⽅差矩阵是对⾓矩阵,且每个类别中常数密度的轮廓线是与坐标轴对齐的椭球。然⽽,边缘概率密度由对⾓⾼斯的叠加组成(权系数由类别先验给出),因此不再能够关于各个分量进⾏分解.
当输⼊空间的维度DDD很⾼时,在完整的DDD维空间进⾏概率密度估计⽐较困难,此时朴素贝叶斯的假设很有帮助。如果输⼊向量既包含离散变量又包含连续变量,那么朴素贝叶斯的假设也很有意义,因为每个变量都可以分别使⽤合适的模型进⾏表⽰,例如⽤伯努利分布表⽰⼆值观测,或者⽤⾼斯分布表⽰实值变量。这个模型中的条件独⽴性假设显然过于强烈,可能会导致对类条件概率密度的表⽰相当差。尽管这样,即使这个假设⽆法精确满⾜,但是模型仍然可能给出较好的分类效果,因为决策边界对于类条件概率的细节不敏感.
其中有向分解性质p(x)=∏k=1Kp(xk∣pak)p(\mathbf{x})=\prod_{k=1}^{K} p\left(x_{k} | \mathbf{p a}_{k}\right)p(x)=∏k=1Kp(xk∣pak)。注意,对于任意给定的图,分布的集合DF\mathcal{D F}DF中的概率分布还会具有图中未描述的独⽴性质。例如,⼀个完全分解的概率分布总会通过由对应变量组成的任意图结构表⽰的滤波器。
Markov blanket or Markov boundary。对于一个包含DDD个节点的图模型,p(xi∣x{j≠i})=p(x1,…,xD)∫p(x1,…,xD)dxi=∏kp(xk∣pak)∫∏kp(xk∣pak)dxi\begin{aligned} p\left(\mathbf{x}_{i} | \mathbf{x}_{\{j \neq i\}}\right) &=\frac{p\left(\mathbf{x}_{1}, \ldots, \mathbf{x}_{D}\right)}{\int p\left(\mathbf{x}_{1}, \ldots, \mathbf{x}_{D}\right) \mathrm{d} \mathbf{x}_{i}} \\ &=\frac{\prod_{k} p\left(\mathbf{x}_{k} | \mathrm{pa}_{k}\right)}{\int \prod_{k} p\left(\mathbf{x}_{k} | \mathrm{pa}_{k}\right) \mathrm{d} \mathbf{x}_{i}} \end{aligned} p(xi∣x{j̸=i})=∫p(x1,…,xD)dxip(x1,…,xD)=∫∏kp(xk∣pak)dxi∏kp(xk∣pak)可以发现与xi\mathbf x_ixi不相关的分子分母可以消去,从而只剩下p(xi∣pai)p\left(\mathbf{x}_{i} | \mathrm{pa}_{i}\right)p(xi∣pai)和p(xk∣pak)p\left(\mathbf{x}_{k} | \mathrm{pa}_{k}\right)p(xk∣pak)(xi\mathbf{x}_{i}xi is a parent of xk\mathbf{x}_{k}xk)。
8.3 Markov Random Fields
我们已经看到有向图模型表⽰将⼀组变量上的联合概率分布分解为局部条件概率分布的乘积的⼀种分解⽅式。有向图模型也定义了⼀组条件独⽴性质,根据图进⾏分解的任何概率分布都必须满⾜这些条件独⽴性质。我们现在考虑图模型的第⼆⼤类,使⽤⽆向图描述的图模型。与之前⼀样,它表⽰⼀个分解⽅式,也表⽰⼀组条件独⽴关系。
8.3.1 Conditional independence properties
在有向图的情形下,我们看到可以通过使⽤被称为d-划分的图检测⽅法判断⼀个特定的条件独⽴性质是否成⽴。这涉及到判断链接两个结点集合的路径是否被“阻隔”。然⽽,由于头到头结点的存在,阻隔的定义多少有些微妙。我们可能会问,是否可以定义另⼀种概率分布的图语义表⽰,使得条件独⽴性由单⼀的图划分确定。这种情形确实存在,对应于⽆向图模型。通过移除图中链接的⽅向性,⽗结点和⼦结点的⾮对称性也被移除了,因此头到头结点的微妙性也就不再存在了。
假设在⼀个⽆向图中,我们有三个结点集合,记作A;B;CA;B;CA;B;C。我们考虑条件独⽴性质A⊥B∣CA \perp B | C A⊥B∣C为了判定由图定义的概率分布是否满⾜这个性质,我们考虑连接集合AAA的结点和集合BBB的结点的所有可能路径。如果所有这些路径都通过了集合CCC中的⼀个或多个结点,那么所有这样的路径都被“阻隔”,因此条件独⽴性质成⽴。然⽽,如果存在⾄少⼀条未被阻隔的路径,那么性质条件独⽴的性质未必成⽴,或者更精确地说,存在⾄少某些对应于图的概率分布不满⾜条件独⽴性质。如图给出了⼀个例⼦。注意,这与d划分的准则完全相同,唯⼀的差别在于没有头到头的现象。因此,⽆向图的条件独⽴性的检测⽐有向图简单。
8.3.2 Factorization properties
我们现在寻找⽆向图的⼀个分解规则,对应于上述条件独⽴性检测。与之前⼀样,这涉及到将联合概率分布p(x)p(\mathbf x)p(x)表⽰为在图的局部范围内的变量集合上定义的函数的乘积。于是,我们需要给出这种情形下,局部性的⼀个合适定义。
如果xix_{i}xi and xjx_{j}xj之间没有边,那么p(xi,xj∣x\{i,j})=p(xi∣x\{i,j})p(xj∣x\{i,j})p\left(x_{i}, x_{j} | \mathbf{x} \backslash\{i, j\}\right)=p\left(x_{i} | \mathbf{x} \backslash\{i, j\}\right) p\left(x_{j} | \mathbf{x} \backslash\{i, j\}\right) p(xi,xj∣x\{i,j})=p(xi∣x\{i,j})p(xj∣x\{i,j})于是,联合概率分布的分解⼀定要让xix_ixi和xjx_jxj不出现在同⼀个因⼦中,从⽽让属于这个图的所有可能的概率分布都满⾜条件独⽴性质。
这将我们引向了⼀个图形的概念,团块(clique)。它被定义为图中结点的⼀个⼦集,使得在这个⼦集中的每对结点之间都存在链接。换句话说,团块中的结点集合是全连接的。此外,⼀个最⼤团块(maximal clique)是具有下⾯性质的团块:不可能将图中的任何⼀个其他的结点包含到这个团块中⽽不破坏团块的性质。
于是,我们可以将联合概率分布分解的因⼦定义为团块中变量的函数。事实上,我们可以考虑最⼤团块的函数⽽不失⼀般性,因为其他团块⼀定是最⼤团块的⼦集。potential functions ψC(xC)\psi_{C}\left(\mathbf{x}_{C}\right)ψC(xC)为最大团的势函数,则p(x)=1Z∏CψC(xC)p(\mathbf{x})=\frac{1}{Z} \prod_{C} \psi_{C}\left(\mathbf{x}_{C}\right) p(x)=Z1C∏ψC(xC)其中partition function为Z=∑x∏CψC(xC)Z=\sum_{\mathbf{x}} \prod_{C} \psi_{C}\left(\mathbf{x}_{C}\right) Z=x∑C∏ψC(xC)注意,我们不把势函数的选择限制为具有具体的概率含义(例如边缘概率分布或者条件概率分布)的函数。这与有向图的情形相反。在有向图的情形中,每个因⼦表⽰对应变量以它的⽗结点为条件的条件概率分布。然⽽,在特殊情况下,例如⽆向图是通过有向图构建的情况,势函数可能确实有这样的意义,正如我们将要看到的那样。
归⼀化常数的存在是⽆向图的⼀个主要的缺点。如果我们的模型中有MMM个离散结点,每个结点有KKK个状态,那么归⼀化项的计算涉及到对KMK^MKM个状态求和,因此(在最坏的情况下),计算量是模型⼤⼩的指数形式。对于参数学习来说,划分函数是必要的,因为划分函数是控制势函数ψC(xC)\psi_{C}\left(\mathbf{x}_{C}\right)ψC(xC)的任意参数的函数。但是,对于局部条件概率分布的计算,划分函数是不需要的,因为条件概率是两个边缘概率的⽐值,当计算这个⽐值时,划分函数在分⼦和分母之间被消去了。类似地,对于计算局部边缘概率,我们可以计算未归⼀化的联合概率分布,然后在计算的最后阶段显式地归⼀化边缘概率。假设边缘概率只涉及到少量的变量,那么归⼀化系数的计算是可⾏的。
⽬前为⽌,我们基于简单的图划分,讨论了条件独⽴性的概念,并且我们提出了对联合概率分布的分解,来尝试对应条件独⽴的图结构。然⽽,我们并没有将条件独⽴性和⽆向图的分解形式化地联系起来。为了形式化地描述,我们需要把注意⼒限制于那些严格为正的势函数ψC(xC)\psi_{C}\left(\mathbf{x}_{C}\right)ψC(xC),即对于任意的xC\mathbf{x}_{C}xC的选择都永远不等于零也不取负值的势函数。给定这个限制,我们可以给出分解和条件独⽴之间的精确关系。
为了给出精确的关系,我们再次回到作为滤波器的图模型的概念中。考虑定义在固定变量集合上的所有可能的概率分布,其中这些变量对应于⼀个具体的⽆向图的节点。我们可以将UI\mathcal{U I}UI定义为满⾜下⾯条件的概率分布的集合:从使⽤图划分的⽅法得到的图中可以读出条件独⽴性质,这个概率分布应该与这些条件独⽴性质相容。类似地,我们可以将UF\mathcal{UF}UF定义为满⾜下⾯条件的概率分布的集合:可以表⽰为关于图中最⼤团块的分解的形式的概率分布,其中分解⽅式由公式p(x)=1Z∏CψC(xC)p(\mathbf{x})=\frac{1}{Z} \prod_{C} \psi_{C}\left(\mathbf{x}_{C}\right)p(x)=Z1∏CψC(xC)给出。Hammersley-Clifford定理(Clifford, 1990)表明,集合UI\mathcal{U I}UI和UF\mathcal{UF}UF是完全相同的。
由于势函数为正,则ψC(xC)=exp{−E(xC)}\psi_{C}\left(\mathbf{x}_{C}\right)=\exp \left\{-E\left(\mathbf{x}_{C}\right)\right\} ψC(xC)=exp{−E(xC)}其中E(xC)E\left(\mathbf{x}_{C}\right)E(xC) is called an energy function,指数表⽰被称为玻尔兹曼分布(Boltzmann distribution)。联合概率分布被定义为势函数的乘积,因此总的能量可以通过将每个最⼤团块的能量相加的⽅法得到。
与有向图的联合分布的因⼦不同,⽆向图中的势函数没有⼀个具体的概率意义。虽然这使得选择势函数具有更⼤的灵活性,因为没有归⼀化的限制,但是这确实产⽣了⼀个问题,即对于⼀个具体的应⽤来说,如何选择势函数。可以这样做:将势函数看成⼀种度量,它表⽰了局部变量的哪种配置优于其他的配置。具有相对⾼概率的全局配置对于各个团块的势函数的影响进⾏了很好的平衡。我们现在通过⼀个具体的例⼦来说明⽆向图的⽤处。
8.3.3 Illustration: Image de-noising
对于含有噪声的二值图片的每个像素yi∈{1,−1}y_{i} \in\{1,-1\}yi∈{1,−1},i=1,…,Di=1, \ldots, Di=1,…,D,由无噪声的图片xi∈{−1,+1}x_{i} \in\{-1,+1\}xi∈{−1,+1}以一定的概率随机翻转标签得到。
可以建模为
这个模型中有两种团:{xi,yi}\{x_i,y_i\}{xi,yi}。我们选择⼀个⾮常简单的能量函数−ηxiyi-\eta x_{i} y_{i}−ηxiyi,其中η\etaη是⼀个正的常数。这个能量函数的效果是:当xix_ixi和yiy_iyi符号相同时,能量函数会给出⼀个较低的能量(即,较⾼的概率),⽽当xix_ixi和yiy_iyi符号相反时,能量函数会给出⼀个较⾼的能量;{xi,xj}\left\{x_{i}, x_{j}\right\}{xi,xj}。与之前⼀样,我们希望当两个像素符号相同时能量较低,当两个像素符号相反时能量较⾼,因此我们选择能量函数−βxixj-\beta x_ix_j−βxixj,其中 β\betaβ是⼀个正的常数。
我们还为每个无噪声的图像像素加入hxih x_{i}hxi,将模型进⾏偏置,使得模型倾向于选择⼀个特定的符号,⽽不选择另⼀个符号。E(x,y)=h∑ixi−β∑{i,j}xixj−η∑ixiyiE(\mathbf{x}, \mathbf{y})=h \sum_{i} x_{i}-\beta \sum_{\{i, j\}} x_{i} x_{j}-\eta \sum_{i} x_{i} y_{i} E(x,y)=hi∑xi−β{i,j}∑xixj−ηi∑xiyip(x,y)=1Zexp{−E(x,y)}p(\mathbf{x}, \mathbf{y})=\frac{1}{Z} \exp \{-E(\mathbf{x}, \mathbf{y})\} p(x,y)=Z1exp{−E(x,y)}那么我们的目的是找出p(x∣y)p(\mathbf{x} | \mathbf{y})p(x∣y)对应的最大x\mathbf xx。可以采用iterated conditional modes方法。基本思想为点梯度上升,首先初始化{xi}\left\{x_{i}\right\}{xi},一般令xi=yix_{i}=y_ixi=yi for all iii。每次我们考虑一个节点xjx_jxj,分别计算xj=+1and xj=−1x_{j}=+1 \text { and } x_{j}=-1xj=+1 and xj=−1时对应的total energy,其他节点都固定,选择能量最小的xjx_jxj。由于只有⼀个变量发⽣改变,因此这是⼀个可以⾼效进⾏的简单局部计算。然后,我们对其他的结点重复更新过程,以此类推,知道满⾜某个合适的停⽌条件。结点可以⽤⼀种系统的⽅式更新,例如重复地依次扫描图像,或者随机地选择结点。如果我们有⼀个更新的顺序,使得每个像素都⾄少被访问⼀次,且没有变量发⽣改变,那么根据定义,算法会收敛于概率的⼀个局部最⼤值。然⽽,这未必对应于全局最⼤值。
8.3.4 Relation to directed graphs
我们已经介绍了表⽰概率分布的两个图模型的框架,对应于有向图和⽆向图。讨论⼆者之间的关系是很有意义的。⾸先考虑下⾯的问题:取⼀个使⽤有向图描述的模型,尝试将其转化为⽆向图。在某些情况下,转化⽅法很直接,
p(x)=p(x1)p(x2∣x1)p(x3∣x2)⋯p(xN∣xN−1)p(\mathbf{x})=p\left(x_{1}\right) p\left(x_{2} | x_{1}\right) p\left(x_{3} | x_{2}\right) \cdots p\left(x_{N} | x_{N-1}\right) p(x)=p(x1)p(x2∣x1)p(x3∣x2)⋯p(xN∣xN−1)无向图中,最大团仅仅为相邻的两个节点,p(x)=1Zψ1,2(x1,x2)ψ2,3(x2,x3)⋯ψN−1,N(xN−1,xN)p(\mathbf{x})=\frac{1}{Z} \psi_{1,2}\left(x_{1}, x_{2}\right) \psi_{2,3}\left(x_{2}, x_{3}\right) \cdots \psi_{N-1, N}\left(x_{N-1}, x_{N}\right) p(x)=Z1ψ1,2(x1,x2)ψ2,3(x2,x3)⋯ψN−1,N(xN−1,xN)只需要定义ψ1,2(x1,x2)=p(x1)p(x2∣x1)ψ2,3(x2,x3)=p(x3∣x2)⋮ψN−1,N(xN−1,xN)=p(xN∣xN−1)\begin{aligned} \psi_{1,2}\left(x_{1}, x_{2}\right) &=p\left(x_{1}\right) p\left(x_{2} | x_{1}\right) \\ \psi_{2,3}\left(x_{2}, x_{3}\right) &=p\left(x_{3} | x_{2}\right) \\ & \vdots \\ \psi_{N-1, N}\left(x_{N-1}, x_{N}\right) &=p\left(x_{N} | x_{N-1}\right) \end{aligned} ψ1,2(x1,x2)ψ2,3(x2,x3)ψN−1,N(xN−1,xN)=p(x1)p(x2∣x1)=p(x3∣x2)⋮=p(xN∣xN−1)就能满足有向图的分解。那么怎么得到更加一般的转化呢。如果⽆向图的团块势函数由有向图的条件概率分布给出,那么这个任务就可以完成。为了保持这个过程的合法性,我们必须确保出现在每个条件概率分布中的变量的集合是⽆向图中⾄少⼀个团块的成员。对于有向图中只有⼀个⽗结点的结点,可以通过简单地将有向链接替换为⽆向链接的⽅式完成。然⽽,对于有向图中具有多个⽗结点的结点来说,这样做是不够的。这些结点是我们在讨论条件独⽴性时遇到的“头到头”路径的结点。
p(x)=p(x1)p(x2)p(x3)p(x4∣x1,x2,x3)p(\mathbf{x})=p\left(x_{1}\right) p\left(x_{2}\right) p\left(x_{3}\right) p\left(x_{4} | x_{1}, x_{2}, x_{3}\right) p(x)=p(x1)p(x2)p(x3)p(x4∣x1,x2,x3)p(x4∣x1,x2,x3)p\left(x_{4} | x_{1}, x_{2}, x_{3}\right)p(x4∣x1,x2,x3)包含了四个节点,那么在无向图中这四个节点需要在一个团中,那么就必须加入边。为了确保这⼀点,我们在x4x_4x4的所有
⽗结点之间添加额外的链接。使⽤⼀种过时的说法,这种“与⽗结点结婚”的过程被称为伦理(moralization),去掉箭头后⽣成的⽆向图被称为道德图(moral graph)。很重要的⼀点是,这个例⼦中的道德图是完全链接的,因此没有表现出条件独⽴性质,这与原始的有向图相反。
将有向图转化为⽆向图的过程在精确推断⽅法中起着重要的作⽤,例如联合树算法(junction tree algorithm)。从⼀个⽆向图转化到有向图表⽰不太常⽤,通常表⽰归⼀化限制中出现的问题。
我们看到从⼀个有向图表⽰转化为⽆向图表⽰的过程中,我们必须从图中丢弃掉⼀些条件独⽴性质。当然,通过简单地使⽤全连接的⽆向图,我们可以很容易地将有向图上的任意概率分布转化为⽆向图上的概率分布。但是,这会丢弃掉所有的条件独⽴性质,因此没有意义。“伦理”过程增加了最少的额外链接,因此保持了最⼤的条件独⽴性质。
8.4 Inference in Graphical Models
我们现在考虑图模型中的推断问题,图中的⼀些结点被限制为观测值,我们想要计算其他结点中的⼀个或多个⼦集的后验概率分布。正如我们将看到的那样,我们可以利⽤图结构找到⾼效的推断算法,也可以让这些算法的结构变得透明。具体来说,我们会看到许多算法可以⽤图中局部信息传播的⽅式表⽰。本节中,我们会把注意⼒主要集中于精确推断的⽅法。在第10章中,我们会考虑许多近似推断的算法。
考虑模型p(x,y)=p(x)p(y∣x)p(x, y)=p(x) p(y | x)p(x,y)=p(x)p(y∣x),其对应的图模型为
我们的目的是在观测到yyy后,推断xxx的后验概率。利用贝叶斯公式p(x∣y)=p(y∣x)p(x)p(y)p(x | y)=\frac{p(y | x) p(x)}{p(y)} p(x∣y)=p(y)p(y∣x)p(x)在这样的顺序下,会得到©的图模型。这是图模型中推断问题的最简单的例⼦。
8.4.1 Inference on a chain
现在考虑⼀个更加复杂的问题
具体地,我们会考虑(b)所⽰的⽆向图。我们已经看到,有向链可以被转化为⼀个等价的⽆向链。由于有向图中任何结点的⽗结点数量都不超过⼀个,因此不需要添加任何额外的链接,并且图的有向版本和⽆向版本表⽰完全相同的条件依赖性质集合。p(x)=1Zψ1,2(x1,x2)ψ2,3(x2,x3)⋯ψN−1,N(xN−1,xN)p(\mathbf{x})=\frac{1}{Z} \psi_{1,2}\left(x_{1}, x_{2}\right) \psi_{2,3}\left(x_{2}, x_{3}\right) \cdots \psi_{N-1, N}\left(x_{N-1}, x_{N}\right) p(x)=Z1ψ1,2(x1,x2)ψ2,3(x2,x3)⋯ψN−1,N(xN−1,xN)考虑一个具体的情况,对于NNN个有KKK个状态的离散变量。则势函数ψn−1,n(xn−1,xn)\psi_{n-1, n}\left(x_{n-1}, x_{n}\right)ψn−1,n(xn−1,xn)有K×KK \times KK×K情况,则联合分布有(N−1)K2(N-1) K^{2}(N−1)K2个参数。当我们要求边缘分布p(xn)p(x_n)p(xn)时,p(xn)=∑x1⋯∑xn−1∑xn+1⋯∑xNp(x)p\left(x_{n}\right)=\sum_{x_{1}} \cdots \sum_{x_{n-1}} \sum_{x_{n+1}} \cdots \sum_{x_{N}} p(\mathbf{x}) p(xn)=x1∑⋯xn−1∑xn+1∑⋯xN∑p(x)在⼀个朴素的实现中,我们⾸先计算联合概率分布,然后显式地进⾏求和。联合概率分布可以表⽰为⼀组数,对应于x\mathbf xx的每个可能的值。因为有NNN个变量,每个变量有KKK个可能的状态,因此x\mathbf xx有KNK^NKN个可能的值,从⽽联合概率的计算和存储以及得到p(xn)p(x_n)p(xn)所需的求和过程,涉及到的存储量和计算量都会随着链的长度NNN⽽指数增长。
我们通过改变求和的顺序可以得到一个高效的方法。对于xNx_{N}xN的求和只需要考虑ψN−1,N(xN−1,xN)\psi_{N-1, N}\left(x_{N-1}, x_{N}\right)ψN−1,N(xN−1,xN),当∑xNψN−1,N(xN−1,xN)\sum_{x_{N}} \psi_{N-1, N}\left(x_{N-1}, x_{N}\right) xN∑ψN−1,N(xN−1,xN)可以得到关于xN−1x_{N-1}xN−1的函数。而对xN−1x_{N-1}xN−1的求和,除了上面得到外还有ψN−2,N−1(xN−2,xN−1)\psi_{N-2, N-1}\left(x_{N-2}, x_{N-1}\right)ψN−2,N−1(xN−2,xN−1)。以此类推。因为每个求和式都移除了概率分布中的⼀个变量,因此这可以被看成从图中移除⼀个结点。
如果我们使⽤这种⽅式对势函数和求和式进⾏分组,那么我们可以将需要求解的边缘概率密度写成下⾯的形式p(xn)=1Z[∑xn−1ψn−1,n(xn−1,xn)⋯[∑x2ψ2,3(x2,x3)[∑x1ψ1,2(x1,x2)]]⋯ ]⎵μα(xn)p(x_n)=\frac{1}{Z}\underbrace{\left[\sum_{x_{n-1}} \psi_{n-1, n}\left(x_{n-1}, x_{n}\right) \cdots\left[\sum_{x_{2}} \psi_{2,3}\left(x_{2}, x_{3}\right)\left[\sum_{x_{1}} \psi_{1,2}\left(x_{1}, x_{2}\right)\right]\right] \cdots\right]}_{\mu_{\alpha}\left(x_{n}\right)}p(xn)=Z1μα(xn)[xn−1∑ψn−1,n(xn−1,xn)⋯[x2∑ψ2,3(x2,x3)[x1∑ψ1,2(x1,x2)]]⋯][∑xn+1ψn,n+1(xn,xn+1)⋯[∑xNψN−1,N(xN−1,xN)]⋯ ]⎵μβ(xn)\underbrace{\left[\sum_{x_{n+1}} \psi_{n, n+1}\left(x_{n}, x_{n+1}\right) \cdots\left[\sum_{x_{N}} \psi_{N-1, N}\left(x_{N-1}, x_{N}\right)\right] \cdots\right]}_{\mu_{\beta}\left(x_{n}\right)} μβ(xn)[xn+1∑ψn,n+1(xn,xn+1)⋯[xN∑ψN−1,N(xN−1,xN)]⋯]让我们考察使⽤这种重排序的表达式之后,计算边缘概率分布所需的计算代价。我们必须进⾏N−1N-1N−1次求和,每次求和的对象是KKK个状态,并且每次求和涉及到两个变量组成的函数。例如,对x1x_1x1的求和只涉及到函数ψ1,2(x1,x2)\psi_{1,2}\left(x_{1}, x_{2}\right)ψ1,2(x1,x2),这是⼀个K×KK\times KK×K的表格。对于每个x2x_2x2,我们必须关于x1x_1x1对这个表进⾏求和,因此计算代价为O(K2)O(K^2)O(K2)。得到的KKK个数字的向量与 ψ2,3(x2,x3)\psi_{2,3}\left(x_{2}, x_{3}\right)ψ2,3(x2,x3)的矩阵相乘,计算代价还是O(K2)O(K^2)O(K2)。因为有N−1N - 1N−1次这样的求和与乘积操作,因此计算边缘概率分布p(xn)p(x_n)p(xn)的总代价是O(NK2)O(NK^2)O(NK2)。这是链长度的⼀个线性函数,与朴素⽅法的指数代价不同。于是,我们已经能够利⽤这个简单图的许多条件独⽴性质来得到⼀个⾼效的计算⽅式。如果图是全连接的,那么将不存在条件独⽴性质,我们就必须直接计算完整的联合概率分布。
我们现在使⽤图中局部信息传递的思想,给出这种计算的⼀个强⼤的直观意义。p(xn)=1Zμα(xn)μβ(xn)p\left(x_{n}\right)=\frac{1}{Z} \mu_{\alpha}\left(x_{n}\right) \mu_{\beta}\left(x_{n}\right) p(xn)=Z1μα(xn)μβ(xn)我们把μα(xn)\mu_{\alpha}\left(x_{n}\right)μα(xn)看成从结点xn−1x_{n-1}xn−1到结点xnx_nxn的沿着链向前传递的信息。类似地,μβ(xn)\mu_{\beta}\left(x_{n}\right)μβ(xn)可以看成从结点xn+1x_{n+1}xn+1到结点xnx_nxn的沿着链向后传递的信息。注意,每条信息由KKK个值的集合构成,每个值对应于xnx_nxn的⼀种选择,因此两条信息的乘积可以被看做两条信息的元素之间的点积,得到另外KKK个值的集合。
这些信息可以递归地得到μα(xn)=∑xn−1ψn−1,n(xn−1,xn)[∑xn−2⋯ ]=∑xn−1ψn−1,n(xn−1,xn)μα(xn−1)\begin{aligned} \mu_{\alpha}\left(x_{n}\right) &=\sum_{x_{n-1}} \psi_{n-1, n}\left(x_{n-1}, x_{n}\right)\left[\sum_{x_{n-2}} \cdots\right] \\ &=\sum_{x_{n-1}} \psi_{n-1, n}\left(x_{n-1}, x_{n}\right) \mu_{\alpha}\left(x_{n-1}\right) \end{aligned} μα(xn)=xn−1∑ψn−1,n(xn−1,xn)[xn−2∑⋯]=xn−1∑ψn−1,n(xn−1,xn)μα(xn−1)μα(x2)=∑x1ψ1,2(x1,x2)\mu_{\alpha}\left(x_{2}\right)=\sum_{x_{1}} \psi_{1,2}\left(x_{1}, x_{2}\right) μα(x2)=x1∑ψ1,2(x1,x2)μβ(xn)=∑xn+1ψn+1,n(xn+1,xn)[∑xn+2⋯ ]=∑xn+1ψn+1,n(xn+1,xn)μβ(xn+1)\begin{aligned} \mu_{\beta}\left(x_{n}\right) &=\sum_{x_{n+1}} \psi_{n+1, n}\left(x_{n+1}, x_{n}\right)\left[\sum_{x_{n+2}} \cdots\right] \\ &=\sum_{x_{n+1}} \psi_{n+1, n}\left(x_{n+1}, x_{n}\right) \mu_{\beta}\left(x_{n+1}\right) \end{aligned} μβ(xn)=xn+1∑ψn+1,n(xn+1,xn)[xn+2∑⋯]=xn+1∑ψn+1,n(xn+1,xn)μβ(xn+1)
对于ZZZ可以简单地将KKK个状态的xnx_nxn求和即可。
如果图中的某些结点被观测到,那么对应的变量简单地被限制为观测值即可,不需要求和。现在假设我们项计算结点链中两个相邻结点的联合概率分布p(xn−1,xn)p\left(x_{n-1}, x_{n}\right)p(xn−1,xn)。这类似于计算单⼀结点的边缘概率分布,区别在于现在有两个变量没有被求和出来。稍微思考⼀下,我们就会看到,需要求解的边缘概率分布可以写成下⾯的形式p(xn−1,xn)=1Zμα(xn−1)ψn−1,n(xn−1,xn)μβ(xn)p\left(x_{n-1}, x_{n}\right)=\frac{1}{Z} \mu_{\alpha}\left(x_{n-1}\right) \psi_{n-1, n}\left(x_{n-1}, x_{n}\right) \mu_{\beta}\left(x_{n}\right) p(xn−1,xn)=Z1μα(xn−1)ψn−1,n(xn−1,xn)μβ(xn)
8.4.2 Trees
我们已经看到,⼀个由结点链组成的图的精确推断可以在关于结点数量的线性时间内完成,⽅法是使⽤通过链中信息传递表⽰的算法。更⼀般地,通过局部信息在更⼤的⼀类图中的传递,我们可以⾼效地进⾏推断。这类图被称为树(tree)。特别地,我们会对之前在结点链的情形中得到的信息传递公式进⾏简单的推⼴,得到加和-乘积算法(sum-product algorithm),它为树结构图的精确推断提供了⼀个⾼效的框架。
在⽆向图的情形中,树被定义为满⾜下⾯性质的图:任意⼀对结点之间有且只有⼀条路径。于是这样的图没有环。在有向图的情形中,树的定义为:有⼀个没有⽗结点的结点,被称为根(root),其他所有的结点都有⼀个⽗结点。如果我们将有向树转化为⽆向图,我们会看到“伦理”步骤不会增加任何链接,因为所有的结点⾄多有⼀个⽗结点,从⽽对应的道德图是⼀个⽆向树。⽆向树和有向树的例⼦如图8.39(a)和8.39(b)所⽰。注意,⼀个表⽰为有向树的概率分布可以很容易地转化为⼀个由⽆向树表⽰的概率分布,反之亦然。
如果有向图中存在具有多个⽗结点的结点,但是在任意两个结点之间仍然只有⼀条路径(忽略箭头⽅向),那么这个图被称为多树(polytree),如图8.39( c )所⽰。这样的图中,存在多个没有⽗结点的结点,并且对应的道德⽆向图会存在环。
8.4.3 Factor graphs
在下⼀节中我们将要推导的加和-乘积算法适⽤于⽆向树、有向树以及多树。如果我们⾸先引⼊⼀个新的图结构,被称为因⼦图(factor graph)(Frey, 1998; Kschischnang et al., 2001),那么算法的形式会变得特别简单并且具有⼀般性。
有向图和⽆向图都使得若⼲个变量的⼀个全局函数能够表⽰为这些变量的⼦集上的因⼦的乘积。因⼦图显式地表⽰出了这个分解,⽅法是:在表⽰变量的结点的基础上,引⼊额外的结点表⽰因⼦本⾝。因⼦图也使我们能够更加清晰地了解分解的细节,正如我们将看到的那样。p(x)=∏sfs(xs)p(\mathbf{x})=\prod_{s} f_{s}\left(\mathbf{x}_{s}\right) p(x)=s∏fs(xs)其中xs\mathbf{x}_{s}xs denotes a subset of the variables。每个因子fsf_{s}fs为xs\mathbf{x}_{s}xs的函数。无论是有向图p(x)=∏k=1Kp(xk∣pak)p(\mathbf{x})=\prod_{k=1}^{K} p\left(x_{k} | \mathbf{p a}_{k}\right)p(x)=∏k=1Kp(xk∣pak)还是无向图p(x)=1Z∏CψC(xC)p(\mathbf{x})=\frac{1}{Z} \prod_{C} \psi_{C}\left(\mathbf{x}_{C}\right)p(x)=Z1∏CψC(xC)都可以看作上式的特例。
在因⼦图中,概率分布中的每个变量都有⼀个结点(与之前⼀样,⽤圆圈表⽰),这与有向图和⽆向图的情形相同。还存在其他的结点(⽤⼩正⽅形表⽰),表⽰联合概率分布中的每个因⼦fs(xs)f_{s}\left(\mathbf{x}_{s}\right)fs(xs)。最后,在每个因⼦结点和因⼦所依赖的变量结点之间,存在⽆向链接。例如,考虑⼀个表⽰为因⼦图形式的概率分布p(x)=fa(x1,x2)fb(x1,x2)fc(x2,x3)fd(x3)p(\mathbf{x})=f_{a}\left(x_{1}, x_{2}\right) f_{b}\left(x_{1}, x_{2}\right) f_{c}\left(x_{2}, x_{3}\right) f_{d}\left(x_{3}\right) p(x)=fa(x1,x2)fb(x1,x2)fc(x2,x3)fd(x3)
注意有两个因⼦fa(x1,x2)f_a(x_1,x_2)fa(x1,x2)和fb(x1,x2)f_b(x_1, x_2)fb(x1,x2)定义在同⼀个变量集合上。在⼀个⽆向图中,两个这样的因⼦的乘积被简单地合并到同⼀个团块势函数中。类似地,fc(x2,x3)f_c(x_2, x_3)fc(x2,x3)和fd(x3)f_d(x_3)fd(x3)可以结合到x2x_2x2和x3x_3x3上的⼀个单⼀势函数中。然⽽,因⼦图显式地写出这些因⼦,因此能够表达出关于分解本⾝的更加细节的信息。
我们已经看到了树结构图对于进⾏⾼效推断的重要性。如果我们将⼀个有向树或者⽆向树转化为因⼦图,那么⽣成的因⼦图也是树(即,因⼦图没有环,且任意两个结点之间有且只有⼀条路径)。在有向多树的情形中,由于“伦理”步骤的存在,转化为⽆向图会引⼊环,⽽转化后的因⼦图仍然是树
事实上,有向图中由于链接⽗结点和⼦结点产⽣的局部环可以在转换到因⼦图时被移除,只需定义合适的因⼦函数即可
我们已经看到多个不同的因⼦图可以表⽰同⼀个有向图或者⽆向图。这使得因⼦图对于分解的精确形式的表⽰更加具体。
8.4.4 The sum-product algorithm
我们会使⽤因⼦图框架推导⼀类强⼤的、⾼效的精确推断算法,这些算法适⽤于树结构的图。这⾥,我们把注意⼒集中于计算结点或者结点⼦集上的局部边缘概率分布,这会引出加和-乘积算法(sum-product algorithm)。稍后,我们会修改这个⽅法,使得概率最⼤的状态被找到,这就引出了最⼤加和算法(max-sum algorithm)。
我们假设原始的图是⼀个⽆向树或者有向树或者多树,从⽽对应的因⼦图有⼀个树结构。⾸先,我们将原始的图转化为因⼦图,使得我们可以使⽤同样的框架处理有向模型和⽆向模型。我们的⽬标是利⽤图的结构完成两件事:(1)得到⼀个⾼效的精确推断算法来寻找边缘概率,(2)在需要求解多个边缘概率的情形,计算可以⾼效地共享。
首先找出边缘分布p(x)=∑x\xp(x)p(x)=\sum_{\mathbf{x} \backslash x} p(\mathbf{x}) p(x)=x\x∑p(x)
p(x)=∏s∈ne(x)Fs(x,Xs)p(\mathbf{x})=\prod_{s \in \operatorname{ne}(x)} F_{s}\left(x, X_{s}\right) p(x)=s∈ne(x)∏Fs(x,Xs)p(x)=∏s∈ne(x)[∑XsFs(x,Xs)]=∏s∈ne(x)μfs−x(x)\begin{aligned} p(x) &=\prod_{s \in \operatorname{ne}(x)}\left[\sum_{X_{s}} F_{s}\left(x, X_{s}\right)\right] \\ &=\prod_{s \in \operatorname{ne}(x)} \mu_{f_{s}-x}(x) \end{aligned} p(x)=s∈ne(x)∏[Xs∑Fs(x,Xs)]=s∈ne(x)∏μfs−x(x)其中μfs→x(x)≡∑XsFs(x,Xs)\mu_{f_{s} \rightarrow x}(x) \equiv \sum_{X_{s}} F_{s}\left(x, X_{s}\right) μfs→x(x)≡Xs∑Fs(x,Xs)由于
Fs(x,Xs)=fs(x,x1,…,xM)G1(x1,Xs1)…GM(xM,XsM)F_{s}\left(x, X_{s}\right)=f_{s}\left(x, x_{1}, \ldots, x_{M}\right) G_{1}\left(x_{1}, X_{s 1}\right) \ldots G_{M}\left(x_{M}, X_{s M}\right) Fs(x,Xs)=fs(x,x1,…,xM)G1(x1,Xs1)…GM(xM,XsM)则μfs→x(x)=∑x1…∑xMfs(x,x1,…,xM)∏m∈ne(fs)\x[∑XxmGm(xm,Xsm)]=∑x1…∑xMfs(x,x1,…,xM)∏m∈ne(fs)\xμxm→fs(xm)\begin{aligned} \mu_{f_{s} \rightarrow x}(x) &=\sum_{x_{1}} \ldots \sum_{x_{M}} f_{s}\left(x, x_{1}, \ldots, x_{M}\right) \prod_{m \in \operatorname{ne}\left(f_{s}\right) \backslash x}\left[\sum_{X_{x m}} G_{m}\left(x_{m}, X_{s m}\right)\right] \\ &=\sum_{x_{1}} \ldots \sum_{x_{M}} f_{s}\left(x, x_{1}, \ldots, x_{M}\right) \prod_{m \in \operatorname{ne}\left(f_{s}\right) \backslash x} \mu_{x_{m} \rightarrow f_{s}}\left(x_{m}\right) \end{aligned} μfs→x(x)=x1∑…xM∑fs(x,x1,…,xM)m∈ne(fs)\x∏[Xxm∑Gm(xm,Xsm)]=x1∑…xM∑fs(x,x1,…,xM)m∈ne(fs)\x∏μxm→fs(xm)其中μxm→fs(xm)≡∑XsmGm(xm,Xsm)\mu_{x_{m} \rightarrow f_{s}}\left(x_{m}\right) \equiv \sum_{X_{s m}} G_{m}\left(x_{m}, X_{s m}\right) μxm→fs(xm)≡Xsm∑Gm(xm,Xsm)
Gm(xm,Xsm)=∏l∈ne(xm)\fsFl(xm,Xml)G_{m}\left(x_{m}, X_{s m}\right)=\prod_{l \in \operatorname{ne}\left(x_{m}\right) \backslash f_{s}} F_{l}\left(x_{m}, X_{m l}\right) Gm(xm,Xsm)=l∈ne(xm)\fs∏Fl(xm,Xml)则可得μxm→fs(xm)=∏l∈ne(xm)\fs[∑XmlFl(xm,Xml)]=∏l∈ne(xm)\fsμfl→xm(xm)\begin{aligned} \mu_{x_{m} \rightarrow f_{s}}\left(x_{m}\right)=& \prod_{l \in \operatorname{ne}\left(x_{m}\right) \backslash f_{s}}\left[\sum_{X_{m l}} F_{l}\left(x_{m}, X_{m l}\right)\right] \\=& \prod_{l \in \operatorname{ne}\left(x_{m}\right) \backslash f_{s}} \mu_{f_{l} \rightarrow x_{m}}\left(x_{m}\right) \end{aligned} μxm→fs(xm)==l∈ne(xm)\fs∏[Xml∑Fl(xm,Xml)]l∈ne(xm)\fs∏μfl→xm(xm)回忆⼀下,我们的⽬标是计算变量结点xxx的边缘概率分布,这个边缘概率分布等于沿着所有到达这个结点的链接的输⼊信息的乘积。这些信息中的每⼀条信息都可以使⽤其他的信息递归地计算。为了开始这个递归计算的过程,我们可以将结点xxx看成树的根结点,然后从叶结点开始计算。
现在,让我们停下来,总结⼀下计算边缘概率分布p(x)p( x)p(x)时得到的加和-乘积算法。⾸先,我们将变量结点xxx看成因⼦图的根结点,使⽤公式μx→f(x)=1\mu_{x \rightarrow f}(x)=1μx→f(x)=1和公式μf→x(x)=f(x)\mu_{f \rightarrow x}(x)=f(x)μf→x(x)=f(x),初始化图的叶结点的信息。之后,递归地应⽤信息传递步骤μfs→x(x)=∑x1⋯∑xMfs(x,x1,…,xM)∏m∈ne(fs)\xμxm→fs(xm)\mu_{f_{s} \rightarrow x}(x)=\sum_{x_{1}} \cdots \sum_{x_{M}} f_{s}\left(x, x_{1}, \ldots, x_{M}\right) \prod_{m \in \operatorname{ne}\left(f_{s}\right) \backslash x} \mu_{x_{m} \rightarrow f_{s}}\left(x_{m}\right)μfs→x(x)=∑x1⋯∑xMfs(x,x1,…,xM)∏m∈ne(fs)\xμxm→fs(xm)和μxm→fs(xm)=∏l∈ne(xm)\fsμfl→xm(xm)\mu_{x_{m} \rightarrow f_{s}}\left(x_{m}\right)=\prod_{l \in \operatorname{ne}\left(x_{m}\right) \backslash f_{s}} \mu_{f_{l} \rightarrow x_{m}}\left(x_{m}\right)μxm→fs(xm)=∏l∈ne(xm)\fsμfl→xm(xm),直到信息被沿着每⼀个链接传递完毕,并且根结点收到了所有相邻结点的信息。每个结点都可以向根结点发送信息。⼀旦结点收到了所有其他相邻结点的信息,那么它就可以向根结点发送信息。⼀旦根结点收到了所有相邻结点的信息,需要求解的边缘概率分布就可以使⽤公式p(x)=∏s∈ne(x)μfs→x(x)p(x)=\prod_{s \in \operatorname{ne}(x)} \mu_{f_{s} \rightarrow x}(x)p(x)=∏s∈ne(x)μfs→x(x)进⾏计算。我们稍后会说明这个过程。
接下来,假设我们想找到边缘概率分布p(xs)p(\mathbf x_s)p(xs),它与属于每个因⼦的变量集合相关联。很容易看到与某个因⼦关联的边缘概率分布为到达这个因⼦结点的信息与这个结点的局部因⼦的乘积,即p(xs)=fs(xs)∏i∈ne(fs)μxi→fs(xi)p\left(\mathbf{x}_{s}\right)=f_{s}\left(\mathbf{x}_{s}\right) \prod_{i \in \operatorname{ne}\left(f_{s}\right)} \mu_{x_{i} \rightarrow f_{s}}\left(x_{i}\right) p(xs)=fs(xs)i∈ne(fs)∏μxi→fs(xi)
⽬前为⽌,我们始终忽略了归⼀化系数的问题。如果因⼦图是从有向图推导的,那么联合概率分布已经正确地被归⼀化了,因此通过加和-乘积算法得到的边缘概率分布会类似地被正确归⼀化。然⽽,如果我们开始于⼀个⽆向图,那么通常会存在⼀个未知的归⼀化系数1/Z1/Z1/Z 。通过对未归⼀化的联合概率p~(x)\widetilde{p}(\mathbf{x})p(x)进⾏操作,这个问题可以很容易处理。⾸先,我们运⾏加和-乘积算法找到对应的未归⼀化的边缘概率分布p~(xi)\widetilde{p}\left(x_{i}\right)p(xi)。之后,系数1/Z1/Z1/Z 可以很容易地通过对任意⼀个边缘概率分布进⾏归⼀化的⽅式得到。这种计算很⾼效,因为归⼀化是在单⼀变量上进⾏的,⽽不是在整个变量集合上进⾏。
现在,考虑⼀个简单的例⼦来说明加和-乘积算法是很有帮助的。
非归一化的联合分布为p~(x)=fa(x1,x2)fb(x2,x3)fc(x2,x4)\widetilde{p}(\mathbf{x})=f_{a}\left(x_{1}, x_{2}\right) f_{b}\left(x_{2}, x_{3}\right) f_{c}\left(x_{2}, x_{4}\right) p(x)=fa(x1,x2)fb(x2,x3)fc(x2,x4)以x3x_3x3为根节点,x1x_1x1和x4x_4x4为叶节点,则μx1→fa(x1)=1μfa→x2(x2)=∑x1fa(x1,x2)μx4→f2(x4)=1μfc→x2(x2)=∑x4fc(x2,x4)μx2→fb(x2)=μfa→x2(x2)μf2→x2(x2)μfb→x3(x3)=∑x2fb(x2,x3)μx2→fb\begin{aligned} \mu_{x_{1} \rightarrow f_{a}}\left(x_{1}\right) &=1 \\ \mu_{f_{a} \rightarrow x_{2}}\left(x_{2}\right) &=\sum_{x_{1}} f_{a}\left(x_{1}, x_{2}\right) \\ \mu_{x_{4} \rightarrow f_{2}}\left(x_{4}\right) &=1 \\ \mu_{f_{c} \rightarrow x_{2}}\left(x_{2}\right) &=\sum_{x_{4}} f_{c}\left(x_{2}, x_{4}\right) \\ \mu_{x_{2} \rightarrow f_{b}}\left(x_{2}\right) &=\mu_{f_{a} \rightarrow x_{2}\left(x_{2}\right) \mu_{f_{2} \rightarrow x_{2}}\left(x_{2}\right)} \\ \mu_{f_{b} \rightarrow x_{3}}\left(x_{3}\right) &=\sum_{x_{2}} f_{b}\left(x_{2}, x_{3}\right) \mu_{x_{2} \rightarrow f_{b}} \end{aligned} μx1→fa(x1)μfa→x2(x2)μx4→f2(x4)μfc→x2(x2)μx2→fb(x2)μfb→x3(x3)=1=x1∑fa(x1,x2)=1=x4∑fc(x2,x4)=μfa→x2(x2)μf2→x2(x2)=x2∑fb(x2,x3)μx2→fb⼀旦信息传播完成,我们就可以将信息从根结点传递到叶结点,这些信息为μx3→fb(x3)=1μfb→x2(x2)=∑x3fb(x2,x3)μx2→fa(x2)=μfb→x2(x2)μfc→x2(x2)μfa→x1(x1)=∑x2fa(x1,x2)μf2→f2(x2)μx2→fc(x2)=μfa→x2(x2)μfb→x2(x2)μfc→x4(x4)=∑x2fc(x2,x4)μx2→fc(x2)\begin{aligned} \mu_{x_{3} \rightarrow f_{b}}\left(x_{3}\right) &=1 \\ \mu_{f_{b} \rightarrow x_{2}}\left(x_{2}\right) &=\sum_{x_{3}} f_{b}\left(x_{2}, x_{3}\right) \\ \mu_{x_{2} \rightarrow f_{a}}\left(x_{2}\right) &=\mu_{f_{b} \rightarrow x_{2}}\left(x_{2}\right) \mu_{f_{c} \rightarrow x_{2}}\left(x_{2}\right) \\ \mu_{f_{a} \rightarrow x_{1}}\left(x_{1}\right) &=\sum_{x_{2}} f_{a}\left(x_{1}, x_{2}\right) \mu_{f_{2} \rightarrow f_{2}}\left(x_{2}\right) \\ \mu_{x_{2} \rightarrow f_{c}}\left(x_{2}\right) &=\mu_{f_{a} \rightarrow x_{2}}\left(x_{2}\right) \mu_{f_{b} \rightarrow x_{2}}\left(x_{2}\right) \\ \mu_{f_{c} \rightarrow x_{4}}\left(x_{4}\right) &=\sum_{x_{2}} f_{c}\left(x_{2}, x_{4}\right) \mu_{x_{2} \rightarrow f_{c}}\left(x_{2}\right) \end{aligned} μx3→fb(x3)μfb→x2(x2)μx2→fa(x2)μfa→x1(x1)μx2→fc(x2)μfc→x4(x4)=1=x3∑fb(x2,x3)=μfb→x2(x2)μfc→x2(x2)=x2∑fa(x1,x2)μf2→f2(x2)=μfa→x2(x2)μfb→x2(x2)=x2∑fc(x2,x4)μx2→fc(x2)
为了验证加积算法,p~(x2)=μfa→x2(x2)μfb→x2(x2)μfc→x2(x2)=[∑x1fa(x1,x2)][∑x3fb(x2,x3)][∑x4fc(x2,x4)]=∑x1∑x2∑x4fa(x1,x2)fb(x2,x3)fc(x2,x4)=∑x1∑x3∑x4p~(x)\begin{aligned} \widetilde{p}\left(x_{2}\right) &=\mu_{f_{a} \rightarrow x_{2}}\left(x_{2}\right) \mu_{f_{b} \rightarrow x_{2}}\left(x_{2}\right) \mu_{f_{c} \rightarrow x_{2}}\left(x_{2}\right) \\ &=\left[\sum_{x_{1}} f_{a}\left(x_{1}, x_{2}\right)\right]\left[\sum_{x_{3}} f_{b}\left(x_{2}, x_{3}\right)\right]\left[\sum_{x_{4}} f_{c}\left(x_{2}, x_{4}\right)\right] \\ &=\sum_{x_{1}} \sum_{x_{2}} \sum_{x_{4}} f_{a}\left(x_{1}, x_{2}\right) f_{b}\left(x_{2}, x_{3}\right) f_{c}\left(x_{2}, x_{4}\right) \\ &=\sum_{x_{1}} \sum_{x_{3}} \sum_{x_{4}} \tilde{p}(\mathbf{x}) \end{aligned} p(x2)=μfa→x2(x2)μfb→x2(x2)μfc→x2(x2)=[x1∑fa(x1,x2)][x3∑fb(x2,x3)][x4∑fc(x2,x4)]=x1∑x2∑x4∑fa(x1,x2)fb(x2,x3)fc(x2,x4)=x1∑x3∑x4∑p~(x)
8.4.5 The max-sum algorithm
第二个应用就是为了找到最大概率对应的那个样本。首先利用sum-product algorithm得到每个变量的p(xi)p\left(x_{i}\right)p(xi),然后找出其最大边缘分布对应的样本xi⋆x_{i}^{\star}xi⋆。但这是独立最大,而不是联合最大xmax=argmaxxp(x)\mathbf{x}^{\max }=\underset{\mathbf{x}}{\arg \max } p(\mathbf{x}) xmax=xargmaxp(x)为了解决这个问题,我们定义问题为maxxp(x)=maxx1…maxxMp(x)\max _{\mathbf{x}} p(\mathbf{x})=\max _{x_{1}} \ldots \max _{x_{M}} p(\mathbf{x}) xmaxp(x)=x1max…xMmaxp(x)maxxp(x)=1Zmaxx1⋯maxxN[ψ1,2(x1,x2)⋯ψN−1,N(xN−1,xN)]=1Zmaxx1[ψ1,2(x1,x2)[⋯maxxNψN−1,N(xN−1,xN)]]\begin{array}{l}{\max _{\mathbf{x}} p(\mathbf{x})=\frac{1}{Z} \max _{x_{1}} \cdots \max _{x_{N}}\left[\psi_{1,2}\left(x_{1}, x_{2}\right) \cdots \psi_{N-1, N}\left(x_{N-1}, x_{N}\right)\right]} \\ {=\frac{1}{Z} \max _{x_{1}}\left[\psi_{1,2}\left(x_{1}, x_{2}\right)\left[\cdots \max _{x_{N}} \psi_{N-1, N}\left(x_{N-1}, x_{N}\right)\right]\right]}\end{array} maxxp(x)=Z1maxx1⋯maxxN[ψ1,2(x1,x2)⋯ψN−1,N(xN−1,xN)]=Z1maxx1[ψ1,2(x1,x2)[⋯maxxNψN−1,N(xN−1,xN)]]这可以被称为最⼤化乘积算法(max-produce algorithm),与加和-乘积算法完全相同,唯⼀的区别是求和被替换为了求最⼤值。注意,现阶段,信息被从叶结点发送到根结点,⽽没有相反的⽅向。
在实际应⽤中,许多⼩概率的乘积可以产⽣数值下溢的问题,因此更⽅便的做法是对联合概率分布的对数进⾏操作。从而得到最大加和算法μf→x(x)=maxx1,…,xM[lnf(x,x1,…,xM)+∑m∈ne(f)\xμxm→f(xm)]μx→f(x)=∑l∈ne(x)\fμfl→x(x)\begin{array}{c}{\mu_{f \rightarrow x}(x)=\max _{x_{1}, \ldots, x_{M}}\left[\ln f\left(x, x_{1}, \ldots, x_{M}\right)+\sum_{m \in \operatorname{ne}(f) \backslash x} \mu_{x_{m} \rightarrow f}\left(x_{m}\right)\right]} \\ {\mu_{x \rightarrow f}(x)=\sum_{l \in \operatorname{ne}(x) \backslash f} \mu_{f_{l} \rightarrow x}(x)}\end{array} μf→x(x)=maxx1,…,xM[lnf(x,x1,…,xM)+∑m∈ne(f)\xμxm→f(xm)]μx→f(x)=∑l∈ne(x)\fμfl→x(x)叶子的初始化为μx→f(x)=0μf→x(x)=lnf(x)\begin{aligned} \mu_{x \rightarrow f}(x) &=0 \\ \mu_{f \rightarrow x}(x) &=\ln f(x) \end{aligned} μx→f(x)μf→x(x)=0=lnf(x)⽽在根结点处的最⼤概率pmax=maxx[∑s∈ne(x)μfs→x(x)]p^{\max }=\max _{x}\left[\sum_{s \in \operatorname{ne}(x)} \mu_{f_{s} \rightarrow x}(x)\right] pmax=xmax⎣⎡s∈ne(x)∑μfs→x(x)⎦⎤⽬前为⽌,我们已经看到了如何通过从叶结点到任意选择的根结点传递信息的⽅式找到联合概率分布的最⼤值。这个结果与根结点的选择⽆关。现在,我们转向第⼆个问题,即寻找联合概率达到最⼤值的变量的配置。⽬前,我们已经将信息从叶结点发送到了根结点。计算上式的过程也会得到根结点变量的概率最⾼的值xmax=argmaxx[∑s∈ne(x)μfs→x(x)]x^{\max }=\underset{x}{\arg \max }\left[\sum_{s \in \operatorname{ne}(x)} \mu_{f_{s} \rightarrow x}(x)\right] xmax=xargmax⎣⎡s∈ne(x)∑μfs→x(x)⎦⎤我们可能如加积算法那样,将信息从根节点传回叶子节点,对剩余的节点都这样求最大值,然⽽,由于我们现在进⾏的是最⼤化过程⽽不是求和过程,因此有可能存在多个x\mathbf xx的配置,它们都会给出p(x)p(\mathbf x)p(x)的最⼤值。在这种情况下,这个策略就失效了,因为通过对属于不同的最⼤化配置的每个结点处的信息的乘积进⾏最⼤化得到的各个变量值可能给出⼀个并不对应于最⼤值的整体配置。
通过使⽤⼀个从根结点到叶结点的⼀个相当不同的信息传递⽅式,这个问题可以得到解决。首先考虑节点链NNN variables x1,…,xNx_{1}, \ldots, x_{N}x1,…,xN each having KKK states。以xNx_NxN为根,则以μxn→fn,n+1(xn)=μfn−1,n→xn(xn)μfn−1,n→xn(xn)=maxxn−1[lnfn−1,n(xn−1,xn)+μxn−1→fn−1,n(xn)]\begin{aligned} \mu_{x_{n} \rightarrow f_{n, n+1}}\left(x_{n}\right) &=\mu_{f_{n-1, n} \rightarrow x_{n}}\left(x_{n}\right) \\ \mu_{f_{n-1, n} \rightarrow x_{n}}\left(x_{n}\right) &=\max _{x_{n-1}}\left[\ln f_{n-1, n}\left(x_{n-1}, x_{n}\right)+\mu_{x_{n-1} \rightarrow f n-1, n}\left(x_{n}\right)\right] \end{aligned} μxn→fn,n+1(xn)μfn−1,n→xn(xn)=μfn−1,n→xn(xn)=xn−1max[lnfn−1,n(xn−1,xn)+μxn−1→fn−1,n(xn)]传播,且初始化μx1→f1,2(x1)=0\mu_{x_{1} \rightarrow f_{1,2}}\left(x_{1}\right)=0 μx1→f1,2(x1)=0则xNx_NxN的最大概率值为xNmax=argmaxxN[μfN−1,N→xN(xN)]x_{N}^{\max }=\underset{x_{N}}{\arg \max }\left[\mu_{f_{N-1, N} \rightarrow x_{N}}\left(x_{N}\right)\right] xNmax=xNargmax[μfN−1,N→xN(xN)]现在我们需要确定对应于同样的最⼤化配置的前⼀个变量的状态。可以这样做:跟踪变量的哪个值产⽣了每个变量的最⼤值状态,即存储下⾯的量ϕ(xn)=argmaxxn−1[lnfn−1,n(xn−1,xn)+μxn−1→fn−1,n(xn)]\phi\left(x_{n}\right)=\underset{x_{n-1}}{\arg \max }\left[\ln f_{n-1, n}\left(x_{n-1}, x_{n}\right)+\mu_{x_{n-1} \rightarrow f n-1, n}\left(x_{n}\right)\right] ϕ(xn)=xn−1argmax[lnfn−1,n(xn−1,xn)+μxn−1→fn−1,n(xn)]
在图8.53中,我们画出了两条路径。对于每条路径,我们都假设对应于联合概率分布的⼀个全局最⼤值。那么从任意⼀个状态开始沿着⿊线回退,我们都可以得到⼀个合法的全局最⼤值配置。注意,如果我们运⾏⼀个正向的最⼤加和信息传递,然后运⾏⼀个反向的传递,之后对每个节点分别应⽤公式xmax=argmaxx[∑s∈ne(x)μfs→x(x)]x^{\max }=\underset{x}{\arg \max }\left[\sum_{s \in \operatorname{ne}(x)} \mu_{f_{s} \rightarrow x}(x)\right]xmax=xargmax[∑s∈ne(x)μfs→x(x)],那么我们最后会从⼀条路径中选出某些状态,从另⼀条路径中选出另外⼀些状态,得到⼀个并⾮为全局最⼤值的整体配置。我们看到,有必要在正向信息传递时,使⽤函数ϕ(xn)对最⼤化状态进⾏跟踪,然后使⽤反向跟踪找到⼀个相容的解。
xn−1max=ϕ(xnmax)x_{n-1}^{\max }=\phi\left(x_{n}^{\max }\right) xn−1max=ϕ(xnmax)利用上式得到同样配置下前一个变量的取值。推⼴到⼀般的树形结构因⼦图的⽅法就⽐较明显了。
PRML学习总结(8)——Graphical Models相关推荐
- 深度学习基础 Probabilistic Graphical Models | Statistical and Algorithmic Foundations of Deep Learning
文章目录 Probabilistic Graphical Models Statistical and Algorithmic Foundations of Deep Learning 01 An o ...
- PRML第八章读书笔记——Graphical Models 生成式模型/超先验/层次贝叶斯模型、d-分离/朴素贝叶斯、有向分解/马尔可夫毯、D图I图完美图、马尔科夫链/因子图/和积算法/最大和算法
(终于读到概率图了,从这一章开始应该算是PRML的精华内容了.过于基础的东西就不写了,主要写自己不会的) 目录 8.1 Bayesian Networks P365 祖先采样法ancestral sa ...
- PRML读书会第五期——概率图模型(Graphical Models)【上】
PRML读书会第五期--概率图模型(Graphical Models) 前言 本人系浙江大学人工智能协会(ZJUAI)会员.本学期协会正在举办PRML读书会系列活动,笔者在活动中负责部分记录工作. 下 ...
- Graphical Models学习
首先给出定义 概率图模型是一种将概率分布运用图进行表示的模型.通常一个图由节点集(nodes)和边集(edges)组成,在概率图模型(probabilistic graphical models)中, ...
- 使用 LaTeX 绘制 PGM(Probabilistic Graphical Models)中的贝叶斯网络(bayesian networks)
Software for drawing bayesian networks (graphical models) 这里需要调用 latex 中的绘图库:TikZ and PGF. 注意,下述 tex ...
- PRML学习总结(6)——Kernel Methods
PRML学习总结(6)--Kernel Methods 6.1 Dual Representations 6.2 Constructing Kernels 6.3 Radial Basis Funct ...
- PRML学习总结(5)——Neural Networks
PRML学习总结(5)--Neural Networks 5.1 Feed-forward Network Functions 5.1.1 Weight-space symmetries 5.2 Ne ...
- Python 读书笔记3 Probabilistic Graphical Models -1
说明 概率图模型才是我最感兴趣的领域.这个领域的内容还不完善,所以我的原则是,理解能理解的,做好自己搭建的装备. 内容 这本书<Probabilistic Graphical Models> ...
- 统计推断(九) Graphical models
1. Undirected graphical models(Markov random fields) 节点表示随机变量,边表示与节点相关的势函数 px(x)∝φ12(x1,x2)φ13(x1,x3 ...
最新文章
- 微软CEO:我们员工以及他们家人的健康与安全是我们最高的优先级!
- tortoisesvn › prefer local prefer repository
- linux怎么用jconsole_jconsole监控上Linux上的JVM
- sharing分片集合环境搭建【MongDB系列之七】
- 王爽 汇编语言第三版 第10章 call 和 ret 指令 以及 子程序设计
- Spring Data JPA 从入门到精通~方法的查询策略设置
- 按规律插入一个数字到数组中
- CSS的样式小计(1)
- Windows核心编程_Edit操作
- qca9563修改art区,将2T2R修改为1T1R
- Photoshop插件-保存-存为Web所用格式-另存为-脚本开发-PS插件
- word批量转PDF怎么转
- java实现爬取文本中的手机号、邮箱以及电话号码
- MC/DC覆盖的计算总结
- js中获取当前点击的li标签以及li标签中a标签的id
- CHIL-SQL-数据类型
- 2003系统服务器防域名报毒,【系统之家】木马病毒无孔不入 win 2003系统也要防木马...
- Linux服务器环境配置-Pytorch
- 2psk系统的仿真课程设计matlab,通信原理课程设计-基于MATLAB-Simulink的2PSK仿真
- bat文件语法与技巧(batch file or batch program)