贝叶斯网络

贝叶斯网络

  • 目标
  1. 定义

贝叶斯网络是一种有向无环图:
G = ( V , E ) G=(V,E) G=(V,E) where:
One node i for each random variable V i V_i Vi
One conditional probabillity distribution pre node:
P r ( V i ∣ V p a ( i ) ) Pr(V_i | V_{pa(i)}) Pr(ViVpa(i))

P r ( V 1 , V 2 , ⋯   , V n ) = ∏ i ∈ [ n ] P r ( V i ∣ V p a ( i ) ) Pr(V_1,V_2,\cdots,V_n)=\prod_{i \in [n]}Pr(V_i|V_{pa(i)}) Pr(V1,V2,,Vn)=i[n]Pr(ViVpa(i))

贝叶斯网络的有向无环图中的节点表示随机变量:
{ X 1 , X 2 , ⋯   , X n } \{ X_1,X_2,\cdots,X_n\} {X1,X2,,Xn}
他们可以是可观察到的变量或因变量、未知参数等。认为有因果关系(非条件独立)的变量或命题则用箭头连接。若两个节点间以一个单箭头连在一起,表示其中一个节点是"因(parents)",另一个是“果(children)”,两节点就会产生一个条件概率置。

  1. 作用

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

  • 条件独立
  1. 表现:

