机器学习笔记只隐马尔可夫模型(三)求值问题——前向算法(Forward Algorithm)

机器学习笔记之隐马尔可夫模型——前向算法处理求值问题

  • 引言
    • 回顾:隐马尔可夫模型
      • 概念介绍
      • 模型参数表示
      • 隐马尔可夫模型的核心假设
    • 关于 P ( O ∣ λ ) P(\mathcal O \mid \lambda) P(Oλ)求解过程中的问题
    • 前向算法

引言

上一节对隐马尔可夫模型(Hidden Markov Model,HMM)进行了归纳介绍。本节将详细介绍使用前向算法(Forward Algorithm)对处理求值(Evaluation)问题。

回顾:隐马尔可夫模型

隐马尔可夫模型是一个动态模型(Dynamic Model)。其主要特点是系统状态(System State)任意一个状态元素(隐变量),其取值范围是离散的
系统状态 t t t时刻的状态元素 Z ( t ) \mathcal Z^{(t)} Z(t)为例,存在 K \mathcal K K离散结果 Z ( t ) \mathcal Z^{(t)} Z(t)进行选择。即:
Z ( t ) ∈ { z 1 , z 2 , ⋯   , z K } \mathcal Z^{(t)} \in \{z_1,z_2,\cdots,z_{\mathcal K}\} Z(t){z1,z2,,zK}

概念介绍

隐马尔可夫模型状态序列观测序列两部分构成:
I = { i 1 , i 2 , ⋯   , i t , i t + 1 , ⋯   , i T } O = { o 1 , o 2 , ⋯   , o t , o t + 1 , ⋯   , o T } \mathcal I = \{i_1,i_2,\cdots,i_t,i_{t+1},\cdots,i_T\} \\ \mathcal O = \{o_1,o_2,\cdots,o_t,o_{t+1},\cdots,o_T\} I={i1,i2,,it,it+1,,iT}O={o1,o2,,ot,ot+1,,oT}
其中状态序列中状态变量 i t ∈ I i_{t} \in \mathcal I itI的取值范围是离散的,并且状态变量可取到的状态值集合 Q \mathcal Q Q表示如下:
Q = { q 1 , q 2 , ⋯   , q K } \mathcal Q = \{q_1,q_2,\cdots,q_{\mathcal K}\} Q={q1,q2,,qK}
观测序列中的观测变量 o t ∈ O o_t \in \mathcal O otO的取值范围同样是离散的,并且观测变量可取到的观测值集合 V \mathcal V V表示如下:
V = { v 1 , v 2 , ⋯   , v M } \mathcal V = \{v_1,v_2,\cdots,v_\mathcal M\} V={v1,v2,,vM}

模型参数表示

