机器学习—隐马尔科夫模型(5)后向传播

362 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情

在这篇文章需要做哪些准备

  • 隐马尔可夫模型
  • 隐马尔可夫性质
  • 条件独立
  • 联合概率乘法
  • 边缘概率

hmm_backward_001.PNG

后向概率

有了前向概率基础,可能后向概率对于我们理解应该不难。首先先把后向概率表示写出来如下,也就是后向概率是给定当前时刻隐含状态确定为某一个状态的条件下,随后到从 t+1t+1 时刻到 TT 时刻观测值组成的观测序列的概率。

hmm_backward_002.PNG

在上图中,用浅蓝色区域为 βt(i)\beta_t(i) 表示,只不过这里 ii 表示在 tt 时刻状态是确定为 qiq_i 状态的条件下出现序列 ot+1,,oTo_{t+1},\cdots,o_T 的概率。

βt(i)=P(ot+1,ot+2,,oTit=qt,λ)\beta_t(i) = P(o_{t+1},o_{t+2},\cdots,o_T|i_t = q_t,\lambda)

是从 t 时刻一路向前推,也就是从后向前推可以得到 β1\beta_1 来计算,这个基本思路预

βt(i)βt1β1\beta_t(i) \rightarrow \beta_{t-1} \rightarrow \cdots \rightarrow \beta_1

上面的式子就是在 tt 时刻,状态为 qiq_i 的后向概率表达式,也就是找到可以将问题子问题化的公式这一步比较重要。

hmm_005.PNG

基本思想

基本思想也是 DP(动态规划)问题,既然是 DP 问题,那么重要是找到递归式以及退出递归的条件,接下来我们就从这两个方面入手,首先来看到退出递归的条件也就是从

βTβt+1βtβ1\beta_T \rightarrow \cdots \rightarrow \beta_{t+1} \rightarrow \beta_t \rightarrow \cdots \rightarrow \beta_1

可以通过后一个时刻 t+1t+1 来计算 tt 时刻的后向概率,这样一路回溯到 t1t_1 时刻,也就是从 tTt_T 时刻到 t1t_1 时刻后向概率来计算出 P(Oλ)P(O|\lambda)

β1(i)=P(o2,,oTi1=qi,λ)\beta_1(i) = P(o_2,\cdots,o_T|i_1=q_i,\lambda)

上面公式是根据后向概率,来得出 β1(i)\beta_1(i) 也就是在给定了 i1=qii_1=q_i (表示在 1 时刻状态为 qiq_i)条件出现 o2,,oTo_2,\cdots, o_T 观测值组成观测序列的概率。

β1(i)=P(o2,,oTi1=qi,λ)\beta_1(i) = P(o_2,\cdots,o_T|i_1=q_i,\lambda)

然后我们需要根据在 t1t_1 时刻的 β1(i)\beta_1(i) 来计算 P(Oλ)P(O|\lambda)

P(Oλ)=P(o1,,oTλ)P(O|\lambda) = P(o_1,\cdots,o_T|\lambda)\\

接下来我们需要在上面公式上通过利用边缘概率引入 i1=qii_1=q_i

i=1NP(o1,,oT,i1=qi,λ)\sum_{i=1}^N P(o_1,\cdots,o_T,i_1=q_i,\lambda)\\

然后就是可以利用联合概率的乘法公式

i=1NP(o1,,oTi1=qi)P(i1=qi)\sum_{i=1}^N P(o_1,\cdots,o_T|i_1=q_i)P(i_1=q_i)

这里 P(i1=qi)=πiP(i_1=q_i) = \pi_i 所以上面式子进过带换可以得到下面式子

P(Oλ)=i=1NP(o1,,oTi1=qi)πiP(O|\lambda) = \sum_{i=1}^N P(o_1,\cdots,o_T|i_1 = q_i)\pi_i\\

继续对于 o1,,oTo_1,\cdots,o_T 应用联合概率的乘法公式表示为 P(o1o2,,oT,i1=qi)P(o2,,oTi1=qi)P(o_1| o_2,\cdots,o_T,i_1 = q_i)P(o_2,\cdots,o_T|i_1=q_i)