a. 图结构能够反映两个变量间的条件独立性
b. 如果两个变量是条件独立的,图中没有这两个节点的连线

  1. 独立定义:

    P r ( A , B ) = P r ( A ) P r ( B ) Pr(A,B)=Pr(A)Pr(B) Pr(A,B)=Pr(A)Pr(B)
    P r ( A ∣ B ) = P r ( A ) Pr(A|B)=Pr(A) Pr(AB)=Pr(A)
    P r ( B ∣ A ) = P r ( B ) Pr(B|A)=Pr(B) Pr(BA)=Pr(B)

  2. 条件独立定义

    P r ( A , B ∣ C ) = P r ( A ∣ C ) P r ( B ∣ C ) Pr(A,B|C)=Pr(A|C)Pr(B|C) Pr(A,BC)=Pr(AC)Pr(BC)
    P r ( A ∣ B , C ) = P r ( A ∣ C ) Pr(A|B,C)=Pr(A|C) Pr(AB,C)=Pr(AC)
    P r ( B ∣ A , C ) = P r ( B ∣ C ) Pr(B|A,C)=Pr(B|C) Pr(BA,C)=Pr(BC)

  3. 贝叶斯网络的3中结构形式

    a. 尾对尾

    图:


    贝叶斯网络_第1张图片

    b. 头对尾

    图:


    贝叶斯网络_第2张图片

    c. 头对头

    图:


    贝叶斯网络_第3张图片

  • 马尔科夫链

    根据之前对"头对尾"的讲解,我们已经直到,在给定 x i + 1 x_{i+1} xi+1的情况下, x i + 1 x_{i+1} xi+1的分布和 x 1 , x 2 , ⋯   , x − 1 x_1,x_2,\cdots,x_{-1} x1,x2,,x1条件独立。意味着: x i + 1 x_{i+1} xi+1的分布状态和 x i x_i xi有关,和其他变量条件独立。通俗讲,当前状态指与上一个状态有关,跟上上或上上之前的状态无关。这种顺序演变的随机过程,就叫做马尔科夫链。且有
    P ( X n + 1 = x ∣ X 0 , ⋯   , X n ) = P ( X n + 1 = x ∣ X n ) P(X_{n+1}=x|X_0,\cdots,X_n)=P(X_{n+1}=x|X_n) P(Xn+1=xX0,,Xn)=P(Xn+1=xXn)

    我们为以上的一阶马尔科夫过程定义了三个重要组成部分:

    1. 初始状态:晴天、阴天
    2. 初始向量:定义系统在时间为0的时候的状态的概率
    3. 状态转移矩阵:每种天气转换的概率,所有的能被这样描述的系统都是一个马尔科夫过程
  • 隐马可夫链

  1. 隐马可夫链的三大问题

    1. 知道骰子有几种(隐含状态数量),每种骰子是什么(转换概率),根据掷骰子投出的结果(可见状态链),我想知道掷出这个结果的概率–>验证问题(Evaluation)
    2. 知道骰子有几种(隐含状态数量)、每种筛子是什么(转换概率),根据掷骰子投出的结果(可见状态链),我想知道每次掷出的都是哪种骰子(隐含状态链)–>识别问题(Recognition)
    3. 还是知道骰子有几种(隐含状态数量),不知道每种骰子是什么(转换概率),观测到很多次掷骰子的结果(可见状态链),我们反推出每种筛子是什么(转换概率)–>训练问题(Training)
  2. 实例


    贝叶斯网络_第4张图片

    验证:已知整个模型,我们连续三天做的事情是:散步、购物、收拾。那么,根据模型,计算产生这些行为的概率是多少

    识别:同样知晓这个模型,同样是这三件时间,我想猜,这三天的天气是怎样的

    训练:最复杂的,我们知道三天做了这三件事,而其他什么信息都没有,我得建立一个模型,晴雨转换概率,第一天天气情况的概率分布,根据天气情况选择做某事的概率分布。

  3. 解决方法

    问题一:遍历算法

    1. 枚举所有可能的状态序列: Q = q 1 q 2 q 3 ⋯ q n Q=q_1q_2q_3\cdots q_n Q=q1q2q3qn
    2. 对于样本序列Q:
      P ( O ∣ Q , λ ) = ∏ t = 1 T P ( O t ∣ q t , λ ) = ∏ t = 1 T b q t O t P(O|Q,\lambda)=\prod_{t=1}^TP(O_t|q_t,\lambda)=\prod_{t=1}^Tb_{q_tO_t} P(OQ,λ)=t=1TP(Otqt,λ)=t=1TbqtOt
    3. 状态序列Q的概率是:
      P ( Q ∣ λ ) = P ( q 1 ) ∏ t = 2 T P ( q t ∣ q t − 1 ) = π q 1 ∏ t = 2 T a q t − 1 q t P(Q|\lambda) = P(q_1)\prod_{t=2}^TP(q_t|q_{t-1})=\pi_{q_1}\prod_{t=2}^Ta_{q_{t-1}q_t} P(Qλ)=P(q1)t=2TP(qtqt1)=πq1t=2Taqt1qt
    4. 联合密度概率
      P ( O , Q ∣ λ ) = P ( Q ∣ λ ) P ( O ∣ Q , λ ) = π q 1 ∏ t = 2 T a q t − 1 q t ∏ t = 1 T b q t O t P(O,Q|\lambda)=P(Q|\lambda)P(O|Q,\lambda)=\pi_{q_1}\prod_{t=2}^Ta_{q_{t-1}q_t}\prod_{t=1}^Tb_{q_t}O_t P(O,Qλ)=P(Qλ)P(OQ,λ)=πq1t=2Taqt1qtt=1TbqtOt>问题一:向前算法
    5. 计算边缘概率
      P ( O ∣ λ ) = ∑ Q π q 1 b q 1 O 1 ∏ t = 2 T a q t − 1 q t b q t O t P(O|\lambda)=\sum_Q\pi_{q_1}b_{q_1O_1}\prod_{t=2}^Ta_{q_{t-1}q_t}b_{q_tO_t} P(Oλ)=Qπq1bq1O1t=2Taqt1qtbqtOt

    问题一:前向算法

    1. 定义向前变量 a j ( t ) a_j(t) aj(t)代表部分观察序列的概率。已知时刻t与t时刻的状态 S j S_j Sj的情况下有:
      a j ( t ) = P ( O 1 O 2 ⋯ O t , q t = S j ∣ λ ) a_j(t)=P(O_1O_2\cdots O_t,q_t=S_j|\lambda) aj(t)=P(O1O2Ot,qt=Sjλ)
    1. 可以递归计算如下:
      a j ( 1 ) = π j b j O 1 a_j(1)=\pi_jb_{jO_1} aj(1)=πjbjO1
      a j ( t + 1 ) = ( ∑ i = 1 N a i ( t ) a i j ) b j O t + 1 a_j(t+1)=\big( \sum_{i=1}^N a_i(t)a_{ij}\big)b_{jO_{t+1}} aj(t+1)=(i=1Nai(t)aij)bjOt+1
    1. 计算联合概率
      P ( O ∣ λ ) = ∑ i = 1 T P ( O , q T = S i ∣ λ ) = ∑ i = 1 T P(O|\lambda)=\sum_{i=1}^TP(O,q_T=S_i|\lambda)=\sum_{i=1}^T P(Oλ)=i=1TP(O,qT=Siλ)=i=1T

    问题一:向后算法

    1. 定义向后变量 β i ( t ) \beta_i(t) βi(t)如下:
      β i ( t ) = P ( O t + 1 O t + 2 ⋯ O T ∣ q t = S i , λ ) \beta_i(t)=P(O_{t+1}O_{t+2}\cdots O_T|q_t=S_i,\lambda) βi(t)=P(Ot+1Ot+2OTqt=Si,λ)
    2. 递归计算如下:
      β i ( T ) = 1 \beta_i(T)=1 βi(T)=1
      β i ( t − 1 ) = ∑ j = 1 N a i j b j O t β j ( t ) \beta_i(t-1)=\sum_{j=1}^Na_{ij}b_{jO_t}\beta_j(t) βi(t1)=j=1NaijbjOtβj(t)
    3. 计算联合概率即可
      P ( O ∣ λ ) = ∑ i = 1 N π i b i O 1 β i ( 1 ) P(O|\lambda)=\sum_{i=1}^N\pi_ib_{iO_1}\beta_i(1) P(Oλ)=i=1NπibiO1βi(1)

    问题二:Viterbi算法

    1. 计算最优序列意味着计算$arg\max_QP(Q|O,\lambda),等价于 a r g max ⁡ Q P ( Q , O ∣ λ ) arg\max_QP(Q,O|\lambda) argmaxQP(Q,Oλ)
    2. 算法定义 δ j ( t ) \delta_j(t) δj(t),代表长度为t的路径的最优概率:
      δ j ( t ) = max ⁡ q 1 , q 2 , ⋯   , q t − 1 P ( q 1 q 2 ⋯ q t = j , O 1 O 2 ⋯ O t ∣ λ ) \delta_j(t)=\max_{q_1,q_2,\cdots,q_{t-1}}P(q_1q_2\cdots q_t=j,O_1O_2 \cdots O_t|\lambda) δj(t)=q1,q2,,qt1maxP(q1q2qt=j,O1O2Otλ)
    3. 递归计算
      δ j ( 1 ) = π j b j O 1 \delta_j(1)=\pi_jb_{jO_1} δj(1)=πjbjO1
      δ j ( t + 1 ) = ( max ⁡ i δ i ( t ) a i j ) b j O t + 1 \delta_j(t+1)=(\max_i \delta_i(t)a_{ij})b_jO_{t+1} δj(t+1)=(imaxδi(t)aij)bjOt+1
    4. 回溯获取最优解

    问题三:Baum-Welch算法

    1. 可以选择 λ = ( A , B , π ) \lambda = (A,B,\pi) λ=(A,B,π)局部最优化 P ( O ∣ λ ) P(O|\lambda) P(Oλ)
    2. 我们需要定义 η i j ( t ) \eta_{ij}(t) ηij(t)如下:
      η i j ( t ) = P ( q t = S i , q t + 1 = S j ∣ O , λ ) \eta_{ij}(t)=P(q_t=S_i,q_{t+1}=S_j|O,\lambda) ηij(t)=P(qt=Si,qt+1=SjO,λ)
  4. 词性标注

你可能感兴趣的:(贝叶斯网络)