从贝叶斯方法谈到贝叶斯网络

 从贝叶斯方法谈到贝叶斯网络


0 引言

    其实。介绍贝叶斯定理、贝叶斯方法、贝叶斯判断的资料、书籍不少,比方《数理统计学简史》,以及《统计决策论及贝叶斯分析 James O.Berger著》等等,然介绍贝叶斯网络的中文资料则非常少。中文书籍总共也没几本。有的多是英文资料。但刚開始学习的人一上来就扔给他一堆英文论文。因无基础和语言的障碍而读得异常吃力导致无法继续读下去则是非常可惜的(当然,有了一定的基础后,便可阅读很多其它的英文资料)。

    11月9日上午,机器学习班 第9次课,邹讲贝叶斯网络,其帮助大家提炼了贝叶斯网络的几个关键点:贝叶斯网络的定义、3种结构形式、因子图、以及Summary-Product算法等等,知道了贝叶斯网络是啥。怎么做,目标是啥之后,相信看英文论文也更好看懂了。

    故本文结合Z讲师第9次课贝叶斯网络的PPT 及相关參考资料写就,从贝叶斯方法讲起,重点阐述贝叶斯网络,依旧能够定义为一篇读书笔记或学习笔记,有不论什么问题,欢迎随时不吝指出,thanks。



1 贝叶斯方法

    长久以来,人们对一件事情发生或不发生的概率,仅仅有固定的0和1,即要么发生。要么不发生,从来不会去考虑某件事情发生的概率有多大。不发生的概率又是多大。

并且概率尽管未知,但最起码是一个确定的值。比方假设问那时的人们一个问题:“有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率是多少?”他们会想都不用想,会立刻告诉你。取出白球的概率就是1/2,要么取到白球,要么取不到白球。即θ仅仅能有一个值。并且不论你取了多少次,取得白球的概率θ始终都是1/2,即不随观察结果X 的变化而变化。

    这样的频率派的观点长期统治着人们的观念,直到后来一个名叫Thomas Bayes的人物出现。

1.1 贝叶斯方法的提出

    托马斯·贝叶斯Thomas Bayes(1702-1763)在世时。并不为当时的人们所熟知,非常少发表论文或出版著作,与当时学术界的人沟通交流也非常少,用如今的话来说,贝叶斯就是活生生一民间学术“屌丝”。可这个“屌丝”终于发表了一篇名为“An essay towards solving a problem in the doctrine of chances”。翻译过来则是:机遇理论中一个问题的解。你可能觉得我要说:这篇论文的发表随机产生轰动效应。从而奠定贝叶斯在学术史上的地位。

            

    其实,上篇论文发表后。在当时并未产生多少影响,在20世纪后。这篇论文才逐渐被人们所重视。对此。与梵高何其相似,画的画生前一文不值,死后价值连城。

    回到上面的样例:“有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率θ是多少?”贝叶斯觉得取得白球的概率是个不确定的值,由于当中含有机遇的成分。

比方。一个朋友创业,你明明知道创业的结果就两种,即要么成功要么失败。但你依旧会忍不住去预计他创业成功的几率有多大?你假设对他为人比較了解,并且有方法、思路清晰、有毅力、且能团结周围的人,你会情不自禁的预计他创业成功的几率可能在80%以上。这样的不同于最開始的“非黑即白、非0即1”的思考方式,便是贝叶斯式的思考方式。

    继续深入解说贝叶斯方法之前,先简单总结下频率派与贝叶斯派各自不同的思考方式:

  • 频率派把须要判断的參数θ看做是固定的未知常数。即概率尽管是未知的,但最起码是确定的一个值,同一时候,样本X 是随机的,所以频率派重点研究样本空间,大部分的概率计算都是针对样本X 的分布。
  • 而贝叶斯派的观点则截然相反。他们觉得參数是随机变量,而样本X 是固定的,由于样本是固定的,所以他们重点研究的是參数的分布。

    相对来说,频率派的观点easy理解,所下面文重点阐述贝叶斯派的观点。

    贝叶斯派既然把看做是一个随机变量,所以要计算的分布。便得事先知道的无条件分布,即在有样本之前(或观察到X之前)。有着怎样的分布呢?

    比方往台球桌上扔一个球。这个球落会落在何处呢?假设是不偏不倚的把球抛出去。那么此球落在台球桌上的任一位置都有着相同的机会。即球落在台球桌上某一位置的概率服从均匀分布。

这样的在实验之前定下的属于基本前提性质的分布称为先验分布,或的无条件分布。

    至此,贝叶斯及贝叶斯派提出了一个思考问题的固定模式:

  • 先验分布 + 样本信息 后验分布

    上述思考模式意味着。新观察到的样本信息将修正人们曾经对事物的认知。