隐马尔可夫模型的模型参数 λ \lambda λ具体包含三项:
λ = ( π , A , B ) \lambda = (\pi,\mathcal A,\mathcal B) λ=(π,A,B)

  • π \pi π称作 初始概率分布(基于状态变量),是一个 K \mathcal K K维向量。向量各元素表示初始状态变量 i 1 i_1 i1取到各离散结果 q 1 , q 2 , ⋯   , q K q_1,q_2,\cdots,q_{\mathcal K} q1,q2,,qK 的概率值。即:
    π = ( P ( i 1 = q 1 ) P ( i 1 = q 2 ) ⋮ P ( i 1 = q K ) ) K × 1 ∑ k = 1 K P ( i 1 = q k ) = 1 \pi = \begin{pmatrix}P(i_1 = q_1) \\ P(i_1 = q_2) \\ \vdots \\ P(i_1 = q_{\mathcal K})\end{pmatrix}_{\mathcal K \times 1} \sum_{k=1}^{\mathcal K} P(i_1 = q_k) = 1 π= P(i1=q1)P(i1=q2)P(i1=qK) K×1k=1KP(i1=qk)=1
  • A \mathcal A A称作状态转移矩阵。具体表示如下:
    A = [ a i j ] K × K \mathcal A = [a_{ij}]_{\mathcal K \times \mathcal K} A=[aij]K×K
    其中 a i j a_{ij} aij表示 t t t时刻下的状态变量 i t = q i i_t = q_i it=qi的条件下, t + 1 t+1 t+1时刻的状态变量 i t + 1 = q j i_{t+1}=q_j it+1=qj的概率。数学符号表示如下:
    a i j = P ( i t + 1 = q j ∣ i t = q i ) i , j ∈ { 1 , 2 , ⋯   , K } a_{ij} = P(i_{t+1} = q_j \mid i_t = q_i) \quad i,j \in \{1,2,\cdots,\mathcal K\} aij=P(it+1=qjit=qi)i,j{1,2,,K}
  • B \mathcal B B称作发射矩阵。具体表示如下:
    B = [ b j ( k ) ] K × M \mathcal B = [b_j(k)]_{\mathcal K\times \mathcal M} B=[bj(k)]K×M
    其中 b j ( k ) b_j(k) bj(k)表示 t t t时刻下状态变量 i t = q j i_t=q_j it=qj的条件下, t t t时刻下的观测变量 o t = v k o_t=v_k ot=vk的概率。数学符号表示如下:
    b j ( k ) = P ( o t = v k ∣ i t = q j ) j ∈ { 1 , 2 , ⋯   , K } ; k ∈ { 1 , 2 , ⋯   , M } b_j(k) = P(o_t = v_k \mid i_t = q_j) \quad j \in \{1,2,\cdots,\mathcal K\};k \in \{1,2,\cdots,\mathcal M\} bj(k)=P(ot=vkit=qj)j{1,2,,K};k{1,2,,M}

隐马尔可夫模型的核心假设

  • 齐次马尔可夫假设
    某时刻 t t t条件下,状态变量 i t i_t it的后验概率,只和前一时刻状态变量 i t − 1 i_{t-1} it1相关,与其他变量无关
    数学符号表达如下:
    P ( i t ∣ i t − 1 , ⋯   , i 1 , o t − 1 , o 1 ) = P ( i t ∣ i t − 1 ) P(i_{t} \mid i_{t-1},\cdots,i_1,o_{t-1},o_1) = P(i_t \mid i_{t-1}) P(itit1,,i1,ot1,o1)=P(itit1)
  • 观测独立性假设
    某时刻 t t t条件下,观测变量 o t o_t ot的后验概率,只和 t t t时刻的状态变量 i t i_t it相关,与其他变量无关
    数学符号表达如下:
    P ( o t ∣ i t , ⋯   , i 1 , o t − 1 , ⋯   , o 1 ) = P ( o t ∣ i t ) P(o_t \mid i_t,\cdots,i_1,o_{t-1},\cdots,o_1) = P(o_t \mid i_t) P(otit,,i1,ot1,,o1)=P(otit)

关于 P ( O ∣ λ ) P(\mathcal O \mid \lambda) P(Oλ)求解过程中的问题

求值问题描述:已知给定参数 λ \lambda λ的隐马尔可夫模型,求解观测序列 O = { o 1 , o 2 , ⋯   , o T } \mathcal O = \{o_1,o_2,\cdots,o_T\} O={o1,o2,,oT}的后验概率结果 P ( O ∣ λ ) P(\mathcal O \mid \mathcal \lambda) P(Oλ)
或者可理解为’观测序列‘ O = { o 1 , o 2 , ⋯   , o T } \mathcal O = \{o_1,o_2,\cdots,o_T\} O={o1,o2,,oT}通过HMM模型的计算所发生的概率。