i=1NP(o1o2,,oT,i1=qi)P(o2,,oTi1=qi)πi\sum_{i=1}^N P(o_1| o_2,\cdots,o_T,i_1 = q_i)P(o_2,\cdots,o_T|i_1=q_i)\pi_i
  • P(o1o2,,oT,i1=qi)P(o_1| o_2,\cdots,o_T,i_1 = q_i) 可以利用观测独立假设,可以得到 P(o1i1=qi)P(o_1|i_1=q_i)
  • 观测 P(o2,,oTi1=qi)P(o_2,\cdots,o_T|i_1=q_i) 不难看出这就是在 t1t_1 时刻的后向概率,所以可以替换为 β1(i)\beta_1(i)
P(Oλ)=i=1NP(o1i1=qi)β1(i)πiP(O|\lambda) = \sum_{i=1}^N P(o_1|i_1=q_i)\beta_1(i)\pi_i\\
i=1Nbi(o1)β1(i)πi\sum_{i=1}^N b_i(o_1)\beta_1(i)\pi_i

好了到这里我们就完成

递推公式

hmm_005.PNG

接下来我们就需要在 tt 时刻和 t+1t+1 时刻之间建立关系,βt(i)\beta_t(i)βt+1(j)\beta_{t+1}(j) 之间

βt(i)=P(ot+1,,oTit=qi)\beta_t(i) = P(o_{t+1},\cdots,o_T|i_t=q_i)

然后还是之前套路,将 t+1t+1 时刻状态引入进来 it+1=qji_{t+1} = q_j 如下

βt(i)=j=1NP(ot+1,,oT,it+1=qjit=qi)\beta_t(i) = \sum_{j=1}^N P(o_{t+1},\cdots,o_T,i_{t+1}=q_j|i_t=q_i)

接下来利用联合概率乘法公式,将 P(ot+1,,oT,it+1=qjit=qi) P(o_{t+1},\cdots,o_T,i_{t+1}=q_j|i_t=q_i) 进一步分解为 P(ot+1,,oTit+1=qj,it=qi)P(it+1=qjit=qi)P(o_{t+1},\cdots,o_T|i_{t+1}=q_j,i_t=q_i)P(i_{t+1}=q_j|i_t=q_i)

βt(i)=j=1NP(ot+1,,oTit+1=qj,it=qi)P(it+1=qjit=qi)\beta_t(i) = \sum_{j=1}^N P(o_{t+1},\cdots,o_T|i_{t+1}=q_j,i_t=q_i)P(i_{t+1}=q_j|i_t=q_i)

先列出 t 时刻后向概率时刻,在上面公式中 P(it+1=qjit=qi)P(i_{t+1}=q_j|i_t=q_i) 不就是 aija_{ij}

aij=P(it+1=qjit=qi)a_{ij} = P(i_{t+1}=q_j|i_t=q_i)\\

我们 P(it+1=qjit=qi)P(i_{t+1}=q_j|i_t=q_i)

P(ot+1,,oTit+1=qj,it=qi)=P(ot+1,,oTit+1=qj)P(o_{t+1},\cdots,o_T|i_{t+1}=q_j,i_t=q_i) = P(o_{t+1},\cdots,o_T|i_{t+1}=q_j)

这一步我们可以通过条件独立假设来解释一下,因为 it+1=qji_{t+1}=q_j 观测到条件下,ot+1,,oTo_{t+1},\cdots,o_T 只与 it+1=qji_{t+1}=q_j 相关,所以可以 P(ot+1,,oTit+1=qj,it=qi)=P(ot+1,,oTit+1=qj)P(o_{t+1},\cdots,o_T|i_{t+1}=q_j,i_t=q_i) = P(o_{t+1},\cdots,o_T|i_{t+1}=q_j)

aij=i=1NP(ot+1,,oTit+1=qj)P(ot+2,oTit+1=qj)aija_{ij} = \sum_{i=1}^N P(o_{t+1},\cdots,o_T|i_{t+1}=q_j)P(o_{t+2} \cdots ,o_T|i_{t+1} = q_j) a_{ij}

这样一路推到,我们就在 βt(i)\beta_t(i)βt+1(j)\beta_{t+1}(j) 之间建立了关系。

βt(i)=i=1Nbj(ot+1)aijβt+1(j)\beta_t(i) = \sum_{i=1}^N b_j(o_{t+1})a_{ij}\beta_{t+1}(j)