换言之。在得到新的样本信息之前。人们对的认知是先验分布。在得到新的样本信息后。人们对的认知为

        当中。先验信息一般来源于经验跟历史资料。

比方林丹跟某选手对决,解说通常会依据林丹历次比赛的成绩对此次比赛的胜负做个大致的判断。再比方,某工厂每天都要对产品进行质检,以评估产品的不合格率θ,经过一段时间后便会积累大量的历史资料,这些历史资料便是先验知识,有了这些先验知识,便在决定对一个产品是否须要每天质检时便有了依据,假设以往的历史资料显示。某产品的不合格率仅仅有0.01%。便可视为信得过产品或免检产品,仅仅每月抽检一两次。从而省去大量的人力物力。

    而后验分布一般也觉得是在给定样本的情况下的条件分布,而使达到最大的值称为最大后验预计,相似于经典统计学中的极大似然预计。

    综合起来看。则好比是人类刚開始时对大自然仅仅有少得可怜的先验知识,但随着不断观察、实验获得很多其它的样本、结果。使得人们对自然界的规律摸得越来越透彻。所以,贝叶斯方法既符合人们日常生活的思考方式,也符合人们认识自然的规律。经过不断的发展,终于占领统计学领域的半壁江山,与经典统计学分庭抗礼。

    此外。贝叶斯除了提出上述思考模式之外。还特别提出了举世闻名的贝叶斯定理。