首先,类似于高斯混合模型引入隐变量的方式,将将状态变量 I \mathcal I I引入到 P ( O ∣ λ ) P(\mathcal O \mid \lambda) P(Oλ)
因为'状态变量' I \mathcal I I的取值范围是离散的,因此积分方式是 ∑ \sum ;
P ( O ∣ λ ) = ∑ I P ( I , O ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) \begin{aligned} P(\mathcal O \mid \lambda) & = \sum_{\mathcal I} P(\mathcal I,\mathcal O \mid \lambda) \\ & = \sum_{\mathcal I} P(\mathcal O \mid \mathcal I,\lambda)P(\mathcal I \mid \lambda) \end{aligned} P(Oλ)=IP(I,Oλ)=IP(OI,λ)P(Iλ)

  • 观察 P ( I ∣ λ ) P(\mathcal I \mid \lambda) P(Iλ),它是关于状态变量 I \mathcal I I的概率分布。因此使用 状态转移矩阵 A \mathcal A A中的元素 进行表示:
    • P ( I ∣ λ ) P(\mathcal I \mid \lambda) P(Iλ)展开成 P ( i 1 , i 2 , ⋯   , i T ∣ λ ) P(i_1,i_2,\cdots,i_{T}\mid \lambda) P(i1,i2,,iTλ)的格式,并将其看作联合概率分布的形式,分解成条件概率的形式
      P ( I ∣ λ ) = P ( i 1 , i 2 , ⋯   , i T ∣ λ ) = P ( i T ∣ i 1 , i 2 , ⋯   , i T − 1 , λ ) ⋅ P ( i 1 , i 2 , ⋯   , i T − 1 ∣ λ ) \begin{aligned} P(\mathcal I \mid \lambda) & = P(i_1,i_2,\cdots,i_{T}\mid \lambda) \\ & = P(i_T \mid i_1,i_2,\cdots,i_{T-1},\lambda) \cdot P(i_1,i_2,\cdots,i_{T-1} \mid \lambda) \end{aligned} P(Iλ)=P(i1,i2,,iTλ)=P(iTi1,i2,,iT1,λ)P(i1,i2,,iT1λ)
    • 观察上述公式的后项 P ( i 1 , i 2 , ⋯   , i T − 1 ∣ λ ) P(i_1,i_2,\cdots,i_{T-1} \mid \lambda) P(i1,i2,,iT1λ),它实际上就是个缩小版 P ( I ∣ λ ) P(\mathcal I \mid \lambda) P(Iλ) P ( I ∣ λ ) P(\mathcal I \mid \lambda) P(Iλ)相比,只少了一个 i T i_{T} iT。因此,可以将 P ( I ∣ λ ) P(\mathcal I \mid \lambda) P(Iλ)看成迭代式子。即:
      P ( I ∣ λ ) = P ( i T ∣ i 1 , i 2 , ⋯   , i T − 1 , λ ) ⋅ P ( i 1 , i 2 , ⋯   , i T − 1 ∣ λ ) = P ( i T ∣ i 1 , i 2 , ⋯   , i T − 1 , λ ) ⋅ P ( i T − 1 ∣ i 1 , i 2 , ⋯   , i T − 2 , λ ) ⋅ P ( i 1 , i 2 , ⋯   , i T − 2 ∣ λ ) = ⋯ = P ( i T ∣ i 1 , i 2 , ⋯   , i T − 1 , λ ) ⋅ P ( i T − 1 ∣ i 1 , i 2 , ⋯   , i T − 2 , λ ) ⋯ P ( i 2 ∣ i 1 , λ ) ⋅ P ( i 1 ∣ λ ) \begin{aligned} P(\mathcal I \mid \lambda) & = P(i_T \mid i_1,i_2,\cdots,i_{T-1},\lambda) \cdot P(i_1,i_2,\cdots,i_{T-1} \mid \lambda) \\ & = P(i_T \mid i_1,i_2,\cdots,i_{T-1},\lambda) \cdot P(i_{T-1} \mid i_1,i_2,\cdots,i_{T-2},\lambda)\cdot P(i_1,i_2,\cdots,i_{T-2} \mid \lambda)\\ & = \cdots \\ & = P(i_T \mid i_1,i_2,\cdots,i_{T-1},\lambda) \cdot P(i_{T-1} \mid i_1,i_2,\cdots,i_{T-2},\lambda) \cdots P(i_2 \mid i_1,\lambda) \cdot P(i_1 \mid \lambda) \end{aligned} P(Iλ)=P(iTi1,i2,,iT1,λ)P(i1,i2,,iT1λ)=P(iTi1,i2,,iT1,λ)P(iT1i1,i2,,iT2,λ)P(i1,i2,,iT2λ)==P(iTi1,i2,,iT1,λ)P(iT1i1,i2,,iT2,λ)P(i2i1,λ)P(i1λ)
    • 观察上式中的每一项,我们都可以使用 齐次马尔可夫假设 对每一项进行简化。例如: P ( i T ∣ i 1 , i 2 , ⋯   , i T − 1 , λ ) = P ( i T ∣ i T − 1 ) P(i_T \mid i_1,i_2,\cdots,i_{T-1},\lambda) = P(i_T \mid i_{T-1}) P(iTi1,i2,,iT1,λ)=P(iTiT1),以此类推。
      其中最后一项 P ( i 1 ∣ λ ) P(i_1 \mid \lambda) P(i1λ)初始概率分布 π \pi π。最终 P ( I ∣ λ ) P(\mathcal I \mid \lambda) P(Iλ)表示如下:
      P ( I ∣ λ ) = P ( i T ∣ i T − 1 ) ⋅ P ( i T − 1 ∣ i T − 2 ) ⋯ P ( i 2 ∣ i 1 ) ⋅ π P(\mathcal I \mid \lambda) = P(i_T \mid i_{T-1}) \cdot P(i_{T-1} \mid i_{T-2}) \cdots P(i_2 \mid i_1) \cdot \pi P(Iλ)=P(iTiT1)P(iT1iT2)P(i2i1)π
    • 观察状态转移过程图 P ( i T ∣ i T − 1 ) P(i_T \mid i_{T-1}) P(iTiT1)使用 状态转移矩阵 A \mathcal A A中的元素进行表示
      P ( I ∣ λ ) = a i T − 1 , i T ⋅ a i T − 2 , i T − 1 ⋯ a i 1 , i 2 ⋅ π = π ⋅ ∏ t = 2 T a i t − 1 , i t \begin{aligned} P(\mathcal I \mid \lambda) & = a_{i_{T-1},i_{T}} \cdot a_{i_{T-2},i_{T-1}} \cdots a_{i_1,i_2} \cdot \pi \\ & = \pi \cdot \prod_{t=2}^{T}a_{i_{t-1},i_{t}} \end{aligned} P(Iλ)=aiT1,iTaiT2,iT1ai1,i2π=πt=2Tait1,it
      机器学习笔记只隐马尔可夫模型(三)求值问题——前向算法(Forward Algorithm)_第1张图片
  • 继续观察 P ( O ∣ I , λ ) P(\mathcal O \mid \mathcal I,\lambda) P(OI,λ),和 P ( I ∣ λ ) P(\mathcal I \mid \lambda) P(Iλ)相似,但依据的是 观测独立性假设
    • P ( O ∣ I , λ ) P(\mathcal O \mid \mathcal I,\lambda) P(OI,λ)中的 O , I \mathcal O,\mathcal I O,I进行展开,得到如下形式:
      P ( O ∣ I , λ ) = P ( o 1 , ⋯   , o T ∣ i 1 , ⋯   , i T , λ ) = P ( o T ∣ o 1 , ⋯   , o T − 1 , i 1 , ⋯   , i T , λ ) ⋅ P ( o 1 , ⋯   , o T − 1 , i 1 , ⋯   , i T ∣ λ ) \begin{aligned} P(\mathcal O \mid \mathcal I ,\lambda) & = P(o_1,\cdots,o_T \mid i_1,\cdots,i_T,\lambda) \\ & = P(o_T \mid o_1,\cdots,o_{T-1},i_1,\cdots,i_{T},\lambda) \cdot P(o_1,\cdots,o_{T-1},i_1,\cdots,i_{T} \mid \lambda) \end{aligned} P(OI,λ)=P(o1,,oTi1,,iT,λ)=P(oTo1,,oT1,i1,,iT,λ)P(o1,,oT1,i1,,iTλ)
    • 将上式展开成迭代形式
      P ( O ∣ I , λ ) = P ( o T ∣ o 1 , ⋯   , o T − 1 , i 1 , ⋯   , i T , λ ) ⋅ P ( o T − 1 ∣ o 1 , ⋯   , o T − 2 , i 1 , ⋯   , i T , λ ) ⋯ P ( o 1 ∣ i 1 , ⋯ i T , λ ) P(\mathcal O \mid \mathcal I ,\lambda) = P(o_T \mid o_1,\cdots,o_{T-1},i_1,\cdots,i_{T},\lambda) \cdot P(o_{T-1} \mid o_1,\cdots,o_{T-2},i_1,\cdots,i_{T},\lambda) \cdots P(o_1 \mid i_1,\cdots i_T,\lambda) P(OI,λ)=P(oTo1,,oT1,i1,,iT,λ)P(oT1o1,,oT2,i1,,iT,λ)P(o1i1,iT,λ)
    • 根据观测独立性假设,上述迭代形式表示如下:
      P ( o T ∣ i T ) ⋅ P ( o T − 1 ∣ i T − 1 ) ⋯ P ( o 1 ∣ i 1 ) P(o_T \mid i_T) \cdot P(o_{T-1} \mid i_{T-1}) \cdots P(o_1 \mid i_1) P(oTiT)P(oT1iT1)P(o1i1)
    • 基于发射过程图 P ( o T ∣ i T ) P(o_T \mid i_T) P(oTiT)使用发射矩阵 B \mathcal B B结果进行表示:
      P ( O ∣ I , λ ) = b i 1 ( o 1 ) ⋅ b i 2 ( o 2 ) ⋯ b i T ( o T ) = ∏ t = 1 T b i t ( o t ) \begin{aligned} P(\mathcal O \mid \mathcal I, \lambda) & = b_{i_1}(o_1) \cdot b_{i_2}(o_2) \cdots b_{i_T}(o_T) \\ & = \prod_{t=1}^T b_{i_t}(o_t) \end{aligned} P(OI,λ)=bi1(o1)bi2(o2)biT(oT)=t=1Tbit(ot)
      机器学习笔记只隐马尔可夫模型(三)求值问题——前向算法(Forward Algorithm)_第2张图片

