Press enter to see results or esc to cancel.

Template Models

为了不对每一个问题都重复建立模型,而是对于一类模型使用一个统一的变量进行处理,我们提出了Template Model的概念,其是一种具有重复的结构以及共享参数的模型。从而使得模型的描述方式更加的紧凑,以便于可以使用更大的网络之中,主要由两个部分组成,分别是 Template Variables以及 Language.

所谓的Template Variable 是在图模型之中多次被使用的变量,比如说课程难度的变量是课程,智力的变量是学生,成绩的变量是课程与学生。这时候的课程与学生这两个变量就被重复使用了,因此是Template Variable.

而Language则是描述了Template Variables如何在模型之中被连接。一般来说,Template Models又可以被分成两类:
  • Temporal Models:主要指的是时间上的重复,比如说动态贝叶斯模型(DBN),或者是隐马尔科夫模型(HMM)
  • Plate Models:通过有向还是无向对于变量进行区分。
  • Temporal Model

    Temporal在时序上重复,自然与时间有关系,我们选定一个极小的时间片段$\Delta$,$X^{(t)}$指的是变量$X$在时间$t: \Delta$的这一个小小的时间区间内的值,而$X^{(t:t’)}$则是$t\leq t’$这个时间区间内的所有的$X^{(t)}$的集合。

    我们最终想要得到的是,对于任意的$t,t’$,其从$t\to t’$的时间内,整个网络的联合概率分布,也就是$P(X^{t:t’})$,
    而为了表达$P(X^{t:t’})$,我们引入马尔科夫假设。

    Markov Assumption

    对于一个贝叶斯网络来说,我们应用链式法则的话,有
    $$P(X^{0:T}) = P(X^{(0)})\prod_{t=0}^{T-1}P(X^{(t+1)}|X^{(0:t)}) $$
    但是在这个基础之上,我们加上(一阶)马尔科夫假设,也就是认为,下一个状态的如何仅仅与上一个状态如何相关。也就是
    $$X^{(t+1)} \perp X^{(0:t+1)}| X^{(t)}$$
    这时候就可以将上面的式子化简成为
    $$P(X^{0:T}) = P(X^{(0)})\prod_{t=0}^{T-1}P(X^{(t+1)}|X^{(t)}) $$
    这个假设是一个非常强的假设,应用在实际的模型之中有可能会导致模型的效果不那么好,因为删去了很多的可以使用的东西,所以在实际应用之中,为了使得模型变得更Robust,我们一般会采用下面的这两种方法来进行微调
    1. 增加更多的变量,也就是认为当前的状态不仅仅是由上一个状态所决定,还有其他的因素也可以作用于下一个时间的状态。举个例子,明天下雨不下雨的概率取决于今天是不是下雨的同时,也受一些人为的因素影响,比如说,就算今天下雨,如果选择撒干冰,明天下雨的可能性就会不那么高。
    2. 增加更多的时间态,当前的状态不仅仅是由上一个状态决定,也可能会由上两个状态所决定,也就是认为在$t-1,t$的状态共同决定$t+1$的状态
    3. 对于任意符合马尔科夫假设的系统,称之为是马尔科夫系统(Markov System)

      Dynamic Bayesian Network

      马尔科夫假设是在时间的基础上进行的,按照时间的变化,一步一步的对于模型之中的Variables进行更新,从本质上来说,就是模型的状态的不断的更新,对于任意的时候,我们都可以使用下面的一个公式来表示状态的转移,也就是 \textbf{Template Transition Model}.

      $$P(X^{(t+1)}|X^{(t)}) = P(X’|X)$$
      为了优化马尔科夫假设,我们现在使用多个状态来对于模型做更好的估计,现在举一个汽车位置检测的例子,对于对于汽车的位置检测,Weather取决于上一时刻的天气情况,Velocity取决于之前的天气和车的速度,Location取决于之前的位置和车的速度,Failure取决于天气是上一次是否正确检测到,Observation是检测的结果,取决里现在车所处的位置和是否成功检测到。做出图即

      将模型写成条件概率的形式也就是
      $$P(W’, V’,L’,F’,O’|W,V,L,F) $$
      将其利用马尔科夫假设化简即有
      $$P(W’|W)P(V’|W,V)P(L’|L,V) P(F’|F,W) P(O’|L’,F’) $$
      在对于整个模型进行初始化的操作,也就是对于0时刻的模型做初始化,初始化的时候,就是一个简单的Bayesian网络:

      通过链式法则可以将其化简为
      $$ P(W^{0},V^{0},L^{0},F^{0},O^{0}) = P(W^{0})P(V^{0}|L^{0})P(L^{0})P(F^{0},)P(O^{0}|F^{0},L^{0})$$
      通过一层一层的循环下去,就可以得到一个动态的贝叶斯网络

       


      定义 1. 一个作用于$X_1,\cdots , X_n$的2-time-slice Bayesian Network有如下的形式 :
      • 节点包括了$X_1′,\cdots,X_n’$,以及其子集$X_1,\cdots,X_n$
      • 只有节点$X_1′,\cdots,X_n’$有父节点和条件概率
      整个模型的表达式可以写成是
      $$P(X’|X) = \prod_{i=1}^{n}P(X_i’|Pa_{X_i’}) $$

      而贝叶斯网则是由2TBN连接而成的一个网络模型.

      Plate Model

      Plate模型的出发点在于将 \textbf{整个模型之中会反复时候的部分独立出来},还是使用之前的学生成绩模型。班级之中的每一个学生的成绩肯定是独立的,并且在每一个学生的评定过程之中,假设仅仅是由Intelligence决定Grade,我们就可以将$I\to G$这一部分独立出来作为一个单独的部分,当然也会有其他的因素会对于其造成影响,但是其他的外部的因素都与Student无关。

      如果将这个模型 \textbf{实例化},则是这样的模型结构.


      上面是一种最简单的情况,如果将模型变得复杂一些,则引入另一个变量-课程的难度 :D.


      还是对于学生成绩的评估,这里多加入了一个因素,就是课程的难度,每个学生要修很多门课,不同课程对于不同学生的影响也是独立的,在这个例子中,学生对于不同课程所要求的技能是不同的,学生技能在不同的课程中是相互独立的,例如学生1在美术上的能力强,在计算机方面的能力弱,也就是说学生在不同课程上的能力是相互独立的,而如果是对于相似的课程,所需要的能力一样的话,将intelligence作为courses c中的一部分是不对的,因此改进如下:

      这样做就将intelligence只作为student的一部分,而不是作为courses的一部分,这样对于intelligence在不同课程中便是相互依赖的了。

      Comments

      Leave a Comment