1.2 贝叶斯定理

    在引出贝叶斯定理之前。先学习几个定义:

  • 条件概率(又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。
比方,在同一个样本空间Ω中的事件或者子集A与B。假设随机从Ω中选出的一个元素属于B。那么这个随机选择的元素还属于A的概率就定义为在B的前提下A的条件概率,所以:P(A|B) = |A∩B|/|B|。接着分子、分母都除以|Ω|得到
  • 联合概率表示两个事件共同发生的概率。A与B的联合概率表示为或者
  • 边缘概率(又称先验概率)是某个事件发生的概率。边缘概率是这样得到的:在联合概率中。把终于结果中那些不须要的事件通过合并成它们的全概率,而消去它们(对离散随机变量用求和得全概率,对连续随机变量用积分得全概率),这称为边缘化(marginalization),比方A的边缘概率表示为P(A),B的边缘概率表示为P(B)。

     

    接着,考虑一个问题:P(A|B)是在B发生的情况下A发生的可能性。

  1. 首先,事件B发生之前。我们对事件A的发生有一个主要的概率判断,称为A的先验概率,用P(A)表示;
  2. 其次,事件B发生之后,我们对事件A的发生概率又一次评估。称为A的后验概率。用P(A|B)表示。
  3. 相似的,事件A发生之前,我们对事件B的发生有一个主要的概率判断。称为B的先验概率,用P(B)表示。
  4. 相同,事件A发生之后,我们对事件B的发生概率又一次评估,称为B的后验概率。用P(B|A)表示。

    贝叶斯定理便是基于下述贝叶斯公式:

    上述公式的推导其实非常easy,就是从条件概率推出。

依据条件概率的定义,在事件B发生的条件下事件A发生的概率是

相同地。在事件A发生的条件下事件B发生的概率

整理与合并上述两个方程式。便能够得到:

接着,上式两边同除以P(B)。若P(B)是非零的。我们便能够得到贝叶斯定理的公式表达式:

    所以,贝叶斯公式能够直接依据条件概率的定义直接推出。即由于P(A,B) = P(A)P(B|A) = P(B)P(A|B),所以P(A|B) = P(A)P(B|A)  / P(B)。

1.3 应用:拼写检查

    常常在网上搜索东西的朋友知道,当你不小心输入一个不存在的单词时,搜索引擎会提示你是不是要输入某一个正确的单词。比方当你在Google中输入“Julw”时。系统会推測你的意图:是不是要搜索“July”,例如以下图所看到的:

    这叫做拼写检查。

依据谷歌一员工写的文章显示,Google的拼写检查基于贝叶斯方法。下面我们就来看看,怎么利用贝叶斯方法。实现"拼写检查"的功能。

    用户输入一个单词时,可能拼写正确,也可能拼写错误。假设把拼写正确的情况记做c(代表correct),拼写错误的情况记做w(代表wrong),那么"拼写检查"要做的事情就是:在发生w的情况下。试图判断出c。换言之:已知w,然后在若干个备选方案中,找出可能性最大的那个c。也就是求的最大值。
    而依据贝叶斯定理。有:

  

    由于对于全部备选的c来说,相应的都是同一个w。所以它们的P(w)是相同的。因此我们仅仅要最大化

    就可以。

当中:

  • P(c)表示某个正确的词的出现"概率"。它能够用"频率"取代。

    假设我们有一个足够大的文本库,那么这个文本库中每个单词的出现频率。就相当于它的发生概率。某个词的出现频率越高,P(c)就越大。比方在你输入一个错误的词“Julw”时。系统更倾向于去推測你可能想输入的词是“July”,而不是“Jult”。由于“July”更常见。

  • P(w|c)表示在试图拼写c的情况下,出现拼写错误w的概率。为了简化问题,假定两个单词在字形上越接近,就有越可能拼错,P(w|c)就越大。

    举例来说,相差一个字母的拼法,就比相差两个字母的拼法。发生概率更高。

    你想拼写单词July。那么错误拼成Julw(相差一个字母)的可能性,就比拼成Jullw高(相差两个字母)。

    值得一提的是,一般把这样的问题称为“编辑距离”,參见博客中的这篇文章。

    所以,我们比較全部拼写相近的词在文本库中的出现频率,再从中挑出出现频率最高的一个。即是用户最想输入的那个词。详细的计算过程及此方法的缺陷请參见这里。



2 贝叶斯网络

2.1 贝叶斯网络的定义

    贝叶斯网络(Bayesian network),又称信念网络(Belief Network),或有向无环图模型(directed acyclic graphical model),是一种概率图模型,于1985年由Judea Pearl首先提出。

它是一种模拟人类推理过程中因果关系的不确定性处理模型,其网络拓朴结构是一个有向无环图(DAG)。

 

    贝叶斯网络的有向无环图中的节点表示随机变量。它们能够是可观察到的变量,或隐变量、未知參数等。

觉得有因果关系(或非条件独立)的变量或命题则用箭头来连接。

若两个节点间以一个单箭头连接在一起,表示当中一个节点是“因(parents)”。另一个是“果(children)”,两节点就会产生一个条件概率值。

    总而言之,连接两个节点的箭头代表此两个随机变量是具有因果关系,或非条件独立

    比如,假设节点E直接影响到节点H,即E→H。则用从E指向H的箭头建立结点E到结点H的有向弧(E,H)。权值(即连接强度)用条件概率P(H|E)来表示,例如以下图所看到的:

    简言之。把某个研究系统中涉及的随机变量,依据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。其主要用来描写叙述随机变量之间的条件依赖。用圈表示随机变量(random variables),用箭头表示条件依赖(conditional dependencies)。

    令G = (I,E)表示一个有向无环图(DAG),当中I代表图形中全部的节点的集合,而E代表有向连接线段的集合,且令X = (Xi)i ∈ I为其有向无环图中的某一节点i所代表的随机变量,若节点X的联合概率能够表示成:

则称X为相对于一有向无环图G 的贝叶斯网络。当中。表示节点i之“因”,或称pa(i)是i的parents(父母)。

 

此外,对于随意的随机变量,其联合概率可由各自的局部条件概率分布相乘而得出:

    例如以下图所看到的。便是一个简单的贝叶斯网络:

    由于a导致b,a和b导致c,所以有

2.2 贝叶斯网络的3种结构形式

    给定例如以下图所看到的的一个贝叶斯网络:

    从图上能够比較直观的看出:

  • 1. x1,x2,…x7的联合分布为

  • 2. x1和x2独立(相应head-to-head);
  • 3. x6和x7在x4给定的条件下独立(相应tail-to-tail)。

    依据上图。第1点可能非常easy理解,但第2、3点中所述的条件独立是啥意思呢?其实第2、3点是贝叶斯网络中3种结构形式中的当中二种。为了说清晰这个问题,须要引入D-Separation(D-分离)这个概念。

    D-Separation是一种用来判断变量是否条件独立的图形化方法。换言之,对于一个DAG(有向无环图)E,D-Separation方法能够高速的判断出两个节点之间是否是条件独立的。

2.2.1 形式1:head-to-head

    贝叶斯网络的第一种结构形式例如以下图所看到的:

    所以有:P(a,b,c) = P(a)*P(b)*P(c|a,b)成立,化简后可得:

    即在c未知的条件下,a、b被阻断(blocked),是独立的,称之为head-to-head条件独立,相应本节中最開始那张图中的“x1、x2独立”。

2.2.2 形式2:tail-to-tail

    贝叶斯网络的第二种结构形式例如以下图所看到的

    考虑c未知,跟c已知这两种情况:

  1. 在c未知的时候,有:P(a,b,c)=P(c)*P(a|c)*P(b|c),此时,没法得出P(a,b) = P(a)P(b),即c未知时,a、b不独立。
  2. 在c已知的时候,有:P(a,b|c)=P(a,b,c)/P(c),然后将P(a,b,c)=P(c)*P(a|c)*P(b|c)带入式子中。得到:P(a,b|c)=P(a,b,c)/P(c) = P(c)*P(a|c)*P(b|c) / P(c) = P(a|c)*P(b|c)。即c已知时,a、b独立。

    所以,在c给定的条件下,a,b被阻断(blocked),是独立的。称之为tail-to-tail条件独立,相应本节中最開始那张图中的“x6和x7在x4给定的条件下独立”。

2.2.3 形式3:head-to-tail

    贝叶斯网络的第三种结构形式例如以下图所看到的:

    还是分c未知跟c已知这两种情况:

  1. c未知时。有:P(a,b,c)=P(a)*P(c|a)*P(b|c)。但无法推出P(a,b) = P(a)P(b),即c未知时。a、b不独立。

  2. c已知时,有:P(a,b|c)=P(a,b,c)/P(c),且依据P(a,c) = P(a)*P(c|a) = P(c)*P(a|c),可化简得到:

    所以,在c给定的条件下,a,b被阻断(blocked)。是独立的,称之为head-to-tail条件独立。

    插一句:这个head-to-tail其实就是一个链式网络,例如以下图所看到的:

    依据之前对head-to-tail的解说,我们已经知道。在xi给定的条件下,xi+1的分布和x1,x2…xi-1条件独立。意味着啥呢?意味着:xi+1的分布状态仅仅和xi有关。和其它变量条件独立。

通俗点说,当前状态仅仅跟上一状态有关,跟上上或上上之前的状态无关。这样的顺次演变的随机过程,就叫做马尔科夫链(Markov chain)。

且有:

    接着,将上述结点推广到结点集,则是:对于随意的结点集A。B,C,考察全部通过A中随意结点到B中随意结点的路径,若要求A。B条件独立,则须要全部的路径都被阻断(blocked),即满足下列两个前提之中的一个:

  1. A和B的“head-to-tail型”和“tail-to-tail型”路径都通过C;
  2. A和B的“head-to-head型”路径不通过C以及C的子孙;

    最后,举例说明上述D-Separation的3种情况(即贝叶斯网络的3种结构形式),则是例如以下图所看到的:

 

    上图中左边部分是head-to-tail,给定 T 时,A 和 X 独立。右边部分的右上角是tail-to-tail,给定S时,L和B独立;右边部分的右下角是head-to-head。未给定D时,L和B独立。

2.3 贝叶斯网络的实例

    给定例如以下图所看到的的贝叶斯网络:

    当中,各个单词、表达式表示的含义例如以下:

  • smoking表示吸烟。其概率用P(S)表示。lung Cancer表示的肺癌,一个人在吸烟的情况下得肺癌的概率用P(C|S)表示。X-ray表示须要照医学上的X光,肺癌可能会导致须要照X光,吸烟也有可能会导致须要照X光(所以smoking也是X-ray的一个因),所以。因吸烟且得肺癌而须要照X光的概率用P(X|C,S)表示。

  • Bronchitis表示支气管炎,一个人在吸烟的情况下得支气管炎的概率用P(B|S),dyspnoea表示呼吸困难,支气管炎可能会导致呼吸困难。肺癌也有可能会导致呼吸困难(所以lung Cancer也是dyspnoea的一个因)。因吸烟且得了支气管炎导致呼吸困难的概率用P(D|C,B)表示。

    lung Cancer简记为C,Bronchitis简记为B,dyspnoea简记为D,且C = 0表示lung Cancer不发生的概率,C = 1表示lung Cancer发生的概率,B等于0(B不发生)或1(B发生)也相似于C,相同的,D=1表示D发生的概率。D=0表示D不发生的概率。便可得到dyspnoea的一张概率表,如上图的最右下角所看到的。

2.4 因子图

    回到2.3节中那个实例上。例如以下图所看到的:

    对于上图,在一个人已经呼吸困难(dyspnoea)的情况下。其抽烟(smoking)的概率是多少呢?即:

     咱们来一步步计算推导下:

    解释下上述式子推导过程:

  1. 第二行:对联合概率关于b,x,c求和(在d=1的条件下),从而消去b,x,c,得到s和d=1的联合概率。


  2. 第三行:最開始,全部变量都在sigma(d=1,b,x,c)的后面(sigma表示对“求和”的称谓),但由于P(s)和“d=1,b,x,c”都没关系,所以。能够提到式子的最前面。并且P(b|s)和x、c没关系。所以。也能够把它提出来。放到sigma(b)的后面。从而式子的右边剩下sigma(x)和sigma(c)。

    此外,图中Variable elimination表示的是变量消除的意思。

为了更好的解决此类问题。咱们得引入因子图的概念。

2.4.1 因子图的定义

    wikipedia上是这样定义因子图的:将一个具有多变量的全局函数因子分解,得到几个局部函数的乘积。以此为基础得到的一个双向图叫做因子图(Factor Graph)。

    比方。假定对于函数。有下述式子成立:

    当中。其相应的因子图包含:

  1. 变量节点
  2.  因子(函数)节点
  3. 。边通过下列因式分解结果得到:在因子(函数)节点和变量节点之间存在边的充要条件是存在。

    正式的定义果然晦涩!我相信你没看懂。通俗来讲,所谓因子图就是对函数进行因子分解得到的一种概率图。一般内含两种节点:变量节点和函数节点。

我们知道,一个全局函数通过因式分解能够分解为多个局部函数的乘积。这些局部函数和相应的变量关系就体如今因子图上。

    举个样例,如今有一个全局函数,其因式分解方程为:

    当中fA,fB,fC,fD,fE为各函数,表示变量之间的关系,能够是条件概率也能够是其它关系(如马尔可夫随机场Markov Random Fields中的势函数)。

    为了方便表示,能够写成:

    其相应的因子图为:

    且上述因子图等价于:

    所以,在因子图中,全部的顶点不是变量节点就是函数节点,边线表示它们之间的函数关系。

    但搞了半天,尽管知道了什么是因子图,但因子图究竟是干嘛的呢?为何要引入因子图,其用途和意义何在?其实,因子图跟贝叶斯网络和马尔科夫随机场(Markov Random Fields)一样,也是概率图的一种。

    既然提到了马尔科夫随机场,那顺便说下有向图、无向图,以及条件随机场等相关概念。

  • 我们已经知道,有向图模型,又称作贝叶斯网络(Directed Graphical Models, DGM, Bayesian Network)。

  • 但在有些情况下,强制对某些结点之间的边添加方向是不合适的。使用没有方向的无向边,形成了无向图模型(Undirected Graphical Model,UGM), 又被称为马尔科夫随机场或者马尔科夫网络(Markov Random Field,  MRF or Markov network)。
  • 设X=(X1,X2…Xn)和Y=(Y1,Y2…Ym)都是联合随机变量,若随机变量Y构成一个无向图 G=(V,E)表示的马尔科夫随机场(MRF)。则条件概率分布P(Y|X)称为条件随机场Conditional Random Field, 简称CRF,兴许新的博客中可能会阐述CRF)。例如以下图所看到的。便是一个线性链条件随机场的无向图模型:

    回到本文的主旨上来。在概率图中,求某个变量的边缘分布是常见的问题。

