上一节介绍了使用狭义EM算法对模型参数 λ \lambda λ。本节将介绍使用维特比算法(Viterbi)处理解码问题(Decoding)
在隐马尔可夫模型中,解码问题被看做为 给定长度为
T
T
T的观测序列
{
o
1
,
o
2
,
⋯
,
o
T
}
\{o_1,o_2,\cdots,o_T\}
{o1,o2,⋯,oT},目标是求解观测序列
O
\mathcal O
O对应状态序列
I
\mathcal I
I的后验概率
P
(
I
∣
O
)
P(\mathcal I \mid \mathcal O)
P(I∣O)。即:
在解码问题中,模型参数
λ
\lambda
λ是已知量,通常可以省略掉。
P
(
I
∣
O
)
=
P
(
i
1
,
i
2
,
⋯
,
i
T
∣
o
1
,
o
2
,
⋯
,
o
T
,
λ
)
P(\mathcal I \mid \mathcal O) = P(i_1,i_2,\cdots,i_T \mid o_1,o_2,\cdots,o_T,\lambda)
P(I∣O)=P(i1,i2,⋯,iT∣o1,o2,⋯,oT,λ)
实际上,解码问题与预测问题(Prediction)是存在一些差别的:
预测往往是给定前面若干时刻的观测序列,求解下一时刻的相关信息。关于隐马尔可夫模型的相关概念、模型参数表示、模型特殊性质 见机器学习笔记之隐马尔可夫模型(五)学习问题——EM算法中的场景介绍。
首先,需要明确解码问题的目标:在给定 观测序列 O \mathcal O O 的条件下,找出一组后验概率最大的、与观测序列对应时刻的状态序列 I \mathcal I I。
假设观测序列 O \mathcal O O的长度为 T T T,那么最终寻找的最优状态序列 I \mathcal I I的长度也是 T T T。因此,可以统计一下,到底存在多少种满足条件的状态序列:
由于
i
t
(
t
=
1
,
2
,
⋯
,
T
)
i_t(t =1,2,\cdots,T)
it(t=1,2,⋯,T)的取值范围是离散的,根据状态值集合
Q
=
{
q
1
,
q
2
,
⋯
,
q
K
}
\mathcal Q = \{q_1,q_2,\cdots,q_{\mathcal K}\}
Q={q1,q2,⋯,qK},因此,可以得到
K
T
\mathcal K^T
KT个不重复的状态序列组合。
即:随着序列长度
T
T
T的增加,状态序列组合的数量随着指数级别增长。
而解码问题就是从 K T \mathcal K^T KT个排列组合中选择出一个最优组合。
什么是最优组合?最优组合满足的标准是什么?通过解码问题的目标可以看出,希望找到这样一组状态序列
I
^
\hat {\mathcal I}
I^使得关于
I
^
\hat {\mathcal I}
I^的后验概率
P
(
I
^
∣
O
,
λ
)
P(\hat {\mathcal I} \mid \mathcal O,\lambda)
P(I^∣O,λ)最大。即:
I
^
=
arg
max
I
P
(
I
∣
O
,
λ
)
\hat {\mathcal I} = \mathop{\arg\max}\limits_{\mathcal I} P(\mathcal I \mid \mathcal O,\lambda)
I^=IargmaxP(I∣O,λ)
I
^
=
{
i
^
1
,
i
^
2
,
⋯
,
i
^
T
}
\hat {\mathcal I} = \{\hat i_1,\hat i_2,\cdots,\hat i_T\}
I^={i^1,i^2,⋯,i^T},需要如何找出这些最优的状态值?
进行一些示例:
假设我们的状态序列 I \mathcal I I在 t t t时刻的状态变量 i t = q k ( k ∈ { 1 , 2 , ⋯ , K } ) i_t = q_k (k \in \{1,2,\cdots,\mathcal K\}) it=qk(k∈{1,2,⋯,K})的条件下,此时从初始概率分布出发,要如何表示最优序列对应的概率分布结果?
同理,如果将
t
t
t时刻替换为
t
+
1
t+1
t+1时刻,即状态变量
i
t
+
1
=
q
j
i_{t+1} = q_{j}
it+1=qj确定的条件下,依然从初始概率分布出发,其最优概率分布结果
δ
t
+
1
(
j
)
\delta_{t+1}(j)
δt+1(j) 的表达式如下:
δ
t
+
1
(
j
)
=
max
i
1
,
i
2
,
⋯
,
i
t
P
(
o
1
,
o
2
,
⋯
,
o
t
,
o
t
+
1
,
i
1
,
i
2
,
⋯
,
i
t
,
i
t
+
1
=
q
j
)
\delta_{t+1}(j) = \mathop{\max}\limits_{i_1,i_2,\cdots,i_t} P(o_1,o_2,\cdots,o_t,o_{t+1},i_1,i_2,\cdots,i_t,i_{t+1} = q_j)
δt+1(j)=i1,i2,⋯,itmaxP(o1,o2,⋯,ot,ot+1,i1,i2,⋯,it,it+1=qj)
观察, δ t ( k ) \delta_t(k) δt(k)与 δ t + 1 ( j ) \delta_{t+1}(j) δt+1(j)之间是否存在关联关系:
至此,找到
δ
t
(
k
)
\delta_t(k)
δt(k)和
δ
t
+
1
(
j
)
\delta_{t+1}(j)
δt+1(j)之间的关联关系。
但
δ
t
(
k
)
,
δ
t
+
1
(
j
)
\delta_t(k),\delta_{t+1}(j)
δt(k),δt+1(j)仅表示对应时刻最优联合概率分布,而实际需要的是一个最优序列。因此:
令
ϕ
t
+
1
(
j
)
\phi_{t+1}(j)
ϕt+1(j)表示从
δ
t
(
k
)
\delta_{t}(k)
δt(k)到
δ
t
+
1
(
j
)
\delta_{t+1}(j)
δt+1(j)选择状态转移最优的状态变量结果
q
k
q_k
qk对应的下标
k
k
k。即:
ϕ
t
+
1
(
j
)
=
arg
max
1
≤
k
≤
K
[
δ
t
(
k
)
⋅
a
k
j
⋅
b
j
(
o
t
+
1
)
]
\phi_{t+1}(j) = \mathop{\arg\max}\limits_{1 \leq k \leq \mathcal K} [\delta_t(k)\cdot a_{kj} \cdot b_j(o_{t+1})]
ϕt+1(j)=1≤k≤Kargmax[δt(k)⋅akj⋅bj(ot+1)]
最终得到下标序列: { ϕ 1 , ϕ 2 , ⋯ , ϕ T } \{\phi_1,\phi_2,\cdots,\phi_T\} {ϕ1,ϕ2,⋯,ϕT}