至此, P ( O ∣ λ ) P(\mathcal O \mid \lambda) P(Oλ)可以表示如下:
P ( O ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) = ∑ I π ⋅ ∏ t = 2 T a i t − 1 , i t ⋅ ∏ t = 1 T b i t ( o t ) \begin{aligned} P(\mathcal O \mid \lambda) & = \sum_{\mathcal I} P(\mathcal O \mid \mathcal I,\lambda)P(\mathcal I \mid \lambda) \\ & = \sum_{\mathcal I} \pi \cdot \prod_{t=2}^T a_{i_{t-1},i_{t}} \cdot\prod_{t=1}^T b_{i_t}(o_t) \end{aligned} P(Oλ)=IP(OI,λ)P(Iλ)=Iπt=2Tait1,itt=1Tbit(ot)
将上式中的 ∑ I \sum_{\mathcal I} I部分展开,展开结果如下:
P ( O ∣ λ ) = ∑ i 1 ⋯ ∑ i T ( π ⋅ ∏ t = 2 T a i t − 1 , i t ⋅ ∏ t = 1 T b i t ( o t ) ) P(\mathcal O \mid \lambda) = \sum_{i_1} \cdots\sum_{i_T}\left(\pi \cdot \prod_{t=2}^T a_{i_{t-1},i_{t}} \cdot\prod_{t=1}^T b_{i_t}(o_t)\right) P(Oλ)=i1iT(πt=2Tait1,itt=1Tbit(ot))
观察,大括号内的项均可以通过查找初始概率分布 π \pi π,状态转移矩阵 A \mathcal A A,发射矩阵 B \mathcal B B 得到。但括号外的 ∑ i 1 ⋯ ∑ i T \sum_{i_1} \cdots\sum_{i_T} i1iT中的每一项由于状态变量 i t ( t = 1 , 2 , ⋯   , T ) i_t(t=1,2,\cdots,T) it(t=1,2,,T)均存在 K \mathcal K K种选择,因此上式的时间复杂度至少为 O ( K T ) O(\mathcal K^{T}) O(KT)
即:状态序列 { i 1 , i 2 , ⋯   , i T } \{i_1,i_2,\cdots,i_T\} {i1,i2,,iT}随着序列长度 T T T的增加,时间复杂度指数级别增长。下面将介绍关于求解 P ( O ∣ λ ) P(\mathcal O \mid \lambda) P(Oλ)的优化算法——前向算法(Forward Algorithm)。