这问题有非常多求解方法。当中之中的一个就是把贝叶斯网络或马尔科夫随机场转换成因子图,然后用sum-product算法求解。换言之,基于因子图能够用sum-product 算法高效的求各个变量的边缘分布。

    先通过一些样例分别说明怎样把贝叶斯网络(和马尔科夫随机场),以及把马尔科夫链、隐马尔科夫模型转换成因子图后的情形。然后在2.4.2节,咱们再来看怎样利用因子图的sum-product算法求边缘概率分布。

    给定下图所看到的的贝叶斯网络或马尔科夫随机场:

    依据各个变量相应的关系,可得:

    其相应的因子图为(下面两种因子图的表示方式皆可):

    由上述样例总结出由贝叶斯网络构造因子图的方法:

  • 贝叶斯网络中的一个因子相应因子图中的一个结点
  • 贝叶斯网络中的每个变量在因子图上相应边或者半边
  • 结点g和边x相连当且仅当变量x出如今因子g中。

    再比方。对于下图所看到的的由马尔科夫链转换而成的因子图:

    有:

    而对于例如以下图所看到的的由隐马尔科夫模型转换而成的因子图:

    有:

2.4.2 Sum-product算法

    我们已经知道,对于下图所看到的的因子图:

    有:

    下面。咱们来考虑一个问题:即怎样由联合概率分布求边缘概率分布。

    首先回想下联合概率和边缘概率的定义。例如以下:

  • 联合概率表示两个事件共同发生的概率。

    A与B的联合概率表示为或者

  • 边缘概率(又称先验概率)是某个事件发生的概率。

    边缘概率是这样得到的:在联合概率中,把终于结果中不须要的那些事件合并成其事件的全概率而消失(对离散随机变量用求和得全概率,对连续随机变量用积分得全概率)。

    这称为边缘化(marginalization)。A的边缘概率表示为P(A),B的边缘概率表示为P(B)。

     

    其实,某个随机变量fk的边缘概率可由x1,x2,x3, ..., xn的联合概率求到。详细公式为:

    啊哈。啥原理呢?原理非常easy。还是它:对xk外的其它变量的概率求和。终于剩下xk的概率!

    此外。换言之,假设有



    那么

    上述式子怎样进一步化简计算呢?考虑到我们小学所学到的乘法分配率,可知a*b + a*c = a*(b + c),前者2次乘法1次加法,后者1次乘法。1次加法。

