分享

利用GeNIe建立动态贝叶斯网络并进行精准推理

 学渣vs学霸lotr 2020-02-07

并开展静态贝叶斯网络推理应用。静态贝叶斯网络的特点是和时间无关,也就是节点的结构和相互之间的关系并不会因为时间的改变而改变,这其实是和实际情况不相符合的。比如,贝叶斯网络经常用在装备故障诊断、个人信用评估中,而这些应用场景都是和时间相关的,如个人的信用每月评级不同,装备使用越久,越容易出现故障等等。由于没有考虑时间的因素,静态贝叶斯网络不能处理动态的不确定问题,从而无法对一个时间段内发生的行为进行分析,也使得静态的方法应用场景受限。针对现实应用的需要,动态贝叶斯网络就提了出来,本文主要对动态贝叶斯网络进行介绍,然后利用GeNIe软件建立动态贝叶斯网络模型,并开展动态贝叶斯网络推理应用。

一、动态贝叶斯网络介绍

在日常生活中,许多问题都和时间有直接关系(即需要考虑时间因素),比如,天气观测、随时变化的股票市场、等。为了对这些和时间相关的随机过程进行表达和推理,就需要引入动态贝叶斯模型。动态贝叶斯网络(DBN)1989年由Dean和Kanazawa最先提出,是对动态系统进行建模和状态估计的重要方法。动态贝叶斯网络包含多种形式,其中离散动态贝叶斯网络是最常用的一种工具。和静态贝叶斯网络一样,动态贝叶斯网络由初始网络和转移网络构成,包含有限个时间片,和静态贝叶斯一样,每一时间片都由一个有向无环图和条件概率表组成。动态贝叶斯网络的定义如下:

上图中,图A是初始网络,其实也是一个静态贝叶斯网络,图B是动态贝叶斯网络的状态转移网络。状态转移网络由两个时间片之间通过边相连,表述了时间的流逝,也可理解为时变作用,如从t1t2时刻的时变反应,状态转移网络反映的是相邻连个时间之间,节点的相关关系。图C是完整的动态贝叶斯网络,由初始网络加状态转移网络组成。DBN的动态性是指样本数据的动态变化,而不是网络结构的动态变化。在不少情形下,DBN的网络结构也会发生变化,成为变结构动态贝叶斯网络,这里主要以不变结构的动态贝叶斯网络为例。对动态贝叶斯网络的更多介绍可以查看相关书籍。

二、动态贝叶斯网络建模

前面介绍过GeNIe可以对静态贝叶斯网络建模,其实GeNIe的功能很强大,它也可以对动态贝叶斯网络建模并进行推理。打开GeNIe,选择NetWork菜单中的Temporal Plate选项,这是构建动态模型的入口

选择后,GeNIe主区域会出现下面Temporal Plate这个画布

Temporal Plate包含四个区域:

  • Contemporals:整个temporal plate画布区域之外的部分,这个区域里的节点都是静态的,也就是不随时间变化的节点都在这个外面

  • Init Conditions:存储锚点(anchor node)的区域,所谓锚点是指temporal plate之外但有一个或多个子节点在temporla plate之中。锚点和静态节点很类似,不过它们和其子节点只在第一个时间片有相连。

  • Temporal Plate, 是动态模型的主要表示区域,这里面的节点是那些只有时序相连关系的节点。

  • Term Conditions, 终点区域,这个区域中的节点是temporla plate区域中节点的子节点,它们只在最后一个时间片中和其父节点相连。

Temporal plate画布的调整有两种办法,鼠标左键按住左边条或者右边条,然后拖动鼠标调整的是画布中央区域即Temporal plate区域的大小。如果用shift+鼠标左键则可以调整左右两个区域的大小。

我们对图1 X-Y-Z三个节点建立动态贝叶斯网络模型。首先在中间的Temporal Plate区域画X,Y,Z三个节点。即在工具栏上点击黄色椭圆(放大镜右边的)然后绘制三个节点。节点绘制完了之后需要绘制节点之间的边,和静态贝叶斯一样,边也是通过工具栏中的箭头(A的左边)绘制。不过需要注意的是,绘制边的时候,会出现提示让你选择边出现的时间,对X-Y之间的边,我们首先选择Normal arc,表示初始网络中,X和Y之间的边,然后在在X-Y之间建立一条边,时间选择Order 1,表示状态转移网络的边。同样我们建立一条边指向X节点自己,即表示状态转移网络中的Xt和Xt+1之间的边。

和静态贝叶斯网络类似,我们需要给出动态贝叶斯网络的条件概率表,具体方法参见上一篇文章。不过需要注意的是,除了要给出条件概率表,还要给出状态转移概率,即下图中,选择t=1时刻,然后设定概率

最后完成的动态贝叶斯网络如下图所示。

需要注意的是,在上述示例中,所有的节点都在Temporal plate区域中,Init Conditions和Term Conditions都没有节点,这是因为在这个例子中,所有的节点在每个时间片中都有出现,且相互之间都有关系,所以全都绘制在temporal plate区域中。在实际建模过程中,需要根据问题和自己的模型进行修改,节点有可能分布在不同的区域。

三、动态贝叶斯网络精准推理

和静态贝叶斯精准推理步骤一样,我们首先要给定一个观测的证据。动态贝叶斯的证据是一个序列,即每个时间片下的值组成的一个序列,这是和静态贝叶斯网络的不同。动态贝叶斯网络的时间片的数量可以设置,如下所示右键Temporal plate的标题栏,选择time step count设置时间片数量。

然后右键某个节点,选择“select Evidence”设置证据

设置完成后点击工具栏中的“闪电”按钮(也可选择菜单Network–>update beliefs),更新各个节点的概率,即可得到推理的结果。下面是推理的结果示例。将鼠标放置在要查看的节点上就能得到如下图所示推理的结果,要查看具体的数值可以双击节点,然后在属性对话框的value选项卡中看到具体的推理数值。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多