前向算法

重新观察隐马尔可夫模型的概率图形式
机器学习笔记只隐马尔可夫模型(三)求值问题——前向算法(Forward Algorithm)_第3张图片

  • 我们记 α t ( i ) \alpha_t(i) αt(i)表示 t t t时刻,状态变量 i t = q i i_t = q_i it=qi的条件下, t t t时刻之前的所有观测变量(含 t t t时刻) o 1 , o 2 , ⋯   , o t o_1,o_2,\cdots,o_t o1,o2,,ot i t i_t it的联合概率分布。数学符号表示如下:
    α t ( i ) = P ( o 1 , ⋯ o t , i t = q i ∣ λ ) \alpha_t(i) = P(o_1,\cdots o_t,i_t = q_i \mid \lambda) αt(i)=P(o1,ot,it=qiλ)
  • 基于上式, T T T时刻的 α T ( i ) \alpha_{T}(i) αT(i)表示如下:
    即图中‘红色框’包含的变量。
    α T ( i ) = P ( o 1 , ⋯ o T , i T = q i ∣ λ ) = P ( O , i T = q i ∣ λ ) \begin{aligned} \alpha_T(i) &= P(o_1,\cdots o_T,i_T = q_i \mid \lambda) \\ & =P(\mathcal O,i_T = q_i \mid \lambda) \end{aligned} αT(i)=P(o1,oT,iT=qiλ)=P(O,iT=qiλ)
  • 如果求解 P ( O ∣ λ ) P(\mathcal O \mid \lambda) P(Oλ),只需求解 α T ( i ) \alpha_T(i) αT(i),然后将 i T i_T iT执行条件概率密度积分即可。数学符号表示如下:
    同上, i T i_T iT自身存在 K \mathcal K K种选择。
    P ( O ∣ λ ) = ∑ i T P ( O , i T = q i ∣ λ ) = ∑ i = 1 K P ( O , i T = q i ∣ λ ) = ∑ i = 1 K α T ( i ) \begin{aligned} P(\mathcal O \mid \lambda) & = \sum_{i_T} P(\mathcal O,i_T = q_i \mid \lambda) \\ & = \sum_{i=1}^{\mathcal K} P(\mathcal O,i_T = q_i \mid \lambda) \\ & = \sum_{i=1}^{\mathcal K} \alpha_T(i) \end{aligned} P(Oλ)=iTP(O,iT=qiλ)=i=1KP(O,iT=qiλ)=i=1KαT(i)