我们这里的计算能否借鉴到分配率呢?别急,且听下文慢慢道来。

    假定如今我们须要计算例如以下式子的结果:

    同一时候,f 能被分解例如以下:

    借鉴分配率,我们能够提取公因子:

     由于变量的边缘概率等于全部与他相连的函数传递过来的消息的积,所以计算得到:

    细致观察上述计算过程,能够发现,当中用到了相似“消息传递”的观点,且总共两个步骤。

    第一步、对于f 的分解图。依据蓝色虚线框、红色虚线框围住的两个box外面的消息传递:

    计算可得:

    第二步、依据蓝色虚线框、红色虚线框围住的两个box内部的消息传递:

    依据,我们有:

    就这样,上述计算过程将一个概率分布写成两个因子的乘积。而这两个因子能够继续分解或者通过已知得到。这样的利用消息传递的观念计算概率的方法便是sum-product算法。

前面说过,基于因子图能够用sum-product算法能够高效的求各个变量的边缘分布。

    究竟什么是sum-product算法呢?sum-product算法。也叫belief propagation,有两种消息:

  • 一种是变量(Variable)到函数(Function)的消息:,例如以下图所看到的
此时,变量到函数的消息为
  • 第二种是函数(Function)到变量(Variable)的消息:。例如以下图所看到的:
