上一节介绍了基于隐马尔可夫模型使用前向算法处理求值问题,本节将介绍另一种求值问题方法——后向算法(Backward Algorithm)。
关于隐马尔可夫模型的基础概念、模型参数相关的数学符号表示见机器学习笔记之隐马尔可夫模型(二)背景介绍一节。
求值问题(Evaluation)本质上是在给定隐马尔可夫模型参数 λ \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 \lambda) P(O∣λ)。
前向算法(Forward Algorithm)的逻辑如下图所示。

其核心思想是当前
t
t
t时刻状态变量
i
t
=
q
i
i_t=q_i
it=qi的条件下,
i
t
i_t
it与初始时刻到当前时刻的观测变量
{
o
1
,
⋯
,
o
t
}
\{o_1,\cdots,o_t\}
{o1,⋯,ot}的联合概率分布
P
(
o
1
,
⋯
,
o
t
,
i
t
=
q
i
∣
λ
)
P(o_1,\cdots,o_t,i_t=q_i \mid \lambda)
P(o1,⋯,ot,it=qi∣λ)与
t
+
1
t+1
t+1时刻的联合概率分布
P
(
o
1
,
⋯
,
o
t
,
o
t
+
1
,
i
t
+
1
=
q
j
∣
λ
)
P(o_1,\cdots,o_t,o_{t+1},i_{t+1}=q_j \mid \lambda)
P(o1,⋯,ot,ot+1,it+1=qj∣λ)之间的关联关系。
基于齐次马尔可夫假设与观测独立性假设,记:
α
t
(
i
)
=
P
(
o
1
,
⋯
,
o
t
,
i
t
=
q
i
∣
λ
)
α
t
+
1
(
j
)
=
P
(
o
1
,
⋯
,
o
t
,
o
t
+
1
,
i
t
+
1
=
q
j
∣
λ
)
\alpha_{t}(i) = P(o_1,\cdots,o_t,i_t=q_i \mid \lambda) \\ \alpha_{t+1}(j) = P(o_1,\cdots,o_t,o_{t+1},i_{t+1}=q_j \mid \lambda)
αt(i)=P(o1,⋯,ot,it=qi∣λ)αt+1(j)=P(o1,⋯,ot,ot+1,it+1=qj∣λ)
α
t
(
i
)
\alpha_{t}(i)
αt(i)与
α
t
+
1
(
j
)
\alpha_{t+1}(j)
αt+1(j)之间关联关系表示如下:
α
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
)
]
αt+1(j)=K∑i=1[P(ot+1∣it+1=qj)⋅P(it+1=qj∣it=qi,λ)⋅αt(i)]
αt+1(j)=i=1∑K[P(ot+1∣it+1=qj)⋅P(it+1=qj∣it=qi,λ)⋅αt(i)]
至此,从
α
0
(
i
)
\alpha_0(i)
α0(i)开始,执行
T
T
T次迭代,得到最终结果
α
T
(
i
)
\alpha_{T}(i)
αT(i)。最终对
P
(
O
∣
λ
)
P(\mathcal O \mid \lambda)
P(O∣λ)进行求解:
P
(
O
∣
λ
)
=
∑
i
=
1
K
α
T
(
i
)
P(\mathcal O \mid \lambda) = \sum_{i=1}^{\mathcal K} \alpha_{T}(i)
P(O∣λ)=i=1∑KαT(i)
因此, P ( O ∣ λ ) P(\mathcal O \mid \lambda) P(O∣λ)的时间复杂度为 O ( K 2 × T ) O(\mathcal K^2 \times \mathcal T) O(K2×T)。
后向算法的逻辑如下图所示(蓝色部分):