基于上述对 α t ( i ) \alpha_t(i) αt(i)的描述,我们尝试 观察 α t + 1 ( j ) \alpha_{t+1}(j) αt+1(j) α t ( i ) \alpha_t(i) αt(i)之间的关系

  • α t + 1 ( j ) \alpha_{t+1}(j) αt+1(j)具体表达如下:
    α t + 1 ( j ) = P ( o 1 , ⋯   , o t , o t + 1 , i t + 1 = q j ∣ λ ) \alpha_{t+1}(j) = P(o_1,\cdots,o_t,o_{t+1},i_{t+1} = q_j \mid \lambda) αt+1(j)=P(o1,,ot,ot+1,it+1=qjλ)
  • 但是上式中并不包含 i t i_t it项,因此,使用条件概率密度积分的方式 i t i_t it加到公式中:
    α t + 1 ( j ) = ∑ i t P ( o 1 , ⋯   , o t , o t + 1 , i t = q i , i t + 1 = q j ∣ λ ) = ∑ i = 1 K P ( o 1 , ⋯   , o t , o t + 1 , i t = q i , i t + 1 = q j ∣ λ ) \begin{aligned} \alpha_{t+1}(j) & = \sum_{i_t} P(o_1,\cdots,o_t,o_{t+1},i_t = q_i,i_{t+1} = q_j \mid \lambda) \\ & = \sum_{i=1}^{\mathcal K} P(o_1,\cdots,o_t,o_{t+1},i_t = q_i,i_{t+1} = q_j \mid \lambda) \end{aligned} αt+1(j)=itP(o1,,ot,ot+1,it=qi,it+1=qjλ)=i=1KP(o1,,ot,ot+1,it=qi,it+1=qjλ)
  • 但上述式子中仍包含 o t + 1 o_{t+1} ot+1。因此,使用条件概率将上式分解,提出 o t + 1 o_{t+1} ot+1
    ∑ i = 1 K [ P ( o t + 1 ∣ o 1 , ⋯   , o t , i t = q i , i t + 1 = q j , λ ) ⋅ P ( o 1 , ⋯   , o t , i t = q i , i t + 1 = q j ∣ λ ) ] \sum_{i=1}^{\mathcal K} \left[P(o_{t+1} \mid o_1,\cdots,o_t,i_t = q_i,i_{t+1} = q_j,\lambda) \cdot P(o_1,\cdots,o_t,i_t = q_i,i_{t+1} = q_j \mid \lambda)\right] i=1K[P(ot+1o1,,ot,it=qi,it+1=qj,λ)P(o1,,ot,it=qi,it+1=qjλ)]
    观察中括号内的第一项,可以使用观测独立性假设进行处理。并将上式改写如下形式:
    ∑ i = 1 K [ P ( o t + 1 ∣ i t + 1 = q j , λ ) ⋅ P ( o 1 , ⋯   , o t , i t = q i , i t + 1 = q j ∣ λ ) ] \sum_{i=1}^{\mathcal K} \left[P(o_{t+1} \mid i_{t+1}=q_j,\lambda) \cdot P(o_1,\cdots,o_t,i_t = q_i,i_{t+1} = q_j \mid \lambda)\right] i=1K[P(ot+1it+1=qj,λ)P(o1,,ot,it=qi,it+1=qjλ)]
  • 此时继续观察中括号内的后项 P ( o 1 , ⋯   , o t , i t = q i , i t + 1 = q j ∣ λ ) P(o_1,\cdots,o_t,i_t = q_i,i_{t+1} = q_j \mid \lambda) P(o1,,ot,it=qi,it+1=qjλ),它和 α t ( i ) \alpha_t(i) αt(i)仅差一项 i t + 1 = q j i_{t+1} = q_j it+1=qj
    o t + 1 o_{t+1} ot+1项处理方式相同,继续使用条件概率将上式分解,提出 i t + 1 i_{t+1} it+1
    P ( o 1 , ⋯   , o t , i t = q i , i t + 1 = q j ∣ λ ) = P ( i t + 1 = q j ∣ o 1 , ⋯   , o t , i t = q i , λ ) ⋅ P ( o 1 , ⋯   , o t , i t = q i ∣ λ ) \begin{aligned} & P(o_1,\cdots,o_t,i_t = q_i,i_{t+1} = q_j \mid \lambda) \\ & = P(i_{t+1} = q_j \mid o_1,\cdots,o_t,i_t = q_i,\lambda) \cdot P(o_1,\cdots,o_t,i_t = q_i\mid \lambda) \end{aligned} P(o1,,ot,it=qi,it+1=qjλ)=P(it+1=qjo1,,ot,it=qi,λ)P(o1,,ot,it=qiλ)
    观察上述式子第一项可以使用齐次马尔科夫假设进行处理。并将上式改写成如下形式:
    P ( i t + 1 = q j ∣ i t = q i , λ ) ⋅ P ( o 1 , ⋯   , o t , i t = q i ∣ λ ) = P ( i t + 1 = q j ∣ i t = q i , λ ) ⋅ α t ( i ) P(i_{t+1} = q_j \mid i_t = q_i,\lambda) \cdot P(o_1,\cdots,o_t,i_t = q_i\mid \lambda) = P(i_{t+1} = q_j \mid i_t = q_i,\lambda) \cdot \alpha_{t}(i) P(it+1=qjit=qi,λ)P(o1,,ot,it=qiλ)=P(it+1=qjit=qi,λ)αt(i)