此时,函数到变量的消息为:

    下面是sum-product算法的整体框架:

  • 1、给定例如以下图所看到的的因子图:

  • 2、sum-product 算法的消息计算规则为:

  • 3、依据sum-product定理,假设因子图中的函数f 没有周期。则有:

    值得一提的是:假设因子图是无环的。则一定能够准确的求出随意一个变量的边缘分布,假设是有环的。则无法用sum-product算法准确求出来边缘分布。

    比方,下图所看到的的贝叶斯网络:

    其转换成因子图后,为:

    能够发现。若贝叶斯网络中存在“环”(无向),则因此构造的因子图会得到环。而使用消息传递的思想,这个消息将无限传输下去。不利于概率计算。
    解决方法有3个:

  • 1、删除贝叶斯网络中的若干条边,使得它不含有无向环
比方给定下图中左边部分所看到的的原贝叶斯网络,能够通过去掉C和E之间的边。使得它又一次变成有向无环图,从而成为图中右边部分的近似树结构:
详细变换的过程为最大权生成树算法MSWT(详细建立过程请參阅此PPT 第60页)。通过此算法,这课树的近似联合概率P'(x)和原贝叶斯网络的联合概率P(x)的相对熵(假设忘了什么叫相对熵,请參阅:最大熵模型中的数学推导)最小。
  • 2、又一次构造没有环的贝叶斯网络
  • 3、选择loopy belief propagation算法(你能够简单理解为sum-product 算法的递归版本号),此算法一般选择环中的某个消息。随机赋个初值,然后用sum-product算法。迭代下去。由于有环,一定会到达刚才赋初值的那个消息,然后更新那个消息。继续迭代。直到没有消息再改变为止。唯一的缺点是不确保收敛。当然,此算法在绝大多数情况下是收敛的。

    此外,除了这个sum-product算法,另一个max-product 算法。但仅仅要弄懂了sum-product,也就弄懂了max-product 算法。由于max-product 算法就在上面sum-product 算法的基础上把求和符号换成求最大值max的符号就可以!

    最后,sum-product 和 max-product 算法也能应用到隐马尔科夫模型hidden Markov models上,后面有机会的话能够介绍。本文完。



