http://blog.sina.com.cn/s/blog_461db08c0101jv5j.html
最近在学习Stanford的Daphne Koller讲的Probabilistic Graphical Model的网络课程。整个课程有10周,但我的水平有限,肯定要超过10周了。笔记是根据课程安排的,记录了我觉得重要的地方,和我不明白的地方,以便自己以后快速查看。我会随时根据学习情况更新这一篇微博的。欢迎讨论和指出错误之处。
6.Markov Network Fundamentals
6.1 Pairwise Markov Network
- Pairwise 的 Markov Network各个相邻元素之间用Factor(Potential)来联系。
- factor并不与概率成正比,因为真正的联合概率要受到其他与之联系的元素所影响。
6.2 General Gibbs Distribution
- Pairwise的network提供的信息远远无法表达整个网络里所有节点之间的概率关系。所以要引入Gibbs分布。
- Gibbs分布由一些Factor组成。
- Gibbs分布可以表达多个节点之间的联合概率(不只是pairwise的,可以是3个、4个一起)。Gibbs分布有能力表述整个网络里所有节点之间的概率关系。因为它至少可以用一个包含所有节点的Factor来表示。
- Gibbs分布可以induce出Markov Network。
- Induced Markov Network,就是把Gibbs分布的Factor里的节点都连起来。
- 假设有一组Factor,做一下Factor product,然后归一化,求出所有元素的联合概率P。同时,这组Factor又可以induce出一个图H。那么P可以factorize over H。
6.3 Conditional Random Field
- CRF是MRF的一种变形,非常相似,但用处不同。CRF用来解决Task specific prediction。其实就是labelling problem。(好像MRF也是干这个的啊?)
- CRF也是由一组Factor表示。看起来很像Gibbs分布的表示方式。但是它们的归一化方式不同,CRF把概率归一化成条件概率。
- BN使用联合概率表示,它假设X1....Xn导致Y,而且各个X之间是独立的。如果各X之间不独立,则会出现Correlated feature,使概率的判断失真。而CRF使用条件概率表示,这样不管各X之间是否独立,都不会影响最后概率的判断。
- CRF与logistics regression的关系。sigmoid函数也是一种CRF???
6.4 Independencies in Markov Network
- Separation in MN.只要active trail中的一个节点已知了,这个trail就断了。
- 如果概率P factorizes over 图H,那么P也满足H表达出的independencies,所以H就是P的一个I-map。
- 反过来,independency也可以推出factorization。假设有一个正分布P,H是它的一个I-Map,则P factorizes over 图H。
- P factorizes over G,则G是P的I-map。G表达了P中的某些independencies,但不一定是全部。
- 最小I-map是指除了P中表达的independencies没有多余的路径的map。
- Perfect map是指 I(G)= I(P),但是Perfect map不一定存在。
- 这里Koller举了两个例子说明Perfect map有时候不存在,但是没怎么听懂。I-map必须是有向图??P可以等效于无向图???
- I-map也不是唯一的,不同的I-map可以表示相同的independencies,它们是I-equivalent的。多数的图都有很多I-equivalence。
- BN和MN互相转换表示,会丢失independencies。
- 把factor前面加log,本来factor product要做乘法,现在变成做加法。
- Koller举了一个自然语言识别的例子,来说明我们可以用单词的feature来判断概率,而不是单词本身。
- Ising model的例子,有点像用MRF做图像分割。温度高的时候原子之间的联系弱,温度低时联系强。但没明白她举这个例子想说明啥。这跟Log linear model有啥关系?
- Metric MRFs。MRF可以提供局部平滑的假设,但首先我们要定义一个Metric,也就是定义MRF元素取值空间的距离函数。
- 后面就讲了一些如何利用MRF做图像分割和图像去噪。这部分比较熟了。
- 举了Ising model和NLP两个例子来说明有些条件(feature)是可以重复利用的。所以叫做Shared feature,这种feature对于所有的元素都适用。
- 还是不明白这根log-linear model有啥关系。
7 Representation Wrap-up: Knowledge Engineering
7.1 Knowledge Engineering
- 这部分讲的是关于技巧方面的内容,不太涉及理论。
- Knowledge engineering有多种选择:基于模板的(图像分割)还是特殊设计的(医学诊断)?用有向图还是无向图?通用的(适合无label的数据,可以应对未知的数据)还是专用的(需要直接编写条件概率,可以人工简化高维的数据)?
- Variable Types。网络中的变量有三类:目标变量,已观察到的变量,latent变量
- Structure。要不要在网络中表达出因果关系。因果关系可以简化网络,使它更加直观。
- Parameter:Value。手工建立网络时需要注意的问题。
- Parameter:Local structure。这里讨论了几种网络的形式,但是没有具体例子,不是很明白。
8 Inference: Variable Elimination
8.1 Overview: Conditional Probability Queries
- 如果我们想利用PGM算某个概率,Koller告诉我们,这也是NP-hard,那也是NP-hard,反正很困难就对了。但好在这只是worst case,一般情况下,可以找到简便的方法。
- Sum-product。比如我们想求变量J的概率,我们要把网络内所有的变量的factor求product,得到所有变量的联合概率,然后把除J之外的变量求和,得到J的边缘分布,就是J的分布了。
- Evidence:Reduced Factors。如果我们已知了E=e(就是所谓的Evidence),再来求Y的概率,所以我们求的是条件概率P(Y|E=e)。这个概率等于 P(Y,E=e)/P(E=e)。分母用刚才的方法求。求分子的时候,要把所有包含E的factor删去不等于e的条目,然后在用刚才的方法求就行了。
- 在上面的方法中,求联合概率的那一步,如果除target变量和evidence变量之外还有很多变量,那就难求了,因为复杂度是成指数形式增长的。
- 最后,介绍了一些解概率的算法:如动态规划,置信传播,Variational Approximation(?),蒙特卡洛,Importance Sampling(?)
8.2 Overview: MAP Inference
- Maximum a Posteriori(MAP)。最大后验估计。给定E=e,求除E意外所有变量的值Y=y,使得P(y|e)最大。解可能不是唯一的。
- MAP != Max over Marginals。不能单独看某个变量的边缘分布来决定这个变量的解,而要看所有变量的联合概率哪个最大。
- NP-hardness。XXXX等情况,又是NP-hard。但大部分情况下还是能解的。
- Max-Product。后验概率P(Y|E=e)= P(Y,E=e)/P(E=e)。我们的目的是求Y使得P最大。分母与Y无关,所以只用看分子了。分子是E=e条件下的联合概率,等于是Reduced Factors的乘积,然后归一化。其实归一化因子也与Y无关,所以只用看Reduced Factors的乘积就行了。
- Algorithm:MAP。有很多算法可以利用:Variable elimination(?),置信传播,整数规划,图割法等等。
8.3 Variable Elimination Algorithm
- 这一节就是具体讲怎么算上一节提到的后验概率。
- 第二个问题答案是C,为什么不是D?
- 这一节主要讲Variable Elimination的复杂度问题。复杂度的衡量标准有计算中包括多少个乘法,多少个加法。然后得出结论:乘法的个数将随factor的个数成指数形式增长,这就是Exponential Blow Up。
- 所以在做Variable Elimination时,variable的先后顺序就会对复杂度有很大影响。
8.5 Graph-Based Perspective on Variable Elimination
- 如何决定variable的顺序呢?这一节从Graph的角度来解决这个问题
- 首先把有向图变成无向图,给存在V-structure的两个父节点建立edge(这一步骤叫做“伦理教育”,因为既然生了孩子就要结婚)。这就得到了Induced MN。
- 在Elimination的过程中,会出现Factor同时包含两个并没有相连的variables,这时我们要给这两个Variable加上edge。这就叫fill edge。
- Induced Graph。加入了fill edge的Graph就叫做Induced Graph,用I表示。I有两个下标phi & alpha。Phi表示所有的factors,Alpha表示消除(Elimination)的顺序。
- Cliques in the induced graph。在VE(variable elimination)中产生的每个factor都是induced graph中的一个clique。clique的定义是:最大全连接的sub-graph of the induced graph。“最大”是指无法再添加variable到clique中还保证sub-graph是全连接的,“全连接”是指每个variable都和其他variable有连接。在Koller的例子中一共有5个Clique,它们恰好是每次VE所产生的factor。接着,Koller还证明了一下为什么“恰好”是这样的。
- Induced Width。一个Induced Graph的width,等于其中最大的clique所包含节点的个数减1。至于为什么要减1,没啥理由,就是这么定义的。Minimum Induced Width是指一个Induced graph的最小Induced width(因为VE的顺序不同,Induced width也不同)。能够产生Minimum Induced Width的VE顺序就是计算效率最高的顺序。
- 这一节真TM难理解
- 定理:判断一个Graph的Minimum Induced Width是否小于等于K。这个问题是NP-complete的。这和inference的NP-hardness是无关的。
- 所以我们要用一些求近似解的方法。Greedy search是不错的方法。每次选择一个Variable消除,不考虑后续的反应。这需要用启发式的cost评价函数,例如:选择Neighbor最少的消除,或选择值域空间最少的variable消除,或选择fill edge最少的消除,或选择fill edge(带权重)最少的消除。
- 定理:一个Induced Graph必须是三角形化的,即Graph中不可能有3个节点以上的空心loop。这个理论可以帮我们找出VE的顺序,但是俺没理解
- Koller举了一个机器人的例子说明几种VE的策略的计算量是差别很大的。
9 Inference: Belief Propagation, Part 1
9.1 Belief Propagation
- VE的运算量太大,还有另一种求解方式,即Belief Propagation。
- Cluster Graph。Cluster Graph中的没一个节点叫做一个Cluster,表示MN中variable的一个子集。而MN中的variable则变成了Cluster Graph中的边(edge),这里叫做Sepset。Sepset是由它连接的两个Cluster的共同话题。
- 信息传播开始时,信息delta=1。下一轮迭代时,传播的信息变为 Cluster自己的信息乘以它从邻居(除了将要接受信息的那个Cluster)那里得到的信息,然后看接受信息的Cluster关心哪个 Variable,就对那个Variable求边缘分布,然后传递出去。
- 如何建立Cluster Graph?首先,如何选择Cluster包含哪些Variable(这里Koller没讲,下一节的Bethe Cluster Graph会讲)。其次Cluster的factor(Psi)该是多少?这就需要把原来MN中的factor(Phi)乘进Psi里。每个Phi只能放 进一个Psi里,条件是这个Psi包含了Phi的所有Variable,如果有多个符合条件的Psi,只能选一个放进去。如果某个Psi没有一个Phi放 进去,那这个Psi还保留初始值1。
- Koller举了两个Cluster Graph的例子。例子中Cluster没有变,只是连接它们的Sepset变了。下一节中,Koller会证明其中一个是illegal的
- Belief Propagation Algorithm。方法就是上面提到的。但是有两个问题:1.什么时候停止迭代?这个接下来会讲。2.如何选择信息传递的edge?这个简单,就是按照一定的顺序就行了。比如Round Robin(循环赛)策略,其实就是轮流迭代。
- Belief Propagation Run。置信传播的方法好不好?它并不能得到精确地解,但是复杂度比NP-hard要好。
- Family preservation Property。对于每一个原来MN中的factor,都要有一个Cluster可以包含他。
- Running Intersection Property。假设有两个Cluster都包含同一个variable,那么这两个Cluster之间必须有唯一的连接渠道使该variable的信 息可以通过。所谓"唯一"的连接,是指sepset不能构成loop(或者说这个路径必须是一个tree)。否则variable的信息通过两条渠道分别 传播,就会被重复考虑了。实际上,即使没有loop,也不能完全消除variable被重复考虑。因为一个variable的信息可以在通过 cluster的时候转换成另一个variable的信息,然后传递回自己,这样信息仍然会被重复考虑。
- Bethe Cluster Graph。这种graph有两种cluster:大cluster包含原MN中的一个factor,小cluster包含原MN中的一个 variable。然后把它们相互连接。这种graph的好处是很容易建立,而且大cluster通过小cluster传递信息时,variable之间 的相关性被消除(这算好处吗?)
10 Inference: Belief Propagation, Part 2
10.1 Properties of Belief Propagation
- Calibration。首先复习一下Cluster Belief是什么东东(之前讲过吗?)。Cluster Belief等于该Cluster的factor(Psi)乘以进入该Cluster的信息,用Beta表示。如果两个相邻的Cluster对于他们的Sepset的信息(也就是对他们求Sepset的边缘概率)一致,那么我们就说这个Graph是被Calibrated。
- Convergence->Calibrated。edge的两端传递的信息相同,所以再迭代下去也不会改变Graph的信息分布。
- Sepset Belief。即是Sepset两个方向传递的信息相乘。用Mu表示。
- Reparameterization。如果我们把所有Beta的乘积除以所有Mu的乘积,会得到所有Psi的乘积,也就等于所有Phi的乘积,也就是这个Graph表达的概率分布的Un-normalized measure。所以用Belief Propagation方法并没有损失任何信息,而且把问题转换成了容易解的方式。
- 这一节讲的是Cluster Graph的一种特殊情况:信息不再在整个Cluster Graph里面传播,而是在Clique Tree里面传播。这种情况下,BP算法不但收敛更加迅速,而且能够得到精确解。
- Message Passing in Trees。
- Correctness。Cluster的Belief用Beta表示。Beta等于其本身的Psi乘以相邻元素传过来的Delta。而Delta又等于 相邻Cluster的Psi乘以别的Delta。最后可以把所有的Delta都展开成Psi的乘积。这时我们会发现Beta实际上等于一堆Psi的乘积 (还有求和)。这跟我们用factor计算边缘分布的形式是一样的。所以这样就证明了结果的正确性。
- Clique Tree(不记得Clique是什么了都)。定义:首先它是一个无向树(Tree就是没有Loop的Graph)。它的节点是Cluster。连接节点的边就是Sepset。(Clique Tree 就是Cluster Graph的一种特殊形式)
- Family Preservation。由于Clique Tree是特殊的Cluster Graph,所以Family Preservation的性质(9.2.1节)它也要符合。
- Running Intersection。这也是9.1节中的性质,同样要符合。
- Clique Tree Message Passing。这就是举了一个例子。
- RIP(Running Intersection Property) -> Clique Tree Correctness。用前面证明Correctness的方法可证明:Running Intersection Property保证了正确性!(为啥??)
10.3 Clique Tree Algorithm - Computation
- Message Passing in Trees。在Koller举得例子中,Tree实际上就是一个Chain。而两端的元素所传出的信息是不随迭代而变化的。也就是说,两端元素的输出信息 从一开始就已经收敛了。而端点的元素吧信息传递给下个元素以后,下一个元素也收敛了。以此递推,整个Graph会在向左向右两次迭代之后收敛。
- Convergence of Message Passing。Tree的叶子节点上的元素从一开始就是收敛的。所以我们可以从叶子节点开始向内部传播。如果选择的顺序合适,最少经过2(K-1)次pass,整个tree就会收敛。其中K是元素的个数。
- Message Passing Order。我们可以从叶子节点出发,把信息向内传播一步。然后挑出符合收敛条件的节点,再传播一步……直到所有节点都收敛为止。(这种方法可以保证所有的Graph都适用吗?)
- Answer Queries(这一步是在收敛后进行的吗?)。如果我们想知道一个Variable(或者同一个Clique中的多个Variable)的后验概率分 布,我们要选一个包含这些Variable的Clique,把其他不需要的Variable加起来求边缘概率。当然,求出来的是未归一化的边缘概率,还需 要归一化才行(怎么归?)。
- 如果我们已经观察到了其中一些Variable的值Z=z,可以以此为基础,再求其他Variable(用X表示)的概率,这叫做 increamental inferrence。这要分两种情况。如果X和Z在同一个的Clique里,这比较简单,只要做Clique Reduction就行了。就是把Z!=z的部分去掉,求和,归一化。如果X和Z不在同一个Clique里,情况稍复杂一些。因为我们观察到了Z,所以包 含Z的clique信息变化了,需要把这个信息传递到包含X的Clique里。但只需要传递从Z到X之间的路径就可以了。
- Summerize。用Clique Tree的方法,只用传递2(K-1)次就可以得到所有的概率。而相比之下,用Variable Elimination的方法算的话,就慢很多了。所以我们只用2倍于VE的计算量,而不是N倍,就完成了计算(这里是啥意思,不懂)
10.4 Clique Tree and Independence
- Clique Tree可以快速的计算出Variable的边缘概率,但理论上这个问题又是NP-hard的。那肯定有某种情况是Clique Tree也不能应付的。
- RIP(Running Intersection Property) and Independency。首先,我们定义如下概念:W<(i,j),只出现在i侧的Variables;W<(j,i),只出现在j侧的Variables;还有剩下的两边都出现的Variable,也就是Sepset(ij)里的Variable。
- 定理:一个Clique Tree符合RIP,当且仅当W<(i,j)与W<(j,i)独立,在给出S(ij)时。
- Koller又举了两个例子来说明,在特定情况下,这个问题是NP-Hard的。
10.5 Clique Trees and VE
- 那么我们如何来构造一个Clique Tree呢?我们首先看如何用Clique Tree的视角去看VE。
- VE的步骤是怎么样的?1.每一步会产生一个大的factor lamda(i);2.然后做VE使lamda(i)缩减成tau(i);3.用tau(i)去计算下面的lamda(i)。
- 用Clique tree的视角去看,每个lamda就是一个clique,而tau则是clique之间传递的message。
- Example。这个例子展示了如何用VE的方法构造clique tree。要点在:VE之后有一步post process,如果相邻的两个Clique有包含关系,需要把较小的合进大的里面。
- 构造出的这个graph到底是不是Clique tree呢?首先,它是一个tree。每个tao只用到一次,所以信息只是一对一的传播(什么玩意?)。其次,这个tree是family preserving的(9.2.1)(这里也不明)。第三,它还有RIP性质(9.2.2)
- Running Intersection Property。定理:VE产生的Cluster tree都有RIP性质。
- Summery。VE可以生成正确的Clique tree。所以我们可以模拟VE(只选择variable的顺序,不做乘法运算)来生成Clique tree。Clique tree的运算量和VE的运算量相等。这样看似乎没什么优势,但是我们想获得所有variable的边缘分布时,clique tree的优势就显现出来了。因为它可以用动态规划的方法使计算所有variable的运算量只相当于计算两次VE。
- Misconception Revisited。BP的最坏情况会发生在:1.紧密的闭环网络;2.强Potential;3.矛盾的信息。在这种情况下收敛会非常慢。
- Different Variants of BP。Synchronous BP,同步的BP,所有Variables同时BP。这种方法收敛会比较慢,尽管它的实现会比较简单,而且适用于并行计算。Asynchronous BP,非同步的BP。Variable依次做BP,这会加快收敛的速度,同时提高收敛的程度。但如何选择BP的顺序呢?下一节再讲。
- Observation。1.收敛是局部的概念,有些信息收敛很快,有些却怎么也收敛不了。2.非同步比同步的好。3.非同步BP的顺序很重要。
- Informed Message Scheduling。Tree reparameterization(TRP),选一个Tree进行BP,再选一个Tree进行...。还有一种Residual belief propagation(RBP),每次在最不agree的两个cluster间BP。
- Smoothing (Damping) Messages。每次传递信息时留一些余地,避免信息过快的变化。这样可以避免震荡。可以大幅提高收敛的程度。
10.7 Loopy BP and Message Decoding
- 一个很有趣的应用是将Loopy BP和Message Decoding这两个看似无关的东西联系在一起。
- 讲了一段历史,心情不好,没怎么注意听。
11 Inference: MAP Estimation
11.1 Max Sum Message Passing
- 这一节突然转变话题,反过来倒过去看了好几天才弄明白过来。
- 到目前为止,我们都是在讨论如何计算边缘概率,但另外还有一种很有价值的问题是:如何找出一个联合概率最大的variable的组合。很显然,我们不能把边缘概率最大的variable组合到一起,我们需要一种不同的算法去解决这个问题。
- Product->Summation:首先,我们需要把乘法转变成加法。这需要我们把factor都转变为log的形式。(这个转换之前的计算也适用,为什么现在才提出来?)
- Max-Sum Elimination in Chains:我们可以像VE那样每次eliminate一个variable。使之变成一个不包含此variable的中间变量lambda。
- Factor Summation:和sum-product算法类似,只是把product变为summation。
- Factor Maximization:还是和sum-product算法类似,只是把sum变成了max,在Eliminate一个variable的时候不是把相应的factor加起来,而是去最大的那个。这个过程又叫做max-marginalization
- Max-Sum Elimination in Chains:继续之前的过程,当我们Eliminate到只剩下一个Variable E的时候,这时候的lambda就代表了:E取e时,可能出现的最大的联合概率。
- Max-Sum in Clique Tree:用Max-Sum代替Sum-Porduct在Clique Tree的信息传递中也是一样的。
- Simple Example:这个例子很好,很清晰。
- Max-Sum BP at Convergence:我们该如何判断BP已经收敛了呢?每个Clique的信息都在表达其所包含变量的max-marginals。而且clique tree此时会有所谓的calibration property,即是相邻的clique之间要对sepset中的variable的max-mariginal信息要一致。
11.2 Finding a MAP Assignment
- 上一节我们只讨论了如何获得max-marginal,而没有讨论如何得到MAP Assignment(即最大的联合概率对应的各个variable的值)。
- 这其实很简单,只需要在每个Clique中挑出最大的概率对应的variable值就可以了。但如果Clique中有几个概率相同的最大概率该如何处理 呢?有两个方法:1.对概率做一点扰动,使最大值变成只有一个;2.先在第一个Clique中选一个最大概率(随便选一个就行),然后记住选了哪个值,再 在下一个Clique中的对应值中选一个最大概率……。