后向算法的核心思想共包含两项:
给定隐马尔可夫模型的参数
λ
\lambda
λ条件下,
t
+
1
t+1
t+1时刻到最终时刻的观测变量
{
o
t
+
1
,
⋯
,
o
T
}
\{o_{t+1},\cdots,o_{T}\}
{ot+1,⋯,oT}关于
t
t
t时刻状态变量
i
t
=
q
i
i_t = q_i
it=qi的条件概率分布
P
(
o
t
+
1
,
⋯
,
o
T
∣
i
t
=
q
i
,
λ
)
P(o_{t+1},\cdots,o_{T} \mid i_t = q_i,\lambda)
P(ot+1,⋯,oT∣it=qi,λ)与
t
t
t时刻的条件概率分布
P
(
o
t
,
⋯
,
o
T
∣
i
t
−
1
,
λ
)
P(o_t,\cdots,o_T \mid i_{t-1},\lambda)
P(ot,⋯,oT∣it−1,λ)之间的关联关系。数学符号表达如下:
β
t
(
i
)
=
P
(
o
t
+
1
,
⋯
,
o
T
∣
i
t
=
q
i
,
λ
)
β
t
−
1
(
i
)
=
P
(
o
t
,
⋯
,
o
T
∣
i
t
−
1
=
q
j
,
λ
)
β
t
(
i
)
↔
?
β
t
−
1
(
i
)
\beta_t(i) =P(o_{t+1},\cdots,o_{T} \mid i_t = q_i,\lambda) \\ \beta_{t-1}(i) = P(o_{t},\cdots,o_{T} \mid i_{t-1} = q_j,\lambda) \\ \beta_t(i) \overset{\text{?}}{\leftrightarrow}\beta_{t-1}(i)
βt(i)=P(ot+1,⋯,oT∣it=qi,λ)βt−1(i)=P(ot,⋯,oT∣it−1=qj,λ)βt(i)↔?βt−1(i)
该算法的迭代方式是 从后向前迭代。即初始状态是
β
T
(
i
)
\beta_T(i)
βT(i):
β
T
(
i
)
=
P
(
i
T
=
q
i
,
λ
)
\beta_{T}(i) = P(i_T = q_i,\lambda)
βT(i)=P(iT=qi,λ)
通过
T
T
T次迭代,得到迭代的尽头
β
1
(
i
)
\beta_{1}(i)
β1(i):
β
1
(
i
)
=
P
(
o
2
,
⋯
,
o
T
∣
i
1
=
q
i
,
λ
)
\beta_1(i) = P(o_2,\cdots,o_T \mid i_1 = q_i,\lambda)
β1(i)=P(o2,⋯,oT∣i1=qi,λ)
只要找出
β
1
(
i
)
\beta_1(i)
β1(i)和
P
(
O
∣
λ
)
P(\mathcal O \mid \lambda)
P(O∣λ)之间的关联关系,即可通过
β
1
(
i
)
\beta_1(i)
β1(i)求解
P
(
O
∣
λ
)
P(\mathcal O \mid \lambda)
P(O∣λ):
β
1
(
i
)
↔
?
P
(
O
∣
λ
)
\beta_1(i)\overset{\text{?}}{\leftrightarrow}P(\mathcal O \mid \lambda)
β1(i)↔?P(O∣λ)
观察:最终迭代求解的 β 1 ( i ) \beta_1(i) β1(i)和 P ( O ∣ λ ) P(\mathcal O \mid \lambda) P(O∣λ)有什么联系:
是状态变量,存在
K
\mathcal K
K种选择。实际上,在整个推导过程中,
λ
\lambda
λ是可加可不加的,因为在‘求值问题’中,
λ
\lambda
λ是已知的常量。观察
β
t
(
i
)
\beta_t(i)
βt(i)和
β
t
−
1
(
j
)
\beta_{t-1}(j)
βt−1(j)的展开结果:
β
t
(
i
)
=
P
(
o
t
+
1
,
⋯
,
o
T
∣
i
t
=
q
i
,
λ
)
β
t
−
1
(
i
)
=
P
(
o
t
,
⋯
,
o
T
∣
i
t
−
1
=
q
j
,
λ
)
\beta_t(i) =P(o_{t+1},\cdots,o_{T} \mid i_t = q_i,\lambda) \\ \beta_{t-1}(i) = P(o_{t},\cdots,o_{T} \mid i_{t-1} = q_j,\lambda)
βt(i)=P(ot+1,⋯,oT∣it=qi,λ)βt−1(i)=P(ot,⋯,oT∣it−1=qj,λ)

和后续观测变量结点均属于‘顺序结构’。由于
i
t
i_t
it的阻塞性,
o
1
,
⋯
,
o
T
o_1,\cdots,o_T
o1,⋯,oT均与
i
t
−
1
i_{t-1}
it−1条件独立。传送门至此,得到了
β
t
−
1
(
j
)
\beta_{t-1}(j)
βt−1(j)和
β
t
(
i
)
\beta_{t}(i)
βt(i)之间的递归关系。
观察后向算法 需要的时间复杂度:
下一节将介绍隐马尔可夫模型的参数 λ \lambda λ求解问题