3 參考文献和推荐阅读

  1. Thomas Bayes "An essay towards solving a Problem in the Doctrine of Chances"(贝叶斯定理原始论文):http://www.sbs-bvs.be/bsn57/bsn57-6.pdf;
  2. 《数理统计学简史 第三章 贝叶斯方法》。
  3. 《贝叶斯统计 茆诗松著》;
  4. “Julw”的搜索结果:http://www.gu1234.com/search?hl=zh-CN&site=webhp&source=hp&q=Julw&btnK=Google+%E6%90%9C%E7%B4%A2&gws_rd=ssl。
  5. 北京10月机器学习班第9次课,邹博讲贝叶斯网络的PPT:http://pan.baidu.com/s/1o69Lp1K。
  6. 相关wikipedia。比方贝叶斯定理的wiki:http://zh.wikipedia.org/zh/%E8%B4%9D%E5%8F%B6%E6%96%AF%E5%AE%9A%E7%90%86,贝叶斯网络的wiki:http://zh.wikipedia.org/wiki/%E8%B2%9D%E6%B0%8F%E7%B6%B2%E8%B7%AF。

    因子图中文wiki:http://zh.wikipedia.org/zh/%E5%9B%A0%E5%AD%90%E5%9B%BE。英文wik:http://en.wikipedia.org/wiki/Factor_graph。

  7. 《统计决策论及贝叶斯分析 James O.Berger著》;
  8. 贝叶斯定理:http://www.guokr.com/question/547339/。
  9. 贝叶斯判断及其互联网应用(一):定理简单介绍http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html。
  10. 贝叶斯判断及其互联网应用(三):拼写检查http://www.ruanyifeng.com/blog/2012/10/spelling_corrector.html。
  11. Google研发总监Peter Norvig解释拼写检查的原理:http://norvig.com/spell-correct.html;
  12. http://www.eng.yale.edu/pjk/eesrproj_02/luckenbill_html/node4.html(sum-product);
  13. Pattern Recognition and Machine Learning Chapter 8, M. Jordan, J. Kleinberg, ect, 2006;
  14. D-Separation(D分离)-PRML-8.22-Graphical Model by 小军:http://www.zhujun.me/d-separation-separation-d.html;
  15. 因子图介绍 by Hans-Andrea Loeliger:http://www.robots.ox.ac.uk/~parg/mlrg/papers/factorgraphs.pdf。
  16. http://netclass.csu.edu.cn/jpkc2003/rengongzhineng/rengongzhineng/kejian/ai/ai/chapter4/442.htm;
  17. 贝叶斯网的R实现( Bayesian networks in R)(二)bnlearn(2):http://site.douban.com/182577/widget/notes/12817482/note/283039795/。
  18. 知乎上关于贝叶斯学派跟频率派的差别的讨论:http://www.zhihu.com/question/20587681;
  19. factor graph,因子图。势函数potential function,Template models:http://www.cnblogs.com/549294286/archive/2013/06/06/3121454.html;
  20. Online Bayesian Probit Regression介绍之Factor Graph:http://www.doingkong.com/?

    p=68

  21. An Introduction to Factor Graphs,Hans-Andrea Loeliger,MLSB 2008:http://people.binf.ku.dk/~thamelry/MLSB08/hal.pdf;
  22. Factor graph and sum-product algorithm, Frank R. Kschischang, Brendan J.Frey, ect, 1998:http://filebox.vt.edu/~rmtaylor/Graphical_Modeling/Intro_and_tutorial/Kschischang_ffg_sumproduct.pdf;
  23. A Tutorial on Inference and Learning in Bayesian Networks, Irina Rish:http://www.ee.columbia.edu/~vittorio/Lecture12.pdf。
  24. Probabilistic Graphical Models Directed GMs: Bayesian Networks:http://www.cs.cmu.edu/~epxing/Class/10708/lectures/lecture2-BNrepresentation.pdf;
  25. A Brief Introduction to Graphical Models and Bayesian Networks By Kevin Murphy, 1998:http://www.cs.ubc.ca/~murphyk/Bayes/bayes.html。
  26. Probabilistic Models for Unsupervised Learning(从一个统一的视角去理解: bayesian、MAP、ML。以及FA、EM、PCA、ICA、GMM、HMM等算法):http://mlg.eng.cam.ac.uk/zoubin/nipstut.pdf。
  27. PRML概率图模型读书笔记:http://vdisk.weibo.com/s/DmxNcM5-7sGS;
  28. 12月14日,机器学习班第15次课,邹博讲条件随机场CRF的PPT:http://pan.baidu.com/s/1qWBdOD2。

转载于:https://www.cnblogs.com/lxjshuju/p/6898457.html

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

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

相关文章

k8s 读书笔记 - kubectl 命令行工具用法详解

kubectl 在 k8s 集群中作为 客户端 CLI 工具,可以让用户使用 kubectl 工具执行命令行,并通过使用 k8s API 与 k8s 集群的控制面(kube-controller-manager)进行通信。kubectl 语法格式kubectl 命令行的语法格式如下:kub…

初级必备:单例模式的7个问题

故事 实话实说,关于单例模式,网上有N多个版本。你估计也看过很多版本。但看完了又能怎样?我技术群里的一位小伙伴,上周面试,就因为一个单例模式,然后叫他回去等通知了。 下面是这位同学被问到的问题&…

Spring AOP源码解析——AOP动态代理原理和实现方式