至此,整理 α t + 1 ( j ) \alpha_{t+1}(j) αt+1(j) α t ( i ) \alpha_{t}(i) αt(i)之间的关联关系
α t + 1 ( j ) = ∑ i = 1 K [ P ( o t + 1 ∣ i t + 1 = q j ) ⋅ P ( i t + 1 = q j ∣ i t = q i , λ ) ⋅ α t ( i ) ] \alpha_{t+1}(j) = \sum_{i=1}^{\mathcal K} \left[P(o_{t+1} \mid i_{t+1}=q_j) \cdot P(i_{t+1} = q_j \mid i_t = q_i,\lambda) \cdot \alpha_{t}(i)\right] αt+1(j)=i=1K[P(ot+1it+1=qj)P(it+1=qjit=qi,λ)αt(i)]
如果使用模型参数进行表示:
α t + 1 ( j ) = ∑ i = 1 K b j ( o t + 1 ) ⋅ a i j ⋅ α t ( i ) \alpha_{t+1}(j) = \sum_{i=1}^{\mathcal K}b_j(o_{t+1}) \cdot a_{ij} \cdot \alpha_{t}(i) αt+1(j)=i=1Kbj(ot+1)aijαt(i)
最后观察它的时间复杂度:每次迭代的时间复杂度是 O ( N ) O(N) O(N),迭代 T T T次的时间复杂度即 O ( K × T ) O(\mathcal K \times T) O(K×T)
而上述时间复杂度 描述的是 α 1 ( i ) → α T ( i ) \alpha_1(i) \to \alpha_T(i) α1(i)αT(i)的时间复杂度,而 P ( O ∣ λ ) = ∑ i = 1 K α T ( i ) P(\mathcal O \mid \lambda) = \sum_{i=1}^{\mathcal K} \alpha_{T}(i) P(Oλ)=i=1KαT(i)。因此, P ( O ∣ λ ) P(\mathcal O\mid \lambda) P(Oλ)的时间复杂度为: O ( K 2 × T ) O(\mathcal K^2 \times T) O(K2×T),相比于 O ( K T ) O(\mathcal K^{T}) O(KT)还是要优化一些的。

下一节将介绍: 使用后向算法处理 P ( O ∣ λ ) P(\mathcal O \mid \lambda) P(Oλ)问题。

相关参考:
机器学习-隐马尔可夫模型3-Evaluation问题-前向算法

你可能感兴趣的:(机器学习,机器学习,隐马尔可夫模型,Evaluation问题,前向算法,条件概率积分)