概率图模型课堂笔记:2.1 推理
2.1 变量消除
对于贝叶斯网络来说,教程中的$\phi_A(A,B)其实就是$P(A|B)。
这里用一种更好理解的方式。首先总结下概率的几个性质:
1、若$A,B$为独立随机变量,则
$P(A)P(B)=P(A,B)$
$P(A)=P(A|B)$
$P(B)=P(B|A)$
2、若$A,B$在给定$C$的情况下独立,则
$P(A|C)P(B|C)=P(A,B|C)$
$P(A|C)=P(A|B,C)$
$P(B|C)=P(B|A,C)$
$P(C|A,B)P(B)=P(C|A,B)P(A,B)/P(A)=P(A,B,C)/P(A)=P(B,C|A)$
$\sum_{LSGHIDC}P(J|L,S)P(L|G)P(S|I)P(G|I,D)P(H|G,J)P(I)\textbf{P(D|C)P(C)}$
$=\sum_{LSGHID}P(J|L,S)P(L|G)P(S|I)P(G|I,D)P(H|G,J)P(I)\sum_{C}\textbf{P(D|C)P(C)}$
$=\sum_{LSGHID}P(J|L,S)P(L|G)P(S|I)P(G|I,D)P(H|G,J)P(I)\sum_{C}\textbf{P(C,D)}$
$=\sum_{LSGHID}P(J|L,S)P(L|G)P(S|I)\textbf{P(G|I,D)}P(H|G,J)P(I)\textbf{P(D)}$
$=\sum_{LSGHID}P(J|L,S)P(L|G)P(S|I)P(H|G,J)P(I)\textbf{P(G|I,D)P(D)}$
$=\sum_{LSGHI}P(J|L,S)P(L|G)P(S|I)P(H|G,J)P(I)\sum_{D}\textbf{P(G|I,D)P(D)}$
$=\sum_{LSGHI}P(J|L,S)P(L|G)P(S|I)P(H|G,J)P(I)\sum_{D}\textbf{P(G,D|I)}$
$=\sum_{LSGHI}P(J|L,S)P(L|G)P(S|I)P(H|G,J)P(I)\textbf{P(G|I)}$
$=\sum_{LSGHI}P(J|L,S)P(L|G)P(H|G,J)\textbf{P(S|I)P(I)P(G|I)}$
$=\sum_{LSGH}P(J|L,S)P(L|G)P(H|G,J)\sum_{I}\textbf{P(S|I)P(I)P(G|I)}$
$=\sum_{LSGH}P(J|L,S)P(L|G)P(H|G,J)\sum_{I}\textbf{P(S,I)P(G|I)}$
$=\sum_{LSGH}P(J|L,S)P(L|G)P(H|G,J)\sum_{I}\textbf{P(S,I)P(G|I,S)}$
$=\sum_{LSGH}P(J|L,S)P(L|G)P(H|G,J)\sum_{I}\textbf{P(G,S,I)}$
$=\sum_{LSGH}P(J|L,S)P(L|G)P(H|G,J)\textbf{P(G,S)}$
$=\sum_{LSGH}P(J|L,S)P(L|G)P(G,S)\textbf{P(H|G,J)}$
$=\sum_{LSG}P(J|L,S)P(L|G)P(G,S)\sum_{H}\textbf{P(H|G,J)}$
$=\sum_{LSG}P(J|L,S)P(L|G)P(G,S)\cdot 1$
$=\sum_{LSG}P(J|L,S)\textbf{P(L|G)P(G,S)}$
$=\sum_{LS}P(J|L,S)\sum_{G}\textbf{P(L|G)P(G,S)}$
$=\sum_{LS}P(J|L,S)\sum_{G}\textbf{P(L|G,S)P(G,S)}$
$=\sum_{LS}P(J|L,S)\sum_{G}\textbf{P(L,S,G)}$
$=\sum_{LS}P(J|L,S)\textbf{P(L,S)}$
$=\sum_{LS}P(J,L,S)$
$=P(J)$
注意几点:
(1)上面采用的变量消除顺序是随意选择的,任意顺序都可以。
(2)上面条件概率的相乘其实就是Factors相乘。
(3)如果要求$P(J,I=i,H=h)$,那么在条件概率表中只保留相应的行,按原来的思路计算。
2.2 复杂度分析
$\mathbf{X_k}$:第k次消除涉及的变量集合
$m_k$:第k次消除涉及的factor个数
$\psi_k(\mathbf{X_k})=\prod_{i=1}^{m_k}\phi_i$:第k次消除,相乘产生的新factor
$\tau_k(\mathbf{X_k}-{Z})=\sum_Z\phi_k(\mathbf{X_k})$:第k次消除,边缘化后产生的新factor
Factor乘法:计算次数为所有包含的变量取值的个数,就是实际生成表的行数
Factor边缘化:计算次数为所有包含的变量取值的个数,也是原表的行数
$N_k=|Val(X_k)|$
令m表示factor的个数,n表示变量个数。对贝叶斯网络来说,m<=n,对马尔科夫来说,没有这个限制。
消除过程中产生的中间factor个数为n(因为每次消除删除一个变量)
总factor个数$m^*\le m+n$
令$N=max(N_k)$表示所有的生成factor的行数的最大值。
乘法次数:?
加法次数:?
顺序对复杂度的影响:
对图
$(\prod_{j=1}^nP(C_j|A,B))P(A)(B)$
简单方法:
$P(A)=\sum_{B,C_1,C_2,\ldots,C_n}(\prod_{j=1}^nP(C_j|A,B))P(A)(B)$
$=\sum_{B,C_2,C_2,\ldots,C_n}(\prod_{j=2}^nP(C_j|A,B))\sum_{C1}P(C1|A,B)P(A)(B)$
$=\sum_{B,C_2,C_2,\ldots,C_n}(\prod_{j=2}^nP(C_j|A,B))\sum_{C1}P(C1,A,B)$
$=\sum_{B,C_2,C_2,\ldots,C_n}(\prod_{j=2}^nP(C_j|A,B))P(A,B)$
$=\sum_{B,C_3,C_2,\ldots,C_n}(\prod_{j=3}^nP(C_j|A,B))P(A,B)$
$=\sum_{B,C_4,C_2,\ldots,C_n}(\prod_{j=4}^nP(C_j|A,B))P(A,B)$
$=\ldots$
$=\sum_{B}P(A)P(B)$
2.3 通过图来分析复杂度
对一个BN,我们做消除的时候,引入一个无向图模型。用它来计算复杂度。
1、将有向图转换成无向图,需要把所有的V结构的两个Parent相互连接。
2、每次消除一个变量,需要把它原先直连的变量们作两两连接。
所有变量消除完成后,最后的图叫Induced Graph。这里注意,不同的消除过程将导致不同的新边,也将导致不同的Induced Graph
3、Induced Graph的连通性定理:
定理一:每个生成的(中间)factor必定代表一个极大完全连通子图,证明:
(1)最开始的时候,每个原始factor必定是一个完全连通子图(不一定是极大)
考虑$P(X|Pa_X)$:$X$和每个$Pa_X$均有边,然后根据1,每个$Pa_X$之间互相也有边
(2)消除一个变量$X_R$,会把所有包含它的factor(完全连通子图),合并成一个大的完全连通子图$G_M$(根据2)
(3)现在要证明$G_M$是极大的(无法加入其他顶点)。实际上,如果有另外一个顶点$X_O$也属于$G_M$,那么它必定和$X_R$相连,那么存在一个factor同时包含了$X_R$和$X_O$。这个factor必定参与了(2)相乘的过程。
定理二:每个极大完全连通子图必定是一个中间factor
证明:(还需加强理解)
(1)如果一个顶点$X$属于一个极大完全连通子图,对于其他点$X_O$,必定与$X$直连
(2)也必定有factor同时包含$X_O$和$X$:
这里要证明,如果任意两点X,Y直连,那么必定有factor同时包含X,Y。
(a)从一开始,这是成立的,因为每条边都代表一个父子关系,或者双亲(多亲)关系,父子和双亲必然是包含在同一个factor里的。
(b)每一次消除生成的新边,必定包含在新生成的factor里。
(3)那么消除$X$的时候,所有的直连邻居都会和$X$合并成一个新的factor。
(4)而每一个$X$必须是会被消除的。所以G就不可避免地成为了一个中间factor
4、
Induced Width: Induced Graph中最大完全连通子图的顶点个数减1
Minimal Induced Width: 各种消除顺序生成的Induced Graphs中最小的Induced Width
MIW提供了一个对图进行消除的最小计算量估计。
2.4 寻找消除顺序
1. 定理:
(1)寻找一个使得$MIW<=K$的消除顺序是个NP完全问题。
(2)在确定消除顺序后,消除过程是一个NP难问题。
2. 贪心法是个比较实用的方案。定义一个代价函数,然后每次都选择代价最小的顶点。代价函数选择:
(1)最小邻居:消除变量的邻居数
(2)最小重量:消除后产生的factor的行数
(3)最小填充:消除后产生的新边数
(4)加权最小填充:新边的重量和。边的重量:对应两顶点的重量的乘积
3. 定理:任何induced graph是三角图。也就是说,没有长度大于4的无桥圈。说明:对一个4点圈来说,消除任何一个顶点,将产生一个新边。消除这个无桥圈。看教程的图。
每一种三角化,就是一种消除的顺序。(如何应用?)