2019独角兽企业重金招聘Python工程师标准>>> Spring介绍 Spring(http://spring.io/)是一个轻量级的Java 开发框架,同时也是轻量级的IoC和AOP的容器框架,主要是针对JavaBean的生命周期进行管理的轻量级容器,可以单独使用&#xff0…

使用.NET构建简单的高性能Redis(三)

译者注该原文是Ayende Rahien大佬业余自己在使用C# 和 .NET构建一个简单、高性能兼容Redis协议的数据库的经历。首先这个"Redis"是非常简单的实现,但是他在优化这个简单"Redis"路程很有趣,也能给我们在从事性能优化工作时带来一些启…

海尔联手软银机器人,进军服务机器人领域

海尔此次将正式全面进入到服务机器人。 据悉,3月6日海尔公布了未来对于家用机器人的最新战略,同时与软银展开战略合作,将软银的人形机器人引入中国市场,正式进军服务机器人领域。 在本次发布会上,海尔与软银将联手从软…

.NET 7 中的 EndpointFilter

ASP.NET 7 中的 EndpointFilterIntro.NET 6 开始微软引入了 Minimal API,但是相比成熟的控制器模型,还是有很多的不足,.NET 7 针对于 Minimal API 也做了一些改进来让 Minimal API 功能更加丰富,其中 Filter 就是其中的一个更新从…

越来越火的图数据库到底能做什么?

作者 | 俞方桦 随着大数据时代的到来,传统的关系型数据库由于其在数据建模和存储方面的限制,变得越来越难以满足大量频繁变化的需求。关系型数据库,尽管其名称中有“关系”这个词,却并不擅长处理复杂关系的查询和分析。另外&…

piwik抓取用户交互行为

2019独角兽企业重金招聘Python工程师标准>>> https://github.com/matomo-org/matomo-sdk-ios/tree/version-3 http://piwik.org 首先下载demo,把文件拖到项目中去,在AppDelegate.m文件填写piwik服务器的URL和编号; 例如&#xff1…

k8s 读书笔记 - kubernetes 基本概念和术语(下)

DevOps前言上一篇文章 中,我们介绍了 k8s 中的 Master、Node、Pod、Label、RC & RS、Deployment、HPA & VPA、DaemonSet 这些资源对象信息,接下来我们继续介绍 k8s 中常用的资源对象。StatefulSet在 k8s 系统中,Pod 的管理对象 RC、D…

java数据类型后加三个点...

2019独角兽企业重金招聘Python工程师标准>>> 从Java5开始,Java语言对方法参数支持一种新写法,varargs(可变长度参数列表),其语法就是类型后跟...,表示此处接受的参数为0到多个Object类型的对象&…

手把手教你用 Jenkins 自动部署 SpringBoot!

1. 什么是 CI/CD 1.1 CI(Continuous Integration) 1.2 CD(Continuous Delivery/Continuous Deployment) 2. 什么是 Jenkins 3. 准备工作 3.1 整体规划 3.2 准备代码 3.3 准备服务器 4. 搭建 Jenkins 5. 安装插件 6. 配置 …

bondat蠕虫传播与对抗

转载来自:http://www.mottoin.com/109730.html (1)可移动磁盘传播手段:隐藏U盘文件,创建快捷方式指向病毒bat文件。Bondat蠕虫主要通过可移动磁盘传播,并借助可移动磁盘中的文件隐蔽自身。Bondat蠕虫会检索…

vim 编译 Python 代码提示配置

2019独角兽企业重金招聘Python工程师标准>>> .vim 和.vimrc 拷贝到根目录 注意根目录下默认是没有.vim的,所以拷贝.vim 没问题,但是拷贝.vimrc 之前需要把原来的.vimrc备份 两个文件下载:http://pan.baidu.com/s/1eRRhakM 转载于:…

[转]Pinia与Vuex的对比:Pinia是Vuex的良好替代品吗?

文章目录 介绍设置 Pinia 设置Vuex 设置使用 Pinia使用Vuex使用社区和生态系统的力量学习曲线和文档GitHub 评分性能比较 Pinia 2 和 Vuex 4Vuex 和 Pinia 的优缺点何时使用Pinia,何时使用Vuex介绍 Pinia 是 Vue.js 的轻量级状态管理库,最近很受欢迎。它…

1.2开发文档简读,了解全貌.mp4

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/6910254.html

开源:一款开源的高颜值现代化桌面美化工具

背景在日常的工作或学习中,难免会有一些临时的文件夹,文件,应用,出现在你的桌面,但是呢你又不确定它是不是哪一天会突然用到,这样一天又一天,直至你的电脑桌面是一片狼藉,满屏的文件…

软件工程—团队作业1

软件工程—团队作业1 团队称号:Thanos (灭霸,超叼的一个动漫人物) 团队成员: 队长 成凯 1600802002 博客链接: http://www.cnblogs.com/ck03/ 党康 1600208004 博客链接: http://www.cnblogs…

k8s 读书笔记 - kubernetes 基本概念和术语(上)

k8s 资源控制系统k8s 中大部分概念如:Node、Pod、Replication Controller、RS、Deployment、Service 等都可以被看作一种资源对象,激活所有的资源对象都可以通过 k8s 提供 kubectl 工具(或者 API 编程调用)执行 CRUD 等操作并将其…

CentOs6.5下安装svn

1、检查是否已安装 rpm -qa subversion 1、1如果需要卸载旧版本(如果想在一台机器安装不同svn,切记不要执行此步骤!!!) yum remove subversion 2、安装 yum install subversion 3、检查安装是否成功 svnser…

Android 升级到android studio 2.2项目死活run不起来

背景:升级到Android studio 2.2项目死活运行不起来 现象如下: run with --stacktrace --debug等等抛出的bug简直无法忍视 解决办法:把compileSdkVersion 改为23成功run起来了